PDA复核页面查询

This commit is contained in:
秦鸿展
2026-03-14 20:38:33 +08:00
parent 1250e24e71
commit 86700813ae
5 changed files with 63 additions and 1 deletions
@@ -36,6 +36,7 @@ import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO;
import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO;
import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO;
import com.mhd.wms.domain.outMaterialDetail.service.OutMaterialDetailDomainService;
import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO;
@@ -80,6 +81,8 @@ public class StockOutOrderApplicationService {
private IStockOutOrderService stockOutOrderService;
@Autowired
private IOutMaterialDetailService outMaterialDetailService;
@Autowired
private IPickingMaterialDetailService pickingMaterialDetailService;
/**
@@ -151,7 +154,15 @@ public class StockOutOrderApplicationService {
BigDecimal reduce = materialDetailList.stream().map(OutMaterialDetailPO::getOutboundQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
stockOutOrderPO.setTotalOutboundQuantity(reduce);
stockOutOrderPO.setAllocationQuantity(stockOutOrderPO1.getAllocationQuantity());
stockOutOrderPO.setPickingQuantity(stockOutOrderPO1.getPickingQuantity());
// PDA复核物料总数量:使用实际下发时的拣货完成数量(picking_material_detail),而非计划数量
String outOrderNumber = stockOutOrderPO.getOutOrderNumber();
BigDecimal actualPickingQty = pickingMaterialDetailService.sumPickingQuantityByOutOrderNumber(outOrderNumber);
stockOutOrderPO.setPickingQuantity(actualPickingQty.compareTo(BigDecimal.ZERO) > 0 ? actualPickingQty : stockOutOrderPO1.getPickingQuantity());
// 物料种类:按有拣货数量的明细统计
Integer materialTypeCount = pickingMaterialDetailService.countMaterialTypesByOutOrderNumber(outOrderNumber);
if (materialTypeCount != null && materialTypeCount > 0) {
stockOutOrderPO.setMaterialQuantity(materialTypeCount);
}
stockOutOrderPO.setCheckQuantity(stockOutOrderPO1.getCheckQuantity());
}
return stockOutOrderPOS;
@@ -9,6 +9,7 @@ import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO;
import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -26,6 +27,16 @@ public interface IPickingMaterialDetailService extends IService<PickingMaterialD
public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(Long outUniqueId);
/**
* 按出库单号汇总拣货完成数量(实际下发时的收货数量)
*/
BigDecimal sumPickingQuantityByOutOrderNumber(String outOrderNumber);
/**
* 按出库单号统计有拣货数量的物料种类数
*/
Integer countMaterialTypesByOutOrderNumber(String outOrderNumber);
/**
* 新增拣货单物料明细
*/
@@ -7,6 +7,7 @@ import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialD
import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDOByUpdate;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -24,6 +25,16 @@ public interface PickingMaterialDetailMapper extends BaseMapper<PickingMaterialD
public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(@Param("outUniqueId") Long outUniqueId);
/**
* 按出库单号汇总拣货完成数量(实际下发/拣货完成的数量)
*/
BigDecimal sumPickingQuantityByOutOrderNumber(@Param("outOrderNumber") String outOrderNumber);
/**
* 按出库单号统计有拣货数量的物料种类数
*/
Integer countMaterialTypesByOutOrderNumber(@Param("outOrderNumber") String outOrderNumber);
/**
* @description 根据拣货单增加拣货数量
* @author ZhouGY
@@ -67,6 +67,18 @@ public class PickingMaterialDetailImpl extends ServiceImpl<PickingMaterialDetail
return pickingMaterialDetailMapper.queryTotalsByOutNumberAndBaseId(outUniqueId);
}
@Override
public BigDecimal sumPickingQuantityByOutOrderNumber(String outOrderNumber) {
BigDecimal sum = pickingMaterialDetailMapper.sumPickingQuantityByOutOrderNumber(outOrderNumber);
return sum != null ? sum : BigDecimal.ZERO;
}
@Override
public Integer countMaterialTypesByOutOrderNumber(String outOrderNumber) {
Integer count = pickingMaterialDetailMapper.countMaterialTypesByOutOrderNumber(outOrderNumber);
return count != null ? count : 0;
}
/**
* 新增拣货单物料明细
*/
@@ -203,6 +203,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND b.DEL_FLAG = 1
</select>
<select id="sumPickingQuantityByOutOrderNumber" resultType="java.math.BigDecimal">
SELECT IFNULL(SUM(pmd.PICKING_QUANTITY), 0)
FROM picking_material_detail pmd
INNER JOIN out_material_detail omd ON pmd.OUT_UNIQUE_ID = omd.UNIQUE_ID AND omd.DEL_FLAG = 1
WHERE omd.OUT_ORDER_NUMBER = #{outOrderNumber}
AND pmd.DEL_FLAG = 1
</select>
<select id="countMaterialTypesByOutOrderNumber" resultType="java.lang.Integer">
SELECT COUNT(DISTINCT pmd.MATERIAL_BASE_INFO_ID)
FROM picking_material_detail pmd
INNER JOIN out_material_detail omd ON pmd.OUT_UNIQUE_ID = omd.UNIQUE_ID AND omd.DEL_FLAG = 1
WHERE omd.OUT_ORDER_NUMBER = #{outOrderNumber}
AND pmd.DEL_FLAG = 1
AND IFNULL(pmd.PICKING_QUANTITY, 0) > 0
</select>
<update id="addQuantity" parameterType="com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDOByUpdate">
UPDATE picking_material_detail
<set>