出库交接详情,物料明细根据复核单生成;
This commit is contained in:
+30
-10
@@ -21,6 +21,7 @@ import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
|
||||
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
|
||||
import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
|
||||
import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService;
|
||||
import com.mhd.wms.domain.pickingMaterialDetail.repository.mapper.PickingMaterialDetailMapper;
|
||||
import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService;
|
||||
import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO;
|
||||
import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO;
|
||||
@@ -42,7 +43,9 @@ import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 下发任务Service业务层处理
|
||||
@@ -79,6 +82,9 @@ public class DeliveTaskImpl extends ServiceImpl<DeliveTaskMapper, DeliveTask> im
|
||||
@Autowired
|
||||
private IOutMaterialDetailService outMaterialDetailService;
|
||||
|
||||
@Autowired
|
||||
private PickingMaterialDetailMapper pickingMaterialDetailMapper;
|
||||
|
||||
/**
|
||||
* 查询下发任务列表
|
||||
*/
|
||||
@@ -128,16 +134,7 @@ public class DeliveTaskImpl extends ServiceImpl<DeliveTaskMapper, DeliveTask> im
|
||||
BigDecimal pickingQuantity = pickingOrderPOS.getPickingQuantity();//已拣货数量
|
||||
deliveTaskPO.setPickingQuantity(pickingQuantity);
|
||||
}
|
||||
// 物料种类数:从出库明细按料号去重统计
|
||||
long materialQuantity = outMaterialDetailService.list(new LambdaQueryWrapper<OutMaterialDetail>()
|
||||
.eq(OutMaterialDetail::getOutOrderNumber, orderNumber))
|
||||
.stream()
|
||||
.map(d -> d.getMaterialCode() != null && !d.getMaterialCode().isEmpty() ? d.getMaterialCode() : d.getMaterialNo())
|
||||
.filter(c -> c != null && !c.isEmpty())
|
||||
.distinct()
|
||||
.count();
|
||||
deliveTaskPO.setMaterialQuantity((int) materialQuantity);
|
||||
// 已复核数量、出库单信息:直接从出库单获取(getCheckInfo仅支持复核中状态会抛异常)
|
||||
// 已复核数量、出库单信息:直接从出库单获取(需在物料统计前获取,用于判断是否需要复核)
|
||||
StockOutOrder stockOutOrder = stockOutOrderService.getOne(new LambdaQueryWrapper<StockOutOrder>()
|
||||
.eq(StockOutOrder::getOutOrderNumber, orderNumber));
|
||||
if (stockOutOrder != null) {
|
||||
@@ -147,6 +144,29 @@ public class DeliveTaskImpl extends ServiceImpl<DeliveTaskMapper, DeliveTask> im
|
||||
deliveTaskPO.setCarrier(stockOutOrder.getCarrier());
|
||||
deliveTaskPO.setCheckQuantity(stockOutOrder.getCheckQuantity());//已复核数量
|
||||
}
|
||||
// 物料种类数:从出库明细按料号去重统计,pickingQuantity 为 0 的过滤掉(与交接详情一致)
|
||||
List<OutMaterialDetail> omdList = outMaterialDetailService.list(new LambdaQueryWrapper<OutMaterialDetail>()
|
||||
.eq(OutMaterialDetail::getOutOrderNumber, orderNumber)
|
||||
.eq(OutMaterialDetail::getDelFlag, 1));
|
||||
Set<Long> outUniqueIdsWithPicking = null;
|
||||
if (stockOutOrder != null && Integer.valueOf(1).equals(stockOutOrder.getReview())) {
|
||||
List<Long> ids = pickingMaterialDetailMapper.selectOutUniqueIdsWithPickingByOutOrderNumber(orderNumber);
|
||||
outUniqueIdsWithPicking = ids != null ? new HashSet<>(ids) : new HashSet<>();
|
||||
}
|
||||
final Set<Long> pickingIds = outUniqueIdsWithPicking;
|
||||
long materialQuantity = omdList.stream()
|
||||
.filter(d -> {
|
||||
if (pickingIds != null) {
|
||||
return pickingIds.contains(d.getUniqueId());
|
||||
}
|
||||
BigDecimal pq = d.getPickingQuantity();
|
||||
return pq != null && pq.compareTo(BigDecimal.ZERO) > 0;
|
||||
})
|
||||
.map(d -> d.getMaterialCode() != null && !d.getMaterialCode().isEmpty() ? d.getMaterialCode() : d.getMaterialNo())
|
||||
.filter(c -> c != null && !c.isEmpty())
|
||||
.distinct()
|
||||
.count();
|
||||
deliveTaskPO.setMaterialQuantity((int) materialQuantity);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-1
@@ -22,6 +22,7 @@ import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryM
|
||||
import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
|
||||
import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper;
|
||||
import com.mhd.wms.domain.pickingMaterialDetail.repository.mapper.PickingMaterialDetailMapper;
|
||||
import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO;
|
||||
import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.po.TaskHandoverMaterialDetailPO;
|
||||
import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO;
|
||||
import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO;
|
||||
@@ -130,6 +131,7 @@ public class HandoverTaskOrderDomainService {
|
||||
List<TaskHandoverMaterialDetailPO> materialDetailList = new ArrayList<>();
|
||||
for (OutMaterialDetail omd : outMaterialDetailList) {
|
||||
BigDecimal handoverQuantity;
|
||||
BigDecimal pickQty;
|
||||
if (Integer.valueOf(1).equals(review)) {
|
||||
// 仅包含复核单上的明细(有拣货)且已复核的
|
||||
if (outUniqueIdsWithPicking != null && !outUniqueIdsWithPicking.contains(omd.getUniqueId())) {
|
||||
@@ -138,12 +140,19 @@ public class HandoverTaskOrderDomainService {
|
||||
if (omd.getCheckQuantity() == null || omd.getCheckQuantity().compareTo(BigDecimal.ZERO) <= 0) {
|
||||
continue;
|
||||
}
|
||||
// pickingQuantity 为 0 的过滤掉:从 picking_material_detail 取拣货数量
|
||||
PickingMaterialDetailPO pickingSummary = pickingMaterialDetailMapper.queryTotalsByOutNumberAndBaseId(omd.getUniqueId());
|
||||
pickQty = (pickingSummary != null && pickingSummary.getPickingQuantity() != null) ? pickingSummary.getPickingQuantity() : BigDecimal.ZERO;
|
||||
if (pickQty.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
continue;
|
||||
}
|
||||
handoverQuantity = omd.getCheckQuantity();
|
||||
} else {
|
||||
BigDecimal qty = omd.getPickingQuantity() != null ? omd.getPickingQuantity() : omd.getQuantity();
|
||||
if (qty == null || qty.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
continue;
|
||||
}
|
||||
pickQty = qty;
|
||||
handoverQuantity = qty;
|
||||
}
|
||||
TaskHandoverMaterialDetailPO detail = new TaskHandoverMaterialDetailPO();
|
||||
@@ -160,7 +169,7 @@ public class HandoverTaskOrderDomainService {
|
||||
detail.setWeightLimit(omd.getWeightLimit());
|
||||
detail.setVolumeLimit(omd.getVolumeLimit());
|
||||
detail.setQuantity(omd.getQuantity());
|
||||
detail.setPickingQuantity(omd.getPickingQuantity());
|
||||
detail.setPickingQuantity(pickQty);
|
||||
detail.setCheckQuantity(handoverQuantity);
|
||||
detail.setPackId(omd.getPackId());
|
||||
detail.setPackCode(omd.getPackCode());
|
||||
|
||||
Reference in New Issue
Block a user