From 7fbb3a0cec59554367b527f55d81e3997eacf4c9 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期三, 16 八月 2023 15:57:12 +0800
Subject: [PATCH] 增加根据损益信息定时更新库存

---
 igds-inout/src/main/java/com/ld/igds/timer/DepotStoreScheduled.java |   75 +++++++++++++++++++++++++++++++++++--
 1 files changed, 70 insertions(+), 5 deletions(-)

diff --git a/igds-inout/src/main/java/com/ld/igds/timer/DepotStoreScheduled.java b/igds-inout/src/main/java/com/ld/igds/timer/DepotStoreScheduled.java
index 6ab6e90..241d2c2 100644
--- a/igds-inout/src/main/java/com/ld/igds/timer/DepotStoreScheduled.java
+++ b/igds-inout/src/main/java/com/ld/igds/timer/DepotStoreScheduled.java
@@ -2,12 +2,14 @@
 
 import com.bstek.bdf2.core.model.DefaultCompany;
 import com.ld.igds.common.CoreCommonService;
+import com.ld.igds.constant.Constant;
 import com.ld.igds.constant.DepotStatus;
 import com.ld.igds.inout.InoutConstant;
 import com.ld.igds.inout.dto.InoutData;
 import com.ld.igds.inout.dto.InoutParam;
 import com.ld.igds.inout.service.InoutService;
 import com.ld.igds.models.DepotStore;
+import com.ld.igds.models.InoutLossOver;
 import com.ld.igds.models.InoutRecord;
 import com.ld.igds.util.ContextUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -53,14 +55,81 @@
         param.setStart(DateUtils.addDays(param.getEnd(), -1));
 
         List<InoutData> listRecord;
+        List<InoutLossOver> listLossOver;
         for (DefaultCompany company : listCompany) {
             param.setCompanyId(company.getId());
             listRecord = inoutService.listRecordData(param);
 
-            //鏍规嵁鍑哄叆搴撲俊鎭紝鍚屾搴撳瓨淇℃伅
+            // 鏍规嵁鍑哄叆搴撲俊鎭紝鍚屾搴撳瓨淇℃伅
             sumDepotStoreExe(company.getId(), listRecord, param);
+
+            listLossOver = inoutService.listLossOver(param);
+            // 鏍规嵁鎹熻�椾俊鎭紝鍚屾搴撳瓨淇℃伅
+            sumDepotStoreByLossOver(company.getId(), listLossOver, param);
+
         }
 
+    }
+
+    /**
+     * 鍚屾浠撳簱搴撳瓨锛屾牴鎹繎鏈熷嚭鍏ュ簱璁板綍锛屽鏋滄病鏈夎褰曞垯琛ㄧず鏃犲嚭鍏ュ簱鎿嶄綔锛屽彇娑堟墽琛�
+     *
+     * @param companyId
+     * @param listLossOver
+     */
+    private void sumDepotStoreByLossOver(String companyId, List<InoutLossOver> listLossOver, InoutParam param) {
+
+        if (null == listLossOver || listLossOver.isEmpty()) {
+            log.info("-----------绯荤粺鑷姩鍚屾搴撳瓨锛岃繎鏈熸棤鎹熺泭璁板綍锛屽彇娑堝悓姝ヤ粨搴撳簱瀛樷�︹�}", companyId);
+            return;
+        }
+
+        // 鑾峰彇鏈夊嚭鍏ュ簱璁板綍鐨勪粨搴�
+        Map<String, InoutLossOver> map = new HashMap<>();
+        String key;
+        DepotStore lastStore;
+        double sumRecordWeight = 0.0;
+        for (InoutLossOver data : listLossOver) {
+            key = data.getDepotId() + "_" + data.getType();
+            if (null != map.get(key)) {
+                continue;
+            }
+
+            map.put(key, data);
+
+            // 鏍规嵁鏈�鍚庝竴杞﹁繘琛屾眹鎬荤粺璁★紝寮�濮嬫椂闂存槸浠撳簱搴撳瓨鏈�鍚庝竴涓椂闂存埅姝㈠埌褰撳墠
+            lastStore = commonService.getLastDepotStore(data.getDepotId());
+            if (null == lastStore) {
+                log.error("--------搴撳瓨瀹氭椂浠诲姟-----娌℃湁鑾峰彇鍒颁粨搴撴渶鍚庡簱瀛樹俊鎭紝鍙栨秷鑷姩缁熻锛岃鏍稿涓氬姟閫昏緫--浠撳簱-{}",
+                        data.getDepotId());
+                continue;
+            }
+
+            param.setDeptId(data.getDeptId());
+            param.setDepotId(data.getDepotId());
+            param.setCompanyId(data.getCompanyId());
+            param.setType(data.getType());
+
+            //鑾峰彇鍑哄叆搴撶殑閲嶉噺淇℃伅
+            sumRecordWeight = inoutService.sumLossOverWeight(param);
+
+            //鏂板涓�鏉″簱瀛樿褰�
+            lastStore.setRemark("绯荤粺瀹氭椂鐢熸垚璁板綍");
+            lastStore.setId(ContextUtil.getUUID());
+            lastStore.setUpdateUser("绯荤粺绠$悊鍛�");
+            lastStore.setUpdateDate(new Date());
+            lastStore.setCreateDate(new Date());
+            if(Constant.LOSS_OVER_LOSS.equals(data.getType())){
+                lastStore.setStorageReal(lastStore.getStorageReal() + sumRecordWeight);
+
+            }
+            if(Constant.LOSS_OVER_OVER.equals(data.getType())){
+                lastStore.setStorageReal(lastStore.getStorageReal() - sumRecordWeight);
+            }
+
+            lastStore.setStorageSettle(lastStore.getStorageReal());
+            commonService.addDepotStore(lastStore, true);
+        }
     }
 
     /**
@@ -126,10 +195,6 @@
 				//璁剧疆鍏ュ簱鏃堕棿
 				if(null == lastStore.getStoreDate()){
 					lastStore.setStoreDate(data.getCompleteTime());
-				}
-				//鑻ュ嚭搴撳悗鏁伴噺涓鸿礋鏁帮紝鍒欒缃簱瀛樻暟涓�0.0
-				if(lastStore.getStorageReal() < 0){
-					lastStore.setStorageReal(0.0);
 				}
 			}
 

--
Gitblit v1.9.3