2 Achegas 24431472ac ... dd81502e7a

Autor SHA1 Mensaxe Data
  fgd dd81502e7a 成品仓入库新增 hai 1 ano
  fgd f349994acb 同步更新订单调整 hai 1 ano

+ 10 - 0
sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedController.java

@@ -1,10 +1,12 @@
 package com.sd.business.controller.inventory;
 package com.sd.business.controller.inventory;
 
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderInStorageDto;
 import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
 import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
 import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
 import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
 import com.sd.business.service.inventory.InventoryFinishedService;
 import com.sd.business.service.inventory.InventoryFinishedService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import java.util.List;
 import java.util.List;
@@ -49,4 +51,12 @@ public class InventoryFinishedController {
         return inventoryFinishedService.getTodayInStorageList();
         return inventoryFinishedService.getTodayInStorageList();
     }
     }
 
 
+    /**
+     * 成品仓入库新增
+     */
+    @PostMapping("/inStorageAdd")
+    public void inStorageAdd(@Validated @RequestBody InventoryFinishedOrderInStorageDto inStorageDto) {
+        inventoryFinishedService.inStorageAdd(inStorageDto);
+    }
+
 }
 }

+ 37 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderInStorageDto.java

@@ -0,0 +1,37 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 成品仓入库新增编辑入参实体
+ *
+ * @author
+ * @since 2024-03-13
+ */
+@Getter
+@Setter
+public class InventoryFinishedOrderInStorageDto {
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 成品列表
+     */
+    @Valid
+    @NotEmpty(message = "物料信息不能为空")
+    private List<InventoryFinishedOrder> skuList;
+}

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedOrder.java

@@ -56,4 +56,9 @@ public class InventoryFinishedOrder extends BasePo {
      * 现存数量
      * 现存数量
      */
      */
     private BigDecimal existingQuantity;
     private BigDecimal existingQuantity;
+
+    /**
+     * 备注
+     */
+    private String remark;
 }
 }

+ 7 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedService.java

@@ -2,6 +2,7 @@ package com.sd.business.service.inventory;
 
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.service.BaseService;
 import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderInStorageDto;
 import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
 import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
 import com.sd.business.entity.inventory.po.InventoryFinished;
 import com.sd.business.entity.inventory.po.InventoryFinished;
 import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
 import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
@@ -78,4 +79,10 @@ public interface InventoryFinishedService extends BaseService<InventoryFinished>
      * @return
      * @return
      */
      */
     List<InventoryFinishedVo> getTodayInStorageList();
     List<InventoryFinishedVo> getTodayInStorageList();
+
+    /**
+     * 成品仓入库新增
+     * @param inStorageDto
+     */
+    void inStorageAdd(InventoryFinishedOrderInStorageDto inStorageDto);
 }
 }

+ 28 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedServiceImpl.java

@@ -8,7 +8,9 @@ import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderInStorageDto;
 import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
 import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
+import com.sd.business.entity.inventory.enums.FinishedOperationTypeEnum;
 import com.sd.business.entity.inventory.po.InventoryFinished;
 import com.sd.business.entity.inventory.po.InventoryFinished;
 import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
 import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
 import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
 import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
@@ -440,4 +442,30 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
 
 
         return list;
         return list;
     }
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void inStorageAdd(InventoryFinishedOrderInStorageDto inStorageDto) {
+        List<InventoryFinishedOrder> skuList = inStorageDto.getSkuList();
+
+        // 添加成品仓库存
+        List<InventoryFinished> inventoryFinishedList = skuList.stream().map(item -> {
+            InventoryFinished inventoryFinished = new InventoryFinished();
+            inventoryFinished.setSkuSpecId(item.getSkuSpecId());
+            inventoryFinished.setQuantity(item.getQuantity());
+            return inventoryFinished;
+        }).collect(Collectors.toList());
+        inOut(inventoryFinishedList, true);
+
+        for (InventoryFinishedOrder inventoryFinishedOrder : skuList) {
+            inventoryFinishedOrder.setDepartmentId(inStorageDto.getDepartmentId());
+            inventoryFinishedOrder.setStatus(StatusConstant.YES);
+            inventoryFinishedOrder.setExistingQuantity(inventoryFinishedOrder.getQuantity());
+            inventoryFinishedOrder.setRemark(inStorageDto.getRemark());
+        }
+        // 新增入库记录
+        inventoryFinishedOrderService.saveBatch(skuList);
+        // 添加流水记录
+        inventoryFinishedOrderDetailService.add(skuList, FinishedOperationTypeEnum.PRODUCTION_WAREHOUSING);
+    }
 }
 }

+ 6 - 0
sd-wln/src/main/java/com/sd/wln/service/impl/OrderHandleServiceImpl.java

@@ -61,6 +61,12 @@ public class OrderHandleServiceImpl implements OrderHandleService {
         }
         }
         LogicHolder.clear();
         LogicHolder.clear();
 
 
+        // 审核通过之前或预售状态的订单不同步
+        Integer processStatus = wlnOrder.getInteger("process_status");
+        if (processStatus < 1 || processStatus == 14) {
+            throw new ServiceException("订单同步失败,订单状态为审核或预售状态,无法重新同步");
+        }
+
         String storageCode = wlnOrder.getString("storage_code");
         String storageCode = wlnOrder.getString("storage_code");
         OrderContext context = new OrderContext(storageCode, Collections.singletonList(wlnOrder));
         OrderContext context = new OrderContext(storageCode, Collections.singletonList(wlnOrder));
         OrderInfo order = wlnOrderService.createOrder(context, wlnOrder);
         OrderInfo order = wlnOrderService.createOrder(context, wlnOrder);

+ 58 - 44
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -252,16 +252,20 @@ public class WlnOrderServiceImpl implements WlnOrderService {
                     && ObjectUtil.notEqual(orderInfo.getClassify(), OrderClassifyEnum.NO_REASON_ORDER.getKey())) {
                     && ObjectUtil.notEqual(orderInfo.getClassify(), OrderClassifyEnum.NO_REASON_ORDER.getKey())) {
                 List<OrderInfo> updateOrderList = context.getUpdateOrderList();
                 List<OrderInfo> updateOrderList = context.getUpdateOrderList();
                 List<OrderInfo> saveStatementOrderList = context.getSaveStatementOrderList();
                 List<OrderInfo> saveStatementOrderList = context.getSaveStatementOrderList();
-                orderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
-                orderInfo.setWlnModifyTime(wlnOrder.getDate("modify_time"));
-                orderInfo.setWlnModifyTimestamp(wlnOrder.getLong("modify_time"));
-                orderInfo.setStatus(OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
-                orderInfo.setClassify(OrderClassifyEnum.NO_REASON_ORDER.getKey());
-                orderInfo.setShippingTime(new Date());
+                OrderInfo updateOrderInfo = new OrderInfo();
+                updateOrderInfo.setId(orderInfo.getId());
+                updateOrderInfo.setExceptionType(orderInfo.getExceptionType());
+                updateOrderInfo.setStockType(orderInfo.getStockType());
+                updateOrderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
+                updateOrderInfo.setWlnModifyTime(wlnOrder.getDate("modify_time"));
+                updateOrderInfo.setWlnModifyTimestamp(wlnOrder.getLong("modify_time"));
+                updateOrderInfo.setStatus(OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
+                updateOrderInfo.setClassify(OrderClassifyEnum.NO_REASON_ORDER.getKey());
+                updateOrderInfo.setShippingTime(new Date());
 
 
                 // 保存对账单列表
                 // 保存对账单列表
                 saveStatementOrderList.add(orderInfo);
                 saveStatementOrderList.add(orderInfo);
-                updateOrderList.add(orderInfo);
+                updateOrderList.add(updateOrderInfo);
             }
             }
 
 
             return;
             return;
@@ -278,50 +282,54 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         Department department = context.getDepartment();
         Department department = context.getDepartment();
         Map<Long, List<OrderSku>> existOrderSkuMap = context.getExistOrderSkuMap();
         Map<Long, List<OrderSku>> existOrderSkuMap = context.getExistOrderSkuMap();
         List<OrderInfo> updateOrderList = context.getUpdateOrderList();
         List<OrderInfo> updateOrderList = context.getUpdateOrderList();
-
-        orderInfo.setWlnStorageCode(wlnOrder.getString("storage_code"));
-        orderInfo.setWlnUid(wlnOrder.getString("uid"));
-        orderInfo.setCode(wlnOrder.getString("tp_tid"));
-        orderInfo.setWlnCode(wlnOrder.getString("trade_no"));
-        orderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
-        orderInfo.setWlnCreateTime(wlnOrder.getDate("create_time"));
-        orderInfo.setWlnModifyTime(wlnOrder.getDate("modify_time"));
-        orderInfo.setWlnModifyTimestamp(wlnOrder.getLong("modify_time"));
-        orderInfo.setWlnApproveTime(wlnOrder.getDate("approve_time"));
-        orderInfo.setWlnPrintTime(wlnOrder.getDate("print_time"));
-        orderInfo.setSourcePlatform(wlnOrder.getString("source_platform"));
-        orderInfo.setShopName(wlnOrder.getString("shop_name"));
-        orderInfo.setProvince(wlnOrder.getString("province"));
-        orderInfo.setCity(wlnOrder.getString("city"));
-        orderInfo.setCounty(wlnOrder.getString("district"));
-        orderInfo.setDetailedAddress(wlnOrder.getString("address"));
-        orderInfo.setPostcode(wlnOrder.getString("zip"));
-        orderInfo.setDeliveryTime(DateUtil.offsetDay(orderInfo.getWlnCreateTime(), 1));
-        orderInfo.setRemark(wlnOrder.getString("remark"));
+        OrderInfo updateOrderInfo = new OrderInfo();
+        updateOrderInfo.setId(orderInfo.getId());
+        updateOrderInfo.setExceptionType(orderInfo.getExceptionType());
+        updateOrderInfo.setStockType(orderInfo.getStockType());
+
+        updateOrderInfo.setWlnStorageCode(wlnOrder.getString("storage_code"));
+        updateOrderInfo.setWlnUid(wlnOrder.getString("uid"));
+        updateOrderInfo.setCode(wlnOrder.getString("tp_tid"));
+        updateOrderInfo.setWlnCode(wlnOrder.getString("trade_no"));
+        updateOrderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
+        updateOrderInfo.setWlnCreateTime(wlnOrder.getDate("create_time"));
+        updateOrderInfo.setWlnModifyTime(wlnOrder.getDate("modify_time"));
+        updateOrderInfo.setWlnModifyTimestamp(wlnOrder.getLong("modify_time"));
+        updateOrderInfo.setWlnApproveTime(wlnOrder.getDate("approve_time"));
+        updateOrderInfo.setWlnPrintTime(wlnOrder.getDate("print_time"));
+        updateOrderInfo.setSourcePlatform(wlnOrder.getString("source_platform"));
+        updateOrderInfo.setShopName(wlnOrder.getString("shop_name"));
+        updateOrderInfo.setProvince(wlnOrder.getString("province"));
+        updateOrderInfo.setCity(wlnOrder.getString("city"));
+        updateOrderInfo.setCounty(wlnOrder.getString("district"));
+        updateOrderInfo.setDetailedAddress(wlnOrder.getString("address"));
+        updateOrderInfo.setPostcode(wlnOrder.getString("zip"));
+        updateOrderInfo.setDeliveryTime(DateUtil.offsetDay(orderInfo.getWlnCreateTime(), 1));
+        updateOrderInfo.setRemark(wlnOrder.getString("remark"));
 
 
         // 赋值订单异常类型
         // 赋值订单异常类型
-        if (orderInfo.getWlnStatus() == 10) {
-            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_CLOSURE);
+        if (updateOrderInfo.getWlnStatus() == 10) {
+            addExceptionType(updateOrderInfo, OrderExceptionTypeEnum.ORDER_CLOSURE);
         }
         }
-        if (orderInfo.getWlnStatus() == 11) {
-            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_ABORT);
+        if (updateOrderInfo.getWlnStatus() == 11) {
+            addExceptionType(updateOrderInfo, OrderExceptionTypeEnum.ORDER_ABORT);
         }
         }
-        if (orderInfo.getWlnStatus() == 12) {
-            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_EXCEPTION_HANDLING);
+        if (updateOrderInfo.getWlnStatus() == 12) {
+            addExceptionType(updateOrderInfo, OrderExceptionTypeEnum.ORDER_EXCEPTION_HANDLING);
         }
         }
 
 
         // 事业部
         // 事业部
         if (department == null) {
         if (department == null) {
-            addExceptionType(orderInfo, OrderExceptionTypeEnum.UNKNOWN_WAREHOUSE);
+            addExceptionType(updateOrderInfo, OrderExceptionTypeEnum.UNKNOWN_WAREHOUSE);
         } else {
         } else {
-            orderInfo.setDepartmentId(department.getId());
+            updateOrderInfo.setDepartmentId(department.getId());
         }
         }
 
 
-        List<OrderSku> orderSkuList = new ArrayList<>(existOrderSkuMap.getOrDefault(orderInfo.getId(), Collections.emptyList()));
+        List<OrderSku> orderSkuList = new ArrayList<>(existOrderSkuMap.getOrDefault(updateOrderInfo.getId(), Collections.emptyList()));
         List<JSONObject> wlnOrderSkuList = wlnOrder.getJSONArray("orders").toJavaList(JSONObject.class);
         List<JSONObject> wlnOrderSkuList = wlnOrder.getJSONArray("orders").toJavaList(JSONObject.class);
 
 
         if (orderSkuList.size() != wlnOrderSkuList.size()) {
         if (orderSkuList.size() != wlnOrderSkuList.size()) {
-            addExceptionType(orderInfo, OrderExceptionTypeEnum.SKU_UPDATE);
+            addExceptionType(updateOrderInfo, OrderExceptionTypeEnum.SKU_UPDATE);
         } else {
         } else {
             for (JSONObject wlnOrderSku : wlnOrderSkuList) {
             for (JSONObject wlnOrderSku : wlnOrderSkuList) {
                 for (OrderSku orderSku : orderSkuList) {
                 for (OrderSku orderSku : orderSkuList) {
@@ -336,19 +344,25 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             }
             }
 
 
             if (!orderSkuList.isEmpty()) {
             if (!orderSkuList.isEmpty()) {
-                addExceptionType(orderInfo, OrderExceptionTypeEnum.SKU_UPDATE);
+                addExceptionType(updateOrderInfo, OrderExceptionTypeEnum.SKU_UPDATE);
             }
             }
         }
         }
 
 
-        // 万里牛订单状态不为1时,订单状态修改为备料中
+        // 当前万里牛订单状态不为1时,订单状态修改为备料中
         if (department != null
         if (department != null
                 && Objects.equals(department.getOrderMode(), "2")
                 && Objects.equals(department.getOrderMode(), "2")
-                && orderInfo.getWlnStatus() != 1
+                && updateOrderInfo.getWlnStatus() != 1
                 && Objects.equals(orderInfo.getStatus(), OrderStatusEnum.UNDER_REVIEW.getKey())) {
                 && Objects.equals(orderInfo.getStatus(), OrderStatusEnum.UNDER_REVIEW.getKey())) {
-            orderInfo.setStatus(OrderStatusEnum.STOCK_PREPARATION.getKey());
+            updateOrderInfo.setStatus(OrderStatusEnum.STOCK_PREPARATION.getKey());
+            updateOrderInfo.setLockStorage(StatusConstant.NO);
+        }
+
+        // 异常订单保存锁定库存状态
+        if (!Objects.equals(orderInfo.getExceptionType(), OrderExceptionTypeEnum.NORMAL.getKey().toString())) {
+            updateOrderInfo.setLockStorage(orderInfo.getLockStorage());
         }
         }
 
 
-        updateOrderList.add(orderInfo);
+        updateOrderList.add(updateOrderInfo);
     }
     }
 
 
     @Override
     @Override
@@ -854,7 +868,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         List<OrderInfo> updateOrderList = context.getUpdateOrderList();
         List<OrderInfo> updateOrderList = context.getUpdateOrderList();
         Map<Long, List<OrderSku>> existOrderSkuMap = context.getExistOrderSkuMap();
         Map<Long, List<OrderSku>> existOrderSkuMap = context.getExistOrderSkuMap();
 
 
-        Map<Long, OrderInfo> orderMap = Stream.concat(saveOrderList.stream(), updateOrderList.stream()).collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
+        Map<Long, OrderInfo> orderMap = Stream.concat(saveOrderList.stream(), updateOrderList.stream()).collect(Collectors.toMap(BaseIdPo::getId, Function.identity(), (v1, v2) -> v2));
 
 
         Map<Long, List<OrderSku>> orderSkuMap = Stream.concat(
         Map<Long, List<OrderSku>> orderSkuMap = Stream.concat(
                         saveOrderSkuList.stream(),
                         saveOrderSkuList.stream(),
@@ -907,7 +921,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
 
 
         for (OrderInfo orderInfo : updateOrderList) {
         for (OrderInfo orderInfo : updateOrderList) {
             if (ObjectUtil.equal(orderInfo.getExceptionType(), OrderExceptionTypeEnum.NORMAL.getKey().toString())
             if (ObjectUtil.equal(orderInfo.getExceptionType(), OrderExceptionTypeEnum.NORMAL.getKey().toString())
-                    || ObjectUtil.equal(orderInfo.getLockStorage(), StatusConstant.NO)) {
+                    || !ObjectUtil.equal(orderInfo.getLockStorage(), StatusConstant.YES)) {
                 continue;
                 continue;
             }
             }