From c1ac6d13630b04b4e11d6f383858e4f8fa64f924 Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期六, 02 十二月 2023 17:24:34 +0800
Subject: [PATCH] 盘点查询返回结果修改

---
 consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java |  132 +++++++++++++++++++++++++++-----------------
 1 files changed, 81 insertions(+), 51 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 bedd0f9..c21a84c 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
@@ -1,67 +1,68 @@
 package com.consum.base.service;
 
+import cn.hutool.core.convert.Convert;
 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.core.util.LockManage;
+import com.consum.base.core.service.LWhWarningCoreServiceImpl;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.core.utils.LockManage;
 import com.consum.model.po.*;
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.CollectionUtils;
 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.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 /**
  * @ClassName WhFormOutputCoreService
- * @Author cy
  * @Date 2023/10/26
  * @Description
  * @Version 1.0
  **/
 @Slf4j
 @Service
+@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
 public class LWhFormOutputCoreService {
-    private final JdbcTemplate jdbcTemplate;
-    private SimpleJdbcCall simpleJdbcCall;
+
     private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
     private LWhGoodsService lWhGoodsService;
     private CodeGeneratorService codeGeneratorService;
     private LWhProcureModelService lWhProcureModelService;
-    private LWhFormTransferService lWhFormTransferService;
     private LWhFormOutputService lWhFormOutputService;
+    private LWhWarningCoreServiceImpl lWhWarningCoreService;
     private LWarehouseFlowService lWarehouseFlowService;
+    private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
+    private LWhGoodsRecordService lWhGoodsRecordService;
 
     @Autowired
     public LWhFormOutputCoreService(BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
                                     LWhGoodsService lWhGoodsService,
                                     CodeGeneratorService codeGeneratorService,
                                     LWhProcureModelService lWhProcureModelService,
-                                    LWhFormTransferService lWhFormTransferService,
                                     LWhFormOutputService lWhFormOutputService,
                                     LWarehouseFlowService lWarehouseFlowService,
-                                    JdbcTemplate jdbcTemplate
-    ) {
+                                    LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService,
+                                    LWhGoodsRecordService lWhGoodsRecordService,
+                                    LWhWarningCoreServiceImpl lWhWarningCoreService) {
         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");
+        this.lWhGoodsRecordDetailsService = lWhGoodsRecordDetailsService;
+        this.lWhGoodsRecordService = lWhGoodsRecordService;
+        this.lWhWarningCoreService = lWhWarningCoreService;
     }
 
 
@@ -72,12 +73,12 @@
      * @return 鍑哄簱鍗旾d
      */
     @Transactional(rollbackFor = Exception.class)
-    public Long createOutFormByTransId(Long whFormTransferId, S_user_core currentUser,Long dealTime) {
+    public Long createOutFormByTransId(Long whFormTransferId, WhBusinessEnum businessEnum, S_user_core currentUser, Long dealTime) {
         if (whFormTransferId == null) {
             return null;
         }
         LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(whFormTransferId);
-        lWhFormTransfer = lWhFormTransferService.get(lWhFormTransfer);
+        lWhFormTransfer = lWhFormOutputService.get(lWhFormTransfer);
         if (lWhFormTransfer == null || lWhFormTransfer.getStates() != 0) {
             log.error("璋冩嫧澶辫触锛佽妫�鏌ヨ皟鎷ㄥ崟鐘舵��");
             return null;
@@ -89,10 +90,11 @@
         }
 
         //鐢宠璋冩嫧鐨勭墿鍝�
-        List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, whFormTransferId);
+        List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(businessEnum, whFormTransferId);
         if (CollectionUtils.isEmpty(goodsModelNumList)) {
             log.error("娌℃湁瑕佸叆搴撶殑鐗╁搧");
-            return null;
+            throw new RuntimeException("娌℃湁瑕佸叆搴撶殑鐗╁搧");
+//            return null;
         }
         Long outWarehouseId = lWhFormTransfer.getOutWarehouseId();
         String outWarehouseName = lWhFormTransfer.getOutWarehouseName();
@@ -104,7 +106,7 @@
         // 璋冩嫧鍗曠墿鍝� 宸茬粡鎸夊瀷鍙峰垎濂戒簡
         goodsModelNumList.forEach(itemModelInfo -> {
             // 澶嶇敤瀵硅薄
-            itemModelInfo.setId(NumberGenerator.getLongSequenceNumber());
+            itemModelInfo.setId(IdUtil.generateId());
             itemModelInfo.setFromProcureGoodsId(null);
             itemModelInfo.setBusinessType(3);
             itemModelInfo.setBusinessId(outWarehouseFormId);
@@ -119,7 +121,7 @@
         whFormOutput.setId(outWarehouseFormId);
         // 姝ゆ椂骞舵病鏈夊嚭搴�
         whFormOutput.setWarehouseFlowId(null);
-        whFormOutput.setBusinessFormCode(codeGeneratorService.createCodeByPrefix(CodeGeneratorEnum.OutPut_Warehouse.getValue(), 4));
+        whFormOutput.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
         //杩涘嚭搴撴祦姘存�昏〃 鍏ュ簱鍗旾D
         whFormOutput.setInWarehouseFlowId(null);
 //        璋冩嫧鍗旾D(璋冩嫧鏃堕渶瑕�)
@@ -128,6 +130,7 @@
         whFormOutput.setOutputName("璋冩嫧鍑哄簱");
         whFormOutput.setWarehouseId(outWarehouseId);
         whFormOutput.setWarehouseName(outWarehouseName);
+        // 杩欐牱灏辨煡璇笉鍒拌鏉¤褰�
         whFormOutput.setAgencyId(null);
         whFormOutput.setAgencyName(null);
         whFormOutput.setOperatorId(currentUser.getId());
@@ -149,10 +152,10 @@
      * 鏍规嵁 鍑哄簱鍗� 鍑哄簱
      *
      * @param outWarehouseFormId 鍑哄簱鍗旾d
-     * @return
+     * @return 娴佹按璁板綍鎬昏〃ID
      */
     @Transactional(rollbackFor = Exception.class)
-    public Long outFormByTransId(Long outWarehouseFormId, S_user_core currentUser,Long dealTime) {
+    public Long outFormByTransId(Long outWarehouseFormId, WhBusinessEnum businessType, S_user_core currentUser, Long dealTime) {
         if (outWarehouseFormId == null) {
             return null;
         }
@@ -169,8 +172,12 @@
             return null;
         }
         // 瑕佸嚭鐗╁搧鐨勪粨搴搃d
+        Integer outWarehouseType = lWhFormOutput.getOutWarehouseType();
         Long outWarehouseId = lWhFormOutput.getWarehouseId();
         String warehouseName = lWhFormOutput.getWarehouseName();
+        Integer inWarehouseType = lWhFormOutput.getInWarehouseType();
+        Long inWarehouseId = lWhFormOutput.getInWarehouseId();
+        String inWarehouseName = lWhFormOutput.getInWarehouseName();
 
         Long userId = currentUser.getId();
         String nickName = currentUser.getNick_name();
@@ -181,32 +188,45 @@
         long lWarehouseFlowBusinessId = outWarehouseFormId;
 
         // 鐗╁搧鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛�
-        short queryModelStatusT = 1;
+        Integer queryModelStatusT = 1;
         //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
-        Short buyTypeT = null;
-        Short modGoodsTransferingStatusT = null;
-        String outputCode = lWhFormOutput.getOutputCode();
-        if ((BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() + "").equals(outputCode)) {
+        Integer buyTypeT = null;
+        Integer modGoodsTransferingStatusT = null;
+        short businessTypeValue = businessType.getValue();
+        if (BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() == businessTypeValue) {
             //璋冩嫧鍑哄簱
             queryModelStatusT = 1;
             buyTypeT = 1;
             lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
             modGoodsTransferingStatusT = 0;
-        } else if ((BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue() + "").equals(outputCode)) {
+        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue() == businessTypeValue) {
             //  閮ㄩ棬浠撳簱 鍒嗗彂鍑哄簱
 //            queryModelStatusT = 2;
+            lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
+        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue() == businessTypeValue) {
+            //  闆舵槦鍑哄簱
+            queryModelStatusT = 1;
+            buyTypeT = null;
+            modGoodsTransferingStatusT = 4;
+        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Inventory_Output.getValue() == businessTypeValue) {
+            //  鐩樼偣鍑哄簱
+            queryModelStatusT = 1;
+            buyTypeT = null;
+            modGoodsTransferingStatusT = 4;
         }
-        short queryModelStatus = queryModelStatusT;
-        Short buyType = buyTypeT;
-        Short modGoodsTransferingStatus = modGoodsTransferingStatusT;
+        Integer queryModelStatus = queryModelStatusT;
+        Integer buyType = buyTypeT;
+        Integer modGoodsTransferingStatus = modGoodsTransferingStatusT;
 
-        // 鎺ユ敹鏂逛粨搴撲俊鎭�
-        Long inWarehouseId = lWhFormOutput.getInWarehouseId();
-        String inWarehouseName = lWhFormOutput.getInWarehouseName();
-
+        ArrayList<Long> allChangModelList = new ArrayList<>();
         goodsModelNumList.forEach(itemModelInfo -> {
             // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鐨勬煇涓瀷鍙�
             Long baseGoodsModelsId = itemModelInfo.getBaseGoodsModelsId();
+
+            //TODO 涓虹┖鏃朵笉鍔犲叆鏇存柊鍒楄〃
+            if (baseGoodsModelsId != null) {
+                allChangModelList.add(baseGoodsModelsId);
+            }
             // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鏌愪釜鍨嬪彿鐨勬暟閲�
             Integer counts = itemModelInfo.getCounts();
 
@@ -240,10 +260,11 @@
             whGoodsRecord.setThisCount(counts);
 
             //閫氳繃LockManage鑾峰緱閿�
-            Object warehouseModelLockObj = LockManage.acquireLock(outWarehouseId, baseGoodsModelsId);
+            Object warehouseModelLockObj = LockManage.acquireLock(outWarehouseType, outWarehouseId, baseGoodsModelsId);
+            List<Long> outGoodsId = null;
             synchronized (warehouseModelLockObj) {
                 // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺
-                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType);
+                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType);
                 if (goodsModelNum < counts) {
                     log.error("鍑哄簱澶辫触锛佸瀷鍙穥} 鐨勬暟閲忎笉瓒筹紝闇�瑕佽皟鎷▄}涓紝浠撳簱涓幇瀛榹}涓�", baseGoodsModelsId, counts, goodsModelNum);
                     // 鎵嬪姩鍥炴粴
@@ -254,18 +275,25 @@
                 whGoodsRecord.setEndCount(goodsModelNum - counts);
 
                 //鍑哄簱鏃跺�欙紝鎸� 鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱
-                List<Long> outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType, goodsModelNum);
-                lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseId, inWarehouseName, modGoodsTransferingStatus);
+                outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType,
+                        counts);
+                lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseType, inWarehouseId, inWarehouseName, modGoodsTransferingStatus);
                 // 鎵归噺鎻掑叆 杩涘嚭搴撴祦姘存槑缁哰L_WH_GOODS_RECORD_DETAILS]
-                sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short) 0);
+                lWhGoodsRecordDetailsService.sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short) 0);
             }
+            long totalAmount = lWhGoodsService.queryGoodsPriceById(outGoodsId);
+            LWhProcureModel lWhProcureModel = new LWhProcureModel(itemModelInfo.getId());
+            whGoodsRecord.setTotalPrice(totalAmount);
+            lWhGoodsRecordService.insert(whGoodsRecord);
+            lWhProcureModel.setTotalAmount(totalAmount);
+            lWhProcureModelService.update(lWhProcureModel);
         });
         LWarehouseFlow warehouseFlow = new LWarehouseFlow();
         warehouseFlow.setId(lWarehouseFlowId);
         warehouseFlow.setWarehouseId(outWarehouseId);
         warehouseFlow.setWarehouseName(warehouseName);
         warehouseFlow.setThisType(2);
-        warehouseFlow.setBusinessType(WhBusinessEnum.DIAOBO.getValue() + 0);
+        warehouseFlow.setBusinessType(businessType.getValue() + 0);
 
         warehouseFlow.setBusinessFormId(lWarehouseFlowBusinessId);
         warehouseFlow.setOperatorId(userId);
@@ -276,16 +304,18 @@
         if (flowInsertFlag == 0) {
             return null;
         }
+        // 鍚戝嚭搴撳崟 鎻掑叆 杩涘嚭搴撴祦姘存�昏〃ID
+        lWhFormOutput = new LWhFormOutput(outWarehouseFormId);
+        lWhFormOutput.setStates(2);
+        lWhFormOutput.setWarehouseFlowId(lWarehouseFlowId);
+        lWhFormOutputService.update(lWhFormOutput);
+
+        //褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉�
+        if (outWarehouseType == 0){
+            lWhWarningCoreService.updateKuCun(Convert.toShort(outWarehouseType, (short) 0), outWarehouseId, allChangModelList, null, dealTime);
+        }
         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