From 06e2ce23ba5944161e5bd32dd2ac63a6aee60013 Mon Sep 17 00:00:00 2001
From: 杨凯 <398860375@qq.com>
Date: 星期三, 18 十月 2023 12:03:27 +0800
Subject: [PATCH] 数据库WH_GOODS删除调拨数量,总数量。在调拨时重新生成调拨物品WH_GOODS表中重新生成记录。

---
 consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java |  315 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 304 insertions(+), 11 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java b/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java
index d39badc..e75b036 100644
--- a/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java
+++ b/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java
@@ -1,12 +1,13 @@
 package com.consum.base.core;
 
-import com.consum.base.core.po.WhFormInventory;
 import com.consum.base.core.tools.SqlParameter;
 import com.consum.model.po.*;
 import com.walker.infrastructure.utils.NumberGenerator;
 import com.walker.jdbc.service.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -16,6 +17,7 @@
 public class WarehouseBusinessService extends BaseServiceImpl {
 
 
+    @Autowired
     private WarehouseCoreService coreService;
 
     /**
@@ -33,7 +35,7 @@
                 "FROM\n" +
                 "	WH_FORM_PROCURE_MODEL A \n" +
                 "WHERE\n" +
-                "	A.WH_FORM_PROCURE_ID = : PROCURE_ID";
+                "	A.WH_FORM_PROCURE_ID = :PROCURE_ID";
 
         List<WhFormProcureModel>  modelList = this.select(sql,new SqlParameter().put("PROCURE_ID",procure.getId()),new WhFormProcureModel());
 
@@ -45,7 +47,7 @@
             param.setFirstInputCode(model.getId().toString());
             param.setFirst_input_type(1);
             param.setModelId(model.getBaseGoodsModelsId());
-            CheckWarehouseResult result =  coreService.unifyCheck(param)[0];
+            CheckWarehouseResult result =  coreService.unifyCheck(param).get(0);
 
 
             WhGoodsDetails details = new WhGoodsDetails();
@@ -74,6 +76,54 @@
             update(procure);
         }
     }
+    public void doOutPut(WhFormOutput output){
+        String sql = "SELECT\n" +
+                "	* \n" +
+                "FROM\n" +
+                "	WH_FORM_OUTPUT_GOODS A \n" +
+                "WHERE\n" +
+                "	A.WH_FORM_OUTPUT_ID = :OUTPUT_ID";
+
+        List<WhFormOutputGoods>  goodsList = this.select(sql,new SqlParameter()
+                .put("OUTPUT_ID",output.getId()),new WhFormOutputGoods());
+
+        for (WhFormOutputGoods goods : goodsList){
+            CheckWarehouseParam param = new CheckWarehouseParam();
+            param.setIsCheckIn(false);
+            param.setWarehouseId(output.getWarehouseId());
+            param.setCount(goods.getCounts());
+
+            List<CheckWarehouseResult> results =  coreService.unifyCheck(param);
+            for (CheckWarehouseResult result : results){
+                WhFormOutputModel model = new WhFormOutputModel();
+                model.setId(NumberGenerator.getLongSequenceNumber());
+                model.setCounts(result.getInitial_count() - result.getEnd_count());
+                model.setOutWhGoodsDetailsId(result.getWhGoods().getId());
+                model.setWhGoodsId(result.getWhGoods().getId());
+                model.setWhFormOutputId(output.getId());
+                model.setWhFormOutputGoodsId(goods.getId());
+                insert(model);
+
+                WhGoodsDetails details = new WhGoodsDetails();
+                details.setBusinessFormId(output.getId());
+                details.setBusinessFormCode(output.getBusinessFormCode());
+                details.setBusinessFormName("鍑哄簱鍗曪細" + output.getBusinessFormCode());
+                details.setInitialCount(result.getInitial_count());
+                details.setThisType(2);
+                details.setThisCount(result.getInitial_count() - result.getEnd_count());
+                details.setEndCount(result.getEnd_count());
+                details.setWarehouseId(result.getWhGoods().getWarehouseId());
+                details.setWarehouseName(result.getWhGoods().getWarehouseName());
+                details.setClassification(3);
+                details.setOperatorId(output.getOperatorId());
+                details.setOperatorName(output.getOperatorName());
+                details.setDealTime(output.getDealTime());
+                details.setWhGoodsId(result.getWhGoods().getId());
+                this.insert(details);
+            }
+        }
+    }
+
 
     /**
      * 鎵ц璋冩嫧鍑哄簱鎿嶄綔
@@ -89,7 +139,7 @@
                 "FROM\n" +
                 "	WH_FORM_TRANSFER_GOODS A \n" +
                 "WHERE\n" +
-                "	A.WH_FORM_TRANSFER_ID = : TRANSFER_ID";
+                "	A.WH_FORM_TRANSFER_ID = :TRANSFER_ID";
 
         List<WhFormTransferGoods>  goodsList = this.select(sql,new SqlParameter()
                 .put("TRANSFER_ID",transfer.getId()),new WhFormTransferGoods());
@@ -99,13 +149,13 @@
             param.setIsCheckIn(false);
             param.setWarehouseId(transfer.getOutWarehouseId());
             param.setCount(goods.getCounts());
-            CheckWarehouseResult[] results =  coreService.unifyCheck(param);
+            List<CheckWarehouseResult> results =  coreService.unifyCheck(param);
             for (CheckWarehouseResult result : results){
                 WhFormTransferModel model = new WhFormTransferModel();
                 model.setId(NumberGenerator.getLongSequenceNumber());
                 model.setWhFormTransferId(transfer.getId());
                 model.setWorehouseCount(result.getInitial_count());
-                model.setCounts(result.getInitial_count() - result.getInitial_count());
+                model.setCounts(result.getInitial_count() - result.getEnd_count());
                 model.setOutWhGoodsDetailsId(result.getWhGoods().getId());
                 model.setWhFormTransferGoodsId(goods.getId());
                 insert(model);
@@ -143,13 +193,97 @@
         String sql = "SELECT\n" +
                 "	* \n" +
                 "FROM\n" +
-                "	WH_FORM_TRANSFER_GOODS A \n" +
+                "	WH_FORM_TRANSFER_MODEL A \n" +
                 "WHERE\n" +
-                "	A.WH_FORM_TRANSFER_ID = : TRANSFER_ID";
+                "	A.WH_FORM_TRANSFER_ID = :TRANSFER_ID";
 
-        List<WhFormTransferGoods>  goodsList = this.select(sql,new SqlParameter()
-                                    .put("TRANSFER_ID",transfer.getId()),new WhFormTransferGoods());
+        List<WhFormTransferModel>  modelsList = this.select(sql,new SqlParameter()
+                                    .put("TRANSFER_ID",transfer.getId()),new WhFormTransferModel());
 
+        for (WhFormTransferModel model : modelsList) {
+            CheckWarehouseParam param = new CheckWarehouseParam();
+            param.setIsCheckIn(true);
+            param.setWarehouseId(transfer.getInWarehouseId());
+            param.setCount(model.getCounts());
+            param.setWh_goods_id(model.getWhGoodsId());
+            CheckWarehouseResult result = coreService.unifyCheck(param).get(0);
+
+            WhGoodsDetails details = new WhGoodsDetails();
+            details.setBusinessFormId(transfer.getId());
+            details.setBusinessFormCode(transfer.getBusinessFormCode());
+            details.setBusinessFormName("璋冩嫧鍏ュ簱鍗曪細" + transfer.getBusinessFormCode());
+            details.setInitialCount(result.getInitial_count());
+            details.setThisType(1);
+            details.setThisCount(result.getEnd_count()-result.getInitial_count());
+            details.setEndCount(result.getEnd_count());
+            details.setWarehouseId(result.getWhGoods().getWarehouseId());
+            details.setWarehouseName(result.getWhGoods().getWarehouseName());
+            details.setClassification(4);
+            details.setOperatorId(transfer.getOperatorId2());
+            details.setOperatorName(transfer.getOperatorName2());
+            details.setDealTime(transfer.getIninputTime());
+            details.setWhGoodsId(result.getWhGoods().getId());
+            this.insert(details);
+
+            model.setInWhGoodsDetailsId(details.getId());
+            update(model);
+        }
+    }
+
+    /**
+     * 鎶ュ簾鍗�
+     * @param scrapped
+     */
+    public void doScrapped(WhFormScrapped scrapped){
+        String sql = "SELECT\n" +
+                "	* \n" +
+                "FROM\n" +
+                "	WH_FORM_SCRAPPED_GOODS A \n" +
+                "WHERE\n" +
+                "	A.DEP_FORM_SCRAPPED_ID = :SCRAPPED_ID";
+
+        List<WhFormScrappedGoods>  goodsList = this.select(sql,new SqlParameter()
+                .put("SCRAPPED_ID",scrapped.getId()),new WhFormScrappedGoods());
+
+        for (WhFormScrappedGoods goods : goodsList){
+            CheckWarehouseParam param = new CheckWarehouseParam();
+            param.setIsCheckIn(false);
+            param.setWarehouseId(scrapped.getWarehouseId());
+            param.setCount(goods.getCounts());
+            List<CheckWarehouseResult> results =  coreService.unifyCheck(param);
+            for (CheckWarehouseResult result : results){
+
+
+                WhGoodsDetails details = new WhGoodsDetails();
+                details.setBusinessFormId(scrapped.getId());
+                details.setBusinessFormCode(scrapped.getBusinessFormCode());
+                details.setBusinessFormName("鎶ュ簾鍗曪細" + scrapped.getBusinessFormCode());
+                details.setInitialCount(result.getInitial_count());
+                details.setThisType(2);
+                details.setThisCount(result.getInitial_count() - result.getEnd_count());
+                details.setEndCount(result.getEnd_count());
+                details.setWarehouseId(result.getWhGoods().getWarehouseId());
+                details.setWarehouseName(result.getWhGoods().getWarehouseName());
+                details.setClassification(10);
+                details.setOperatorId(scrapped.getOperatorId());
+                details.setOperatorName(scrapped.getOperatorName());
+                details.setDealTime(scrapped.getDealTime());
+                details.setWhGoodsId(result.getWhGoods().getId());
+                this.insert(details);
+
+
+                WhFormScrappedModel model = new WhFormScrappedModel();
+                model.setId(NumberGenerator.getLongSequenceNumber());
+                model.setCounts(result.getWhGoods().getWhCount());
+                model.setScrappedCode(goods.getScrappedCode());
+                model.setScrappedName(goods.getScrappedName());
+                model.setDepGoodsDetailsId(details.getId());
+                model.setDepFormScrappedId(scrapped.getId());
+                model.setWhGoodsId(result.getWhGoods().getId());
+                model.setWhFormScrappedGoodsId(goods.getId());
+                insert(model);
+            }
+        }
     }
 
     /**
@@ -158,8 +292,167 @@
      * 鏈熷垵鏁伴噺INIT_COUNTS锛屽拰 搴撳瓨鐗╁搧缂栧彿WH_GOODS_ID瀛楁
      * @param inventory
      */
-    public void createInventory(WhFormInventory inventory){
+    public void createInventoryForm(WhFormInventory inventory){
+        String sql =
+                "SELECT\n" +
+                        "	b.BASE_GOODS_TEMPLATE_ID,\n" +
+                        "	b.GOODS_TEMPLATE_NAME,\n" +
+                        "	SUM( b.WH_COUNT ) AS WH_COUNT,\n" +
+                        "	b.BASE_GOODS_MODELS_ID,\n" +
+                        "	b.BASE_GOODS_MODELS_NAME,\n" +
+                        "	b.UNIT \n" +
+                        "FROM\n" +
+                        "	(\n" +
+                        "	SELECT\n" +
+                        "		ID \n" +
+                        "	FROM\n" +
+                        "		BASE_GOODS_MODELS m \n" +
+                        "	WHERE\n" +
+                        "		STATES != 3 \n" +
+                        "		AND EXISTS ( SELECT 1 FROM BASE_GOODS_TEMPLATE t WHERE t.ID = m.GOODS_TEMPLATES_ID AND t.STATES != 3 ) \n" +
+                        "	) a\n" +
+                        "	LEFT JOIN wh_goods b ON a.ID = b.BASE_GOODS_MODELS_ID \n" +
+                        "WHERE\n" +
+                        "	b.STATES = 1 \n" +
+                        "	AND b.WAREHOUSE_ID =:WAREHOUSE_ID \n" +
+                        "GROUP BY\n" +
+                        "	b.BASE_GOODS_TEMPLATE_ID,\n" +
+                        "	b.GOODS_TEMPLATE_NAME,\n" +
+                        "	b.BASE_GOODS_MODELS_ID,\n" +
+                        "	b.BASE_GOODS_MODELS_NAME";
+
+        List<WhGoods> goodsList = select(sql,new SqlParameter().add("WAREHOUSE_ID",inventory.getWarehouseId()));
+        List<WhFormInventoryGoods> list = new ArrayList<>();
+        for (WhGoods goods : goodsList) {
+            WhFormInventoryGoods inventoryGoods = new WhFormInventoryGoods();
+            inventoryGoods.setId(NumberGenerator.getLongSequenceNumber());
+            inventoryGoods.setWhFormInventoryId(inventory.getId());
+            inventoryGoods.setBaseGoodsTemplateId(goods.getBaseGoodsTemplateId());
+            inventoryGoods.setGoodsTemplateName(goods.getGoodsTemplateName());
+            inventoryGoods.setUnit(goods.getUnit());
+            inventoryGoods.setBaseGoodsModelsId(goods.getBaseGoodsModelsId());
+            inventoryGoods.setBaseGoodsModelsName(goods.getBaseGoodsModelsName());
+            inventoryGoods.setInitCounts(goods.getWhCount());
+            inventoryGoods.setInitCounts(null);
+            inventoryGoods.setErrorCounts(null);
+            inventoryGoods.setInventoryResult(1);
+            list.add(inventoryGoods);
+        }
+        insertBatch(list);
 
     }
 
+    /**
+     * 鐩樼偣鍑哄簱
+     * @param inventory
+     */
+    public void doInventoryOutput(WhFormInventory inventory){
+        String sql = "SELECT\n" +
+                "	* \n" +
+                "FROM\n" +
+                "	WH_FORM_INVENTORY_GOODS A \n" +
+                "WHERE\n" +
+                "	A.WH_FORM_INVENTORY_ID = :INVENTORY_ID \n" +
+                "  AND A.INVENTORY_RESULT =3 ";
+
+        List<WhFormInventoryGoods>  goodsList = this.select(sql,new SqlParameter()
+                .put("INVENTORY_ID",inventory.getId()),new WhFormInventoryGoods());
+
+        for (WhFormInventoryGoods goods : goodsList){
+            CheckWarehouseParam param = new CheckWarehouseParam();
+            param.setIsCheckIn(false);
+            param.setWarehouseId(inventory.getWarehouseId());
+            param.setCount(goods.getErrorCounts());
+            param.setModelId(goods.getBaseGoodsModelsId());
+            param.setOutput_type(3);
+            List<CheckWarehouseResult> results =  coreService.unifyCheck(param);
+            for (CheckWarehouseResult result : results){
+
+                WhGoodsDetails details = new WhGoodsDetails();
+                details.setBusinessFormId(inventory.getId());
+                details.setBusinessFormCode(inventory.getBusinessFormCode());
+                details.setBusinessFormName("鐩樼偣鍑哄崟锛�" + inventory.getBusinessFormCode());
+
+                details.setInitialCount(result.getInitial_count());
+                details.setThisType(2);
+                details.setThisCount(result.getInitial_count() - result.getEnd_count());
+                details.setEndCount(result.getEnd_count());
+                details.setWarehouseId(result.getWhGoods().getWarehouseId());
+                details.setWarehouseName(result.getWhGoods().getWarehouseName());
+                details.setClassification(9);
+                details.setOperatorId(inventory.getOperatorId());
+                details.setOperatorName(inventory.getOperatorName());
+                details.setDealTime(inventory.getStopTime());
+                details.setWhGoodsId(result.getWhGoods().getId());
+                this.insert(details);
+
+
+                WhFormInventoryModel model = new WhFormInventoryModel();
+                model.setId(NumberGenerator.getLongSequenceNumber());
+                model.setCounts(result.getWhGoods().getWhCount());
+                model.setWhFormInventoryId(inventory.getId());
+                model.setInventoryResult(3);
+                model.setWhGoodsDetailsId(details.getId());
+                model.setWhFormInventoryGoodsId(goods.getId());
+                model.setWhGoodsId(result.getWhGoods().getId());
+                insert(model);
+            }
+        }
+    }
+
+    /**
+     * 鐩樼偣鍏ュ簱
+     * @param inventory
+     */
+    public void doInventoryInput(WhFormInventory inventory){
+        String sql = "SELECT\n" +
+                "	* \n" +
+                "FROM\n" +
+                "	WH_FORM_INVENTORY_GOODS A \n" +
+                "WHERE\n" +
+                "	A.WH_FORM_INVENTORY_ID = :INVENTORY_ID \n" +
+                "  AND A.INVENTORY_RESULT =2 ";
+
+        List<WhFormInventoryGoods>  goodsList = this.select(sql,new SqlParameter()
+                .put("INVENTORY_ID",inventory.getId()),new WhFormInventoryGoods());
+
+        for (WhFormInventoryGoods goods : goodsList){
+            CheckWarehouseParam param = new CheckWarehouseParam();
+            param.setIsCheckIn(true);
+            param.setWarehouseId(inventory.getWarehouseId());
+            param.setCount(goods.getErrorCounts());
+            param.setModelId(goods.getBaseGoodsModelsId());
+            param.setFirst_input_type(3);
+            CheckWarehouseResult result =  coreService.unifyCheck(param).get(0);
+
+            WhGoodsDetails details = new WhGoodsDetails();
+            details.setBusinessFormId(inventory.getId());
+            details.setBusinessFormCode(inventory.getBusinessFormCode());
+            details.setBusinessFormName("鐩樼偣鍏ュ簱鍗曪細" + inventory.getBusinessFormCode());
+
+            details.setInitialCount(result.getInitial_count());
+            details.setThisType(1);
+            details.setThisCount(result.getEnd_count()-result.getInitial_count());
+            details.setEndCount(result.getEnd_count());
+            details.setWarehouseId(result.getWhGoods().getWarehouseId());
+            details.setWarehouseName(result.getWhGoods().getWarehouseName());
+            details.setClassification(8);
+            details.setOperatorId(inventory.getOperatorId());
+            details.setOperatorName(inventory.getOperatorName());
+            details.setDealTime(inventory.getStopTime());
+            details.setWhGoodsId(result.getWhGoods().getId());
+            this.insert(details);
+
+
+            WhFormInventoryModel model = new WhFormInventoryModel();
+            model.setId(NumberGenerator.getLongSequenceNumber());
+            model.setCounts(result.getWhGoods().getWhCount());
+            model.setWhFormInventoryId(inventory.getId());
+            model.setInventoryResult(3);
+            model.setWhGoodsDetailsId(details.getId());
+            model.setWhFormInventoryGoodsId(goods.getId());
+            model.setWhGoodsId(result.getWhGoods().getId());
+            insert(model);
+        }
+    }
 }

--
Gitblit v1.9.1