Showing
5 changed files
with
70 additions
and
16 deletions
| @@ -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 | } |
xingyun-sc/src/main/java/com/lframework/xingyun/sc/impl/shipments/ShipmentsOrderInfoServiceImpl.java
| @@ -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 | } |