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/resources/mapper/InoutRecordMapper.xml                    |   75 ++++++++++++++++++
 igds-inout/src/main/java/com/ld/igds/inout/mapper/InoutRecordMapper.java      |   19 ++++
 igds-web/src/main/resources/application-pro.yml                               |    4 
 igds-inout/src/main/java/com/ld/igds/inout/service/InoutService.java          |   17 ++++
 igds-inout/src/main/java/com/ld/igds/timer/DepotStoreScheduled.java           |   75 +++++++++++++++++-
 igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java |   17 ++++
 6 files changed, 199 insertions(+), 8 deletions(-)

diff --git a/igds-inout/src/main/java/com/ld/igds/inout/mapper/InoutRecordMapper.java b/igds-inout/src/main/java/com/ld/igds/inout/mapper/InoutRecordMapper.java
index b1b0f60..b7421ec 100644
--- a/igds-inout/src/main/java/com/ld/igds/inout/mapper/InoutRecordMapper.java
+++ b/igds-inout/src/main/java/com/ld/igds/inout/mapper/InoutRecordMapper.java
@@ -5,6 +5,7 @@
 
 import com.ld.igds.data.CommonData;
 import com.ld.igds.inout.dto.*;
+import com.ld.igds.models.InoutLossOver;
 import org.apache.ibatis.annotations.Param;
 import com.baomidou.mybatisplus.plugins.Page;
 
@@ -145,4 +146,20 @@
     int checkExist(@Param("param") InoutParam param);
 
 
-}
+    /**
+     * 鏍规嵁鏉′欢鑾峰彇姝e父娴佹按淇℃伅锛岄粯璁ゅ崌搴�
+     *
+     * @param param
+     * @return
+     */
+    List<InoutLossOver> listLossOver(@Param("param") InoutParam param);
+
+    /**
+     * 鎹熺泭鑾峰彇寮�濮嬪懆鏈�---鎴嚦鍛ㄦ湡鍐咃紝鍑哄叆搴撳叆搴撻噸閲忔眹鎬诲悎璁�
+     *
+     * @param param
+     * @return CommonData.numValue1
+     */
+    CommonData sumLossOverWeight(@Param("param") InoutParam param);
+
+}
\ No newline at end of file
diff --git a/igds-inout/src/main/java/com/ld/igds/inout/service/InoutService.java b/igds-inout/src/main/java/com/ld/igds/inout/service/InoutService.java
index ee10982..091e600 100644
--- a/igds-inout/src/main/java/com/ld/igds/inout/service/InoutService.java
+++ b/igds-inout/src/main/java/com/ld/igds/inout/service/InoutService.java
@@ -2,6 +2,7 @@
 
 import com.ld.igds.data.Page;
 import com.ld.igds.inout.dto.*;
+import com.ld.igds.models.InoutLossOver;
 import com.ld.igds.models.InoutPrice;
 
 import java.util.Date;
@@ -263,4 +264,20 @@
      * @throws Exception
      */
     InoutCheckData inoutDataByCheckId(InoutCheckParam param) throws Exception;
+
+    /**
+     * 鏍规嵁鏉′欢鑾峰彇鎹熺泭鍒楄〃锛岀敤浜庣粺璁″簱瀛樹娇鐢�
+     *
+     * @param param
+     * @return
+     */
+    List<InoutLossOver> listLossOver(InoutParam param);
+
+    /**
+     * 鑾峰彇鍑哄叆搴撲粠寮�濮嬪懆鏈熷埌缁撴潫鍛ㄦ湡鍐咃紝鍑哄叆搴撶殑鍏ュ簱閲嶉噺鍚堣
+     *
+     * @param param
+     * @return
+     */
+    double sumLossOverWeight(InoutParam param);
 }
diff --git a/igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java b/igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java
index 2037a4d..2a878c5 100644
--- a/igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java
+++ b/igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ld.igds.inout.mapper.InoutCheckMapper;
 import com.ld.igds.inout.mapper.InoutRecordMapper;
 import com.ld.igds.inout.service.InoutService;
+import com.ld.igds.models.InoutLossOver;
 import com.ld.igds.models.InoutPrice;
 import com.ld.igds.util.ContextUtil;
 import com.ld.igds.util.DateUtil;
@@ -726,4 +727,20 @@
             throw new Exception("褰撳墠鏉′欢涓嬪瓨鍦ㄥ涓弧瓒虫潯浠剁殑鏁版嵁锛岃鏍告煡锛侊紒");
         }
     }
+
+    @Override
+    public List<InoutLossOver> listLossOver(InoutParam param) {
+        if (StringUtils.isEmpty(param.getCompanyId())) {
+            param.setCompanyId(ContextUtil.getCompanyId());
+        }
+        List<InoutLossOver> list = inoutMapper.listLossOver(param);
+
+        return list;
+    }
+
+    @Override
+    public double sumLossOverWeight(InoutParam param) {
+        CommonData result = inoutMapper.sumLossOverWeight(param);
+        return result.getNumValue1();
+    }
 }
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);
 				}
 			}
 
diff --git a/igds-inout/src/main/resources/mapper/InoutRecordMapper.xml b/igds-inout/src/main/resources/mapper/InoutRecordMapper.xml
index 53ecaf7..73bd4ac 100644
--- a/igds-inout/src/main/resources/mapper/InoutRecordMapper.xml
+++ b/igds-inout/src/main/resources/mapper/InoutRecordMapper.xml
@@ -558,4 +558,79 @@
         </if>
     </select>
 
+    <!-- 鏍规嵁鏉′欢鏌ヨ锛岃姹傛椂闂存潯浠跺繀椤伙紝蹇呴』鏄甯告暟鎹� -->
+    <select id="listLossOver" resultType="com.ld.igds.models.InoutLossOver"
+            parameterType="com.ld.igds.inout.dto.InoutParam">
+        select
+        ID_ as id,
+        COMPANY_ID_ as companyId,
+        DEPT_ID_ as deptId,
+        DEPOT_ID_ as depotId,
+        TYPE_ as type,
+        SUBMIT_TIME_ as submitTime,
+        rkjz as rkjz,
+        rksj as rksj,
+        rksf as rksf,
+        rkzz as rkzz,
+        cksj as cksj,
+        ckjz as ckjz,
+        cksf as cksf,
+        ckzz as ckzz,
+        AMOUNT_ as amount,
+        sysfzc as sysfzc,
+        syyy as syyy,
+        ccshr as ccshr,
+        AUDIT_CCSH_ as auditCcsh,
+        INFO_CCSH_ as InfoCcsh,
+        zjshr as zjshr,
+        AUDIT_ZJSH_ as auditZjsh,
+        INFO_ZJSH_ as infoZjsh,
+        AUDIT_TJSH_ as auditTjsh,
+        INFO_TJSH_ as infoTjsh,
+        kjshr as kjshr,
+        AUDIT_KJSH_ as auditKjsh,
+        INFO_KJSH_ as infoKjsh,
+        ldshr as ldshr,
+        AUDIT_LDSH_ as auditLdsh,
+        INFO_LDSH_ as infoLdsh,
+        REMARK_ as remark,
+        UPDATE_TIME_ as updateTime,
+        UPDATE_USER_ as updateUser
+        from
+        D_INOUT_LOSS_OVER
+        <where>
+            <if test="param.companyId != null and param.companyId != '' ">AND COMPANY_ID_ = #{param.companyId}</if>
+            <if test="param.deptId != null and param.deptId != ''">AND DEPT_ID_ = #{param.deptId}</if>
+            <if test="param.depotId != null and param.depotId != '' ">AND DEPOT_ID_ = #{param.depotId}</if>
+            <if test="param.type != null and param.type != '' ">AND TYPE_ = #{param.type}</if>
+            <if test="param.end != null">AND
+                UPDATE_TIME_ <![CDATA[ < ]]>#{param.end,jdbcType=TIMESTAMP}
+            </if>
+            <if test="param.start != null">AND
+                UPDATE_TIME_ <![CDATA[ > ]]>#{param.start,jdbcType=TIMESTAMP}
+            </if>
+            ORDER BY UPDATE_TIME_
+        </where>
+    </select>
+
+    <!-- 鑾峰彇寮�濮嬪懆鏈�-鎴嚦鍛ㄦ湡鍐咃紝鍑哄叆搴撳叆搴撻噸閲忔眹鎬诲悎璁� -->
+    <select id="sumLossOverWeight" resultType="com.ld.igds.data.CommonData"
+            parameterType="com.ld.igds.inout.dto.InoutParam">
+        select SUM(AMOUNT_) as numValue1
+        from D_INOUT_LOSS_OVER
+        <where>
+            <if test="param.companyId != null and param.companyId != '' ">AND COMPANY_ID_ = #{param.companyId}</if>
+            <if test="param.deptId != null and param.deptId != ''">AND DEPT_ID_ = #{param.deptId}</if>
+            <if test="param.depotId != null and param.depotId != '' ">AND DEPOT_ID_ = #{param.depotId}</if>
+            <if test="param.type != null and param.type != '' ">AND TYPE_ = #{param.type}</if>
+            <if test="param.end != null">AND
+                UPDATE_TIME_ <![CDATA[ < ]]>#{param.end,jdbcType=TIMESTAMP}
+            </if>
+            <if test="param.start != null">AND
+                UPDATE_TIME_ <![CDATA[ > ]]>#{param.start,jdbcType=TIMESTAMP}
+            </if>
+            ORDER BY UPDATE_TIME_
+        </where>
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/igds-web/src/main/resources/application-pro.yml b/igds-web/src/main/resources/application-pro.yml
index 27476c9..5cc0298 100644
--- a/igds-web/src/main/resources/application-pro.yml
+++ b/igds-web/src/main/resources/application-pro.yml
@@ -1,4 +1,4 @@
-##########################  骞胯タ鏉ュ绮簱椤圭洰   ##########################
+##########################  骞夸笢鎯犲窞鎯犳柊绮簱椤圭洰   ##########################
 server:
   port: 8888
   context-path: /
@@ -71,7 +71,7 @@
 ## 绯荤粺鎺ュ彛璺敱閰嶇疆 娉ㄦ剰鏁板瓧濡傛灉浠�0寮�澶寸殑璇濓紝鍚庡彴浼氬嚭鐜拌浆涔夛紝璇锋坊鍔�""
 igds:
   default:
-    companyId: 5328
+    companyId: 5326
     sys-name: 鏅烘収绮簱绠$悊绯荤粺
     logo: logo-default.png
     logo-title: logo-title-default.png

--
Gitblit v1.9.3