diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index 6141690ac..404138c3f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -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 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())) { diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java index f92066b5a..af30f5168 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java @@ -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; + } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java index ccb2fe5b9..01012bf29 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java @@ -214,4 +214,7 @@ public class MaterialBaseInfoDO extends BaseVOEntity { @ApiModelProperty("规格型号") private String specificationModel; + + @ApiModelProperty("批次ID") + private Long batchId; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java index ede7dbf6c..dabe92a15 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java @@ -217,4 +217,7 @@ public class MaterialBaseInfoDTO extends BaseVOEntity { @ApiModelProperty("规格型号") private String specificationModel; + + @ApiModelProperty("批次ID") + private Long batchId; } diff --git a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml index b9023905a..586b35c51 100644 --- a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml @@ -113,11 +113,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bar_code like concat('%',#{barCode},'%') - - and material_classify_code = #{materialClassifyCode} + + + FIND_IN_SET(#{code}, material_classify_code) > 0 + - - and material_classify_name like concat('%', #{materialClassifyName}, '%') + + + material_classify_name like concat('%', #{name}, '%') + and material_type = #{materialType} @@ -186,6 +190,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" or instr(bar_code, #{compoundOrQuery}) > 0 ) + + + 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 + ) @@ -223,11 +235,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and b.bar_code = #{barCode} - - and b.material_classify_code = #{materialClassifyCode} + + + FIND_IN_SET(#{code}, b.material_classify_code) > 0 + - - and b.material_classify_name like concat('%', #{materialClassifyName}, '%') + + + b.material_classify_name like concat('%', #{name}, '%') + and b.material_type = #{materialType}