From 996c091a4913ac768324b7ea69a8494ba9d6ece0 Mon Sep 17 00:00:00 2001 From: heheng <heheng@123456> Date: 星期三, 26 二月 2025 16:15:08 +0800 Subject: [PATCH] 相忌功能 --- hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java | 79 ++++++++++++++++++++++++++++++++++++--- 1 files changed, 73 insertions(+), 6 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 e3218dc..2fb7c5c 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,23 +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.*; +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> @@ -52,6 +55,13 @@ 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) { @@ -154,11 +164,12 @@ 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()) @@ -169,7 +180,61 @@ .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++) { @@ -178,6 +243,7 @@ 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()) @@ -213,6 +279,7 @@ }); } + @Override public int updateEntryRecord(HzEntryRecord entryRecord) { SysUser currentUser = SecurityUtils.getLoginUser().getUser(); -- Gitblit v1.9.2