Commit 5f99ceacd345cdcca36debbfbdc0331e50cf7692

Authored by yeqianyong
1 parent 504acaf7

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

@@ -46,6 +46,11 @@ public class RequestCarTicket extends BaseEntity implements BaseDto { @@ -46,6 +46,11 @@ public class RequestCarTicket extends BaseEntity implements BaseDto {
46 private String purchaseOrderId; 46 private String purchaseOrderId;
47 47
48 /** 48 /**
  49 + * 发货单ID
  50 + */
  51 + private String shipmentsOrderId;
  52 +
  53 + /**
49 * 要车日期 54 * 要车日期
50 */ 55 */
51 private LocalDate requestCarDate; 56 private LocalDate requestCarDate;
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 4 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
5 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 5 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
6 import com.github.pagehelper.PageInfo; 6 import com.github.pagehelper.PageInfo;
  7 +import com.lframework.starter.web.core.components.redis.RedisHandler;
7 import com.lframework.starter.web.core.components.security.SecurityUtil; 8 import com.lframework.starter.web.core.components.security.SecurityUtil;
8 import com.lframework.starter.web.core.utils.*; 9 import com.lframework.starter.web.core.utils.*;
9 import com.lframework.starter.web.inner.dto.dic.city.DicCityDto; 10 import com.lframework.starter.web.inner.dto.dic.city.DicCityDto;
@@ -71,6 +72,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -71,6 +72,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
71 private CarRequestPlanService carRequestPlanService; 72 private CarRequestPlanService carRequestPlanService;
72 @Resource 73 @Resource
73 private RequestCarTicketService requestCarTicketService; 74 private RequestCarTicketService requestCarTicketService;
  75 + @Resource
  76 + private RedisHandler redisHandler;
74 77
75 78
76 @Override 79 @Override
@@ -401,6 +404,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -401,6 +404,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
401 if (CollectionUtils.isNotEmpty(orderInfoList)) { 404 if (CollectionUtils.isNotEmpty(orderInfoList)) {
402 orderInfoMap = orderInfoList.stream().collect(Collectors.toMap(PurchaseOrderInfo::getId, Function.identity())); 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 Map<String, List<String>> deptIdMap = new HashMap<>(); 409 Map<String, List<String>> deptIdMap = new HashMap<>();
405 List<String> detailIds = new ArrayList<>(); 410 List<String> detailIds = new ArrayList<>();
406 List<ShipmentsOrderInfo> shipmentsOrderInfoList = new ArrayList<>(); 411 List<ShipmentsOrderInfo> shipmentsOrderInfoList = new ArrayList<>();
@@ -454,6 +459,15 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -454,6 +459,15 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
454 destinationBuilder.append(" | "); 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 if (deliveryTypeBuilder.length() > 3) { 472 if (deliveryTypeBuilder.length() > 3) {
459 deliveryTypeBuilder.setLength(deliveryTypeBuilder.length() - 3); 473 deliveryTypeBuilder.setLength(deliveryTypeBuilder.length() - 3);
@@ -495,7 +509,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -495,7 +509,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
495 batchAdd(shipmentsOrderInfoList); 509 batchAdd(shipmentsOrderInfoList);
496 // todo 后续如果数据量过大,则此处需要优化 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,7 +520,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
506 * @param orderIds 订货单ID集合 520 * @param orderIds 订货单ID集合
507 * @param plan 发货计划 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 Map<String, DraftRequestCarTicket> draftTicketMap = new HashMap<>(); 526 Map<String, DraftRequestCarTicket> draftTicketMap = new HashMap<>();
512 List<DraftRequestCarTicket> draftTickets = draftRequestCarTicketService.listByOrderId(orderIds); 527 List<DraftRequestCarTicket> draftTickets = draftRequestCarTicketService.listByOrderId(orderIds);
@@ -515,11 +530,17 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -515,11 +530,17 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
515 , (v1, v2) -> v2)); 530 , (v1, v2) -> v2));
516 } 531 }
517 for (PurchaseOrderInfo orderInfo : orderInfoList) { 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 if (draftTicket == null) { 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 break; 544 break;
524 } 545 }
525 if ("PASS".equals(draftTicket.getStatus())) { 546 if ("PASS".equals(draftTicket.getStatus())) {
@@ -530,7 +551,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -530,7 +551,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
530 String requestCarPlanId = carRequestPlanService.create(planCreateVo); 551 String requestCarPlanId = carRequestPlanService.create(planCreateVo);
531 // 生成要车单 552 // 生成要车单
532 CreateRequestCarTicketVo ticketCreateVo = packRequestCarTicket(orderInfo, requestCarPlanId, 553 CreateRequestCarTicketVo ticketCreateVo = packRequestCarTicket(orderInfo, requestCarPlanId,
533 - draftTicket.getId(), plan.getTomoPreShipDate(), draftTicket.getExternalAuditor()); 554 + draftTicket.getId(), plan.getTomoPreShipDate(), draftTicket.getExternalAuditor(), quantity, shipmentsOrderId);
534 requestCarTicketService.create(ticketCreateVo); 555 requestCarTicketService.create(ticketCreateVo);
535 } else { 556 } else {
536 throw new DefaultClientException("请先补充草稿要车单数据!"); 557 throw new DefaultClientException("请先补充草稿要车单数据!");
@@ -546,7 +567,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -546,7 +567,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
546 * @param shipmentsDate 发货日期 567 * @param shipmentsDate 发货日期
547 * @return CreateDraftRequestCarTicketVo 568 * @return CreateDraftRequestCarTicketVo
548 */ 569 */
549 - private CreateDraftRequestCarTicketVo packDraftRequestCarTicket(PurchaseOrderInfo orderInfo, LocalDate shipmentsDate) { 570 + private CreateDraftRequestCarTicketVo packDraftRequestCarTicket(PurchaseOrderInfo orderInfo, LocalDate shipmentsDate, BigDecimal quantity) {
550 CreateDraftRequestCarTicketVo draftTicketVo = new CreateDraftRequestCarTicketVo(); 571 CreateDraftRequestCarTicketVo draftTicketVo = new CreateDraftRequestCarTicketVo();
551 draftTicketVo.setPurchaseOrderId(orderInfo.getId()); 572 draftTicketVo.setPurchaseOrderId(orderInfo.getId());
552 draftTicketVo.setDeptId(orderInfo.getDeptId()); 573 draftTicketVo.setDeptId(orderInfo.getDeptId());
@@ -554,10 +575,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -554,10 +575,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
554 draftTicketVo.setWorkshopId(orderInfo.getWorkshopId()); 575 draftTicketVo.setWorkshopId(orderInfo.getWorkshopId());
555 draftTicketVo.setOrderNo(orderInfo.getOrderNo()); 576 draftTicketVo.setOrderNo(orderInfo.getOrderNo());
556 draftTicketVo.setOrderingUnit(orderInfo.getOrderingUnit()); 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 draftTicketVo.setBusinessOfficeAuditor(SecurityUtil.getCurrentUser().getId()); 580 draftTicketVo.setBusinessOfficeAuditor(SecurityUtil.getCurrentUser().getId());
563 //发货计划 581 //发货计划
@@ -572,7 +590,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -572,7 +590,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
572 * @return CreateRequestCarTicketVo 590 * @return CreateRequestCarTicketVo
573 */ 591 */
574 private CreateRequestCarTicketVo packRequestCarTicket(PurchaseOrderInfo orderInfo, String planId, String draftId, 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 CreateRequestCarTicketVo ticketVo = new CreateRequestCarTicketVo(); 594 CreateRequestCarTicketVo ticketVo = new CreateRequestCarTicketVo();
577 ticketVo.setDraftId(draftId); 595 ticketVo.setDraftId(draftId);
578 ticketVo.setPlanId(planId); 596 ticketVo.setPlanId(planId);
@@ -583,10 +601,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -583,10 +601,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
583 ticketVo.setWorkshopId(orderInfo.getWorkshopId()); 601 ticketVo.setWorkshopId(orderInfo.getWorkshopId());
584 ticketVo.setOrderNo(orderInfo.getOrderNo()); 602 ticketVo.setOrderNo(orderInfo.getOrderNo());
585 ticketVo.setOrderingUnit(orderInfo.getOrderingUnit()); 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 ticketVo.setExternalAuditor(externalAuditor); 607 ticketVo.setExternalAuditor(externalAuditor);
592 //经营办审核人(发货计划提交人) 608 //经营办审核人(发货计划提交人)
@@ -74,6 +74,9 @@ public class RequestCarTicketServiceImpl extends BaseMpServiceImpl<RequestCarTic @@ -74,6 +74,9 @@ public class RequestCarTicketServiceImpl extends BaseMpServiceImpl<RequestCarTic
74 if (!StringUtil.isBlank(vo.getPurchaseOrderId())) { 74 if (!StringUtil.isBlank(vo.getPurchaseOrderId())) {
75 data.setPurchaseOrderId(vo.getPurchaseOrderId()); 75 data.setPurchaseOrderId(vo.getPurchaseOrderId());
76 } 76 }
  77 + if (!StringUtil.isBlank(vo.getShipmentsOrderId())) {
  78 + data.setShipmentsOrderId(vo.getShipmentsOrderId());
  79 + }
77 if (vo.getRequestCarDate() != null) { 80 if (vo.getRequestCarDate() != null) {
78 data.setRequestCarDate(vo.getRequestCarDate()); 81 data.setRequestCarDate(vo.getRequestCarDate());
79 } 82 }
@@ -34,6 +34,12 @@ public class CreateRequestCarTicketVo implements BaseVo, Serializable { @@ -34,6 +34,12 @@ public class CreateRequestCarTicketVo implements BaseVo, Serializable {
34 private String purchaseOrderId; 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 @ApiModelProperty("要车日期") 45 @ApiModelProperty("要车日期")
@@ -256,9 +256,11 @@ @@ -256,9 +256,11 @@
256 <select id="listByPlanId" resultType="com.lframework.xingyun.sc.entity.ShipmentsPlanDetail"> 256 <select id="listByPlanId" resultType="com.lframework.xingyun.sc.entity.ShipmentsPlanDetail">
257 select 257 select
258 pd.*, 258 pd.*,
  259 + ol.quantity,
259 c.id as customer_id 260 c.id as customer_id
260 from shipments_plan_detail pd 261 from shipments_plan_detail pd
261 inner join shipments_plan p on pd.plan_id = p.id and pd.shipments_date = p.tomo_pre_ship_date 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 left join purchase_order_info o on pd.order_id = o.id 264 left join purchase_order_info o on pd.order_id = o.id
263 left join base_data_customer c on o.ordering_unit = c.id 265 left join base_data_customer c on o.ordering_unit = c.id
264 where pd.del_flag = false 266 where pd.del_flag = false