From 7063715df3c772b220794f9ca64e804e15c16f14 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期六, 15 七月 2023 00:32:35 +0800
Subject: [PATCH] 提交说明
---
igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java | 398 ++++++++++++++++++++++++++------------------------------
1 files changed, 186 insertions(+), 212 deletions(-)
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 88ab4fd..58e3093 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
@@ -1,25 +1,22 @@
package com.ld.igds.inout.service.impl;
import com.bstek.dorado.data.entity.EntityUtils;
-import com.ld.igds.check.dto.CheckItemData;
-import com.ld.igds.common.CoreCommonService;
-import com.ld.igds.constant.BizType;
import com.ld.igds.constant.Constant;
import com.ld.igds.constant.RedisConst;
import com.ld.igds.data.CommonData;
import com.ld.igds.data.Page;
import com.ld.igds.inout.InoutConstant;
+import com.ld.igds.inout.dto.InoutCheckData;
+import com.ld.igds.inout.dto.InoutCheckParam;
import com.ld.igds.inout.dto.InoutData;
import com.ld.igds.inout.dto.InoutParam;
+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.io.constant.OrderRespEnum;
-import com.ld.igds.models.Depot;
+import com.ld.igds.models.InoutPrice;
import com.ld.igds.util.ContextUtil;
import com.ld.igds.util.DateUtil;
import com.ld.igds.util.RedisUtil;
-import com.ld.igds.websocket.WebSocketPacket;
-import com.ld.igds.websocket.WebSocketServer;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
@@ -28,9 +25,6 @@
import javax.annotation.Resource;
import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.FutureTask;
@Slf4j
@Component
@@ -39,15 +33,16 @@
@Resource
private InoutRecordMapper inoutMapper;
@Resource
- private RedisUtil redisUtil;
+ private InoutCheckMapper inoutCheckMapper;
@Resource
- private CoreCommonService commonService;
+ private RedisUtil redisUtil;
@Override
public InoutData inoutProgressQuery(InoutParam param) throws Exception {
if (StringUtils.isEmpty(param.getCompanyId())) {
param.setCompanyId(ContextUtil.getCompanyId());
}
+
// 棣栧厛浠庣紦瀛樹腑鑾峰彇锛屽鏋滄病鏈夊垯浠庢暟鎹簱鑾峰彇
InoutData result = this.getFromInoutCache(param);
if (null != result) {
@@ -92,24 +87,26 @@
return "娌℃湁鑾峰彇鍒拌鍒犻櫎鏁版嵁鐨処D锛屾棤娉曞垹闄わ紒";
}
- // 缂撳瓨涓垹闄�
- this.delInoutFromCache(param.getDeptId(), param.getType(), param.getId(), false);
-
inoutMapper.deleteData(param);
+
+ delFromCache(param.getDeptId(), param.getType(), param.getId());
return null;
}
@Override
- public String inoutStop(InoutParam param) {
+ public String inoutStop(InoutParam param) throws Exception {
if (StringUtils.isEmpty(param.getCompanyId())) {
- param.setCompanyId(ContextUtil.getCompanyId());
+ param.setCompanyId(ContextUtil.getDefaultCompanyId());
}
- // 缂撳瓨涓垹闄�
- this.delInoutFromCache(param.getDeptId(), param.getType(), param.getId(), false);
+
param.setProgress(InoutConstant.PROGRESS_RECORD);
- param.setRecordStatus(InoutConstant.RECORD_STATUS_ERROR);
+ param.setRecordStatus(InoutConstant.RECORD_STATUS_DEL);
+
+
+ // 缂撳瓨涓垹闄�
+ delFromCache(param.getDeptId(), param.getType(), param.getId());
inoutMapper.inoutStop(param);
@@ -147,9 +144,18 @@
data.setUserName("");
}
- inoutMapper.insertData(data);
+ InoutData newData;
+ if (EntityUtils.isEntity(data)) {
+ newData = new InoutData();
+ BeanUtils.copyProperties(data, newData, new String[]{"checkItems", "files"});
+ } else {
+ newData = data;
+ }
- this.addInoutCache(data);
+ inoutMapper.insertData(newData);
+
+
+ updateInoutCache(newData);
} catch (Exception e) {
log.error("------------鍑哄叆搴撴墽琛屼繚瀛樺嚭閿�---{}", e);
@@ -162,6 +168,8 @@
@Override
public String updateData(InoutData data) throws Exception {
+
+ data.setUpdateTime(new Date());
if (StringUtils.isEmpty(data.getCompanyId())) {
data.setCompanyId(ContextUtil.getCompanyId());
}
@@ -175,17 +183,31 @@
inoutMapper.updateData(newData);
- //濡傛灉鏄畬鎴愮姸鎬佷笉鍦ㄨ繘琛屽悗鏈熷鐞嗭紝鍗曠嫭璧癱omplete鏂规硶
- if (InoutConstant.PROGRESS_RECORD.equals(newData.getProgress())) {
- return null;
+ //鏇存柊缂撳瓨
+ updateInoutCache(newData);
+
+ return null;
+ }
+
+ @Override
+ public String updateDataByHandle(InoutData data) {
+ data.setUpdateTime(new Date());
+
+ if (StringUtils.isEmpty(data.getCompanyId())) {
+ data.setCompanyId(ContextUtil.getCompanyId());
+ }
+ InoutData newData;
+ if (EntityUtils.isEntity(data)) {
+ newData = new InoutData();
+ BeanUtils.copyProperties(data, newData, new String[]{"checkItems", "files"});
+ } else {
+ newData = data;
}
- // 鏇存柊绶╁瓨
- if (InoutConstant.PROGRESS_RECORD.equals(newData.getProgress())) {
- this.delInoutFromCache(newData.getDeptId(), newData.getType(), newData.getId(), true);
- } else {
- this.updateInoutCache(newData);
- }
+ inoutMapper.updateDataByHandle(newData);
+
+ //鏇存柊缂撳瓨
+ updateInoutCache(newData);
return null;
}
@@ -217,6 +239,10 @@
param.setUserId("%" + param.getUserId() + "%");
}
+ if (null != param.getRecordStatus() && InoutConstant.RECORD_STATUS_NORMAL.equals(param.getRecordStatus())) {
+ param.setRecordStatus(null);
+ }
+
List<InoutData> records = inoutMapper.pageRecordData(page, param);
//鍒ゆ柇鍏ュ簱閲嶉噺鏄惁涓虹┖锛屼负绌哄垯璧嬪�肩粨绠楅噸閲�
if (records != null) {
@@ -241,16 +267,6 @@
return records;
}
-// @Override
-// public InoutData getLastRecord(InoutParam param) {
-// return inoutMapper.getLastRecord(param);
-// }
-
-// @Override
-// public int updateCuStorage(InoutParam param) {
-// return inoutMapper.updateCuStorage(param);
-// }
-
@Override
public String validate(String intelCard, String plateNum) {
InoutParam param = new InoutParam();
@@ -269,27 +285,25 @@
@Override
public String toComplete(InoutParam param) throws Exception {
- if (null == param.getCompanyId()) {
- param.setCompanyId(ContextUtil.getCompanyId());
- }
+ param.setUpdateTime(new Date());
- if (null == param.getFoodType()) {
- // 鏍规嵁浠撳簱淇℃伅鑾峰彇缂撳瓨
- Depot depot = commonService.getCacheDepot(param.getCompanyId(), param.getDepotId());
- param.setFoodType(depot.getFoodType());
+ if (null == param.getCompanyId()) {
+ param.setCompanyId(ContextUtil.getDefaultCompanyId());
}
// 娓呴櫎缂撳瓨
- this.delInoutFromCache(param.getDeptId(), param.getType(), param.getId(), true);
+// this.delFromCache(param.getDeptId(), param.getType(), param.getId());
+
inoutMapper.toComplete(param);
+
return null;
}
@Override
public String quickComplete(InoutData data) throws Exception {
if (null == data.getCompanyId()) {
- data.setCompanyId(ContextUtil.getCompanyId());
+ data.setCompanyId(ContextUtil.getDefaultCompanyId());
}
if (null == data.getCompleteTime()) {
data.setCompleteTime(new Date());
@@ -300,7 +314,6 @@
if (null == data.getEmptyWeightTime()) {
data.setEmptyWeightTime(new Date());
}
-
//璋冩暣鏃堕棿宸�
if (InoutConstant.TYPE_IN.equals(data.getType())) {
@@ -329,50 +342,34 @@
// 璁剧疆娴佺▼缁撴潫
data.setProgress(InoutConstant.PROGRESS_RECORD);
-
- if (null == data.getFoodType()) {
- // 鏍规嵁浠撳簱淇℃伅鑾峰彇缂撳瓨
- Depot depot = commonService.getCacheDepot(data.getCompanyId(), data.getDepotId());
- data.setFoodType(depot.getFoodType());
- }
-
- // 娓呴櫎缂撳瓨
- this.delInoutFromCache(data.getDeptId(), data.getType(), data.getId(), false);
-
+ //鎵ц鏇存柊
inoutMapper.updateData(data);
+
+ //鏇存柊缂撳瓨
+ updateInoutCache(data);
return null;
}
@Override
- public void addInoutCache(InoutData data) {
- data.setFiles(null);
- data.setCheckItems(null);
-
- this.setInoutCache(data.getDeptId(), data);
-
- // 鎺ㄩ�佸埌澶у睆
- List<InoutData> list = this.getListInoutCache(data.getDeptId());
-
- this.notifyToScreen(data.getDeptId(), list, null);
- }
-
- @Override
public void updateInoutCache(InoutData data) {
+
data.setFiles(null);
data.setCheckItems(null);
- this.setInoutCache(data.getDeptId(), data);
+ if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
- // 鎺ㄩ�佸埌澶у睆
- List<InoutData> list = this.getListInoutCache(data.getDeptId());
- List<InoutData> completeList = this.getCompleteListInoutCache(data.getDeptId());
+ delFromCache(data.getDeptId(), data.getType(), data.getId());
- this.notifyToScreen(data.getCompanyId(), list, completeList);
+ setCompleteInoutCache(data.getDeptId(), data);
+
+ } else {
+ setInoutCache(data.getDeptId(), data);
+ }
}
- @Override
- public void delInoutFromCache(String deptId, String type, String id, boolean addToComplete) {
+
+ public void delFromCache(String deptId, String type, String id) {
if (StringUtils.isEmpty(deptId)) {
return;
}
@@ -382,44 +379,14 @@
if (StringUtils.isEmpty(id)) {
return;
}
- //鍒犻櫎鏈畬鎴愭祦绋嬬殑缂撳瓨
+ //浠庢湭瀹屾垚鍒楄〃涓垹闄�
String key = this.buildInoutKey(deptId, InoutConstant.KEY_INOUT_LIST, type, id);
- InoutData inoutData = (InoutData) redisUtil.get(key);
redisUtil.del(key);
- List<InoutData> list = this.getListInoutCache(deptId);
-
- //鍒犻櫎宸插畬鎴愭祦绋嬬殑缂撳瓨
- key = this.buildInoutKey(deptId, InoutConstant.KEY_INOUT_COMPLETE_LIST, type, id);
- redisUtil.del(key);
- List<InoutData> completeList = this.getCompleteListInoutCache(deptId);
-
- if (addToComplete) {
- addInoutCompleteCache(inoutData);
- completeList = this.getCompleteListInoutCache(deptId);
- }
-
- // 閫氱煡鍒板ぇ灞�
- notifyToScreen(deptId, list, completeList);
- }
-
- /**
- * 娣诲姞鍒板凡缁忓畬鎴愮殑闃熷垪涓�
- *
- * @param data
- */
- public void addInoutCompleteCache(InoutData data) {
-
- if (null == data.getCompleteTime()) {
- data.setCompleteTime(new Date());
- }
- if (!InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
- data.setProgress(InoutConstant.PROGRESS_RECORD);
- }
- this.setCompleteInoutCache(data.getDeptId(), data);
}
@Override
public List<InoutData> getListInoutCache(String deptId) {
+
String pattern = RedisConst.buildKey(deptId, InoutConstant.KEY_INOUT_LIST);
Set<String> keys = redisUtil.keys(pattern);
if (null == keys || keys.isEmpty()) {
@@ -452,6 +419,7 @@
if (StringUtils.isEmpty(param.getDeptId())) {
param.setDeptId(ContextUtil.subDeptId(null));
}
+
List<InoutData> list = getListInoutCache(param.getDeptId());
if (null == list || list.isEmpty())
return null;
@@ -475,35 +443,6 @@
}
}
return null;
- }
-
- @Override
- public void initInoutScreen(String deptId) {
- if (null == deptId) {
- deptId = ContextUtil.subDeptId(null);
- }
-
- List<InoutData> curList = this.getListInoutCache(deptId);
- List<InoutData> complateList = this.getCompleteListInoutCache(deptId);
-
- notifyToScreen(deptId, curList, complateList);
-
- }
-
- @Override
- public void notifyWeb(InoutData result) {
- // 濡傛灉褰撳墠涓烘弧杞︾О閲嶆墽琛屾帹閫�
- if (result.getType().equals(InoutConstant.TYPE_IN) && result.getProgress().equals(InoutConstant.PROGRESS_WEIGHT_FULL)) {
- WebSocketPacket packet = new WebSocketPacket();
- packet.setBizType(BizType.SCREEN_CHECK.getCode());
- packet.setCompanyId(result.getCompanyId());
- packet.setOrderResp(OrderRespEnum.MSG_SUCCESS.getCode());
- packet.setData(result);
- packet.setBizTag(InoutConstant.PROGRESS_WEIGHT_FULL);
- log.debug("----鍚戝寲楠屽ぇ灞忔帹閫佹弧杞︾О閲嶄俊鎭� ----{}", result.getPlateNum());
- WebSocketServer.sendByBizTag(packet);
- }
-
}
@Override
@@ -539,10 +478,7 @@
}
@Override
- public InoutData getLastRecord(String companyId, String depotId) {
- InoutParam param = new InoutParam();
- param.setCompanyId(companyId);
- param.setDepotId(depotId);
+ public InoutData getLastRecord(InoutParam param) {
return inoutMapper.getLastRecord(param);
}
@@ -550,7 +486,7 @@
public String addInoutDataByLossOver(InoutData data) {
// 鑾峰彇涓婁竴杞︾殑娴佹按鏁版嵁
- InoutData inoutData = this.getLastRecord(data.getCompanyId(), data.getDepotId());
+ // InoutData inoutData = this.getLastRecord(data.getCompanyId(), data.getDepotId());
// // 璁剧疆娴佹按鐨勫簱瀛�
// if (InoutConstant.TYPE_IN.equals(inoutData.getType())) {
@@ -570,22 +506,6 @@
@Override
public void delInoutDataByLossOver(InoutParam param) {
inoutMapper.deleteData(param);
- }
-
- @Override
- public void setCheckCache(InoutData data) {
-
- String cacheKey = RedisConst.buildKey(data.getCompanyId(), data.getCheckId());
-
- //鍖栭獙缁撴灉瀛樺叆缂撳瓨3澶�
- redisUtil.set(cacheKey, data.getCheckItems(), 60 * 60 * 24 * 3);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public List<CheckItemData> getCheckCache(String companyId, String checkId) {
- String cacheKey = RedisConst.buildKey(companyId, checkId);
- return (List<CheckItemData>) redisUtil.get(cacheKey);
}
/**
@@ -674,9 +594,7 @@
* @param data
*/
private void setInoutCache(String deptId, InoutData data) {
- String key = this.buildInoutKey(deptId,
- InoutConstant.KEY_INOUT_LIST, data.getType(), data.getId());
-
+ String key = this.buildInoutKey(deptId, InoutConstant.KEY_INOUT_LIST, data.getType(), data.getId());
redisUtil.set(key, data, InoutConstant.KEY_INOUT_LIST_TIME);
}
@@ -688,54 +606,8 @@
*/
private void setCompleteInoutCache(String deptId, InoutData data) {
String key = this.buildInoutKey(deptId, InoutConstant.KEY_INOUT_COMPLETE_LIST, data.getType(), data.getId());
-
//璁剧疆缂撳瓨鍒扮浜屽ぉ鍑屾櫒(璁$畻褰撳墠鏃堕棿鍒扮浜屽ぉ鍑屾櫒鐨勬椂闂村樊绉掓暟)
redisUtil.set(key, data, DateUtil.getNowToNextDaySeconds());
- }
-
- /**
- * 鎺ㄩ�佸埌澶у睆锛屽垽鏂彧鏈夊綋澶у睆鍦ㄧ嚎鏃跺�欐墠澶勭悊褰撳墠閫昏緫锛岄伩鍏嶉〉闈㈠崱椤匡紝璋冪敤瀛愪换鍔″畬鎴愭帹閫�
- *
- * @param deptId
- * @param curList 鏈畬鎴愭祦绋嬩釜鏁�
- * @param completeList 宸茬粡瀹屾垚娴佺▼涓暟
- */
- private void notifyToScreen(String deptId, List<InoutData> curList,
- List<InoutData> completeList) {
-
- if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN
- .getCode())) {
- WebSocketServer.contextOnLineMap.put(BizType.SCREEN.getCode(),
- false);
- }
- if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN_INOUT
- .getCode())) {
- WebSocketServer.contextOnLineMap.put(
- BizType.SCREEN_INOUT.getCode(), false);
- }
- if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN_CHECK
- .getCode())) {
- WebSocketServer.contextOnLineMap.put(
- BizType.SCREEN_CHECK.getCode(), false);
- }
-
- if (WebSocketServer.contextOnLineMap.get(BizType.SCREEN.getCode())
- || WebSocketServer.contextOnLineMap.get(BizType.SCREEN_INOUT
- .getCode())
- || WebSocketServer.contextOnLineMap.get(BizType.SCREEN_CHECK
- .getCode())) {
-
- if (null == completeList) {
- completeList = this.getCompleteListInoutCache(deptId);
- }
-
- // 鍒涘缓涓�涓瓙浠诲姟杩涜鎺ㄩ�佷俊鎭�
- FutureTask<String> futureTask = new FutureTask<>(
- new NotifyScreenTask(curList, completeList, deptId));
- ExecutorService executorService = Executors.newCachedThreadPool();
- executorService.submit(futureTask);
- executorService.shutdown();
- }
}
/**
@@ -750,4 +622,106 @@
public String buildInoutKey(String deptId, String key, String type, String bizId) {
return Constant.APP_NAME + ":" + deptId + ":" + key + ":" + type + ":" + bizId;
}
+
+ @Override
+ public Page<InoutCheckData> pageSampleData(InoutCheckParam param) {
+
+ //璁剧疆璧峰鍜屾埅姝㈡椂闂�
+ if (null != param.getStart()) {
+ param.setStart(DateUtil.getCurZero(param.getStart()));
+ }
+ if (null != param.getEnd()) {
+ param.setEnd(DateUtil.getNextZero(param.getEnd()));
+ }
+
+ // 璁剧疆杞︾墝鍜屾楠屽崟鎹殑妯$硦鏌ヨ
+ if (StringUtils.isNotEmpty(param.getPlateNum())) {
+ param.setPlateNum("%" + param.getPlateNum() + "%");
+ }
+ if (StringUtils.isNotEmpty(param.getCheckId())) {
+ param.setCheckId("%" + param.getCheckId() + "%");
+ }
+
+ Page<InoutCheckData> page = new Page<>(param.getPage(), param.getLimit());
+ page.setSearchCount(true);
+
+ List<InoutCheckData> records = inoutCheckMapper.pageSampleData(page, param);
+ page.setRecords(records);
+
+ return page;
+ }
+
+ @Override
+ public String updateSampleData(InoutCheckData data) {
+ if (StringUtils.isEmpty(data.getCompanyId())) {
+ data.setCompanyId(ContextUtil.getCompanyId());
+ }
+ if (StringUtils.isEmpty(data.getDeptId())) {
+ data.setCompanyId(ContextUtil.subDeptId(null));
+ }
+
+ inoutCheckMapper.updateSampleData(data);
+
+ return null;
+ }
+
+ @Override
+ public Page<InoutCheckData> pageCheckData(InoutCheckParam param) {
+
+ //璁剧疆璧峰鍜屾埅姝㈡椂闂�
+ if (null != param.getStart()) {
+ param.setStart(DateUtil.getCurZero(param.getStart()));
+ }
+ if (null != param.getEnd()) {
+ param.setEnd(DateUtil.getNextZero(param.getEnd()));
+ }
+
+ // 璁剧疆妫�楠屽崟鎹殑妯$硦鏌ヨ
+ if (StringUtils.isNotEmpty(param.getCheckId())) {
+ param.setCheckId("%" + param.getCheckId() + "%");
+ }
+
+ Page<InoutCheckData> page = new Page<>(param.getPage(), param.getLimit());
+ page.setSearchCount(true);
+
+ List<InoutCheckData> records = inoutCheckMapper.pageCheckData(page, param);
+ page.setRecords(records);
+
+ return page;
+ }
+
+ @Override
+ public String updateCheckData(InoutData data) {
+ data.setUpdateTime(new Date());
+
+ inoutCheckMapper.updateCheckData(data);
+
+ //鏇存柊缂撳瓨
+ updateInoutCache(data);
+
+ return null;
+ }
+
+ @Override
+ public List<InoutPrice> getPrice(InoutCheckParam param) {
+ if (null == param.getStart()) {
+ param.setStart(new Date());
+ }
+ if (null == param.getEnd()) {
+ param.setEnd(new Date());
+ }
+ return inoutCheckMapper.getPrice(param);
+ }
+
+ @Override
+ public InoutCheckData inoutDataByCheckId(InoutCheckParam param) throws Exception {
+ List<InoutCheckData> list = inoutCheckMapper.inoutDataByCheckId(param);
+ if (null == list || list.size() == 0)
+ return null;
+ if (list.size() == 1) {
+ return list.get(0);
+ } else {
+ throw new Exception("褰撳墠鏉′欢涓嬪瓨鍦ㄥ涓弧瓒虫潯浠剁殑鏁版嵁锛岃鏍告煡锛侊紒");
+ }
+ }
}
--
Gitblit v1.9.3