diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java index 381e0e756..618b19a15 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java @@ -8,7 +8,9 @@ import com.mhd.common.core.utils.OrderSequence; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.model.LoginUser; import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; import com.mhd.wms.domain.outOrderAbnormal.entity.OutOrderAbnormal; import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService; import com.mhd.wms.domain.outOrderAbnormal.repository.mapper.OutOrderAbnormalMapper; @@ -16,12 +18,15 @@ import com.mhd.wms.domain.outOrderAbnormal.repository.po.OutOrderAbnormalPO; import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO; import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO; import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; +import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService; import com.mhd.wms.domain.pickingMaterialDetail.repository.mapper.PickingMaterialDetailMapper; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.util.ArrayList; @@ -42,6 +47,10 @@ public class OutOrderAbnormalImpl extends ServiceImpl list = queryList(query); + if (CollectionUtils.isEmpty(list)) { + throw new ServiceException("出库异常单不存在"); + } + OutOrderAbnormalPO outOrderAbnormalPO = list.get(0); + fillMaterialDetails(outOrderAbnormalPO); return outOrderAbnormalPO; } + /** + * 按异常类型加载对应明细: + * 1-拣货异常 -> picking_material_detail + * 2-复核异常 -> out_material_detail + */ + private void fillMaterialDetails(OutOrderAbnormalPO po) { + if (po == null) { + return; + } + Integer type = po.getType(); + if (Integer.valueOf(1).equals(type)) { + if (StringUtils.hasText(po.getPickingOrderNumber())) { + PickingMaterialDetailDO detailDO = new PickingMaterialDetailDO(); + detailDO.setPickingOrderNumber(po.getPickingOrderNumber()); + po.setMaterialDetailList(pickingMaterialDetailService.queryList(detailDO)); + } + } else if (Integer.valueOf(2).equals(type)) { + if (StringUtils.hasText(po.getOutOrderNumber())) { + OutMaterialDetailDO detailDO = new OutMaterialDetailDO(); + detailDO.setOutOrderNumber(po.getOutOrderNumber()); + po.setMaterialDetailList(outMaterialDetailService.queryList(detailDO)); + } + } else { + // 兼容历史异常数据:两种都尝试 + if (StringUtils.hasText(po.getPickingOrderNumber())) { + PickingMaterialDetailDO detailDO = new PickingMaterialDetailDO(); + detailDO.setPickingOrderNumber(po.getPickingOrderNumber()); + po.setMaterialDetailList(pickingMaterialDetailService.queryList(detailDO)); + } + if (po.getMaterialDetailList() == null && StringUtils.hasText(po.getOutOrderNumber())) { + OutMaterialDetailDO detailDO = new OutMaterialDetailDO(); + detailDO.setOutOrderNumber(po.getOutOrderNumber()); + po.setMaterialDetailList(outMaterialDetailService.queryList(detailDO)); + } + } + } + /** * @description 生成异常记录 * @author ZhouGY diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/po/OutOrderAbnormalPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/po/OutOrderAbnormalPO.java index 6321169c9..6af3b0bab 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/po/OutOrderAbnormalPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/po/OutOrderAbnormalPO.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.List; /** @@ -112,6 +113,8 @@ public class OutOrderAbnormalPO extends BaseVOEntity { @Excel(name = "入库单类型名称") private String orderTypeName; + @ApiModelProperty("异常明细(type=1 返回拣货明细,type=2 返回复核明细)") + private List materialDetailList; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/po/PickingMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/po/PickingMaterialDetailPO.java index 0cdff26f1..da817617a 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/po/PickingMaterialDetailPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/po/PickingMaterialDetailPO.java @@ -55,6 +55,12 @@ public class PickingMaterialDetailPO extends BaseVOEntity { @Excel(name = "拣货单号") private String pickingOrderNumber; + @ApiModelProperty("入库单号") + private String inOrderNumber; + + @ApiModelProperty("LOT编码") + private String lotNumber; + @ApiModelProperty("物料基础信息id") @Excel(name = "物料基础信息id") private Long materialBaseInfoId; diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/service/StockInTaskOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/service/StockInTaskOrderDomainService.java index 33bb8a35d..285605a62 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/service/StockInTaskOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/service/StockInTaskOrderDomainService.java @@ -15,6 +15,8 @@ import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMater import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.util.List; @@ -78,12 +80,35 @@ public class StockInTaskOrderDomainService { public StockInTaskOrderPO getInfo(Long inTaskOrderId) { StockInTaskOrderPO stockInTaskOrderPO = stockInTaskOrderService.getInfo(inTaskOrderId); - if (stockInTaskOrderPO.getType() == 1){ - //根据收货单号查询 - stockInTaskOrderPO.setTaskReceiptMaterialDetailList(getReceiptInfo(stockInTaskOrderPO.getTaskNumber())); - }else { - //根据上架单号查询 - stockInTaskOrderPO.setTaskShelfMaterialDetailList(getShelfInfo(stockInTaskOrderPO.getTaskNumber())); + if (stockInTaskOrderPO == null) { + return null; + } + if (Integer.valueOf(1).equals(stockInTaskOrderPO.getType())){ + // 收货作业:优先按收货单号查询,查不到再回退作业单号 + List receiptDetails = getReceiptInfo(stockInTaskOrderPO.getReceiptOrderNumber()); + if (CollectionUtils.isEmpty(receiptDetails)) { + receiptDetails = getReceiptInfo(stockInTaskOrderPO.getTaskNumber()); + } + stockInTaskOrderPO.setTaskReceiptMaterialDetailList(receiptDetails); + } else if (Integer.valueOf(2).equals(stockInTaskOrderPO.getType())) { + // 上架作业:优先按上架单号查询,查不到再回退作业单号 + List shelfDetails = getShelfInfo(stockInTaskOrderPO.getShelfOrderNumber()); + if (CollectionUtils.isEmpty(shelfDetails)) { + shelfDetails = getShelfInfo(stockInTaskOrderPO.getTaskNumber()); + } + stockInTaskOrderPO.setTaskShelfMaterialDetailList(shelfDetails); + } else { + // 兼容历史数据:无类型时按两个方向各尝试一次 + List receiptDetails = getReceiptInfo(stockInTaskOrderPO.getReceiptOrderNumber()); + if (CollectionUtils.isEmpty(receiptDetails)) { + receiptDetails = getReceiptInfo(stockInTaskOrderPO.getTaskNumber()); + } + stockInTaskOrderPO.setTaskReceiptMaterialDetailList(receiptDetails); + List shelfDetails = getShelfInfo(stockInTaskOrderPO.getShelfOrderNumber()); + if (CollectionUtils.isEmpty(shelfDetails)) { + shelfDetails = getShelfInfo(stockInTaskOrderPO.getTaskNumber()); + } + stockInTaskOrderPO.setTaskShelfMaterialDetailList(shelfDetails); } return stockInTaskOrderPO; } @@ -93,6 +118,9 @@ public class StockInTaskOrderDomainService { * 获取入库收货作业单详细信息 */ public List getReceiptInfo(String receiptOrderNumber) { + if (!StringUtils.hasText(receiptOrderNumber)) { + return java.util.Collections.emptyList(); + } //根据收货单号查询 TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO = new TaskReceiptMaterialDetailDO(); taskReceiptMaterialDetailDO.setTaskNumber(receiptOrderNumber); @@ -104,6 +132,9 @@ public class StockInTaskOrderDomainService { * 获取入库上架作业单详细信息 */ public List getShelfInfo(String shelfOrderNumber) { + if (!StringUtils.hasText(shelfOrderNumber)) { + return java.util.Collections.emptyList(); + } TaskShelfMaterialDetailDO taskShelfMaterialDetailDO = new TaskShelfMaterialDetailDO(); //根据上架单号查询 taskShelfMaterialDetailDO.setTaskNumber(shelfOrderNumber); diff --git a/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml b/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml index 05f1eb324..c40d0fb1d 100644 --- a/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml +++ b/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml @@ -37,6 +37,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.out_order_abnormal_id, a.organization_id, a.organization_name, a.top_organization_id, a.abnormal_number, a.picking_order_number, a.out_task_order_number, a.type, a.actual_quantity, a.quantity, a.abnormal_actual_quantity, a.abnormal_type, a.abnormal_reason, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + and a.out_order_abnormal_id = #{outOrderAbnormalId} + and a.organization_id = #{organizationId} diff --git a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml index fcdef9b74..8d5cd2a67 100644 --- a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml @@ -11,6 +11,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -74,7 +76,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.BATCH_REF_NO, a.SHEET_REF_NO, a.BOX_PALLET_NO, a.EXT_ATTR_1, a.EXT_ATTR_2, a.PRODUCTION_DATE, a.EXPIRY_DATE, a.INVENTORY_DATE, a.EXT_ATTR_3, a.EXT_ATTR_4, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, - a.total_area, a.total_gross_weight, a.total_net_weight, a.total_volume, a.out_unique_id + a.total_area, a.total_gross_weight, a.total_net_weight, a.total_volume, a.out_unique_id, + omd.in_order_number, omd.lot_no as lot_number @@ -184,6 +187,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select from picking_material_detail a + left join out_material_detail omd on a.out_unique_id = omd.unique_id and omd.del_flag = 1 diff --git a/mhd_wms/src/main/resources/mapper/stockInTaskOrder/StockInTaskOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockInTaskOrder/StockInTaskOrderMapper.xml index f91a15f0e..223c6fd88 100644 --- a/mhd_wms/src/main/resources/mapper/stockInTaskOrder/StockInTaskOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockInTaskOrder/StockInTaskOrderMapper.xml @@ -93,6 +93,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - order by create_time desc + order by a.operators_end_time desc, a.create_time desc \ No newline at end of file