Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
FCL
2026-02-12 11:11:20 +08:00
7 changed files with 74 additions and 3 deletions

View File

@@ -1,6 +1,8 @@
package com.zt.plat.module.qms.resource.material.controller.vo; package com.zt.plat.module.qms.resource.material.controller.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.pojo.PageParam;
import com.zt.plat.module.qms.core.aspect.annotation.Dict;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@@ -91,6 +93,9 @@ public class MaterialProductPageReqVO extends PageParam {
@Schema(description = "是否进行库存预警,1-是0-否") @Schema(description = "是否进行库存预警,1-是0-否")
private Integer InventoryAlarmFlag; private Integer InventoryAlarmFlag;
@Schema(description = "库存预警级别,safe-安全warn-警告danger")
private String InventoryAlarmLevel;
@Schema(description = "库存预警区间,json格式配置") @Schema(description = "库存预警区间,json格式配置")
private String InventoryAlarmRange; private String InventoryAlarmRange;

View File

@@ -138,6 +138,12 @@ public class MaterialProductRespVO {
@Dict(dicCode = "yes_or_no") @Dict(dicCode = "yes_or_no")
private Integer InventoryAlarmFlag; private Integer InventoryAlarmFlag;
@Schema(description = "库存预警级别,safe-安全warn-警告danger")
@ExcelProperty("库存预警级别,safe-安全warn-警告danger")
@Dict(dicCode = "alarm_level")
private String InventoryAlarmLevel;
@Schema(description = "库存预警区间,json格式配置") @Schema(description = "库存预警区间,json格式配置")
@ExcelProperty("库存预警区间,json格式配置") @ExcelProperty("库存预警区间,json格式配置")
private String InventoryAlarmRange; private String InventoryAlarmRange;

View File

@@ -172,6 +172,11 @@ public class MaterialProductDO extends BusinessBaseDO {
*/ */
@TableField("INVT_ALM_FLG") @TableField("INVT_ALM_FLG")
private Integer InventoryAlarmFlag; private Integer InventoryAlarmFlag;
/**
* 库存预警级别,safe-安全warn-警告danger
*/
@TableField("INVT_ALM_LVL")
private String InventoryAlarmLevel;
/** /**
* 库存预警区间,json格式配置 * 库存预警区间,json格式配置
*/ */

View File

@@ -25,6 +25,7 @@ public interface MaterialProductMapper extends BaseMapperX<MaterialProductDO> {
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialProductDO>() return selectPage(reqVO, new LambdaQueryWrapperX<MaterialProductDO>()
.eq(MaterialProductDO::getNodeType, DataTypeConstant.DATA_TYPE_DATA) .eq(MaterialProductDO::getNodeType, DataTypeConstant.DATA_TYPE_DATA)
.eqIfPresent(MaterialProductDO::getParentId, reqVO.getParentId()) .eqIfPresent(MaterialProductDO::getParentId, reqVO.getParentId())
.eqIfPresent(MaterialProductDO::getInventoryAlarmLevel, reqVO.getInventoryAlarmLevel())
.likeIfPresent(MaterialProductDO::getIdPath, reqVO.getIdPath()) .likeIfPresent(MaterialProductDO::getIdPath, reqVO.getIdPath())
.likeIfPresent(MaterialProductDO::getName, reqVO.getName()) .likeIfPresent(MaterialProductDO::getName, reqVO.getName())
.likeIfPresent(MaterialProductDO::getCode, reqVO.getCode()) .likeIfPresent(MaterialProductDO::getCode, reqVO.getCode())

View File

@@ -2,9 +2,19 @@ package com.zt.plat.module.qms.resource.material.enums;
/** /**
* 物料验收状态 * 物料验收状态
*
*/ */
public enum MaterialAcceptStatus { public enum MaterialAcceptStatus {
/**
* 已验收
*/
accepted, accepted,
/**
* 部分验收
*/
partAccepted, partAccepted,
/**
* 未验收
*/
notAccepted notAccepted
} }

View File

@@ -0,0 +1,20 @@
package com.zt.plat.module.qms.resource.material.enums;
/**
* 物料库存预警等级
*
*/
public enum MaterialInventoryAlarmLevel {
/**
* 安全
*/
safe,
/**
* 警告
*/
warn,
/**
* 危险
*/
danger
}

View File

@@ -1,6 +1,9 @@
package com.zt.plat.module.qms.resource.material.service; package com.zt.plat.module.qms.resource.material.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zt.plat.framework.common.exception.ServiceException; import com.zt.plat.framework.common.exception.ServiceException;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
@@ -13,6 +16,7 @@ import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductSav
import com.zt.plat.module.qms.resource.material.controller.vo.query.MaterialProductQueryVO; import com.zt.plat.module.qms.resource.material.controller.vo.query.MaterialProductQueryVO;
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialProductDO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialProductDO;
import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialProductMapper; import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialProductMapper;
import com.zt.plat.module.qms.resource.material.enums.MaterialInventoryAlarmLevel;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
@@ -41,9 +45,6 @@ public class MaterialProductServiceImpl implements MaterialProductService {
@Resource @Resource
private MaterialProductMapper materialProductMapper; private MaterialProductMapper materialProductMapper;
// @Autowired
// private MaterialBatchService materialBatchService;
@Autowired @Autowired
private MaterialInfomationService materialInfomationService; private MaterialInfomationService materialInfomationService;
@@ -332,12 +333,35 @@ public class MaterialProductServiceImpl implements MaterialProductService {
for (MaterialProductRespVO vo : voList) { for (MaterialProductRespVO vo : voList) {
Long val = stockQuantityMap.get(vo.getId()); Long val = stockQuantityMap.get(vo.getId());
vo.setInventoryQuantity(BigDecimal.valueOf(val == null ? 0L : val)); vo.setInventoryQuantity(BigDecimal.valueOf(val == null ? 0L : val));
vo.setInventoryAlarmLevel(getAlarmLevel(vo));
} }
} }
return new PageResult<>(voList, pageResult.getTotal()); return new PageResult<>(voList, pageResult.getTotal());
} }
private String getAlarmLevel(MaterialProductRespVO vo) {
String customConfig = vo.getCustomConfig();
String alarmLevel = null;
if (StrUtil.isNotEmpty(customConfig) && vo.getInventoryAlarmFlag() == 1) {
JSONObject alarmRange = JSONUtil.parseObj(customConfig).getJSONObject("alarmRange");
if (alarmRange != null) {
// BigDecimal[] safeRange = (BigDecimal[]) alarmRange.get(MaterialInventoryAlarmLevel.safe.name());
List<BigDecimal> dangerRange = alarmRange.getJSONArray(MaterialInventoryAlarmLevel.danger.name()).toList(BigDecimal.class);
List<BigDecimal> warnRange = alarmRange.getJSONArray(MaterialInventoryAlarmLevel.warn.name()).toList(BigDecimal.class);
BigDecimal inventoryQuantity = vo.getInventoryQuantity();
if (inventoryQuantity.compareTo(dangerRange.get(1)) <= 0) {
alarmLevel = MaterialInventoryAlarmLevel.danger.name();
} else if (inventoryQuantity.compareTo(warnRange.get(1)) <= 0) {
alarmLevel = MaterialInventoryAlarmLevel.warn.name();
} else {
alarmLevel = MaterialInventoryAlarmLevel.safe.name();
}
}
}
return alarmLevel;
}
@Override @Override
public List<MaterialProductDO> getMaterialProductsByLikeIdPath(Long pdtId) { public List<MaterialProductDO> getMaterialProductsByLikeIdPath(Long pdtId) {