From 181252cf8ba494441b1fdb3873da7afa90ff0813 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期四, 26 二月 2026 10:51:49 +0800
Subject: [PATCH] 库存统计优化,增加手动统计
---
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GrainService.java | 137 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 136 insertions(+), 1 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 24520e5..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
@@ -1,16 +1,26 @@
package com.fzzy.igds.service;
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.domain.Depot;
import com.fzzy.igds.domain.Grain;
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.List;
+import java.util.*;
/**
* @Description
@@ -23,6 +33,10 @@
@Resource
private GrainMapper grainMapper;
+ @Resource
+ private RedisCache redisCache;
+ @Resource
+ private DepotService depotService;
/**
* 鏌ヨ鏁版嵁
@@ -59,7 +73,128 @@
return grainMapper.selectList(queryWrapper);
}
+ /**
+ * 鍒嗛〉鏌ヨ鏁版嵁
+ * @param page
+ * @param param
+ */
+ public void pageData(Page<Grain> page, Map<String, Object> param) {
+
+ QueryWrapper<Grain> queryWrapper = new QueryWrapper<>();
+
+ queryWrapper.eq("company_id", ContextUtil.getCompanyId());
+ queryWrapper.eq("dept_id", ContextUtil.subDeptId(null));
+
+ String ids = (String) param.get("ids");
+ if (StringUtils.isNotBlank(ids)) {
+ queryWrapper.in("depot_id", ids);
+ }
+ Date date = (Date) param.get(("start"));
+ if (null != date) {
+ queryWrapper.ge("receive_date", DateUtil.getCurZero(date));
+ }
+ date = (Date) param.get(("end"));
+ if (null != date) {
+ queryWrapper.le("receive_date", DateUtil.getNextZero(date));
+ }
+ queryWrapper.orderByDesc("batch_id");
+ 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