Bladeren bron

更新备货流程测试修改

k 1 jaar geleden
bovenliggende
commit
5cfa9cd8d2

+ 50 - 0
ruoyi-admin/src/test/java/com/ruoyi/admin/test/base/WarehouseTest.java

@@ -44,11 +44,13 @@ import com.ruoyi.base.service.IBaseIdsequenceService;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.IBaseWarehouseService;
 import com.ruoyi.base.utils.IdSequenceUtils;
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.framework.web.domain.server.Sys;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.math.BigDecimal;
@@ -103,6 +105,8 @@ public class WarehouseTest {
     private IAmsTaskService amsTaskService;
     @Autowired
     private ISyncService syncService;
+    @Autowired
+    private RedisTemplate redisTemplate;
 
     @Test
     public void test() {
@@ -350,4 +354,50 @@ public class WarehouseTest {
         System.out.println(b + "|" + b1);
     }
 
+    /**
+     * 更新备货测试
+     *
+     * @throws Exception
+     */
+    @Test
+    public void updateStockingTest() throws Exception {
+        List<ErpOrderList> erpOrderListList = new ArrayList<>();
+        ErpOrderList erpOrderList = null;
+        ErpOrderList erpOrderList1 = null;
+        WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectDocOrderHeaderByOrderNo("SO202304260001");
+        List<WmsDocOrderDetails> details = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(wmsDocOrderHeader.getOrderNo());
+        for (WmsDocOrderDetails detail : details) {
+            erpOrderList = new ErpOrderList();
+            erpOrderList.setOrderName(wmsDocOrderHeader.getSoReference1());
+            erpOrderList.setOrderNo(Integer.parseInt(detail.getdEdi07()));
+            erpOrderList.setIma01(detail.getSku());
+            erpOrderList.setQty(detail.getQtyOrdered().subtract(new BigDecimal(5)));
+            erpOrderList.setOrderType("axmt620");
+            erpOrderList.setInout("2");
+            erpOrderList.setOrderState(detail.getdEdi06());
+            erpOrderList.setCreateUser("TEST");
+            erpOrderList.setStockId(detail.getdEdi05());
+            erpOrderList.setVaild("X");
+            if(Integer.parseInt(detail.getdEdi07()) == 5){
+
+            }else {
+                erpOrderListList.add(erpOrderList);
+            }
+//            erpOrderList1 = new ErpOrderList();
+//            erpOrderList1.setOrderName(wmsDocOrderHeader.getSoReference1());
+//            erpOrderList1.setOrderNo(5);
+//            erpOrderList1.setIma01(detail.getSku());
+//            erpOrderList1.setQty(detail.getQtyOrdered());
+//            erpOrderList1.setOrderType("axmt620");
+//            erpOrderList1.setInout("2");
+//            erpOrderList1.setOrderState(detail.getdEdi06());
+//            erpOrderList1.setCreateUser("TEST");
+//            erpOrderList1.setStockId(detail.getdEdi05());
+//            erpOrderList1.setVaild("Y");
+//            erpOrderListList.add(erpOrderList1);
+        }
+
+        redisTemplate.opsForValue().set("erpOrderList", JSON.toJSONString(erpOrderListList));
+    }
+
 }

+ 19 - 5
warewms-ams/src/main/java/com/ruoyi/ams/erp/service/impl/SyncServiceImpl.java

@@ -22,6 +22,7 @@ import com.ruoyi.base.service.IBaseSkuTypeService;
 import com.ruoyi.base.service.ICodeSkuRelationshipService;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.http.HttpRequest;
 import com.ruoyi.common.utils.http.HttpUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -121,9 +122,19 @@ public class SyncServiceImpl implements ISyncService {
     @Override
     public void syncOrderList() {
         boolean isDel = false;
+        String erpOrderListJson = redisTemplate.opsForValue().get("erpOrderList") == null ? ""
+                : redisTemplate.opsForValue().get("erpOrderList").toString();
+        String erpOrderList_failedJson = redisTemplate.opsForValue().get("erpOrderList_failed") == null ? ""
+                : redisTemplate.opsForValue().get("erpOrderList_failed").toString();
+        List<ErpOrderList> list = new ArrayList<>();
+        List<ErpOrderList> list_failed = new ArrayList<>();
         // ERP需求单
-        List<JSONObject> list = (List<JSONObject>) redisTemplate.opsForValue().get("erpOrderList");
-        List<JSONObject> list_failed = (List<JSONObject>) redisTemplate.opsForValue().get("erpOrderList_failed");
+        if (StringUtils.isNotEmpty(erpOrderListJson)) {
+            list = JSON.parseArray(erpOrderListJson, ErpOrderList.class);
+        }
+        if (StringUtils.isNotEmpty(erpOrderList_failedJson)) {
+            list_failed = JSON.parseArray(erpOrderList_failedJson, ErpOrderList.class);
+        }
         if (list != null && list.size() > 0) {
             isDel = true;
         }
@@ -133,8 +144,7 @@ public class SyncServiceImpl implements ISyncService {
         if (list != null && list.size() > 0) {
             Map<String, List<ErpOrderList>> inmap = new HashMap<>();
             Map<String, List<ErpOrderList>> outmap = new HashMap<>();
-            for (JSONObject code : list) {
-                ErpOrderList erpOrderList = JSON.parseObject(code.toJSONString(), ErpOrderList.class);
+            for (ErpOrderList erpOrderList : list) {
                 if (erpOrderList.getInout().equals("1")) {
                     List<ErpOrderList> current;
                     if (inmap.get(erpOrderList.getOrderName()) != null) {
@@ -173,7 +183,11 @@ public class SyncServiceImpl implements ISyncService {
             if (isDel) {
                 redisTemplate.delete("erpOrderList");
             }
-            redisTemplate.opsForValue().set("erpOrderList_failed", JSON.toJSONString(erpOrderList_failed));
+            if (erpOrderList_failed.size() > 0) {
+                redisTemplate.opsForValue().set("erpOrderList_failed", JSON.toJSONString(erpOrderList_failed));
+            }else {
+                redisTemplate.delete("erpOrderList_failed");
+            }
         }
     }
 

+ 18 - 7
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/UpdateOrderStockingProcessImpl.java

@@ -84,7 +84,7 @@ public class UpdateOrderStockingProcessImpl implements UpdateOrderStockingProces
         String orderNo = "";
         String erpName = erpOrderList.get(0).getOrderName();
         WmsDocOrderHeader header = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByErpNo(erpName);
-        header.getOrderNo();
+        orderNo = header.getOrderNo();
         // 判断单据类型是否为备货单
         if (!header.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())) {
             log.error("出库单类型不是备货类型,不可更新备货!" + header.getOrderNo());
@@ -100,6 +100,7 @@ public class UpdateOrderStockingProcessImpl implements UpdateOrderStockingProces
         List<WmsDocOrderDetails> wmsDocOrderDetailsList = iWmsDocOrderDetailsService.selectWmsDocOrderDetailsByOrderNo(orderNo);
         for (WmsDocOrderDetails wmsDocOrderDetails : wmsDocOrderDetailsList) {
             if (wmsDocOrderDetails.getQtyAllocated().compareTo(wmsDocOrderDetails.getQtySoftAllocated()) != 0) {
+                log.error("备货单正在备货,暂不可更新备货" + header.getOrderNo());
                 return AjaxResult.error("备货单正在备货,暂不可更新备货" + header.getOrderNo());
             }
         }
@@ -109,7 +110,8 @@ public class UpdateOrderStockingProcessImpl implements UpdateOrderStockingProces
         List<InvLotLocIdLotattVO> invLotLocIdLotattVOList = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
         for (InvLotLocIdLotattVO locIdLotattVO : invLotLocIdLotattVOList) {
             String stockStatus = locIdLotattVO.getStockStatus();
-            if (!stockStatus.equals(Constant.STOCK_STATUS.STOCK00)) {
+            if (!stockStatus.equals(Constant.STOCK_STATUS.STOCK00.getValue())) {
+                log.error("备货库存任务占用,暂不可更新备货" + locIdLotattVO.getLocationNo());
                 return AjaxResult.error("备货库存任务占用,暂不可更新备货" + locIdLotattVO.getLocationNo());
             }
         }
@@ -214,7 +216,7 @@ public class UpdateOrderStockingProcessImpl implements UpdateOrderStockingProces
         headerUpdate.setOrderStatus(Constant.ORDER_STS.STS90.getValue());
         headerUpdate.setRemark("ERP将单据更新为失效!");
         wmsDocOrderHeaderService.updateWmsDocOrderHeader(headerUpdate);
-        return null;
+        return AjaxResult.success();
     }
 
     /**
@@ -227,6 +229,7 @@ public class UpdateOrderStockingProcessImpl implements UpdateOrderStockingProces
     public AjaxResult detailsInsert(List<WmsDocOrderDetails> value) {
         String orderNo = value.get(0).getOrderNo();
         for (WmsDocOrderDetails details : value) {
+            details.setOrderLineNo(null);
             wmsDocOrderHeaderService.insertWmsDocOrderDetails(details);
         }
         WmsDocOrderHeader headerUpdate = new WmsDocOrderHeader();
@@ -534,10 +537,18 @@ public class UpdateOrderStockingProcessImpl implements UpdateOrderStockingProces
             return false;
         }).collect(Collectors.toList());
 
-        markerListMap.put(MODIFY_MARKER.INSERT, detailsInsert);
-        markerListMap.put(MODIFY_MARKER.DELETE, detailsDel);
-        markerListMap.put(MODIFY_MARKER.ADD, detailsAdd);
-        markerListMap.put(MODIFY_MARKER.DECREASE, detailsDecrease);
+        if (detailsInsert.size() > 0) {
+            markerListMap.put(MODIFY_MARKER.INSERT, detailsInsert);
+        }
+        if (detailsDel.size() > 0) {
+            markerListMap.put(MODIFY_MARKER.DELETE, detailsDel);
+        }
+        if (detailsAdd.size() > 0) {
+            markerListMap.put(MODIFY_MARKER.ADD, detailsAdd);
+        }
+        if (detailsDecrease.size() > 0) {
+            markerListMap.put(MODIFY_MARKER.DECREASE, detailsDecrease);
+        }
         return markerListMap;
     }