From 209d9c6f60d96fc29fad0bd2f9dad8fe8424f91f Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期五, 17 十一月 2023 18:10:47 +0800
Subject: [PATCH] 调拨管理

---
 consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java |  176 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 106 insertions(+), 70 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
index 6a5d972..62796d9 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
@@ -3,11 +3,22 @@
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.WhBusinessEnum;
-import com.consum.base.core.param.BaseWarehouseParam1;
-import com.consum.base.util.IdUtil;
-import com.consum.model.po.*;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.LWhFormInventory;
+import com.consum.model.po.LWhFormInventoryGoods;
+import com.consum.model.po.LWhFormOutput;
+import com.consum.model.po.LWhFormProcure;
+import com.consum.model.po.LWhFormProcureGoods;
+import com.consum.model.po.LWhProcureModel;
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.NumberGenerator;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -15,15 +26,8 @@
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
 /**
  * @ClassName LWhFormInventoryCoreService
- * @Author cy
  * @Date 2023/11/1
  * @Description
  * @Version 1.0
@@ -31,6 +35,7 @@
 @Slf4j
 @Service
 public class LWhFormInventoryCoreService {
+
     private LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods;
     private LWhFormOutputCoreService lWhFormOutputCoreService;
     private CodeGeneratorService codeGeneratorService;
@@ -46,17 +51,17 @@
 
     @Autowired
     public LWhFormInventoryCoreService(LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods,
-                                       LWhFormOutputCoreService lWhFormOutputCoreService,
-                                       CodeGeneratorService codeGeneratorService,
-                                       LWhFormProcureService lWhFormProcureService,
-                                       BaseWarehouseServiceImpl baseWarehouseService,
-                                       LWhFormProcureGoodsService lWhFormProcureGoodsService,
-                                       LWhProcureModelService lWhProcureModelService,
-                                       BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
-                                       LWhGoodsService lWhGoodsService,
-                                       LWhFormInventoryServiceImpl lWhFormInventoryService,
-                                       LWhFormProcureCoreService lWhFormProcureCoreService,
-                                       LWhFormOutputServiceImpl lWhFormOutputService
+        LWhFormOutputCoreService lWhFormOutputCoreService,
+        CodeGeneratorService codeGeneratorService,
+        LWhFormProcureService lWhFormProcureService,
+        BaseWarehouseServiceImpl baseWarehouseService,
+        LWhFormProcureGoodsService lWhFormProcureGoodsService,
+        LWhProcureModelService lWhProcureModelService,
+        BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
+        LWhGoodsService lWhGoodsService,
+        LWhFormInventoryServiceImpl lWhFormInventoryService,
+        LWhFormProcureCoreService lWhFormProcureCoreService,
+        LWhFormOutputServiceImpl lWhFormOutputService
 
     ) {
         this.lWhFormInventoryGoods = lWhFormInventoryGoods;
@@ -74,32 +79,41 @@
     }
 
     /**
-     * 鏍规嵁 鐩樼偣鍗� 鐢熸垚 鍑哄簱鍗� 鍜� 鍏ュ簱鍗�
-     * 鐩樼偣鍗曚腑 鐩樼泩鐗╁搧鐢熸垚鍏ュ簱鍗曪紝鐩樹簭鐢熸垚鍑哄簱鍗�
+     * 鏍规嵁 鐩樼偣鍗� 鐢熸垚 鍑哄簱鍗� 鍜� 鍏ュ簱鍗� 鐩樼偣鍗曚腑 鐩樼泩鐗╁搧鐢熸垚鍏ュ簱鍗曪紝鐩樹簭鐢熸垚鍑哄簱鍗�
      *
      * @param whformInventoryId 鐩樼偣鍗昳d
-     * @return status true/false
-     * errMsg 閿欒娑堟伅
+     * @return status true/false errMsg 閿欒娑堟伅
      */
     @Transactional(rollbackFor = Exception.class)
-    public Map<String, Object> createInOutFormByInventoryId(Long whformInventoryId, S_user_core currentUser, FinSysTenantUser sysInfo) {
-        HashMap<String, Object> rtnMap = new HashMap<>();
+    public String createInOutFormByInventoryId(Long whformInventoryId, S_user_core currentUser, FinSysTenantUser sysInfo) {
+        LWhFormInventory lWhFormInventory = lWhFormInventoryService.get(new LWhFormInventory(whformInventoryId));
+        if (lWhFormInventory == null) {
+//            rtnMap.put("status", false);
+//            rtnMap.put("errMsg", "娌℃湁鎵惧埌鐩樼偣鍗�");
+            return "娌℃湁鎵惧埌鐩樼偣鍗�";
+        }
+        if (lWhFormInventory.getStates() != 1) {
+//            rtnMap.put("status", false);
+//            rtnMap.put("errMsg", "璇锋鏌ョ洏鐐瑰崟鐘舵��");
+            return "璇锋鏌ョ洏鐐瑰崟鐘舵��";
+        }
         List<LWhFormInventoryGoods> lWhFormInventoryGoods = this.lWhFormInventoryGoods.getByInventoryId(whformInventoryId);
         if (CollectionUtils.isEmpty(lWhFormInventoryGoods)) {
-            rtnMap.put("status", false);
-            rtnMap.put("errMsg", "娌℃湁鎵惧埌鐗╁搧");
-            return rtnMap;
+//            rtnMap.put("status", false);
+//            rtnMap.put("errMsg", "娌℃湁鎵惧埌鐩樼偣鍗曠粨鏋滅墿鍝�");
+            return "娌℃湁鎵惧埌鐩樼偣鍗曠粨鏋滅墿鍝�";
         }
         Map<Integer, List<LWhFormInventoryGoods>> inventoryGoodsMap = lWhFormInventoryGoods.stream()
-                .filter(goods -> goods.getInventoryResult() == 2 || goods.getInventoryResult() == 3)
-                .collect(Collectors.groupingBy(LWhFormInventoryGoods::getInventoryResult));
+            .filter(goods -> goods.getInventoryResult() == 2 || goods.getInventoryResult() == 3)
+            .collect(Collectors.groupingBy(LWhFormInventoryGoods::getInventoryResult));
         if (CollectionUtils.isEmpty(lWhFormInventoryGoods)) {
-            rtnMap.put("status", true);
-            return rtnMap;
+//            rtnMap.put("status", true);
+            return null;
         }
-        LWhFormInventory lWhFormInventory = lWhFormInventoryService.get(new LWhFormInventory(whformInventoryId));
+
         Long warehouseId = lWhFormInventory.getWarehouseId();
         Long stopTime = lWhFormInventory.getStopTime();
+        Map<String, Object> inOutMap = new HashMap<>();
 
         for (Map.Entry<Integer, List<LWhFormInventoryGoods>> entry : inventoryGoodsMap.entrySet()) {
             //鐩樼偣缁撴灉锛�1=姝e父锛�2=鐩樼泩锛�3=鐩樹簭锛�
@@ -108,50 +122,61 @@
             if (inventoryResult == 2) {
                 // 鍒涘缓鍏ュ簱鍗曞苟鍏ュ簱
                 // 杩斿洖鍏ュ簱鍗曞彿
-                Long inFormByInventoryId = createInFormByInventoryId(warehouseId, stopTime, inventoryGoods, currentUser);
-                if (inFormByInventoryId == null) {
+                Map<String, Object> rkMap = createInFormByInventoryId(warehouseId, stopTime, inventoryGoods, currentUser);
+                if (rkMap == null) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 //                    throw new RuntimeException("鍒涘缓鍏ュ簱鍗曞け璐�");
                     log.error("鍒涘缓鍏ュ簱鍗曞け璐�");
-                    rtnMap.put("status", false);
-                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
-                    return rtnMap;
+//                    rtnMap.put("status", false);
+//                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
+                    return "鍒涘缓鍏ュ簱鍗曞け璐�";
                 }
-                String errMsg = lWhFormProcureCoreService.doProcure(warehouseId, currentUser);
+                Long inFormByInventoryId = (Long) inOutMap.get("inId");
+                inOutMap.putAll(rkMap);
+                String errMsg = lWhFormProcureCoreService.doProcure(inFormByInventoryId, currentUser);
                 if (errMsg != null) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 //                    throw new RuntimeException(errMsg);
                     log.error("鍒涘缓鍏ュ簱鍗曞け璐�");
-                    rtnMap.put("status", false);
-                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
-                    return rtnMap;
+//                    rtnMap.put("status", false);
+//                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
+                    return "鍒涘缓鍏ュ簱鍗曞け璐�";
                 }
             } else {
                 // 鍒涘缓鍑哄簱鍗曞苟鍑哄簱
-                Long lWhFormOutputId = this.createOutFormByInventoryId(warehouseId, stopTime, inventoryGoods, currentUser, sysInfo);
-                if (lWhFormOutputId == null) {
+                Map<String, Object> ckMap = createOutFormByInventoryId(warehouseId, stopTime, inventoryGoods, currentUser, sysInfo);
+                if (ckMap == null) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 //                    throw new RuntimeException("鍒涘缓鍑哄簱鍗曞け璐�");
                     log.error("鍒涘缓鍏ュ簱鍗曞け璐�");
-                    rtnMap.put("status", false);
-                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
-                    return rtnMap;
+//                    rtnMap.put("status", false);
+//                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
+                    return "鍒涘缓鍏ュ簱鍗曞け璐�";
                 }
+                inOutMap.putAll(ckMap);
+                Long lWhFormOutputId = (Long) inOutMap.get("outId");
                 //2.鏍规嵁鍑哄簱鍗曞嚭搴�
-                Long lWarehouseFlowId = lWhFormOutputCoreService.outFormByTransId(lWhFormOutputId, currentUser, stopTime);
+                Long lWarehouseFlowId = lWhFormOutputCoreService.outFormByTransId(lWhFormOutputId, WhBusinessEnum.CAIGOU, currentUser, stopTime);
                 if (lWarehouseFlowId == null) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 //                    throw new RuntimeException("鍒涘缓鍑哄簱鍗曞け璐�");
                     log.error("鍒涘缓鍏ュ簱鍗曞け璐�");
-                    rtnMap.put("status", false);
-                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
-                    return rtnMap;
+//                    rtnMap.put("status", false);
+//                    rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�");
+                    return "鍒涘缓鍏ュ簱鍗曞け璐�";
                 }
-
             }
         }
+        //
+        lWhFormInventory = new LWhFormInventory(whformInventoryId);
+        lWhFormInventory.setStates(2);
+        lWhFormInventory.setInWarehouseFormId((Long) inOutMap.get("inId"));
+        lWhFormInventory.setInBusinessFormCode((String) inOutMap.get("inCode"));
+        lWhFormInventory.setOutWarehouseFormId((Long) inOutMap.get("outId"));
+        lWhFormInventory.setOutBusinessFormCode((String) inOutMap.get("outCode"));
+        lWhFormInventoryService.update(lWhFormInventory);
 
-        return rtnMap;
+        return null;
     }
 
     /**
@@ -161,8 +186,8 @@
      * @param procureTime 閲囪喘鏃堕棿
      * @param currentUser
      */
-    private Long createInFormByInventoryId(Long warehouseId, Long procureTime, List<LWhFormInventoryGoods> inventoryGoodsList,
-                                           S_user_core currentUser) {
+    private Map<String, Object> createInFormByInventoryId(Long warehouseId, Long procureTime, List<LWhFormInventoryGoods> inventoryGoodsList,
+        S_user_core currentUser) {
         if (CollectionUtils.isEmpty(inventoryGoodsList)) {
             return null;
         }
@@ -170,7 +195,8 @@
         BaseWarehouse baseWarehouse = baseWarehouseService.getById(warehouseId);
         LWhFormProcure lWhFormProcure = new LWhFormProcure();
         lWhFormProcure.setId(whFormProcureId);
-        lWhFormProcure.setBusinessFormCode(codeGeneratorService.createCodeByPrefix(CodeGeneratorEnum.Procure_Warehouse.getValue(), 10));
+        String inCode = codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Procure_Warehouse);
+        lWhFormProcure.setBusinessFormCode(inCode);
         lWhFormProcure.setWarehouseId(warehouseId);
         lWhFormProcure.setWarehouseName(baseWarehouse.getWarehouseName());
         lWhFormProcure.setBuyerId(currentUser.getId());
@@ -182,7 +208,9 @@
         lWhFormProcure.setAgencyId(baseWarehouse.getAgencyId());
         lWhFormProcure.setAgencyName(baseWarehouse.getAgencyName());
         int result = lWhFormProcureService.insert(lWhFormProcure);
-        if (result == 0) return null;
+        if (result == 0) {
+            return null;
+        }
 
         ArrayList<LWhFormProcureGoods> procureGoodList = new ArrayList<>();
         ArrayList<LWhProcureModel> whProcureModeLlist = new ArrayList<>();
@@ -209,7 +237,7 @@
                 continue;
             }
             // 鏌ヨ鍨嬪彿搴撳瓨
-            int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, (short) 1, null);
+            int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
             LWhProcureModel model = new LWhProcureModel();
             model.setId(NumberGenerator.getLongSequenceNumber());
             model.setFromProcureGoodsId(fromProcureGoodsId);
@@ -225,7 +253,11 @@
         }
         lWhFormProcureGoodsService.insertBatch(procureGoodList);
         lWhProcureModelService.insertBatch(whProcureModeLlist);
-        return whFormProcureId;
+
+        HashMap<String, Object> rtnMap = new HashMap<>();
+        rtnMap.put("inId", whFormProcureId);
+        rtnMap.put("inCode", inCode);
+        return rtnMap;
     }
 
     /**
@@ -235,8 +267,8 @@
      * @param procureTime 鍑哄簱鏃堕棿
      * @param currentUser
      */
-    private Long createOutFormByInventoryId(Long warehouseId, Long procureTime, List<LWhFormInventoryGoods> inventoryGoodsList,
-                                            S_user_core currentUser, FinSysTenantUser sysInfo) {
+    private Map<String, Object> createOutFormByInventoryId(Long warehouseId, Long procureTime, List<LWhFormInventoryGoods> inventoryGoodsList,
+        S_user_core currentUser, FinSysTenantUser sysInfo) {
         if (CollectionUtils.isEmpty(inventoryGoodsList)) {
             return null;
         }
@@ -253,10 +285,13 @@
             return null;
         }
         lWhFormOutput.setWarehouseName(warehouse.getWarehouseName());
-        lWhFormOutput.setOutputCode(BaseWarehouseParam1.In_OutPutTypeEnum.Inventory_Output.getValue() + "");
+        String outCode = codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse);
+        lWhFormOutput.setOutputCode(outCode);
         lWhFormOutput.setOutputName("鐩樼偣鍑哄簱");
-        lWhFormOutput.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
-        lWhFormOutput.setAgencyName(sysInfo.getTenantName());
+//        lWhFormOutput.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
+        lWhFormOutput.setAgencyId(null);
+//        lWhFormOutput.setAgencyName(sysInfo.getTenantName());
+        lWhFormOutput.setAgencyName(null);
         lWhFormOutput.setOperatorId(sysInfo.getId());
         lWhFormOutput.setOperatorName(sysInfo.getUserName());
 
@@ -273,7 +308,7 @@
                 continue;
             }
             //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
-            int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, (short) 1, null);
+            int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
             //鏂板L_WH_PROCURE_MODEL璁板綍
             LWhProcureModel lWhProcureModel = new LWhProcureModel();
             lWhProcureModel.setId(IdUtil.generateId());
@@ -283,9 +318,10 @@
             lWhProcureModel.setWorehouseCount(goodsNum);
             lWhProcureModelService.insert(lWhProcureModel);
         }
-
-
-        return lWhFormOutputId;
+        HashMap<String, Object> rtnMap = new HashMap<>();
+        rtnMap.put("outId", lWhFormOutputId);
+        rtnMap.put("outCode", outCode);
+        return rtnMap;
 
     }
 }

--
Gitblit v1.9.1