Commit 09f3785af95718e511590e145ec4a3e19c756199

Authored by yeqianyong
1 parent 7b3a203e

楚江erp:发货单录入实发数逻辑调整

@@ -28,6 +28,7 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService; @@ -28,6 +28,7 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService;
28 import com.lframework.xingyun.sc.entity.ContractDistributorStandard; 28 import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
29 import com.lframework.xingyun.sc.entity.CustomerCredit; 29 import com.lframework.xingyun.sc.entity.CustomerCredit;
30 import com.lframework.xingyun.sc.entity.PurchaseOrderInfo; 30 import com.lframework.xingyun.sc.entity.PurchaseOrderInfo;
  31 +import com.lframework.xingyun.sc.entity.PurchaseOrderLine;
31 import com.lframework.xingyun.sc.enums.OrderSpecChangeStatus; 32 import com.lframework.xingyun.sc.enums.OrderSpecChangeStatus;
32 import com.lframework.xingyun.sc.mappers.PurchaseOrderInfoMapper; 33 import com.lframework.xingyun.sc.mappers.PurchaseOrderInfoMapper;
33 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; 34 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
@@ -397,6 +398,42 @@ public class PurchaseOrderInfoServiceImpl extends BaseMpServiceImpl<PurchaseOrde @@ -397,6 +398,42 @@ public class PurchaseOrderInfoServiceImpl extends BaseMpServiceImpl<PurchaseOrde
397 } 398 }
398 399
399 @Override 400 @Override
  401 + public void updateStatus(List<String> ids) {
  402 + if (CollectionUtils.isEmpty(ids)) {
  403 + return;
  404 + }
  405 + LambdaUpdateWrapper<PurchaseOrderInfo> updateWrapper = Wrappers.lambdaUpdate(PurchaseOrderInfo.class);
  406 + // 获取所有订货单下未发货的规格数据
  407 + String status = "SHIPPED";
  408 + List<PurchaseOrderLine> orderLineList = purchaseOrderLineService.listByOrderIds(ids, false);
  409 + if (CollectionUtils.isNotEmpty(orderLineList)) {
  410 + // 按照订货单分组
  411 + Map<String, List<PurchaseOrderLine>> lineMap = new HashMap<>();
  412 + for (PurchaseOrderLine purchaseOrderLine : orderLineList) {
  413 + String orderId = purchaseOrderLine.getPurchaseOrderId();
  414 + List<PurchaseOrderLine> list = lineMap.computeIfAbsent(orderId, k -> new ArrayList<>());
  415 + list.add(purchaseOrderLine);
  416 + }
  417 + for (String orderId : ids) {
  418 + List<PurchaseOrderLine> orderLines = lineMap.get(orderId);
  419 + if (CollectionUtils.isNotEmpty(orderLines)) {
  420 + status = "TRANSIT";
  421 + } else {
  422 + status = "SHIPPED";
  423 + }
  424 + updateWrapper.clear();
  425 + updateWrapper.set(PurchaseOrderInfo::getStatus, status)
  426 + .eq(PurchaseOrderInfo::getId, orderId);
  427 + getBaseMapper().update(updateWrapper);
  428 + }
  429 + } else {
  430 + updateWrapper.set(PurchaseOrderInfo::getStatus, status)
  431 + .in(PurchaseOrderInfo::getId, ids);
  432 + getBaseMapper().update(updateWrapper);
  433 + }
  434 + }
  435 +
  436 + @Override
400 @Transactional(rollbackFor = Exception.class) 437 @Transactional(rollbackFor = Exception.class)
401 public void updateStatus(List<String> ids, String status) { 438 public void updateStatus(List<String> ids, String status) {
402 if (CollectionUtils.isEmpty(ids) || StringUtils.isBlank(status)) { 439 if (CollectionUtils.isEmpty(ids) || StringUtils.isBlank(status)) {
@@ -339,6 +339,18 @@ public class PurchaseOrderLineServiceImpl extends BaseMpServiceImpl<PurchaseOrde @@ -339,6 +339,18 @@ public class PurchaseOrderLineServiceImpl extends BaseMpServiceImpl<PurchaseOrde
339 } 339 }
340 340
341 @Override 341 @Override
  342 + public void dispatched(List<String> ids) {
  343 + if (CollectionUtils.isEmpty(ids)) {
  344 + return;
  345 + }
  346 + // 已发货
  347 + LambdaUpdateWrapper<PurchaseOrderLine> updateWrapper = Wrappers.lambdaUpdate(PurchaseOrderLine.class);
  348 + updateWrapper.set(PurchaseOrderLine::getShipment, Boolean.TRUE)
  349 + .in(PurchaseOrderLine::getId, ids);
  350 + getBaseMapper().update(updateWrapper);
  351 + }
  352 +
  353 + @Override
342 public void cleanCacheByKey(Serializable key) { 354 public void cleanCacheByKey(Serializable key) {
343 355
344 } 356 }
@@ -27,6 +27,7 @@ import com.lframework.starter.common.utils.Assert; @@ -27,6 +27,7 @@ import com.lframework.starter.common.utils.Assert;
27 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType; 27 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
28 import com.lframework.xingyun.sc.handlers.MessageHandler; 28 import com.lframework.xingyun.sc.handlers.MessageHandler;
29 import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService; 29 import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService;
  30 +import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService;
30 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanDetailService; 31 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanDetailService;
31 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanService; 32 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanService;
32 import com.lframework.xingyun.sc.service.shipments.car.CarRequestPlanService; 33 import com.lframework.xingyun.sc.service.shipments.car.CarRequestPlanService;
@@ -84,7 +85,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -84,7 +85,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
84 private MessageHandler messageHandler; 85 private MessageHandler messageHandler;
85 @Resource 86 @Resource
86 private MqProducerService mqProducerService; 87 private MqProducerService mqProducerService;
87 - 88 + @Resource
  89 + private PurchaseOrderLineService purchaseOrderLineService;
88 90
89 91
90 @Override 92 @Override
@@ -328,8 +330,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -328,8 +330,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
328 throw new DefaultClientException("发货单明细不存在!"); 330 throw new DefaultClientException("发货单明细不存在!");
329 } 331 }
330 List<String> orderIds = new ArrayList<>(); 332 List<String> orderIds = new ArrayList<>();
331 - List<String> partShipmentsOrderIds = new ArrayList<>();  
332 - List<String> shipmentsOrderIds = new ArrayList<>(); 333 + List<String> orderSpecIds = new ArrayList<>();
333 List<ShipmentsPlanDetail> dataList = new ArrayList<>(); 334 List<ShipmentsPlanDetail> dataList = new ArrayList<>();
334 for (ShipmentsPlanDetail info : shipmentsOrderDetailList) { 335 for (ShipmentsPlanDetail info : shipmentsOrderDetailList) {
335 ShipmentsPlanDetail detail = new ShipmentsPlanDetail(); 336 ShipmentsPlanDetail detail = new ShipmentsPlanDetail();
@@ -341,28 +342,24 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -341,28 +342,24 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
341 detail.setActualShipmentQuantity(detailVo.getActualShipmentQuantity()); 342 detail.setActualShipmentQuantity(detailVo.getActualShipmentQuantity());
342 detail.setNum(detailVo.getNum()); 343 detail.setNum(detailVo.getNum());
343 detail.setYieldBatchNo(detailVo.getYieldBatchNo()); 344 detail.setYieldBatchNo(detailVo.getYieldBatchNo());
344 - // 判断发货数量  
345 - Double quantity = detailVo.getQuantity();  
346 - Double actualShipmentQuantity = detailVo.getActualShipmentQuantity();  
347 - if (actualShipmentQuantity >= quantity) {  
348 - // 发货完成  
349 - shipmentsOrderIds.add(info.getOrderId());  
350 - } else {  
351 - // 部分发货  
352 - partShipmentsOrderIds.add(info.getOrderId());  
353 - } 345 +
354 dataList.add(detail); 346 dataList.add(detail);
  347 +
  348 + if (!orderSpecIds.contains(info.getOrderSpecId())) {
  349 + orderSpecIds.add(info.getOrderSpecId());
  350 + }
355 if (!orderIds.contains(info.getOrderId())) { 351 if (!orderIds.contains(info.getOrderId())) {
356 - orderIds.add(detail.getOrderId()); 352 + orderIds.add(info.getOrderId());
357 } 353 }
358 } 354 }
359 // 更新发货明细 355 // 更新发货明细
360 shipmentsPlanDetailService.updateBatchById(dataList); 356 shipmentsPlanDetailService.updateBatchById(dataList);
361 // 更新发货单状态 357 // 更新发货单状态
362 updateStatus(shipmentsOrderId, "SHIPMENTS"); 358 updateStatus(shipmentsOrderId, "SHIPMENTS");
  359 + // 更新订货单物料行发货状态
  360 + purchaseOrderLineService.dispatched(orderSpecIds);
363 // 更新订货单状态 361 // 更新订货单状态
364 - purchaseOrderInfoService.updateStatus(shipmentsOrderIds, "SHIPPED");  
365 - purchaseOrderInfoService.updateStatus(partShipmentsOrderIds, "TRANSIT"); 362 + purchaseOrderInfoService.updateStatus(orderIds);
366 // 消息通知 363 // 消息通知
367 String type = vo.getType(); 364 String type = vo.getType();
368 List<PurchaseOrderInfo> orderInfoList = purchaseOrderInfoService.listByIds(orderIds); 365 List<PurchaseOrderInfo> orderInfoList = purchaseOrderInfoService.listByIds(orderIds);
@@ -76,6 +76,7 @@ public interface PurchaseOrderInfoService extends BaseMpService<PurchaseOrderInf @@ -76,6 +76,7 @@ public interface PurchaseOrderInfoService extends BaseMpService<PurchaseOrderInf
76 * @param status 审核状态 76 * @param status 审核状态
77 */ 77 */
78 void updateStatus(String id, String status); 78 void updateStatus(String id, String status);
  79 + void updateStatus(List<String> ids);
79 void updateStatus(List<String> ids, String status); 80 void updateStatus(List<String> ids, String status);
80 81
81 /** 82 /**
@@ -131,4 +131,11 @@ public interface PurchaseOrderLineService extends BaseMpService<PurchaseOrderLin @@ -131,4 +131,11 @@ public interface PurchaseOrderLineService extends BaseMpService<PurchaseOrderLin
131 * @param ids 主键ID 131 * @param ids 主键ID
132 */ 132 */
133 void updateShipments(List<String> ids); 133 void updateShipments(List<String> ids);
  134 +
  135 + /**
  136 + * 已发货
  137 + *
  138 + * @param ids 主键ID集合
  139 + */
  140 + void dispatched(List<String> ids);
134 } 141 }