WMS物料管理高级筛选查询

This commit is contained in:
秦鸿展
2026-03-05 14:41:44 +08:00
parent 0c70264d2b
commit f6b20441bc
5 changed files with 96 additions and 8 deletions
@@ -1,7 +1,12 @@
package com.mhd.wms.application.service.materialBaseInfo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.domain.BatchFeignPO;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.domain.materialBarCode.service.MaterialBarCodeDomainService;
import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO;
@@ -14,6 +19,8 @@ import com.mhd.wms.domain.materialGoodsRule.repository.mapper.MaterialGoodsRuleM
import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO;
import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO;
import com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService;
import com.mhd.wms.domain.materialInventoryWarning.repository.facade.IMaterialInventoryWarningService;
import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO;
import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService;
import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO;
import com.mhd.wms.domain.materialWarehouseControl.service.MaterialWarehouseControlDomainService;
@@ -47,12 +54,18 @@ public class MaterialBaseInfoApplicationService {
private MaterialWarehouseControlDomainService materialWarehouseControlDomainService;
@Autowired
private MaterialInventoryWarningDomainService materialInventoryWarningDomainService;
@Autowired
private IMaterialInventoryWarningService materialInventoryWarningService;
@Autowired
private MaterialBarCodeDomainService materialBarCodeDomainService;
@Autowired
private MaterialGoodsRuleMapper materialGoodsRuleMapper;
@Autowired
private SystemServiceFeign systemServiceFeign;
/**
* 分页查询物料基础信息列表
*/
@@ -116,7 +129,40 @@ public class MaterialBaseInfoApplicationService {
if (materialGoodsRules != null){
MaterialGoodsRulePO materialGoodsRulePO = new MaterialGoodsRulePO();
BeanUtils.copyProperties(materialGoodsRules,materialGoodsRulePO);
// 如果批次ID不为空,查询批次信息并填充批次名称和编码
if (materialGoodsRulePO.getBatchId() != null) {
try {
AjaxResult ajaxResult = systemServiceFeign.getBatchInfoByBatchId(materialGoodsRulePO.getBatchId());
if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) {
BatchFeignPO batchFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), BatchFeignPO.class);
if (batchFeignPO != null) {
materialGoodsRulePO.setBatchCode(batchFeignPO.getBatchCode());
materialGoodsRulePO.setBatchName(batchFeignPO.getBatchName());
}
}
} catch (Exception e) {
log.warn("获取批次信息失败,批次ID:{},错误:{}", materialGoodsRulePO.getBatchId(), e.getMessage());
}
}
materialBaseInfoPO.setMaterialGoodsRule(materialGoodsRulePO);
// 将批次信息填充到根级别,方便前端显示
if (materialGoodsRulePO.getBatchId() != null) {
materialBaseInfoPO.setBatchId(materialGoodsRulePO.getBatchId());
materialBaseInfoPO.setBatchCode(materialGoodsRulePO.getBatchCode());
materialBaseInfoPO.setBatchName(materialGoodsRulePO.getBatchName());
}
}
// 填充库存预警信息
List<MaterialInventoryWarningPO> materialInventoryWarningList = materialInventoryWarningService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId());
materialBaseInfoPO.setMaterialInventoryWarningList(materialInventoryWarningList);
// 统计库存预警和临期预警数量
if (!CollectionUtils.isEmpty(materialInventoryWarningList)) {
materialBaseInfoPO.setInventoryWarningCount(materialInventoryWarningList.size());
// 临期预警需要根据业务逻辑计算,这里先设置为0
materialBaseInfoPO.setExpirationWarningCount(0);
} else {
materialBaseInfoPO.setInventoryWarningCount(0);
materialBaseInfoPO.setExpirationWarningCount(0);
}
// 将物料分类的List转换为逗号分隔的字符串,用于导出
if (!CollectionUtils.isEmpty(materialBaseInfoPO.getMaterialClassifyCode())) {
@@ -223,4 +223,24 @@ public class MaterialBaseInfoPO extends BaseVOEntity {
@ApiModelProperty("规格型号")
private String specificationModel;
@ApiModelProperty("批次ID")
@Excel(name = "批次ID")
private Long batchId;
@ApiModelProperty("批次编码")
@Excel(name = "批次编码")
private String batchCode;
@ApiModelProperty("批次名称")
@Excel(name = "批次名称")
private String batchName;
@ApiModelProperty("库存预警数量")
@Excel(name = "库存预警数量")
private Integer inventoryWarningCount;
@ApiModelProperty("临期预警数量")
@Excel(name = "临期预警数量")
private Integer expirationWarningCount;
}
@@ -214,4 +214,7 @@ public class MaterialBaseInfoDO extends BaseVOEntity {
@ApiModelProperty("规格型号")
private String specificationModel;
@ApiModelProperty("批次ID")
private Long batchId;
}
@@ -217,4 +217,7 @@ public class MaterialBaseInfoDTO extends BaseVOEntity {
@ApiModelProperty("规格型号")
private String specificationModel;
@ApiModelProperty("批次ID")
private Long batchId;
}
@@ -113,11 +113,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="barCode != null and barCode != ''">
and bar_code like concat('%',#{barCode},'%')
</if>
<if test="materialClassifyCode != null and materialClassifyCode != ''">
and material_classify_code = #{materialClassifyCode}
<if test="materialClassifyCode != null and materialClassifyCode.size() > 0">
<foreach collection="materialClassifyCode" item="code" open="and (" separator="or" close=")">
FIND_IN_SET(#{code}, material_classify_code) > 0
</foreach>
</if>
<if test="materialClassifyName != null and materialClassifyName != ''">
and material_classify_name like concat('%', #{materialClassifyName}, '%')
<if test="materialClassifyName != null and materialClassifyName.size() > 0">
<foreach collection="materialClassifyName" item="name" open="and (" separator="or" close=")">
material_classify_name like concat('%', #{name}, '%')
</foreach>
</if>
<if test="materialType != null and materialType != ''">
and material_type = #{materialType}
@@ -186,6 +190,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
or
instr(bar_code, #{compoundOrQuery}) > 0
)
</if>
<if test="batchId != null">
and exists (
select 1 from material_goods_rule mgr
where mgr.material_base_info_id = material_base_info.material_base_info_id
and mgr.batch_id = #{batchId}
and mgr.del_flag = 1
)
</if>
<!-- 传 1:只查公共 , 2:只查自己的 ,3:公共的和自己的 -->
<choose>
@@ -223,11 +235,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="barCode != null and barCode != ''">
and b.bar_code = #{barCode}
</if>
<if test="materialClassifyCode != null and materialClassifyCode != ''">
and b.material_classify_code = #{materialClassifyCode}
<if test="materialClassifyCode != null and materialClassifyCode.size() > 0">
<foreach collection="materialClassifyCode" item="code" open="and (" separator="or" close=")">
FIND_IN_SET(#{code}, b.material_classify_code) > 0
</foreach>
</if>
<if test="materialClassifyName != null and materialClassifyName != ''">
and b.material_classify_name like concat('%', #{materialClassifyName}, '%')
<if test="materialClassifyName != null and materialClassifyName.size() > 0">
<foreach collection="materialClassifyName" item="name" open="and (" separator="or" close=")">
b.material_classify_name like concat('%', #{name}, '%')
</foreach>
</if>
<if test="materialType != null and materialType != ''">
and b.material_type = #{materialType}