From ceecebe477faf5a45b19f3b258f7add8f93b4583 Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期二, 05 十二月 2023 10:00:24 +0800
Subject: [PATCH] 代码优化 结构调整

---
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java |   79 +++++++++++++++++++++++++++------------
 1 files changed, 54 insertions(+), 25 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
index 720aa82..74df6dc 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
@@ -1,45 +1,66 @@
 package com.consum.base.service;
 
-import com.consum.base.core.util.LockManage;
-import com.consum.model.po.*;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.NumberGenerator;
-import lombok.extern.slf4j.Slf4j;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.annotation.PostConstruct;
+
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 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 java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.core.utils.LockManage;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.LWarehouseFlow;
+import com.consum.model.po.LWhFormProcure;
+import com.consum.model.po.LWhGoodsRecord;
+import com.consum.model.po.LWhProcureModel;
+import com.walker.infrastructure.utils.CollectionUtils;
+
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @ClassName LWarehouseFlowService
- * @Author cy
  * @Date 2023/10/24
  * @Description
  * @Version 1.0
  **/
 @Service
 @Slf4j
+@Transactional(propagation = Propagation.REQUIRED)
 public class LWarehouseFlowCoreService {
 
     private final JdbcTemplate jdbcTemplate;
     private SimpleJdbcCall simpleJdbcCall;
     private LWarehouseFlowService lWarehouseFlowService;
     private LWhGoodsService lWhGoodsService;
-    private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
+    private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
+    private BaseGoodsTemplateService baseGoodsTemplateService;
+
+    @Value("${spring.datasource.dataBaseName}")
+    private String dataBaseName;
+
+    @PostConstruct
+    public void init() {
+        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withCatalogName(dataBaseName).withProcedureName("InsertL_WH_GOODS");
+    }
 
     @Autowired
-    public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService, LWhGoodsService lWhGoodsService, BaseGoodsTemplateServiceImpl baseGoodsTemplateService) {
+    public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService, LWhGoodsService lWhGoodsService,
+                                     BaseGoodsTemplateService baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordServiceImpl) {
         this.jdbcTemplate = jdbcTemplate;
         this.lWarehouseFlowService = lWarehouseFlowService;
         this.baseGoodsTemplateService = baseGoodsTemplateService;
         this.lWhGoodsService = lWhGoodsService;
-        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("InsertL_WH_GOODS");
+        this.lWhGoodsRecordServiceImpl = lWhGoodsRecordServiceImpl;
     }
 
     /**
@@ -49,7 +70,7 @@
      * @param warehouseFlow
      * @return
      */
-    public int insertWareFlow(List<LWhProcureModel> goodsModelNumList, LWhFormProcure lWhFormProcure, LWarehouseFlow warehouseFlow) {
+    public int buyInsertWareFlow(List<LWhProcureModel> goodsModelNumList, LWhFormProcure lWhFormProcure, LWarehouseFlow warehouseFlow) {
         if (CollectionUtils.isEmpty(goodsModelNumList)) {
             log.error("娌℃湁瑕佸叆搴撶殑鐗╁搧");
             return 0;
@@ -59,6 +80,7 @@
         }
         // 鏌ヨ浠撳簱淇℃伅
         Long warehouseFlowId = warehouseFlow.getId();
+        Integer warehouseType = warehouseFlow.getWarehouseType();
         Long warehouseId = warehouseFlow.getWarehouseId();
         Long dealTime = warehouseFlow.getDealTime();
         BaseWarehouse baseWarehouses = lWarehouseFlowService.get(new BaseWarehouse(warehouseId));
@@ -66,8 +88,8 @@
         //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
         short buyType = lWhFormProcure.getBuyType().shortValue();
         //閲囪喘鏃堕棿
-        Long procureTime = lWhFormProcure.getProcureTime();
-
+        Long procureTime2 = lWhFormProcure.getProcureTime();
+        Long procureTime = procureTime2 == null ? dealTime : procureTime2;
         // 鎻掑叆娴佹按鎬昏〃
         int flowInsertFlag = lWarehouseFlowService.insert(warehouseFlow);
         if (flowInsertFlag == 0) {
@@ -97,7 +119,7 @@
             String goodsUnit = (String) tempGoodsInfo.get("unit");
 
             // 鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撹褰� L_WH_GOODS_RECORD
-            long whGoodsRecordId = NumberGenerator.getLongSequenceNumberNano();
+            long whGoodsRecordId = IdUtil.generateId();
             LWhGoodsRecord whGoodsRecord = new LWhGoodsRecord();
             whGoodsRecord.setId(whGoodsRecordId);
             whGoodsRecord.setWarehouseId(warehouseId);
@@ -112,37 +134,41 @@
             whGoodsRecord.setThisType(1);
 
             //閫氳繃LockManage鑾峰緱閿�
-            Object warehouseModelLockObj = LockManage.acquireLock(warehouseId, baseGoodsModelsId);
+            Object warehouseModelLockObj = LockManage.acquireLock(warehouseType, warehouseId, baseGoodsModelsId);
             synchronized (warehouseModelLockObj) {
                 // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺
-                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseId, baseGoodsModelsId, (short) 1);
+                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 1, null);
                 whGoodsRecord.setInitialCount(goodsModelNum);
                 whGoodsRecord.setThisCount(modelCount);
                 whGoodsRecord.setEndCount(goodsModelNum + modelCount);
 
+                long totalPrice = 0;
                 //灏嗗悓鍨嬪彿鐨勭墿鍝佹彃鍏� 搴撳瓨鐗╁搧璇︽儏
                 List<LWhProcureModel> lWhProcureModels = sameModelList.get(baseGoodsModelsId);
-                lWhProcureModels.forEach(item -> {
+                for (LWhProcureModel item : lWhProcureModels) {
                     //渚涘簲鍟�
                     String supplier = item.getSupplier();
                     //浠锋牸
                     Long price = item.getPrice();
                     //鐗╁搧涓暟
                     Integer counts = item.getCounts();
-                    sameGoodsInsertMore(warehouseFlowId, warehouseId, whGoodsRecordId, (short) 1, warehouseName,
+                    totalPrice = totalPrice + counts * price;
+                    sameGoodsInsertMore(warehouseFlowId, warehouseType, warehouseId, whGoodsRecordId, (short) 1, warehouseName,
                             classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName,
                             supplier, buyType, goodsUnit, price, procureTime, 1, dealTime, counts);
-                });
+                }
+                ;
+                whGoodsRecord.setTotalPrice(totalPrice);
             }
+            lWhGoodsRecordServiceImpl.insert(whGoodsRecord);
         });
 
         return 1;
     }
 
+
     /**
-     * 鍚屾牱瑙勬牸鐨勭墿鍝� 鎻掑叆澶氭锛�
-     * 鍚屾椂灏嗕富閿褰曞湪 杩涘嚭搴撴祦姘存槑缁嗐�怢_WH_GOODS_RECORD_DETAILS銆�,
-     * 鏇存柊 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆�
+     * 鍚屾牱瑙勬牸鐨勭墿鍝� 鎻掑叆澶氭锛� 鍚屾椂灏嗕富閿褰曞湪 杩涘嚭搴撴祦姘存槑缁嗐�怢_WH_GOODS_RECORD_DETAILS銆�, 鏇存柊 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆�
      *
      * @param pWarehouseId         浠撳簱id
      * @param pWarehouseName       浠撳簱鍚嶇О
@@ -159,13 +185,15 @@
      * @param pStates              鐘舵��
      * @param pTimes               鎻掑叆鏉℃暟
      */
-    public void sameGoodsInsertMore(long pWarehouseFlowId, long pWarehouseId, long pWhGoodsRecordId, short pRecordType, String pWarehouseName, short pCostType,
+    public void sameGoodsInsertMore(long pWarehouseFlowId, Integer warehouseType, long pWarehouseId, long pWhGoodsRecordId, short pRecordType,
+                                    String pWarehouseName, short pCostType,
                                     long pBaseGoodsTemplateId, String pGoodsTemplateName, long pBaseGoodsModelsId,
                                     String pBaseGoodsModelsName, String pSupplier, short pBuyType,
                                     String pUnit, long pPrice, long pProcureDate,
                                     int pStates, long pDealTime, int pTimes) {
         SqlParameterSource in = new MapSqlParameterSource()
                 .addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId)
+                .addValue("p_WAREHOUSE_TYPE", warehouseType)
                 .addValue("p_WAREHOUSE_ID", pWarehouseId)
                 .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId)
                 .addValue("p_RECORD_TYPE", pRecordType)
@@ -186,4 +214,5 @@
         Map<String, Object> out = simpleJdbcCall.execute(in);
         System.out.println("Procedure result: " + out);
     }
+
 }

--
Gitblit v1.9.1