Commit 09f3785af95718e511590e145ec4a3e19c756199

Authored by yeqianyong
1 parent 7b3a203e

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

... ... @@ -28,6 +28,7 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService;
28 28 import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
29 29 import com.lframework.xingyun.sc.entity.CustomerCredit;
30 30 import com.lframework.xingyun.sc.entity.PurchaseOrderInfo;
  31 +import com.lframework.xingyun.sc.entity.PurchaseOrderLine;
31 32 import com.lframework.xingyun.sc.enums.OrderSpecChangeStatus;
32 33 import com.lframework.xingyun.sc.mappers.PurchaseOrderInfoMapper;
33 34 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
... ... @@ -397,6 +398,42 @@ public class PurchaseOrderInfoServiceImpl extends BaseMpServiceImpl<PurchaseOrde
397 398 }
398 399
399 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 437 @Transactional(rollbackFor = Exception.class)
401 438 public void updateStatus(List<String> ids, String status) {
402 439 if (CollectionUtils.isEmpty(ids) || StringUtils.isBlank(status)) {
... ...
... ... @@ -339,6 +339,18 @@ public class PurchaseOrderLineServiceImpl extends BaseMpServiceImpl<PurchaseOrde
339 339 }
340 340
341 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 354 public void cleanCacheByKey(Serializable key) {
343 355
344 356 }
... ...
... ... @@ -27,6 +27,7 @@ import com.lframework.starter.common.utils.Assert;
27 27 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
28 28 import com.lframework.xingyun.sc.handlers.MessageHandler;
29 29 import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService;
  30 +import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService;
30 31 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanDetailService;
31 32 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanService;
32 33 import com.lframework.xingyun.sc.service.shipments.car.CarRequestPlanService;
... ... @@ -84,7 +85,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
84 85 private MessageHandler messageHandler;
85 86 @Resource
86 87 private MqProducerService mqProducerService;
87   -
  88 + @Resource
  89 + private PurchaseOrderLineService purchaseOrderLineService;
88 90
89 91
90 92 @Override
... ... @@ -328,8 +330,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
328 330 throw new DefaultClientException("发货单明细不存在!");
329 331 }
330 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 334 List<ShipmentsPlanDetail> dataList = new ArrayList<>();
334 335 for (ShipmentsPlanDetail info : shipmentsOrderDetailList) {
335 336 ShipmentsPlanDetail detail = new ShipmentsPlanDetail();
... ... @@ -341,28 +342,24 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
341 342 detail.setActualShipmentQuantity(detailVo.getActualShipmentQuantity());
342 343 detail.setNum(detailVo.getNum());
343 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 346 dataList.add(detail);
  347 +
  348 + if (!orderSpecIds.contains(info.getOrderSpecId())) {
  349 + orderSpecIds.add(info.getOrderSpecId());
  350 + }
355 351 if (!orderIds.contains(info.getOrderId())) {
356   - orderIds.add(detail.getOrderId());
  352 + orderIds.add(info.getOrderId());
357 353 }
358 354 }
359 355 // 更新发货明细
360 356 shipmentsPlanDetailService.updateBatchById(dataList);
361 357 // 更新发货单状态
362 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 364 String type = vo.getType();
368 365 List<PurchaseOrderInfo> orderInfoList = purchaseOrderInfoService.listByIds(orderIds);
... ...
... ... @@ -76,6 +76,7 @@ public interface PurchaseOrderInfoService extends BaseMpService<PurchaseOrderInf
76 76 * @param status 审核状态
77 77 */
78 78 void updateStatus(String id, String status);
  79 + void updateStatus(List<String> ids);
79 80 void updateStatus(List<String> ids, String status);
80 81
81 82 /**
... ...
... ... @@ -131,4 +131,11 @@ public interface PurchaseOrderLineService extends BaseMpService<PurchaseOrderLin
131 131 * @param ids 主键ID
132 132 */
133 133 void updateShipments(List<String> ids);
  134 +
  135 + /**
  136 + * 已发货
  137 + *
  138 + * @param ids 主键ID集合
  139 + */
  140 + void dispatched(List<String> ids);
134 141 }
... ...