From deb8a2c32ba0cb7a88819b54d720418cdc2f7ebb Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期二, 24 三月 2026 16:58:53 +0800
Subject: [PATCH] 粮情报表,数量监测报表,库区回显错误纠正
---
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GrainService.java | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 110 insertions(+), 6 deletions(-)
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GrainService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GrainService.java
index a1a2d4c..9ff3f5c 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GrainService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GrainService.java
@@ -2,21 +2,25 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fzzy.igds.constant.OrderRespEnum;
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.data.GrainData;
import com.fzzy.igds.data.GrainParam;
-import com.fzzy.igds.data.InoutParam;
+import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.Grain;
-import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.mapper.GrainMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
+import com.fzzy.igds.websocket.WebSocketPacket;
+import com.fzzy.igds.websocket.WebSocketServer;
+import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* @Description
@@ -29,6 +33,10 @@
@Resource
private GrainMapper grainMapper;
+ @Resource
+ private RedisCache redisCache;
+ @Resource
+ private DepotService depotService;
/**
* 鏌ヨ鏁版嵁
@@ -93,4 +101,100 @@
grainMapper.selectPage(page, queryWrapper);
}
+ /**
+ * JPA - 鏇存柊鏁版嵁
+ * @param data
+ */
+ public void saveOrUpdateGrain(Grain data, String batchTag) {
+ if (StringUtils.isEmpty(data.getCompanyId())) {
+ data.setCompanyId(ContextUtil.getCompanyId());
+ }
+ if (StringUtils.isEmpty(data.getBatchId())) {
+ data.setBatchId(DateFormatUtils.format(data.getReceiveDate(), "yyyyMMddHHmm"));
+ }
+ if(StringUtils.isEmpty(batchTag)){
+ //鑷姩鐢熸垚
+ batchTag = "01";
+ }
+
+ if(StringUtils.isBlank(data.getCreateBy())){
+ data.setCreateBy(ContextUtil.getLoginUserName());
+ data.setCreateTime(new Date());
+ }
+
+ data.setUpdateBy(ContextUtil.getLoginUserName());
+ data.setUpdateTime(new Date());
+
+ data.setBatchTag(batchTag);
+ int insert = grainMapper.updateById(data);
+ if(insert == 0){
+ grainMapper.insert(data);
+ }
+
+ updateCacheGrainData(data);
+ }
+
+
+ /**
+ * 鏇存柊缂撳瓨涓渶鏂扮殑绮儏妫�娴嬫暟鎹�
+ *
+ * @param data 褰撳墠鏁版嵁涓烘爣鍑嗙殑Grain鏁版嵁锛屾病鏈夊仛鏇存柊鐐逛綅淇℃伅
+ * @return key=鍙傝�冪紪鐮�
+ */
+ public void updateCacheGrainData(Grain data) {
+
+ GrainData grainData = new GrainData();
+ BeanUtils.copyProperties(data, grainData);
+
+ String key = RedisConst.buildKey(data.getCompanyId(),
+ RedisConst.KEY_GRAIN, grainData.getDepotId());
+ redisCache.setCacheObject(key, grainData);
+
+
+ //鎺ㄩ�佸ぇ灞�
+ String deptId = data.getDeptId();
+ if (null == deptId) {
+ Depot depot = depotService.getCacheDepot(data.getCompanyId(), data.getDepotId());
+ if (null == depot) {
+ return;
+ }
+ deptId = depot.getDeptId();
+ }
+ Map<String, GrainData> mapData = this.getCacheGrainDateMap(data.getCompanyId(), deptId);
+ WebSocketPacket packet = new WebSocketPacket();
+ packet.setBizType("screen");
+ packet.setCompanyId(ContextUtil.getCompanyId());
+ packet.setDeptId(deptId);
+ packet.setBizId("grain");
+ packet.setOrderResp(OrderRespEnum.ORDER_INPROGRESS.getCode());
+ packet.setData(mapData);
+ WebSocketServer.sendByPocket(packet);
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨涓渶鏂扮殑绮儏妫�娴嬫暟鎹�
+ *
+ * @param companyId
+ * @return key=鍙傝�冪紪鐮�
+ */
+ public Map<String, GrainData> getCacheGrainDateMap(String companyId, String deptId) {
+ if (null == companyId || null == deptId) return null;
+
+ String pattern = RedisConst.buildKey(companyId, RedisConst.KEY_GRAIN) + "*";
+
+ Collection<String> keys = redisCache.keys(pattern);
+
+ if (null == keys || keys.isEmpty()) return null;
+
+ Map<String, GrainData> result = new HashMap<>();
+ GrainData data;
+ for (String key : keys) {
+ data = (GrainData) redisCache.getCacheObject(key);
+ if (null == data) continue;
+
+ result.put(data.getDepotId(), data);
+ }
+ return result;
+ }
+
}
--
Gitblit v1.9.3