From dd570625f2d784f94f78b70c508cc1dd39128f1f Mon Sep 17 00:00:00 2001
From: luqingyang <lqy5492@163.com>
Date: 星期一, 30 十月 2023 10:01:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java |  108 ++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 68 insertions(+), 40 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
index 49df2b7..e8988b6 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
@@ -8,14 +8,18 @@
 import com.consum.model.po.*;
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.NumberGenerator;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+import org.springframework.jdbc.core.namedparam.SqlParameterSource;
+import org.springframework.jdbc.core.simple.SimpleJdbcCall;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 
@@ -29,20 +33,37 @@
 @Slf4j
 @Service
 public class LWhFormOutputCoreService {
-    @Resource
+    private final JdbcTemplate jdbcTemplate;
+    private SimpleJdbcCall simpleJdbcCall;
     private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
-    @Resource
     private LWhGoodsService lWhGoodsService;
-    @Resource
     private CodeGeneratorService codeGeneratorService;
-    @Resource
     private LWhProcureModelService lWhProcureModelService;
-    @Resource
     private LWhFormTransferService lWhFormTransferService;
-    @Resource
     private LWhFormOutputService lWhFormOutputService;
-    @Resource
     private LWarehouseFlowService lWarehouseFlowService;
+
+    @Autowired
+    public LWhFormOutputCoreService(BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
+                                    LWhGoodsService lWhGoodsService,
+                                    CodeGeneratorService codeGeneratorService,
+                                    LWhProcureModelService lWhProcureModelService,
+                                    LWhFormTransferService lWhFormTransferService,
+                                    LWhFormOutputService lWhFormOutputService,
+                                    LWarehouseFlowService lWarehouseFlowService,
+                                    JdbcTemplate jdbcTemplate
+    ) {
+        this.baseGoodsTemplateService = baseGoodsTemplateService;
+        this.lWhGoodsService = lWhGoodsService;
+        this.codeGeneratorService = codeGeneratorService;
+        this.lWhProcureModelService = lWhProcureModelService;
+        this.lWhFormTransferService = lWhFormTransferService;
+        this.lWhFormOutputService = lWhFormOutputService;
+        this.lWarehouseFlowService = lWarehouseFlowService;
+        this.jdbcTemplate = jdbcTemplate;
+        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("insert_WH_GOODS_RECORD_DETAILS");
+    }
+
 
     /**
      * 鏍规嵁 璋冩嫧鍗� 鐢熸垚 鍑哄簱鍗�
@@ -51,7 +72,7 @@
      * @return 鍑哄簱鍗旾d
      */
     @Transactional(rollbackFor = Exception.class)
-    public Long createOutFormByTransId(Long whFormTransferId, S_user_core currentUser) {
+    public Long createOutFormByTransId(Long whFormTransferId, S_user_core currentUser, Long dealTime) {
         if (whFormTransferId == null) {
             return null;
         }
@@ -61,6 +82,12 @@
             log.error("璋冩嫧澶辫触锛佽妫�鏌ヨ皟鎷ㄥ崟鐘舵��");
             return null;
         }
+        // 鏌ヨ璇ヨ皟鎷ㄥ崟鏄惁宸茬粡鐢熸垚浜嗗嚭搴撳崟
+        Long outWarehouseFormIdT = lWhFormOutputService.queyrIdByTransferId(whFormTransferId);
+        if (outWarehouseFormIdT != null) {
+            return outWarehouseFormIdT;
+        }
+
         //鐢宠璋冩嫧鐨勭墿鍝�
         List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, whFormTransferId);
         if (CollectionUtils.isEmpty(goodsModelNumList)) {
@@ -71,36 +98,18 @@
         String outWarehouseName = lWhFormTransfer.getOutWarehouseName();
 
         // 鍑哄簱鍗旾D
-        Long outWarehouseFormId = NumberGenerator.getLongSequenceNumberNano();
+        outWarehouseFormIdT = NumberGenerator.getLongSequenceNumberNano();
+        Long outWarehouseFormId = outWarehouseFormIdT;
 
         // 璋冩嫧鍗曠墿鍝� 宸茬粡鎸夊瀷鍙峰垎濂戒簡
         goodsModelNumList.forEach(itemModelInfo -> {
-            // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鐨勬煇涓瀷鍙�
-            Long baseGoodsModelsId = itemModelInfo.getBaseGoodsModelsId();
-            // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鏌愪釜鍨嬪彿鐨勬暟閲�
-            Integer counts = itemModelInfo.getCounts();
-            //閫氳繃LockManage鑾峰緱閿�
-            //鍥犱负鏄牴鎹皟鎷ㄧ敓鎴愮殑 鎵�浠ユ澶勪笉鐢ㄦ牎楠屽簱瀛�
-//            Object warehouseModelLockObj = LockManage.acquireLock(outWarehouseId, baseGoodsModelsId);
-            //            synchronized (warehouseModelLockObj) {
-            // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺
-//                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType);
-//                if (goodsModelNum < counts) {
-//                    log.error("鍑哄簱澶辫触锛佸瀷鍙穥} 鐨勬暟閲忎笉瓒筹紝闇�瑕佽皟鎷▄}涓紝浠撳簱涓幇瀛榹}涓�", baseGoodsModelsId, counts, goodsModelNum);
-//                    // 鎵嬪姩鍥炴粴
-//                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                    throw new RuntimeException("鍑哄簱澶辫触!鍨嬪彿鏁伴噺涓嶈冻");
-//                }
             // 澶嶇敤瀵硅薄
             itemModelInfo.setId(NumberGenerator.getLongSequenceNumber());
             itemModelInfo.setFromProcureGoodsId(null);
             itemModelInfo.setBusinessType(3);
             itemModelInfo.setBusinessId(outWarehouseFormId);
             itemModelInfo.setPrice(null);
-//                itemModelInfo.setCounts(counts);
-//                itemModelInfo.setWorehouseCount(goodsModelNum);
             itemModelInfo.setSupplier(null);
-//            }
         });
         lWhProcureModelService.insertBatch(goodsModelNumList);
 
@@ -123,7 +132,6 @@
         whFormOutput.setAgencyName(null);
         whFormOutput.setOperatorId(currentUser.getId());
         whFormOutput.setOperatorName(currentUser.getNick_name());
-        long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
 
         whFormOutput.setDealTime(dealTime);
         whFormOutput.setStates(1);
@@ -144,7 +152,7 @@
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public Long outFormByTransId(Long outWarehouseFormId, S_user_core currentUser) {
+    public Long outFormByTransId(Long outWarehouseFormId, S_user_core currentUser, Long dealTime) {
         if (outWarehouseFormId == null) {
             return null;
         }
@@ -166,7 +174,7 @@
 
         Long userId = currentUser.getId();
         String nickName = currentUser.getNick_name();
-        long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
+
         // 娴佹按璁板綍鎬昏〃ID
         long lWarehouseFlowId = NumberGenerator.getLongSequenceNumberNano();
         // 娴佹按璁板綍鎬昏〃涓� 涓氬姟ID 銆傝皟鎷ㄥ崟鏃�  淇濆瓨璋冩嫧鍗昳d  鍑哄簱鍗曟椂 淇濆瓨鍑哄簱鍗昳d
@@ -176,18 +184,30 @@
         short queryModelStatusT = 1;
         //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
         Short buyTypeT = null;
+        Short modGoodsTransferingStatusT = null;
         String outputCode = lWhFormOutput.getOutputCode();
         if ((BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() + "").equals(outputCode)) {
             //璋冩嫧鍑哄簱
             queryModelStatusT = 1;
             buyTypeT = 1;
             lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
+            modGoodsTransferingStatusT = 0;
         } else if ((BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue() + "").equals(outputCode)) {
             //  閮ㄩ棬浠撳簱 鍒嗗彂鍑哄簱
 //            queryModelStatusT = 2;
+        } else if ((BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue() + "").equals(outputCode)) {
+            //  闆舵槦鍑哄簱
+            queryModelStatusT = 1;
+            buyTypeT = null;
+            modGoodsTransferingStatusT = 4;
         }
         short queryModelStatus = queryModelStatusT;
         Short buyType = buyTypeT;
+        Short modGoodsTransferingStatus = modGoodsTransferingStatusT;
+
+        // 鎺ユ敹鏂逛粨搴撲俊鎭�
+        Long inWarehouseId = lWhFormOutput.getInWarehouseId();
+        String inWarehouseName = lWhFormOutput.getInWarehouseName();
 
         goodsModelNumList.forEach(itemModelInfo -> {
             // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鐨勬煇涓瀷鍙�
@@ -240,12 +260,10 @@
 
                 //鍑哄簱鏃跺�欙紝鎸� 鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱
                 List<Long> outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType, goodsModelNum);
-                outGoodsId.forEach(whGoodsId -> {
-
-                });
-
+                lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseId, inWarehouseName, modGoodsTransferingStatus);
+                // 鎵归噺鎻掑叆 杩涘嚭搴撴祦姘存槑缁哰L_WH_GOODS_RECORD_DETAILS]
+                sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short) 0);
             }
-
         });
         LWarehouseFlow warehouseFlow = new LWarehouseFlow();
         warehouseFlow.setId(lWarehouseFlowId);
@@ -261,8 +279,18 @@
         // 鎻掑叆娴佹按鎬昏〃
         int flowInsertFlag = lWarehouseFlowService.insert(warehouseFlow);
         if (flowInsertFlag == 0) {
-            return 0l;
+            return null;
         }
-        return 1l;
+        return lWarehouseFlowId;
+    }
+
+    public void sameGoodsInsertMore(List<Long> outGoodsId, long whGoodsRecordId, short thisType) {
+        SqlParameterSource in = new MapSqlParameterSource()
+                .addValue("WHGOODSIDList", StringUtils.join(outGoodsId))
+                .addValue("WH_GOODS_RECORD_ID", whGoodsRecordId)
+                .addValue("THIS_TYPE", thisType);
+
+        Map<String, Object> out = simpleJdbcCall.execute(in);
+        System.out.println("Procedure result: " + out);
     }
 }

--
Gitblit v1.9.1