From 996c091a4913ac768324b7ea69a8494ba9d6ece0 Mon Sep 17 00:00:00 2001
From: heheng <heheng@123456>
Date: Wed, 26 Feb 2025 16:15:08 +0800
Subject: [PATCH] 相忌功能
---
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java | 58 +++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 45 insertions(+), 13 deletions(-)
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
index acad8a2..ebb6530 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
@@ -46,6 +46,7 @@
@Autowired
private HzWarehouseMapper warehouseMapper;
+
@Override
public CommonPage selectHazmatList(HzHazmat hzHazmat) {
if(hzHazmat.getWarehouseId()==null||hzHazmat.getBasicId()==null){
@@ -74,19 +75,28 @@
if(!hazmatList.isEmpty()) {
List<Long> warehouseIds = hazmatList.stream().map(HzHazmatWarehouseVO::getWarehouseId).collect(Collectors.toList());
List<Long> basicIds = hazmatList.stream().map(HzHazmatWarehouseVO::getBasicId).collect(Collectors.toList());
+ List<Integer> cupboardIds = hazmatList.stream().map(HzHazmatWarehouseVO::getCupboardId).collect(Collectors.toList());
List<HzHazmatBasic> hazmatBasicList = hazmatBasicMapper.selectHazmatBasicListByIds(basicIds);
List<HzWarehouse> warehouseList = warehouseMapper.selectWarehouseListByIds(warehouseIds);
+ List<HzWarehouseCupboard> hzWarehouseCupboards = warehouseMapper.selectByCupboardIds(cupboardIds);
+
Map<Long,HzHazmatBasic> hazmatBasicMap=hazmatBasicList.stream().collect(Collectors.toMap(HzHazmatBasic::getId, item->item));
Map<Long,HzWarehouse> warehouseMap=warehouseList.stream().collect(Collectors.toMap(HzWarehouse::getId, item->item));
+ Map<Integer, HzWarehouseCupboard> cupboardMap = hzWarehouseCupboards.stream().collect(Collectors.toMap(HzWarehouseCupboard::getId, item -> item));
for(HzHazmatWarehouseVO hazmatWarehouseVO:hazmatList){
HzHazmatBasic hazmatBasic=hazmatBasicMap.get(hazmatWarehouseVO.getBasicId());
HzWarehouse warehouse=warehouseMap.get(hazmatWarehouseVO.getWarehouseId());
+ HzWarehouseCupboard hzWarehouseCupboard = cupboardMap.get(hazmatWarehouseVO.getCupboardId());
if(hazmatBasic!=null){
hazmatWarehouseVO.setHazmatBasic(hazmatBasic);
}
if(warehouse!=null){
hazmatWarehouseVO.setWarehouseName(warehouse.getName());
}
+ if (hzWarehouseCupboard != null){
+ hazmatWarehouseVO.setCupboardName(hzWarehouseCupboard.getCupboardName());
+ }
+
}
}
IdTableNameHandler.removeCurrentId();
@@ -142,7 +152,7 @@
@Override
@Transactional(rollbackFor = RuntimeException.class)
- public void hazmatUse(Long hazmatId) {
+ public void hazmatUse(Long hazmatId, Integer used) {
SysUser currentUser=SecurityUtils.getLoginUser().getUser();
checkUserAllowed(null,currentUser);
//设置分表id
@@ -153,19 +163,33 @@
}
checkUserAllowed(hazmat,currentUser);
//获取变动前仓库库存
- int count = baseMapper.selectHazmatCountOfWarehouse(hazmat.getWarehouseId(), hazmat.getBasicId(), currentUser.getCompanyId());
- hazmat.setState(HazmatStatusEnum.USING.getCode());
- hazmat.setUpdateBy(currentUser.getUsername());
- updateById(hazmat);
+ int count = baseMapper.selectHazmatCountOfWarehouse(hazmat.getWarehouseId(), hazmat.getBasicId(), currentUser.getCompanyId(),hazmat.getCupboardId());
+
//生成流向
+ BigDecimal remaining=hazmat.getRemaining();
HzHazmatFlow hazmatFlow=new HzHazmatFlow();
hazmatFlow.setHazmatId(hazmatId);
hazmatFlow.setBasicId(hazmat.getBasicId());
hazmatFlow.setState(OperateStatusEnum.USING.getCode());
hazmatFlow.setCompanyId(currentUser.getCompanyId());
- hazmatFlow.setNum(hazmat.getRemaining().multiply(BigDecimal.valueOf(-1)));
+ hazmatFlow.setNum(remaining.multiply(BigDecimal.valueOf(-1)));
hazmatFlow.setCreateId(currentUser.getId());
hazmatFlowMapper.insert(hazmatFlow);
+ hazmat.setState(HazmatStatusEnum.USING.getCode());
+ if(used==1){//用尽流向
+ hazmatFlow=new HzHazmatFlow();
+ hazmatFlow.setHazmatId(hazmatId);
+ hazmatFlow.setBasicId(hazmat.getBasicId());
+ hazmatFlow.setState(OperateStatusEnum.USE_UP.getCode());
+ hazmatFlow.setCompanyId(currentUser.getCompanyId());
+ hazmatFlow.setNum(remaining.multiply(BigDecimal.valueOf(-1)));
+ hazmatFlow.setCreateId(currentUser.getId());
+ hazmatFlowMapper.insert(hazmatFlow);
+ hazmat.setState(HazmatStatusEnum.USED.getCode());
+ hazmat.setRemaining(BigDecimal.valueOf(0));
+ }
+ hazmat.setUpdateBy(currentUser.getUsername());
+ updateById(hazmat);//更新试剂状态
//生成库存变动记录
//新增危化品变动记录
HzWarehouseRecord warehouseRecord = new HzWarehouseRecord()
@@ -191,15 +215,22 @@
//设置分表id
IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
HzHazmat dbhazmat=getById(hazmat.getId());
- if(!dbhazmat.getState().equals(HazmatStatusEnum.USING.getCode())){
- throw new ApiException("危化品非使用中状态,不能进行归还操作");
+ BigDecimal remaining=dbhazmat.getRemaining();
+ if(!dbhazmat.getState().equals(HazmatStatusEnum.USING.getCode())&&!dbhazmat.getState().equals(HazmatStatusEnum.USED.getCode())){
+ throw new ApiException("危化品非使用中或者用尽状态,不能进行归还操作");
}
- if(dbhazmat.getRemaining().compareTo(hazmat.getRemaining())<0){
+ if(dbhazmat.getState().equals(HazmatStatusEnum.USING.getCode())&&remaining.compareTo(hazmat.getRemaining())<0){
throw new ApiException("退还的容量不能高于库存容量");
+ }
+ if(dbhazmat.getState().equals(HazmatStatusEnum.USED.getCode())){
+ HzHazmatBasic hazmatBasic=hazmatBasicMapper.selectById(dbhazmat.getBasicId());
+ if(hazmatBasic.getMetering().compareTo(hazmat.getRemaining())<0) {
+ throw new ApiException("退还的容量不能高于最小包装数量");
+ }
}
checkUserAllowed(dbhazmat,currentUser);
//获取变动前仓库库存
- int count = baseMapper.selectHazmatCountOfWarehouse(dbhazmat.getWarehouseId(), dbhazmat.getBasicId(), currentUser.getCompanyId());
+ int count = baseMapper.selectHazmatCountOfWarehouse(dbhazmat.getWarehouseId(), dbhazmat.getBasicId(), currentUser.getCompanyId(),dbhazmat.getCupboardId());
hazmat.setState(HazmatStatusEnum.USEWAREHOUSEIN.getCode());
hazmat.setUpdateBy(currentUser.getUsername());
updateById(hazmat);
@@ -238,8 +269,9 @@
if(!hazmat.getState().equals(HazmatStatusEnum.USING.getCode())){
throw new ApiException("危化品非使用中状态,不能进行用完登记操作");
}
-
+ BigDecimal remaining=hazmat.getRemaining();
hazmat.setState(HazmatStatusEnum.USED.getCode());
+ hazmat.setRemaining(BigDecimal.valueOf(0));
hazmat.setUpdateBy(currentUser.getUsername());
updateById(hazmat);
//生成流向
@@ -248,7 +280,7 @@
hazmatFlow.setBasicId(hazmat.getBasicId());
hazmatFlow.setState(OperateStatusEnum.USE_UP.getCode());
hazmatFlow.setCompanyId(currentUser.getCompanyId());
- hazmatFlow.setNum(hazmat.getRemaining().multiply(BigDecimal.valueOf(-1)));
+ hazmatFlow.setNum(remaining.multiply(BigDecimal.valueOf(-1)));
hazmatFlow.setCreateId(currentUser.getId());
hazmatFlowMapper.insert(hazmatFlow);
IdTableNameHandler.removeCurrentId();
@@ -267,7 +299,7 @@
}
checkUserAllowed(hazmat,currentUser);
//获取变动前仓库库存
- int count = baseMapper.selectHazmatCountOfWarehouse(hazmat.getWarehouseId(), hazmat.getBasicId(), currentUser.getCompanyId());
+ int count = baseMapper.selectHazmatCountOfWarehouse(hazmat.getWarehouseId(), hazmat.getBasicId(), currentUser.getCompanyId(),hazmat.getCupboardId());
hazmat.setState(HazmatStatusEnum.DISCARD.getCode());
hazmat.setUpdateBy(currentUser.getUsername());
updateById(hazmat);
--
Gitblit v1.9.2