From 1eddf64a7104dcd06065e8ac309eebc42c24fb05 Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期五, 27 三月 2026 14:29:56 +0800
Subject: [PATCH] 出入库记录导入,判重兜底校验纠正
---
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java | 191 +++++++++++++++++++++++++++++++++++++++++------
1 files changed, 164 insertions(+), 27 deletions(-)
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java
index 8c885e6..8501085 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java
@@ -2,17 +2,23 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.RedisConst;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.DepotStore;
+import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.mapper.DepotMapper;
import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysUser;
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.stereotype.Service;
+
import javax.annotation.Resource;
import java.util.*;
+import java.util.concurrent.TimeUnit;
/**
* @Description
@@ -27,30 +33,35 @@
private DepotMapper depotMapper;
@Resource
private RedisCache redisCache;
+ @Resource
+ private DepotStoreService depotStoreService;
+
+ @Resource
+ private CoreDeptService coreDeptService;
/**
* 鏌ヨ搴撳尯涓嬩粨搴撳垪琛�
*
* @param companyId
* @param deptId
- * @param idDesc 鏄惁ID鍊掑簭鎺掑垪
+ * @param idDesc 鏄惁ID鍊掑簭鎺掑垪
* @return
*/
public List<Depot> getData(String companyId, String deptId, boolean idDesc) {
if (StringUtils.isEmpty(companyId)) {
companyId = ContextUtil.getCompanyId();
}
-
+
QueryWrapper<Depot> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("company_id", companyId);
- if(StringUtils.isNotBlank(deptId)){
+ if (StringUtils.isNotBlank(deptId)) {
queryWrapper.likeRight("dept_id", deptId);
}
-
- if(idDesc){
+
+ if (idDesc) {
//ID鍊掑簭
queryWrapper.orderByDesc("id");
- }else {
+ } else {
//搴忓彿姝e簭
queryWrapper.orderByAsc("order_num");
}
@@ -59,7 +70,53 @@
}
/**
+ * 鏍规嵁鐢ㄦ埛绫诲瀷鏌ヨ鎵�鏈変粨搴擄紝浣滀负dorado鐨刴ap鍥炴樉浣跨敤
+ *
+ * @param deptId
+ * @author sgj
+ * @since 2026/03/24
+ */
+ public List<Depot> getDepotByUserType(String deptId) {
+ List<Depot> result = new ArrayList<>();
+
+ if (StringUtils.isNotBlank(deptId)) {
+ //鏌ュ叕鍙镐笅鎵�鏈夊簱鍖�
+ result = this.getData(null, deptId, false);
+ return result;
+ }
+ //鑾峰彇褰撳墠鐧诲綍浜�
+ SysUser user = ContextUtil.getLoginUser();
+
+ if (Constant.USER_TYPE_10.equals(user.getUserType())) {
+ //鐩戠鐢ㄦ埛锛岀洿鎺ユ煡璇㈢粍缁囦笅鎵�鏈夊簱鍖�
+ result = this.getData(user.getCompanyId(), null, false);
+ return result;
+ }
+ if (Constant.USER_TYPE_20.equals(user.getUserType())) {
+ //閾惰鐢ㄦ埛锛屾牴鎹悎鍚屾煡璇㈤摱琛屼笅鎵�鏈夊簱鍖�
+ List<Dept> deptByBank = coreDeptService.getDeptByBank(user.getUserData());
+ for (Dept dept : deptByBank) {
+ result.addAll(this.getData(null, dept.getId(), false));
+ }
+ return result;
+ }
+ if (Constant.USER_TYPE_30.equals(user.getUserType())) {
+ //搴撳尯鐢ㄦ埛
+ if (ContextUtil.isDepotUser(user.getDeptId() + "")) {
+ //鏌ヨ鐢ㄦ埛鎵�灞炲簱鍖�
+ result = this.getData(null, user.getDeptId() + "", false);
+ } else {
+ //鏌ヨ鐢ㄦ埛鎵�灞炲叕鍙镐笅鎵�鏈夊簱鍖�
+ result = this.getData(user.getCompanyId(), null, false);
+ }
+ return result;
+ }
+ return result;
+ }
+
+ /**
* 鏍规嵁搴撳瓨琛ㄤ俊鎭紝鏇存柊浠撳簱搴撳瓨
+ *
* @param data
*/
public void updateByDepotStore(DepotStore data) {
@@ -91,11 +148,53 @@
depot.setCreateBy(ContextUtil.getLoginUserName());
depot.setCreateTime(new Date());
depotMapper.insert(depot);
- }else {
+ } else {
depot.setUpdateBy(ContextUtil.getLoginUserName());
depot.setUpdateTime(new Date());
depotMapper.updateById(depot);
}
+ flushCache(depot.getCompanyId());
+ }
+
+ /**
+ * 鏇存柊搴撳瓨淇℃伅
+ *
+ * @param depot
+ */
+ public void updateStorageReal(Depot depot) {
+
+ Depot cacheDepot = this.getCacheDepot(depot.getCompanyId(), depot.getId());
+
+ depot.setUpdateBy(ContextUtil.getLoginUserName());
+ depot.setUpdateTime(new Date());
+ depot.setRemark("銆�" + ContextUtil.getLoginUserName() + "銆戜簬[" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss") + "]淇敼搴撳瓨锛�" + cacheDepot.getStorageReal() + "-->" + depot.getStorageReal());
+ depotMapper.updateById(depot);
+
+ DepotStore lastData = new DepotStore();
+
+ //涓婚敭ID瑙勫垯锛歽yyyMMddHHmm_浠撳簱缂栫爜
+ lastData.setId(DateFormatUtils.format(new Date(), "yyyyMMddHHmm") + "_" + depot.getId() + "_HAND");
+ lastData.setCompanyId(depot.getCompanyId());
+ lastData.setDeptId(depot.getDeptId());
+ lastData.setDepotId(depot.getId());
+ lastData.setStorageReal(0.0);
+ lastData.setUpdateTime(new Date());
+ lastData.setUpdateBy("绯荤粺瀹氭椂缁熻");
+
+ lastData.setDepotStatus(depot.getDepotStatus());
+ lastData.setFoodVariety(depot.getFoodVariety());
+ lastData.setFoodLevel(depot.getFoodLevel());
+ lastData.setFoodLocation(depot.getFoodLocation());
+ lastData.setFoodLocationId(depot.getFoodLocationId());
+ lastData.setFoodType(depot.getFoodType());
+ lastData.setFoodYear(depot.getFoodYear());
+
+ lastData.setStorageReal(depot.getStorageReal());
+ lastData.setCreateTime(new Date()); //璁剧疆涓烘渶鏂版椂闂达紝鍏朵粬绯荤粺鍙互閫氳繃姝ゆ椂闂存煡璇㈡暟鎹槸鍚︽湁鏇存柊淇敼锛屽悓姝ュ埌鐪佸钩鍙版帴鍙c��
+ lastData.setCreateBy(ContextUtil.getLoginUserName());
+ lastData.setRemark("銆�" + ContextUtil.getLoginUserName() + "銆戜簬[" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss") + "]淇敼搴撳瓨涓猴細" + depot.getStorageReal());
+
+ depotStoreService.updateAndSave(lastData);
flushCache(depot.getCompanyId());
}
@@ -124,7 +223,7 @@
if (StringUtils.isEmpty(depotId)) {
return;
}
-
+
UpdateWrapper<Depot> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", depotId).set("depot_status", status);
depotMapper.update(null, updateWrapper);
@@ -152,7 +251,7 @@
companyId = ContextUtil.getCompanyId();
}
- List<Depot> list = this.getData(companyId,null, false);
+ List<Depot> list = this.getData(companyId, null, false);
this.setCacheDepotList(list, companyId);
}
@@ -168,7 +267,7 @@
String key;
for (Depot depot : list) {
key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depot.getId());
- redisCache.setCacheObject(key, depot);
+ redisCache.setCacheObject(key, depot, 24, TimeUnit.HOURS);
}
}
@@ -199,25 +298,35 @@
if (StringUtils.isEmpty(companyId)) {
companyId = ContextUtil.getCompanyId();
}
- String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT) + "*";
-
- Collection<String> keys = redisCache.keys(patten);
- if (null == keys) {
- return null;
- }
-
List<Depot> list = new ArrayList<>();
- for (String key : keys) {
- list.add((Depot) redisCache.getCacheObject(key));
+
+ String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT) + "*";
+ Collection<String> keys = redisCache.keys(patten);
+ if (null != keys) {
+ for (String key : keys) {
+ if (null == redisCache.getCacheObject(key)) {
+ list = new ArrayList<>();
+ break;
+ }
+ list.add((Depot) redisCache.getCacheObject(key));
+ }
}
+
//缂撳瓨鑾峰彇涓虹┖锛屽垯鏌ヨ鏁版嵁搴�
- if (list.size() < 1) {
- list = this.getData(companyId,null, false);
+ if (list.isEmpty()) {
+ list = this.getData(companyId, null, false);
setCacheDepotList(list, companyId);
}
-
- //閲嶆柊鎺掑簭
- Collections.sort(list, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+ if (!list.isEmpty()) {
+ // 妫�鏌ユ槸鍚︽湁浠撳簱鐨勬帓搴忓彿涓虹┖
+ for (Depot depot : list) {
+ if (null == depot.getOrderNum()) {
+ //鎺掑簭鍙蜂负绌猴紝鍒欓粯璁ょ粰1
+ depot.setOrderNum(1);
+ }
+ }
+ Collections.sort(list, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+ }
return list;
}
@@ -242,8 +351,10 @@
result.add(depot);
}
}
- //閲嶆柊鎺掑簭
- Collections.sort(result, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+ if (!result.isEmpty()) {
+ //閲嶆柊鎺掑簭
+ Collections.sort(list, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+ }
return result;
}
@@ -264,9 +375,35 @@
String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depotId);
Depot depot = redisCache.getCacheObject(key);
if (null == depot) {
- depot = depotMapper.selectById(depotId);
+ depot = depotMapper.selectById(depotId);
redisCache.setCacheObject(key, depot);
}
return depot;
}
+
+ /**
+ * 鑾峰彇浠撳簱淇℃伅-鏍规嵁浠撳簱鍚嶇О鑾峰彇浠撳簱ID
+ *
+ * @param deptId
+ * @return
+ */
+ public String getDepotId(String deptId, String depotName) {
+ if (StringUtils.isEmpty(deptId)) {
+ return null;
+ }
+ if (StringUtils.isEmpty(depotName)) {
+ return null;
+ }
+
+ List<Depot> depotList = getCacheDepotList(ContextUtil.getCompanyId(), deptId);
+ if (null == depotList || depotList.isEmpty()) {
+ return null;
+ }
+ for (Depot depot : depotList) {
+ if (depotName.equals(depot.getName())) {
+ return depot.getId();
+ }
+ }
+ return null;
+ }
}
--
Gitblit v1.9.3