Commit 5f99ceacd345cdcca36debbfbdc0331e50cf7692

Authored by yeqianyong
1 parent 504acaf7

楚江ERP-生成发货单时要车相关数据逻辑调整

... ... @@ -46,6 +46,11 @@ public class RequestCarTicket extends BaseEntity implements BaseDto {
46 46 private String purchaseOrderId;
47 47
48 48 /**
  49 + * 发货单ID
  50 + */
  51 + private String shipmentsOrderId;
  52 +
  53 + /**
49 54 * 要车日期
50 55 */
51 56 private LocalDate requestCarDate;
... ...
... ... @@ -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 //经营办审核人(发货计划提交人)
... ...
... ... @@ -74,6 +74,9 @@ public class RequestCarTicketServiceImpl extends BaseMpServiceImpl<RequestCarTic
74 74 if (!StringUtil.isBlank(vo.getPurchaseOrderId())) {
75 75 data.setPurchaseOrderId(vo.getPurchaseOrderId());
76 76 }
  77 + if (!StringUtil.isBlank(vo.getShipmentsOrderId())) {
  78 + data.setShipmentsOrderId(vo.getShipmentsOrderId());
  79 + }
77 80 if (vo.getRequestCarDate() != null) {
78 81 data.setRequestCarDate(vo.getRequestCarDate());
79 82 }
... ...
... ... @@ -34,6 +34,12 @@ public class CreateRequestCarTicketVo implements BaseVo, Serializable {
34 34 private String purchaseOrderId;
35 35
36 36 /**
  37 + * 发货单ID
  38 + */
  39 + @ApiModelProperty("发货单ID")
  40 + private String shipmentsOrderId;
  41 +
  42 + /**
37 43 * 要车日期
38 44 */
39 45 @ApiModelProperty("要车日期")
... ...
... ... @@ -256,9 +256,11 @@
256 256 <select id="listByPlanId" resultType="com.lframework.xingyun.sc.entity.ShipmentsPlanDetail">
257 257 select
258 258 pd.*,
  259 + ol.quantity,
259 260 c.id as customer_id
260 261 from shipments_plan_detail pd
261 262 inner join shipments_plan p on pd.plan_id = p.id and pd.shipments_date = p.tomo_pre_ship_date
  263 + left join tbl_purchase_order_line ol on pd.order_spec_id = ol.id
262 264 left join purchase_order_info o on pd.order_id = o.id
263 265 left join base_data_customer c on o.ordering_unit = c.id
264 266 where pd.del_flag = false
... ...