From 65ca50935315a89e219b7c974caf95dc28895ffc Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Thu, 16 Oct 2025 08:37:56 +0800
Subject: [PATCH] 修改
---
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java | 155 +++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 135 insertions(+), 20 deletions(-)
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java
index 4bc8fa4..d005ddc 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java
@@ -2,9 +2,11 @@
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.hazmat.common.api.CommonPage;
import com.gkhy.hazmat.common.config.IdTableNameHandler;
+import com.gkhy.hazmat.common.constant.Constant;
import com.gkhy.hazmat.common.domain.entity.SysUser;
import com.gkhy.hazmat.common.enums.CodePrexEnum;
import com.gkhy.hazmat.common.enums.EntryStateEnum;
@@ -12,29 +14,24 @@
import com.gkhy.hazmat.common.enums.UserTypeEnum;
import com.gkhy.hazmat.common.exception.ApiException;
import com.gkhy.hazmat.common.listener.CustomEventPublisher;
+import com.gkhy.hazmat.common.service.RedisService;
import com.gkhy.hazmat.common.utils.PageUtils;
import com.gkhy.hazmat.common.utils.SecurityUtils;
import com.gkhy.hazmat.common.utils.StringUtils;
-import com.gkhy.hazmat.system.domain.HzEntryRecord;
-import com.gkhy.hazmat.system.domain.HzHazmat;
-import com.gkhy.hazmat.system.domain.HzHazmatBasic;
-import com.gkhy.hazmat.system.domain.HzWarehouseRecord;
-import com.gkhy.hazmat.system.mapper.HzEntryRecordMapper;
-import com.gkhy.hazmat.system.mapper.HzHazmatBasicMapper;
-import com.gkhy.hazmat.system.mapper.HzHazmatMapper;
-import com.gkhy.hazmat.system.mapper.HzWarehouseRecordMapper;
+import com.gkhy.hazmat.system.domain.*;
+import com.gkhy.hazmat.system.domain.vo.TabooDisVo;
+import com.gkhy.hazmat.system.mapper.*;
import com.gkhy.hazmat.system.service.HzEntryRecordService;
import com.gkhy.hazmat.system.service.HzHazmatService;
+import com.gkhy.hazmat.system.service.TabooWarningService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.time.LocalDateTime;
+import java.util.*;
/**
* <p>
@@ -56,11 +53,20 @@
private HzWarehouseRecordMapper warehouseRecordMapper;
@Autowired
private CustomEventPublisher customEventPublisher;
+ @Autowired
+ private SysCompanyMapper companyMapper;
+ @Autowired
+ private RedisService redisService;
+// @Autowired
+// private TabooWarningService tabooWarningService;
+
+ @Autowired
+ private HzTabooWarningMapper tabooWarningMapper;
@Override
public CommonPage selectEntryRecordList(HzEntryRecord entryRecord) {
SysUser currentUser = SecurityUtils.getLoginUser().getUser();
- if (!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
+ if (!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode()) && !currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())) {
entryRecord.setCompanyId(currentUser.getCompanyId());
}
PageUtils.startPage();
@@ -87,6 +93,9 @@
if(hazmatBasic==null){
throw new ApiException("危化品基础数据不存在");
}
+ if(entryRecord.getNum()>hazmatBasic.getMaxEntry()){
+ throw new ApiException("数量超过单次入库最大数量<"+hazmatBasic.getMaxEntry()+">");
+ }
entryRecord.setCompanyId(currentUser.getCompanyId());
entryRecord.setCreateBy(currentUser.getUsername());
checkUserAllowed(null,currentUser);
@@ -103,11 +112,18 @@
}
public void generateCode(HzEntryRecord entryRecord){
+ SysCompany company=companyMapper.selectById(entryRecord.getCompanyId());
+ String code=company.getCode();
+ if(StringUtils.isBlank(code)){
+ throw new ApiException("公司两位编码为空");
+ }
String currentDate= DateUtil.format(new Date(), DatePattern.PURE_DATE_FORMAT);
StringBuilder prefixBuilder=new StringBuilder().append(CodePrexEnum.MATERIAL.getCode())
+ .append(code)
.append(currentDate);
+
HzEntryRecord er=baseMapper.selectLastEntryRecord(prefixBuilder.toString(),entryRecord.getCompanyId());
- int startCode=0;
+ int startCode=1;
int endCode=startCode+entryRecord.getNum()-1;
if(er!=null){
startCode=er.getEndCode()+1;
@@ -148,28 +164,86 @@
throw new ApiException("危化品基础数据不存在");
}
+
// synchronized (this) {
//获取当前仓库库存
//设置分表id
IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
- int count = hazmatMapper.selectHazmatCountOfWarehouse(entryRecord.getWarehouseId(), hazmatBasic.getId(), currentUser.getCompanyId());
+ int count = hazmatMapper.selectHazmatCountOfWarehouse(entryRecord.getWarehouseId(), hazmatBasic.getId(), currentUser.getCompanyId(), entryRecord.getCupboardId());
//新增危化品变动记录
HzWarehouseRecord warehouseRecord = new HzWarehouseRecord()
.setWarehouseId(entryRecord.getWarehouseId())
+ .setCupboardId(entryRecord.getCupboardId())
.setBasicId(hazmatBasic.getId())
.setNum(entryRecord.getNum())
.setCompanyId(currentUser.getCompanyId())
.setCreateId(currentUser.getId())
.setRemaining(entryRecord.getNum() + count);
warehouseRecordMapper.insert(warehouseRecord);
- int startCode=entryRecord.getStartCode();
+ // 校验生成相忌数据
+ Map<String, Long> redata = (Map<String, Long>)redisService.get(Constant.TABOO_UNIQUE_KEY);
+ if (!redata.isEmpty()){
+ // 查询对应仓库和柜子的物品信息获取品类 获取相冲相弱相吸相异
+ List<TabooDisVo> collectData =
+ hazmatMapper.selectHazmatWarehouseCheck(entryRecord.getWarehouseId(), currentUser.getCompanyId(), entryRecord.getCupboardId());
+ if (!collectData.isEmpty() && collectData.size() > 0) {
+ for (TabooDisVo collectDatum : collectData) {
+ String key1 = collectDatum.getSpNum() + "_" + hazmatBasic.getPeculiarityNumber();
+ String key2 = hazmatBasic.getPeculiarityNumber() + "_" + collectDatum.getSpNum();
+
+ if (redata.containsKey(key1) || redata.containsKey(key2)) {
+ // 记录数据
+ Long l = redata.get(key1);
+ Long l1 = l == null ? redata.get(key2) : l;
+ HzTabooWarning tabooWarning = new HzTabooWarning()
+ .setWarningType(l1)
+ .setWarehouseId(entryRecord.getWarehouseId())
+ .setCupboardId(entryRecord.getCupboardId())
+ .setEntryId(entryRecord.getId())
+ .setCompanyId(currentUser.getCompanyId())
+ .setTabooBasicId(collectDatum.getId()).setCreateBy(currentUser.getUsername());
+ tabooWarningMapper.insert(tabooWarning);
+ break;
+ }
+ }
+ }
+// if (null != collectData) {
+// Iterator<Map.Entry<String, Integer>> iterator = collectData.entrySet().iterator();
+// while (iterator.hasNext()) {
+// Map.Entry<String, Integer> entry = iterator.next();
+// String key = entry.getKey();
+// Integer value = entry.getValue();
+// Integer i = collectData.get(value);
+// String key1 = value + "_" + hazmatBasic.getPeculiarityNumber();
+// String key2 = hazmatBasic.getPeculiarityNumber() + "_" + value;
+//
+// if (redata.containsKey(key1) || redata.containsKey(key2)) {
+// // 记录数据
+// Long l = redata.get(key1);
+// Long l1 = l == null ? redata.get(key2) : l;
+// HzTabooWarning tabooWarning = new HzTabooWarning()
+// .setWarningType(l1)
+// .setEntryId(entryRecord.getId())
+// .setCompanyId(currentUser.getCompanyId())
+// .setTabooBasicId(i.longValue()).setCreateBy(currentUser.getUsername());
+// tabooWarningMapper.insert(tabooWarning);
+// break;
+// }
+// }
+// }
+ }else {
+ throw new ApiException("危化品相忌信息不存在");
+ }
+ int startCode=entryRecord.getStartCode();
int endCode=entryRecord.getEndCode();
List<HzHazmat> hazmatList = new ArrayList<>();
for (int i = startCode; i <=endCode; i++) {
String lastCode= StringUtils.addZeroForNum(String.valueOf(i),4);
String code=String.format("%s%s",entryRecord.getCodePrex(),lastCode);
hazmatList.add(new HzHazmat().setWarehouseId(entryRecord.getWarehouseId())
+ .setCupboardId(entryRecord.getCupboardId())
.setBasicId(entryRecord.getBasicId())
+ .setCupboardId(entryRecord.getCupboardId())
.setEntryId(entryRecord.getId())
.setRemaining(hazmatBasic.getMetering())
.setCompanyId(currentUser.getCompanyId())
@@ -205,13 +279,24 @@
});
}
+
@Override
public int updateEntryRecord(HzEntryRecord entryRecord) {
SysUser currentUser = SecurityUtils.getLoginUser().getUser();
checkUserAllowed(entryRecord,currentUser);
+ HzHazmatBasic hazmatBasic=hazmatBasicMapper.selectById(entryRecord.getBasicId());
+ if(hazmatBasic==null){
+ throw new ApiException("危化品基础数据不存在");
+ }
HzEntryRecord existEr=baseMapper.selectById(entryRecord.getId());
if(existEr.getState().equals(EntryStateEnum.ENTER.getCode())){
throw new ApiException("已经入库,不能再修改");
+ }
+ if(entryRecord.getNum()>hazmatBasic.getMaxEntry()){
+ throw new ApiException("数量超过单次入库最大数量<"+hazmatBasic.getMaxEntry()+">");
+ }
+ if (!Objects.equals(existEr.getNum(),entryRecord.getNum())) {
+ generateCode2(entryRecord);
}
entryRecord.setUpdateBy(currentUser.getUsername());
int row=baseMapper.updateById(entryRecord);
@@ -219,6 +304,30 @@
throw new ApiException("更新入库信息失败");
}
return row;
+ }
+
+ private void generateCode2(HzEntryRecord entryRecord) {
+ SysCompany company=companyMapper.selectById(entryRecord.getCompanyId());
+ String code=company.getCode();
+ if(StringUtils.isBlank(code)){
+ throw new ApiException("公司两位编码为空");
+ }
+ String currentDate= DateUtil.format(new Date(), DatePattern.PURE_DATE_FORMAT);
+ StringBuilder prefixBuilder=new StringBuilder().append(CodePrexEnum.MATERIAL.getCode())
+ .append(code)
+ .append(currentDate);
+
+ HzEntryRecord er=baseMapper.selectLastEndCodeEntryRecord(prefixBuilder.toString(),entryRecord.getCompanyId());
+ int startCode=1;
+ int endCode=startCode+entryRecord.getNum()-1;
+ if(er!=null){
+ startCode=er.getEndCode()+1;
+ endCode=startCode+entryRecord.getNum()-1;
+ }
+ entryRecord.setCodePrex(prefixBuilder.toString());
+ entryRecord.setStartCode(startCode);
+ entryRecord.setEndCode(endCode);
+ entryRecord.setState(EntryStateEnum.UNENTER.getCode());
}
@Override
@@ -229,8 +338,12 @@
throw new ApiException("入库信息不存在");
}
checkUserAllowed(entryRecord,currentUser);
- //设置分表id
- IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
+ if (currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())){
+ IdTableNameHandler.setCurrentId(entryRecord.getCompanyId());
+ }else {
+ //设置分表id
+ IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
+ }
PageUtils.startPage();
List<HzHazmat> hazmatList = hazmatMapper.selectHazmatList(new HzHazmat().setEntryId(entryId));
IdTableNameHandler.removeCurrentId();
@@ -242,8 +355,10 @@
throw new ApiException("管理员不能操作");
}
if(entryRecord!=null){
- if(!Objects.equals(user.getCompanyId(), entryRecord.getCompanyId())){
- throw new ApiException("无权限操作其他企业数据");
+ if (!user.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())){
+ if(!Objects.equals(user.getCompanyId(), entryRecord.getCompanyId())){
+ throw new ApiException("无权限操作其他企业数据");
+ }
}
}
}
--
Gitblit v1.9.2