|
...
|
...
|
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
4
|
4
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
5
|
5
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
6
|
6
|
import com.github.pagehelper.PageInfo;
|
|
|
7
|
+import com.lframework.starter.web.core.components.redis.RedisHandler;
|
|
7
|
8
|
import com.lframework.starter.web.core.components.security.SecurityUtil;
|
|
8
|
9
|
import com.lframework.starter.web.core.utils.*;
|
|
9
|
10
|
import com.lframework.starter.web.inner.dto.dic.city.DicCityDto;
|
|
...
|
...
|
@@ -71,6 +72,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
71
|
72
|
private CarRequestPlanService carRequestPlanService;
|
|
72
|
73
|
@Resource
|
|
73
|
74
|
private RequestCarTicketService requestCarTicketService;
|
|
|
75
|
+ @Resource
|
|
|
76
|
+ private RedisHandler redisHandler;
|
|
74
|
77
|
|
|
75
|
78
|
|
|
76
|
79
|
@Override
|
|
...
|
...
|
@@ -401,6 +404,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
401
|
404
|
if (CollectionUtils.isNotEmpty(orderInfoList)) {
|
|
402
|
405
|
orderInfoMap = orderInfoList.stream().collect(Collectors.toMap(PurchaseOrderInfo::getId, Function.identity()));
|
|
403
|
406
|
}
|
|
|
407
|
+ Map<String, BigDecimal> quantityMap = new HashMap<>();
|
|
|
408
|
+ Map<String, String> shipmentsOrderIdMap = new HashMap<>();
|
|
404
|
409
|
Map<String, List<String>> deptIdMap = new HashMap<>();
|
|
405
|
410
|
List<String> detailIds = new ArrayList<>();
|
|
406
|
411
|
List<ShipmentsOrderInfo> shipmentsOrderInfoList = new ArrayList<>();
|
|
...
|
...
|
@@ -454,6 +459,15 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
454
|
459
|
destinationBuilder.append(" | ");
|
|
455
|
460
|
}
|
|
456
|
461
|
}
|
|
|
462
|
+ // 计划吨位
|
|
|
463
|
+ BigDecimal bigDecimal = quantityMap.get(detail.getOrderId());
|
|
|
464
|
+ if (bigDecimal == null) {
|
|
|
465
|
+ bigDecimal = new BigDecimal(0);
|
|
|
466
|
+ }
|
|
|
467
|
+ BigDecimal result = bigDecimal.add(detail.getQuantity());
|
|
|
468
|
+ quantityMap.put(detail.getOrderId(), result);
|
|
|
469
|
+ // 发货单ID和订货单ID映射
|
|
|
470
|
+ shipmentsOrderIdMap.put(detail.getOrderId(), id);
|
|
457
|
471
|
}
|
|
458
|
472
|
if (deliveryTypeBuilder.length() > 3) {
|
|
459
|
473
|
deliveryTypeBuilder.setLength(deliveryTypeBuilder.length() - 3);
|
|
...
|
...
|
@@ -495,7 +509,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
495
|
509
|
batchAdd(shipmentsOrderInfoList);
|
|
496
|
510
|
// todo 后续如果数据量过大,则此处需要优化
|
|
497
|
511
|
// 生成要车相关数据
|
|
498
|
|
- generateRequestCarData(orderInfoList, orderIds, plan);
|
|
|
512
|
+ generateRequestCarData(orderInfoList, orderIds, plan, quantityMap, shipmentsOrderIdMap);
|
|
499
|
513
|
}
|
|
500
|
514
|
|
|
501
|
515
|
|
|
...
|
...
|
@@ -506,7 +520,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
506
|
520
|
* @param orderIds 订货单ID集合
|
|
507
|
521
|
* @param plan 发货计划
|
|
508
|
522
|
*/
|
|
509
|
|
- private void generateRequestCarData(List<PurchaseOrderInfo> orderInfoList, List<String> orderIds, ShipmentsPlan plan) {
|
|
|
523
|
+ private void generateRequestCarData(List<PurchaseOrderInfo> orderInfoList, List<String> orderIds, ShipmentsPlan plan
|
|
|
524
|
+ , Map<String, BigDecimal> quantityMap, Map<String, String> shipmentsOrderIdMap) {
|
|
510
|
525
|
// 根据订货单获取草稿要车单
|
|
511
|
526
|
Map<String, DraftRequestCarTicket> draftTicketMap = new HashMap<>();
|
|
512
|
527
|
List<DraftRequestCarTicket> draftTickets = draftRequestCarTicketService.listByOrderId(orderIds);
|
|
...
|
...
|
@@ -515,11 +530,17 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
515
|
530
|
, (v1, v2) -> v2));
|
|
516
|
531
|
}
|
|
517
|
532
|
for (PurchaseOrderInfo orderInfo : orderInfoList) {
|
|
518
|
|
- DraftRequestCarTicket draftTicket = draftTicketMap.get(orderInfo.getId());
|
|
|
533
|
+ String orderId = orderInfo.getId();
|
|
|
534
|
+ DraftRequestCarTicket draftTicket = draftTicketMap.get(orderId);
|
|
|
535
|
+ BigDecimal quantity = quantityMap.get(orderId);
|
|
|
536
|
+ String shipmentsOrderId = shipmentsOrderIdMap.get(orderId);
|
|
519
|
537
|
if (draftTicket == null) {
|
|
520
|
538
|
// 生成草稿要车单
|
|
521
|
|
- CreateDraftRequestCarTicketVo createVo = packDraftRequestCarTicket(orderInfo, plan.getTomoPreShipDate());
|
|
522
|
|
- draftRequestCarTicketService.create(createVo);
|
|
|
539
|
+ CreateDraftRequestCarTicketVo createVo = packDraftRequestCarTicket(orderInfo, plan.getTomoPreShipDate(), quantity);
|
|
|
540
|
+ String draftId = draftRequestCarTicketService.create(createVo);
|
|
|
541
|
+
|
|
|
542
|
+ // 草稿要车单id和要车单id映射
|
|
|
543
|
+ redisHandler.set("GET_SHIPMENTS_ORDER_ID_" + draftId, shipmentsOrderId);
|
|
523
|
544
|
break;
|
|
524
|
545
|
}
|
|
525
|
546
|
if ("PASS".equals(draftTicket.getStatus())) {
|
|
...
|
...
|
@@ -530,7 +551,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
530
|
551
|
String requestCarPlanId = carRequestPlanService.create(planCreateVo);
|
|
531
|
552
|
// 生成要车单
|
|
532
|
553
|
CreateRequestCarTicketVo ticketCreateVo = packRequestCarTicket(orderInfo, requestCarPlanId,
|
|
533
|
|
- draftTicket.getId(), plan.getTomoPreShipDate(), draftTicket.getExternalAuditor());
|
|
|
554
|
+ draftTicket.getId(), plan.getTomoPreShipDate(), draftTicket.getExternalAuditor(), quantity, shipmentsOrderId);
|
|
534
|
555
|
requestCarTicketService.create(ticketCreateVo);
|
|
535
|
556
|
} else {
|
|
536
|
557
|
throw new DefaultClientException("请先补充草稿要车单数据!");
|
|
...
|
...
|
@@ -546,7 +567,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
546
|
567
|
* @param shipmentsDate 发货日期
|
|
547
|
568
|
* @return CreateDraftRequestCarTicketVo
|
|
548
|
569
|
*/
|
|
549
|
|
- private CreateDraftRequestCarTicketVo packDraftRequestCarTicket(PurchaseOrderInfo orderInfo, LocalDate shipmentsDate) {
|
|
|
570
|
+ private CreateDraftRequestCarTicketVo packDraftRequestCarTicket(PurchaseOrderInfo orderInfo, LocalDate shipmentsDate, BigDecimal quantity) {
|
|
550
|
571
|
CreateDraftRequestCarTicketVo draftTicketVo = new CreateDraftRequestCarTicketVo();
|
|
551
|
572
|
draftTicketVo.setPurchaseOrderId(orderInfo.getId());
|
|
552
|
573
|
draftTicketVo.setDeptId(orderInfo.getDeptId());
|
|
...
|
...
|
@@ -554,10 +575,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
554
|
575
|
draftTicketVo.setWorkshopId(orderInfo.getWorkshopId());
|
|
555
|
576
|
draftTicketVo.setOrderNo(orderInfo.getOrderNo());
|
|
556
|
577
|
draftTicketVo.setOrderingUnit(orderInfo.getOrderingUnit());
|
|
557
|
|
- if (orderInfo.getTotalQuantity() != null) {
|
|
558
|
|
- BigDecimal result = orderInfo.getTotalQuantity().divide(new BigDecimal(1000), 4, BigDecimal.ROUND_HALF_UP);
|
|
559
|
|
- draftTicketVo.setQuantity(result);
|
|
560
|
|
- }
|
|
|
578
|
+ draftTicketVo.setQuantity(quantity);
|
|
561
|
579
|
//经营办审核人(发货计划提交人)
|
|
562
|
580
|
draftTicketVo.setBusinessOfficeAuditor(SecurityUtil.getCurrentUser().getId());
|
|
563
|
581
|
//发货计划
|
|
...
|
...
|
@@ -572,7 +590,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
572
|
590
|
* @return CreateRequestCarTicketVo
|
|
573
|
591
|
*/
|
|
574
|
592
|
private CreateRequestCarTicketVo packRequestCarTicket(PurchaseOrderInfo orderInfo, String planId, String draftId,
|
|
575
|
|
- LocalDate shipmentsDate, String externalAuditor) {
|
|
|
593
|
+ LocalDate shipmentsDate, String externalAuditor, BigDecimal quantity, String shipmentsOrderId) {
|
|
576
|
594
|
CreateRequestCarTicketVo ticketVo = new CreateRequestCarTicketVo();
|
|
577
|
595
|
ticketVo.setDraftId(draftId);
|
|
578
|
596
|
ticketVo.setPlanId(planId);
|
|
...
|
...
|
@@ -583,10 +601,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr |
|
583
|
601
|
ticketVo.setWorkshopId(orderInfo.getWorkshopId());
|
|
584
|
602
|
ticketVo.setOrderNo(orderInfo.getOrderNo());
|
|
585
|
603
|
ticketVo.setOrderingUnit(orderInfo.getOrderingUnit());
|
|
586
|
|
- if (orderInfo.getTotalQuantity() != null) {
|
|
587
|
|
- BigDecimal result = orderInfo.getTotalQuantity().divide(new BigDecimal(1000), 4, BigDecimal.ROUND_HALF_UP);
|
|
588
|
|
- ticketVo.setQuantity(result);
|
|
589
|
|
- }
|
|
|
604
|
+ ticketVo.setQuantity(quantity);
|
|
|
605
|
+ ticketVo.setShipmentsOrderId(shipmentsOrderId);
|
|
590
|
606
|
//外办审核人(草稿要车单审核人)
|
|
591
|
607
|
ticketVo.setExternalAuditor(externalAuditor);
|
|
592
|
608
|
//经营办审核人(发货计划提交人)
|
...
|
...
|
|