diff --git a/src/main/java/com/xujie/sys/modules/deliverySchedule/service/impl/DeliveryScheduleServiceImpl.java b/src/main/java/com/xujie/sys/modules/deliverySchedule/service/impl/DeliveryScheduleServiceImpl.java index e06fa62..807d3a1 100644 --- a/src/main/java/com/xujie/sys/modules/deliverySchedule/service/impl/DeliveryScheduleServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/deliverySchedule/service/impl/DeliveryScheduleServiceImpl.java @@ -9,6 +9,10 @@ import com.xujie.sys.modules.deliverySchedule.service.DeliveryScheduleService; import com.xujie.sys.modules.deliverySchedule.mapper.DeliveryScheduleMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** * @author Jia @@ -34,13 +38,29 @@ public class DeliveryScheduleServiceImpl extends ServiceImpl pendingQtyList = new ArrayList<>(); + for (DeliveryScheduleData deliveryScheduleData : data.getAutoReservationDataList()) { - double pendingQty = deliveryScheduleData.getQty() - deliveryScheduleData.getDelNotifyQty(); - if (allotmentQty <= 0){ - break; + double pendingQty = 0.0; + if (deliveryScheduleData.getDelNotifyQty() == null){ + pendingQty = deliveryScheduleData.getQty(); + }else { + pendingQty = deliveryScheduleData.getQty() - deliveryScheduleData.getDelNotifyQty(); } + pendingQtyList.add(pendingQty); + // 如果是最后一个循环 + if (data.getAutoReservationDataList().indexOf(deliveryScheduleData) == data.getAutoReservationDataList().size() - 1){ + double sum = pendingQtyList.stream().mapToDouble(Double::doubleValue).sum(); + if (sum <= 0){ + throw new RuntimeException("请检查订单是否已经发货!"); + } + if (pendingQty < allotmentQty) { + throw new RuntimeException("总待发货数量超过总订单数量,无法自动预留!"); + } + } if (pendingQty <= allotmentQty){ deliveryScheduleData.setDeliveryQty(pendingQty); baseMapper.updateSupplierDeliveryScheduleDeliveryQty(deliveryScheduleData); diff --git a/src/main/resources/mapper/deliverySchedule/deliveryScheduleMapper.xml b/src/main/resources/mapper/deliverySchedule/deliveryScheduleMapper.xml index ad85f32..0131b53 100644 --- a/src/main/resources/mapper/deliverySchedule/deliveryScheduleMapper.xml +++ b/src/main/resources/mapper/deliverySchedule/deliveryScheduleMapper.xml @@ -28,10 +28,10 @@ POD.OrderRef2, SOR.OperationDesc, POD.QTY, - POD.DelNotifyQty, - POD.QTY - POD.DelNotifyQty AS PendingQty, + ISNULL(POD.DelNotifyQty,0) AS DelNotifyQty, + POD.QTY - ISNULL(POD.DelNotifyQty,0) AS PendingQty, POD.BatchNo, - COALESCE(POD.DeliveryQty, POD.QTY - POD.DelNotifyQty) AS DeliveryQty, + COALESCE(POD.DeliveryQty, POD.QTY - ISNULL(POD.DelNotifyQty,0)) AS DeliveryQty, CASE WHEN POD.OrderRefType = '生产订单' THEN SO.PlanStartDate WHEN POD.OrderRefType IN ('外协订单', '外协订单-产品') THEN OWO.PlanStartDate @@ -61,8 +61,11 @@ OR (POD.OrderRefType IN ('外协订单', '外协订单-产品') AND OWO.PlanStartDate IS NOT NULL) OR (POD.OrderRefType = '生产订单-工序外协' AND SOR.PlanStartTime IS NOT NULL) ) - AND POD.status NOT IN ('已取消', '已入库') + AND POD.status IN ('已下达', '部分入库','部分接收') AND POD.site = #{query.site} + + AND POD.status = #{query.Status} + AND POD.OrderNo like #{query.OrderNo}