فهرست منبع

方法整合,修正采购单状态

1018653686@qq.com 1 سال پیش
والد
کامیت
ad2ffca944

+ 17 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderDetailsVo.java

@@ -4,6 +4,8 @@ import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 京东订单明细列表查询返回值实体
  *
@@ -31,8 +33,21 @@ public class JdOrderDetailsVo extends JdOrderDetails {
 
 
     /**
-     * 仓库id
+     * 增加仓库id
+     */
+    private Long addWarehouseId;
+    /**
+     * 增加库存数量
+     */
+    private BigDecimal addQuantity;
+    /**
+     * 减少仓库id
+     */
+    private Long reduceWarehouseId;
+    /**
+     * 减少库存数量
      */
-    private Long warehouseId;
+    private BigDecimal reduceQuantity;
+
 
 }

+ 28 - 4
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/RunParamConstant.java

@@ -32,6 +32,8 @@ public class RunParamConstant {
     /**异常描述-多货**/
     public static final String EXCESS = "1";
 
+    /**是否有异常-无异常**/
+    public static final String NO_EXCEPTION = "0";
     /**是否有异常-有异常**/
     public static final String EXCEPTION = "1";
 
@@ -47,8 +49,30 @@ public class RunParamConstant {
     public static final int INBOUND = 1;
 
 
-    /**少货-报损**/
-    public static final String SHORTAGE_DAMAGE = "201";
-    /**少货-索赔理赔**/
-    public static final String SHORTAGE_CLAIM = "203";
+    /**多货-补单扣库存**/
+    public static final String MULTI_CARGO_REDUCE_STOCK = "101";
+
+    /**仓库已发-报损**/
+    public static final String SHIPPED_DAMAGE = "201";
+
+    /**仓库已发-补单不扣库存**/
+    public static final String SHIPPED_NOT_REDUCE_STOCK = "202";
+    /**仓库已发-索赔理赔**/
+    public static final String SHIPPED_CLAIM = "203";
+    /**仓库少发-退回仓库**/
+    public static final String SHORTAGE_RETURN = "301";
+    /**仓库发错货物-货物退回-退回库存**/
+    public static final String EXCESS_RETURN = "401";
+    /**仓库发错货物-不退回库存补单**/
+    public static final String EXCESS_NOT_RETURN = "402";
+    /**仓库发错货物-不退回库存报损**/
+    public static final String EXCESS_DAMAGE = "403";
+    /**条码错误-货物退回-退回库存**/
+    public static final String BARCODE_ERROR_RETURN = "501";
+    /**条码错误-不退回库存补单**/
+    public static final String BARCODE_ERROR_NOT_RETURN = "502";
+    /**条码错误-不退回库存报损**/
+    public static final String BARCODE_ERROR_DAMAGE = "503";
+
+
 }

+ 93 - 14
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderDetailsServiceImpl.java

@@ -7,11 +7,15 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
 import com.fjhx.victoriatourist.mapper.jd.JdOrderDetailsMapper;
+import com.fjhx.victoriatourist.mapper.jd.JdOrderMapper;
 import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
+import com.fjhx.victoriatourist.service.jd.JdOrderService;
 import com.fjhx.victoriatourist.service.jd.constants.RunParamConstant;
 import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.po.Stock;
@@ -21,6 +25,7 @@ import com.fjhx.wms.service.stock.StockJournalDetailsService;
 import com.fjhx.wms.service.stock.StockJournalService;
 import com.fjhx.wms.service.stock.StockService;
 import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -46,6 +51,10 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
     private StockJournalService stockJournalService;
     @Resource
     private StockJournalDetailsService stockJournalDetailsService;
+    @Resource
+    private ProductInfoService productInfoService;
+    @Resource
+    private JdOrderMapper jdOrderMapper;
 
     @Override
     public List<JdOrderDetailsVo> findListByJdOrderId(Long jdOrderId) {
@@ -65,6 +74,13 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
         List<JdOrderDetails> records = page.getRecords();
         List<JdOrderDetailsVo> voList = BeanUtil.copyToList(records, JdOrderDetailsVo.class);
         Page<JdOrderDetailsVo> voPage = BeanUtil.copyProperties(page, Page.class);
+
+        productInfoService.attributeAssign(voList, JdOrderDetails::getProductId, (item, product) -> {
+            item.setProductCode(product.getCode());
+            item.setProductName(product.getName());
+            item.setProductCustomCode(product.getCustomCode());
+        });
+
         voPage.setRecords(voList);
 
         return voPage;
@@ -77,22 +93,60 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
         if (ObjectUtil.isNull(byId)){
             throw new RuntimeException("数据不存在");
         }
-        byId.setExHandle(vo.getExHandle());
+        byId.setHasEx(RunParamConstant.NO_EXCEPTION);
         byId.setHandleStatus(RunParamConstant.EXCEPTION_STATE_TREATED);
+        byId.setExHandle(vo.getExHandle());
         byId.setHandleTime(new Date());
         Long userId = SecurityUtils.getUserId();
         byId.setHandleUser(userId);
-
+        //对应处理异常详细方法
         switch (vo.getExHandle()){
-            case RunParamConstant.SHORTAGE_DAMAGE+","+RunParamConstant.SHORTAGE_CLAIM:
+            case RunParamConstant.MULTI_CARGO_REDUCE_STOCK:
+                //弹窗提示,出库,减少库存
+                reduceStock(vo);
+                break;
+            case RunParamConstant.SHIPPED_DAMAGE:
+            case RunParamConstant.SHIPPED_CLAIM:
+            case RunParamConstant.BARCODE_ERROR_DAMAGE:
                 fillRemark(vo, byId);
                 break;
+            case RunParamConstant.SHIPPED_NOT_REDUCE_STOCK:
+            case RunParamConstant.BARCODE_ERROR_NOT_RETURN:
+                //仅弹窗提醒与修改状态,不做其他操作,修改状态在上面已经统一处理,预留位置。
+                break;
+            case RunParamConstant.SHORTAGE_RETURN:
+                //选择仓库,增加库存
+                addStock(vo);
+                break;
+            case RunParamConstant.EXCESS_RETURN:
+            case RunParamConstant.BARCODE_ERROR_RETURN:
+                fillExpressNoAndAddStock(vo, byId);
+                break;
+            case RunParamConstant.EXCESS_NOT_RETURN:
+                //增减库存
+                addAndReduceStock(vo);
+                break;
+            case RunParamConstant.EXCESS_DAMAGE:
+                //填备注增减库存
+                fillRemarkAndAddReduceStock(vo, byId);
+                break;
             default:
                 throw new RuntimeException("异常处理状态异常");
         }
-
-
         updateById(byId);
+
+        //判断当前采购单下所有明细是不是都已经无异常,如果是,修改采购单异常状态为无异常
+        List<JdOrderDetails> list = lambdaQuery().eq(JdOrderDetails::getJdOrderId, byId.getJdOrderId()).list();
+        if(CollectionUtil.isEmpty(list)){
+            throw new RuntimeException("采购单明细不存在");
+        }
+        boolean allMatch = list.stream().allMatch(jdOrderDetails -> StrUtil.equals(jdOrderDetails.getHasEx(), RunParamConstant.NO_EXCEPTION));
+        if(allMatch){
+            //修改采购单状态为已处理
+            JdOrder jdOrder = jdOrderMapper.selectById(byId.getJdOrderId());
+            jdOrder.setHasEx(RunParamConstant.NO_EXCEPTION);
+            jdOrderMapper.updateById(jdOrder);
+        }
     }
 
 
@@ -110,26 +164,48 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
     }
 
     /**
-     * 填写快递单号
+     * 填写快递单号并增加库存
      * @author hj
      * @date 2024/1/15 22:42
      */
-    private void fillExpressNo(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+    private void fillExpressNoAndAddStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
         String expressNo = vo.getExpressNo();
         if (StrUtil.isBlank(expressNo)) {
             throw new RuntimeException("快递单号不能为空");
         }
         jdOrderDetails.setExpressNo(expressNo);
+        addStock(vo);
+    }
+
+    /**
+     * 增减库存
+     * @author hj
+     * @date 2024/1/15 22:42
+     */
+    private void addAndReduceStock(JdOrderDetailsVo vo) {
+        addStock(vo);
+        reduceStock(vo);
+    }
+
+
+    /**
+     * 填备注增减库存
+     * @author hj
+     * @date 2024/1/15 22:42
+     */
+    private void fillRemarkAndAddReduceStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        fillRemark(vo, jdOrderDetails);
+        addStock(vo);
+        reduceStock(vo);
     }
 
     /**
      * 增加库存
      * @param vo
-     * @param jdOrderDetails
      */
-    private void addStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+    private void addStock(JdOrderDetailsVo vo) {
         //操作库存及记录
-        operateStock(vo.getWarehouseId(), RunParamConstant.INBOUND, jdOrderDetails.getQuantity());
+        operateStock(vo.getAddWarehouseId(), RunParamConstant.INBOUND, vo.getAddQuantity());
     }
 
     /**
@@ -137,9 +213,9 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
      * @author hj
      * @date 2024/1/15 22:44
      */
-    private void reduceStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+    private void reduceStock(JdOrderDetailsVo vo) {
         //操作库存及记录
-        operateStock(vo.getWarehouseId(), RunParamConstant.OUTBOUND, jdOrderDetails.getQuantity());
+        operateStock(vo.getReduceWarehouseId(), RunParamConstant.OUTBOUND, vo.getReduceQuantity());
     }
 
 
@@ -151,6 +227,10 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
      * @param quantity 操作数量
      */
     private void operateStock(Long warehouseId, int type, BigDecimal quantity) {
+        if (ObjectUtil.isNull(warehouseId) || quantity.compareTo(BigDecimal.ZERO) <= 0) {
+            throw new RuntimeException("参数错误");
+        }
+
         //要操作的数据
         List<Stock> stockList = new ArrayList<>();
         Stock stock = new Stock();
@@ -159,7 +239,7 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
         stockList.add(stock);
 
         //操作库存
-//        stockService.ModifyInventory(type, stockList, warehouseId);
+        stockService.ModifyInventory(type, stockList, warehouseId);
 
         //创建出入库记录
         StockJournal stockJournal = new StockJournal();
@@ -178,7 +258,6 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
         stockJournalDetails.setBusinessDetailsId(1L);//业务明细id
         stockJournalDetails.setQuantity(BigDecimal.ZERO);//操作数量;
         stockJournalDetails.setProductId(1L);//操作产品id
-        stockJournalDetails.setStockJournalId(stockJournal.getId());//流水主表id
         stockJournalDetailsList.add(stockJournalDetails);
         stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }

+ 0 - 6
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -103,13 +103,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     @Autowired
     private LogisticsInfosService logisticsInfosService;
     @Autowired
-    private LogisticsDetailsService logisticsDetailsService;
-    @Autowired
-    private ISysRoleService sysRoleService;
-    @Autowired
     private CompanyInfoService companyInfoService;
-    @Resource
-    private JdApiService jdApiService;