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

This commit is contained in:
zhaoqing
2026-05-07 17:44:14 +08:00
3 changed files with 24 additions and 6 deletions
@@ -106,7 +106,8 @@ public class BatchDetailApplicationService {
throw new ServiceException("获取物料规则信息失败");
}
MaterialGoodsRuleFeign materialGoodsRuleFeign = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), MaterialGoodsRuleFeign.class);
if (ObjectUtil.isNull(materialGoodsRuleFeign)){
// 无商品规则或未绑定批次模板时,不返回任何批次属性(避免 batchId 空导致查全表)
if (ObjectUtil.isNull(materialGoodsRuleFeign) || materialGoodsRuleFeign.getBatchId() == null) {
return new ArrayList<>();
}
return getBatchDetailListByBatchId(materialGoodsRuleFeign.getBatchId());
@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 批次管理详情
@@ -66,6 +67,10 @@ public class BatchDetailDomainService {
* 获取批次管理详情详细信息
*/
public List<BatchDetailPO> getBatchDetailListByBatchId(Long batchId) {
// batchId 为空时不能查列表:XML 中 batchId 为 null 不拼条件,会返回全部批次属性
if (batchId == null) {
return new ArrayList<>();
}
BatchDetailDO batchDetailDO = new BatchDetailDO();
batchDetailDO.setBatchId(batchId);
return batchDetailService.queryList(batchDetailDO);
@@ -24,9 +24,11 @@ import com.mhd.wms.domain.pickingMaterialDetail.service.PickingMaterialDetailDom
import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO;
import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO;
import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService;
import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService;
import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService;
import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO;
import com.mhd.wms.util.ReceiptBatchDetailFilter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -58,6 +60,8 @@ public class PickingOrderApplicationService {
@Autowired
private SystemServiceFeign systemServiceFeign;
@Autowired
private IMaterialGoodsRuleService materialGoodsRuleService;
@Autowired
private IOutMaterialDetailService outMaterialDetailService;
@@ -212,11 +216,19 @@ public class PickingOrderApplicationService {
if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) {
List<BatchDetailFeignPO> batchDetailFeignPOList = JSON.parseArray(
JSONObject.toJSONString(ajaxResult.get("data")), BatchDetailFeignPO.class);
if (!CollectionUtils.isEmpty(batchDetailFeignPOList)) {
// 过滤isDisplay=1的属性
List<BatchDetailFeignPO> filteredList = batchDetailFeignPOList.stream()
.filter(batchDetail -> batchDetail.getIsDisplay() != null && batchDetail.getIsDisplay() == 1)
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(batchDetailFeignPOList)) {
continue;
}
// 物料未在商品规则中绑定批次模板时不返回批次属性(与收货单组装逻辑一致)
List<BatchDetailFeignPO> alignedToRule = ReceiptBatchDetailFilter.filterByMaterialGoodsRule(
materialBaseInfoId, batchDetailFeignPOList, materialGoodsRuleService);
if (CollectionUtils.isEmpty(alignedToRule)) {
continue;
}
List<BatchDetailFeignPO> filteredList = alignedToRule.stream()
.filter(batchDetail -> batchDetail.getIsDisplay() != null && batchDetail.getIsDisplay() == 1)
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(filteredList)) {
batchDetailMap.put(materialBaseInfoId, filteredList);
}
}