From 2e121f643a6776e6063796c104c95647faa000a8 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期三, 16 八月 2023 11:52:32 +0800
Subject: [PATCH] 优化定时更新库存信息

---
 igds-inout/src/main/java/com/ld/igds/timer/InoutScheduled.java             |  119 -------------------
 igds-core/src/main/java/com/ld/igds/common/dto/DepotParam.java             |    3 
 igds-core/src/main/java/com/ld/igds/common/impl/CommonDataServiceImpl.java |    1 
 igds-core/src/main/java/com/ld/igds/models/SecCamera.java                  |    5 
 igds-recir/src/main/java/com/ld/igds/models/DrugLogApply.java              |    2 
 igds-inout/src/main/java/com/ld/igds/timer/DepotStoreScheduled.java        |  140 +++++++++++++++++++++++
 igds-core/src/main/resources/mapper/CommonMapper.xml                       |    3 
 igds-core/src/main/java/models/igds.model.xml                              |   36 ++++++
 8 files changed, 190 insertions(+), 119 deletions(-)

diff --git a/igds-core/src/main/java/com/ld/igds/common/dto/DepotParam.java b/igds-core/src/main/java/com/ld/igds/common/dto/DepotParam.java
index ab2bd55..da0c126 100644
--- a/igds-core/src/main/java/com/ld/igds/common/dto/DepotParam.java
+++ b/igds-core/src/main/java/com/ld/igds/common/dto/DepotParam.java
@@ -23,6 +23,9 @@
 	@PropertyDef(label = "鎵�灞炰粨搴�", description = "浠撳簱缂栧彿")
 	private String depotId;
 
+	@PropertyDef(label = "浠撳簱鐘舵��", description = "浠撳簱鐘舵��")
+	private String depotStatus;
+
 	private Double weight;//閲嶉噺淇℃伅锛屽崟浣嶉渶瑕佽皟鏁翠负鍚�
 
 }
diff --git a/igds-core/src/main/java/com/ld/igds/common/impl/CommonDataServiceImpl.java b/igds-core/src/main/java/com/ld/igds/common/impl/CommonDataServiceImpl.java
index 4fb07ed..3cc6230 100644
--- a/igds-core/src/main/java/com/ld/igds/common/impl/CommonDataServiceImpl.java
+++ b/igds-core/src/main/java/com/ld/igds/common/impl/CommonDataServiceImpl.java
@@ -330,6 +330,7 @@
             param.setCompanyId(store.getCompanyId());
             param.setDepotId(store.getDepotId());
             param.setWeight(store.getStorageReal());
+            param.setDepotStatus(store.getDepotStatus());
 
             commonMapper.updateDepotStorage(param);
         }
diff --git a/igds-core/src/main/java/com/ld/igds/models/SecCamera.java b/igds-core/src/main/java/com/ld/igds/models/SecCamera.java
index 56c3288..ea10760 100644
--- a/igds-core/src/main/java/com/ld/igds/models/SecCamera.java
+++ b/igds-core/src/main/java/com/ld/igds/models/SecCamera.java
@@ -5,6 +5,7 @@
 import lombok.Data;
 import javax.persistence.*;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 瀹夐槻瑙嗛鐩戞帶璁惧
@@ -106,6 +107,10 @@
     @PropertyDef(label = "鐩戠鑷姩鎶撴媿")
     private String snapTag = Constant.YN_N;
 
+    @Column(name = "UPDATE_TIME_", length = 1)
+    @PropertyDef(label = "鏇存柊鏃堕棿")
+    private Date updateTime;
+
     public int getChanNum() {
         return chanNum;
     }
diff --git a/igds-core/src/main/java/models/igds.model.xml b/igds-core/src/main/java/models/igds.model.xml
index 3ac10d3..68c3feb 100644
--- a/igds-core/src/main/java/models/igds.model.xml
+++ b/igds-core/src/main/java/models/igds.model.xml
@@ -344,6 +344,42 @@
     <PropertyDef name="country">
       <Property></Property>
       <Property name="label">鍥藉埆</Property>
+      <Property name="mapping">
+        <Property name="keyProperty">key</Property>
+        <Property name="valueProperty">value</Property>
+        <Property name="mapValues">
+          <Collection>
+            <Entity>
+              <Property name="key">156</Property>
+              <Property name="value">涓浗</Property>
+            </Entity>
+            <Entity>
+              <Property name="key">076</Property>
+              <Property name="value">宸磋タ</Property>
+            </Entity>
+            <Entity>
+              <Property name="key">124</Property>
+              <Property name="value">鍔犳嬁澶�</Property>
+            </Entity>
+            <Entity>
+              <Property name="key">036</Property>
+              <Property name="value">婢冲ぇ鍒╀簹</Property>
+            </Entity>
+            <Entity>
+              <Property name="key">356</Property>
+              <Property name="value">鍗板害</Property>
+            </Entity>
+            <Entity>
+              <Property name="key">764</Property>
+              <Property name="value">娉板浗</Property>
+            </Entity>
+            <Entity>
+              <Property name="key">840</Property>
+              <Property name="value">缇庡浗</Property>
+            </Entity>
+          </Collection>
+        </Property>
+      </Property>
     </PropertyDef>
     <PropertyDef name="manageType">
       <Property></Property>
diff --git a/igds-core/src/main/resources/mapper/CommonMapper.xml b/igds-core/src/main/resources/mapper/CommonMapper.xml
index 7948a31..11d7a80 100644
--- a/igds-core/src/main/resources/mapper/CommonMapper.xml
+++ b/igds-core/src/main/resources/mapper/CommonMapper.xml
@@ -119,7 +119,8 @@
     <!--鏇存柊搴撳瓨 -->
     <update id="updateDepotStorage" parameterType="com.ld.igds.common.dto.DepotParam">
 		update D_DEPOT set
-		STORAGE_REAL_ = #{param.weight}
+		STORAGE_REAL_ = #{param.weight},
+		DEPOT_STATUS_ = #{param.depotStatus}
 		where COMPANY_ID_ =
 		#{param.companyId}
 		and ID_ = #{param.depotId}
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
new file mode 100644
index 0000000..6ab6e90
--- /dev/null
+++ b/igds-inout/src/main/java/com/ld/igds/timer/DepotStoreScheduled.java
@@ -0,0 +1,140 @@
+package com.ld.igds.timer;
+
+import com.bstek.bdf2.core.model.DefaultCompany;
+import com.ld.igds.common.CoreCommonService;
+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.InoutRecord;
+import com.ld.igds.util.ContextUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Desc: 搴撳瓨瀹氭椂绠$悊 - 姣忔棩鏈夊嚭鍏ュ簱銆佹崯鐩婄瓑鏁版嵁鏃讹紝鐢熸垚1鏉″簱瀛樻暟鎹紝骞舵洿鏂板簱瀛�
+ * @author: czt
+ * @update-time: 2023/08/14
+ */
+@Slf4j
+@Component(DepotStoreScheduled.BEAN_ID)
+public class DepotStoreScheduled {
+
+    public static final String BEAN_ID = "inout.depotStoreScheduled";
+
+    @Resource
+    private InoutService inoutService;
+
+    @Resource
+    private CoreCommonService commonService;
+
+    /**
+     * 姣忓ぉ鏅氫笂11鐐�25鍒嗘洿鏂板簱瀛樻暟鎹�
+     */
+    @Scheduled(cron = "0 10 23 * * ?")
+    public void scheduled1() {
+
+        List<DefaultCompany> listCompany = commonService.getCompanyList();
+        if (null == listCompany)
+            return;
+
+        // 鑾峰彇褰撳ぉ鐨勫嚭鍏ュ簱璁板綍锛屽鏋滄湁璁板綍鍒欐墽琛岋紝濡傛灉娌℃湁锛屽垯鏃犻渶鎵ц
+        InoutParam param = new InoutParam();
+        param.setEnd(new Date());
+        param.setStart(DateUtils.addDays(param.getEnd(), -1));
+
+        List<InoutData> listRecord;
+        for (DefaultCompany company : listCompany) {
+            param.setCompanyId(company.getId());
+            listRecord = inoutService.listRecordData(param);
+
+            //鏍规嵁鍑哄叆搴撲俊鎭紝鍚屾搴撳瓨淇℃伅
+            sumDepotStoreExe(company.getId(), listRecord, param);
+        }
+
+    }
+
+    /**
+     * 鍚屾浠撳簱搴撳瓨锛屾牴鎹繎鏈熷嚭鍏ュ簱璁板綍锛屽鏋滄病鏈夎褰曞垯琛ㄧず鏃犲嚭鍏ュ簱鎿嶄綔锛屽彇娑堟墽琛�
+     *
+     * @param companyId
+     * @param listRecord
+     */
+    private void sumDepotStoreExe(String companyId, List<InoutData> listRecord, InoutParam param) {
+
+        if (null == listRecord || listRecord.isEmpty()) {
+            log.info("-----------绯荤粺鑷姩鍚屾搴撳瓨锛岃繎鏈熸棤鍑哄叆搴撹褰曪紝鍙栨秷鍚屾浠撳簱搴撳瓨鈥︹�}", companyId);
+            return;
+        }
+
+        // 鑾峰彇鏈夊嚭鍏ュ簱璁板綍鐨勪粨搴�
+        Map<String, InoutRecord> map = new HashMap<>();
+        String key;
+        DepotStore lastStore;
+        double sumRecordWeight = 0.0;
+        for (InoutData data : listRecord) {
+            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.sumRecordWeight(param);
+
+            //鏂板涓�鏉″簱瀛樿褰�
+            lastStore.setRemark("绯荤粺瀹氭椂鐢熸垚璁板綍");
+            lastStore.setId(ContextUtil.getUUID());
+            lastStore.setUpdateUser("绯荤粺绠$悊鍛�");
+            lastStore.setUpdateDate(new Date());
+            lastStore.setCreateDate(new Date());
+            if(InoutConstant.TYPE_IN.equals(data.getType())){
+				lastStore.setStorageReal(lastStore.getStorageReal() + sumRecordWeight);
+            	//璁剧疆浠撳簱鐘舵��
+				lastStore.setDepotStatus(DepotStatus.STATUS_2.getCode());
+				//璁剧疆鍏ュ簱鏃堕棿
+				if(null == lastStore.getStoreDate()){
+					lastStore.setStoreDate(data.getCompleteTime());
+				}
+			}
+			if(InoutConstant.TYPE_OUT.equals(data.getType())){
+				lastStore.setStorageReal(lastStore.getStorageReal() - sumRecordWeight);
+				lastStore.setDepotStatus(DepotStatus.STATUS_4.getCode());
+				//璁剧疆鍏ュ簱鏃堕棿
+				if(null == lastStore.getStoreDate()){
+					lastStore.setStoreDate(data.getCompleteTime());
+				}
+				//鑻ュ嚭搴撳悗鏁伴噺涓鸿礋鏁帮紝鍒欒缃簱瀛樻暟涓�0.0
+				if(lastStore.getStorageReal() < 0){
+					lastStore.setStorageReal(0.0);
+				}
+			}
+
+			lastStore.setStorageSettle(lastStore.getStorageReal());
+            commonService.addDepotStore(lastStore, true);
+        }
+    }
+}
\ No newline at end of file
diff --git a/igds-inout/src/main/java/com/ld/igds/timer/InoutScheduled.java b/igds-inout/src/main/java/com/ld/igds/timer/InoutScheduled.java
index 11e9d06..787fe38 100644
--- a/igds-inout/src/main/java/com/ld/igds/timer/InoutScheduled.java
+++ b/igds-inout/src/main/java/com/ld/igds/timer/InoutScheduled.java
@@ -1,26 +1,19 @@
 package com.ld.igds.timer;
 
 import com.bstek.bdf2.core.model.DefaultCompany;
-import com.bstek.dorado.annotation.Expose;
 import com.ld.igds.common.CoreCommonService;
-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.m.service.InoutCommonService;
 import com.ld.igds.models.*;
-import com.ld.igds.util.ContextUtil;
 import com.ld.igds.util.DateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
-
 import javax.annotation.Resource;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * @Desc: 鍑哄叆搴撳畾鏃朵换鍔°�� 1銆侀�氱煡鍗曞畬鎴愰噺缁熻 2銆佸嚭鍏ュ簱搴撳瓨绠$悊缁熻
@@ -31,7 +24,7 @@
 @Component(InoutScheduled.BEAN_ID)
 public class InoutScheduled {
 
-	public static final String BEAN_ID = "basic.inoutScheduled";
+	public static final String BEAN_ID = "inout.inoutScheduled";
 
 	@Resource
 	private InoutCommonService inoutCommonService;
@@ -62,116 +55,8 @@
 			param.setCompanyId(company.getId());
 			listRecord = inoutService.listRecordData(param);
 
+			//鏍规嵁鍑哄叆搴撲俊鎭悓姝ラ�氱煡鍗曞畬鎴愰噺
 			noticeCompleteExe(company.getId(), listRecord);
-
-			sumDepotStoreExe(company.getId(), listRecord);
-		}
-
-	}
-
-	/**
-	 * basic.inoutScheduled#sumDepotStoreExeByHand
-	 * <p>
-	 * <p>
-	 * 鎵嬪姩鎵ц鍑哄叆搴撳簱瀛樼粺璁″叆鍙�
-	 *
-	 * @param start
-	 * @return
-	 */
-	@Expose
-	public String sumDepotStoreExeByHand(Date start) {
-
-		if (null == start)
-			start = new Date();
-
-		start = DateUtil.getCurZero(start);
-
-		// 鑾峰彇3澶╁唴鐨勫嚭鍏ュ簱璁板綍锛屽鏋滄湁璁板綍鍒欐墽琛岋紝濡傛灉娌℃湁锛屽垯鏃犻渶鎵ц
-		start = DateUtil.getNewByDay(null, -3);
-		String companyId = ContextUtil.getCompanyId();
-
-		InoutParam param = new InoutParam();
-		param.setStart(start);
-		param.setCompanyId(companyId);
-
-		List<InoutData> listRecord = inoutService.listRecordData(param);
-
-		sumDepotStoreExe(companyId, listRecord);
-
-		return "SUCCESS";
-	}
-
-	/**
-	 * 鍚屾浠撳簱搴撳瓨锛屾牴鎹繎鏈熷嚭鍏ュ簱璁板綍锛屽鏋滄病鏈夎褰曞垯琛ㄧず鏃犲嚭鍏ュ簱鎿嶄綔锛屽彇娑堟墽琛�
-	 *
-	 * @param companyId
-	 * @param listRecord
-	 */
-	private void sumDepotStoreExe(String companyId, List<InoutData> listRecord) {
-
-		if (null == listRecord || listRecord.isEmpty()) {
-			log.info("-----------绯荤粺鑷姩鍚屾搴撳瓨锛岃繎鏈熸棤鍑哄叆搴撹褰曪紝鍙栨秷鍚屾浠撳簱搴撳瓨鈥︹�}", companyId);
-			return;
-		}
-
-		// 鑾峰彇鏈夊嚭鍏ュ簱璁板綍鐨勪粨搴�
-		Map<String, InoutRecord> map = new HashMap<>();
-		String key;
-		DepotStore lastStore;
-		double sumRecordWeight = 0.0;
-		InoutParam param;
-		for (InoutData data : listRecord) {
-			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;
-			}
-
-			// 鍙湁鍑哄叆搴撶姸鎬佺殑浠撳簱鎵嶈繘琛岀粺璁★紝鍏朵粬鐘舵�佽〃绀哄嚭鍏ュ簱浣滀笟瀹屾垚锛屼笉鍦ㄦ墽琛岀粺璁�
-			if (DepotStatus.STATUS_2.getCode().equals(
-					lastStore.getDepotStatus())
-					|| DepotStatus.STATUS_4.getCode().equals(
-							lastStore.getDepotStatus())) {
-
-				param = new InoutParam();
-				// param.setStart(lastStore.getCreateDate());
-				param.setEnd(new Date());
-				param.setDeptId(data.getDeptId());
-				param.setDepotId(data.getDepotId());
-				param.setCompanyId(data.getCompanyId());
-				param.setType(data.getType());
-
-				// 鍑哄叆搴撻噸閲忓悎璁�
-				sumRecordWeight = inoutService.sumRecordWeight(param);
-
-				// 鏂板涓�鏉″簱瀛樿褰�
-				lastStore.setRemark("绯荤粺瀹氭椂鐢熸垚璁板綍");
-				lastStore.setId(ContextUtil.getUUID());
-				lastStore.setUpdateUser(null);
-				lastStore.setUpdateDate(new Date());
-				// lastStore.setCreateDate(new Date());
-
-				if (InoutConstant.TYPE_IN.equals(data.getType())) {
-					lastStore.setStorageReal(lastStore.getStorageReal()
-							+ sumRecordWeight);
-				}
-
-				if (InoutConstant.TYPE_OUT.equals(data.getType())) {
-					lastStore.setStorageReal(lastStore.getStorageReal()
-							- sumRecordWeight);
-				}
-
-				commonService.addDepotStore(lastStore, true);
-			}
 
 		}
 	}
diff --git a/igds-recir/src/main/java/com/ld/igds/models/DrugLogApply.java b/igds-recir/src/main/java/com/ld/igds/models/DrugLogApply.java
index e9e08b8..6d03bad 100644
--- a/igds-recir/src/main/java/com/ld/igds/models/DrugLogApply.java
+++ b/igds-recir/src/main/java/com/ld/igds/models/DrugLogApply.java
@@ -10,7 +10,7 @@
 import java.util.List;
 
 /**
- * 鐔忚捀浣滀笟涓昏〃淇℃伅
+ * 鐔忚捀澶囨涓昏〃淇℃伅
  *
  * @Author:YAN
  */

--
Gitblit v1.9.3