Commit fd7fe8a887dad6257d885418072b204c3fed4cf7

Authored by 房远帅
2 parents 1bc75013 990d537e

Merge remote-tracking branch 'origin/master_sample_order' into master_sample_order

@@ -33,6 +33,7 @@ import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService; @@ -33,6 +33,7 @@ import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService;
33 import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService; 33 import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService;
34 import com.lframework.xingyun.sc.service.shipments.ShipmentsOrderInfoService; 34 import com.lframework.xingyun.sc.service.shipments.ShipmentsOrderInfoService;
35 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanDetailService; 35 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanDetailService;
  36 +import com.lframework.xingyun.sc.service.shipments.car.CarRequestPlanService;
36 import com.lframework.xingyun.sc.service.shipments.car.DraftRequestCarTicketService; 37 import com.lframework.xingyun.sc.service.shipments.car.DraftRequestCarTicketService;
37 import com.lframework.xingyun.sc.service.statistics.ShipmentDetailStatisticsService; 38 import com.lframework.xingyun.sc.service.statistics.ShipmentDetailStatisticsService;
38 import com.lframework.xingyun.sc.utils.CommonUtil; 39 import com.lframework.xingyun.sc.utils.CommonUtil;
@@ -91,6 +92,8 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge @@ -91,6 +92,8 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge
91 private FundOrderingUnitDetailService fundOrderingUnitDetailService; 92 private FundOrderingUnitDetailService fundOrderingUnitDetailService;
92 @Resource 93 @Resource
93 private ShipmentDetailStatisticsService shipmentDetailStatisticsService; 94 private ShipmentDetailStatisticsService shipmentDetailStatisticsService;
  95 + @Resource
  96 + private CarRequestPlanService carRequestPlanService;
94 97
95 98
96 // 定义状态优先级顺序(从高到低) 99 // 定义状态优先级顺序(从高到低)
@@ -793,6 +796,8 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge @@ -793,6 +796,8 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge
793 generateLedgerInfo(shipmentsOrderInfos); 796 generateLedgerInfo(shipmentsOrderInfos);
794 // 生成发货明细报表数据 797 // 生成发货明细报表数据
795 shipmentDetailStatisticsService.generateStatisticsData(detailIds); 798 shipmentDetailStatisticsService.generateStatisticsData(detailIds);
  799 + // 生成要车计划、要车单
  800 + generateCarPlanAndTicket(shipmentsOrderInfos);
796 } 801 }
797 802
798 @Override 803 @Override
@@ -1308,4 +1313,25 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge @@ -1308,4 +1313,25 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge
1308 } 1313 }
1309 dataList.add(data); 1314 dataList.add(data);
1310 } 1315 }
  1316 +
  1317 +
  1318 + /**
  1319 + * 生成要车计划、要车单
  1320 + *
  1321 + * @param shipmentsOrderInfoList 发货单数据
  1322 + */
  1323 + private void generateCarPlanAndTicket(List<ShipmentsOrderInfo> shipmentsOrderInfoList) {
  1324 + if (CollectionUtils.isEmpty(shipmentsOrderInfoList)) {
  1325 + return;
  1326 + }
  1327 + for (ShipmentsOrderInfo shipmentsOrderInfo : shipmentsOrderInfoList) {
  1328 + List<ShipmentsPlanDetail> detailList = shipmentsOrderInfo.getDetailList();
  1329 + if (CollectionUtils.isEmpty(detailList)) {
  1330 + continue;
  1331 + }
  1332 + List<String> orderIds = detailList.stream().map(ShipmentsPlanDetail::getOrderId).distinct().collect(Collectors.toList());
  1333 + List<PurchaseOrderInfo> orderInfoList = purchaseOrderInfoService.listByIds(orderIds);
  1334 + carRequestPlanService.generate(orderInfoList, shipmentsOrderInfo);
  1335 + }
  1336 + }
1311 } 1337 }
@@ -48,6 +48,7 @@ import org.apache.commons.collections4.CollectionUtils; @@ -48,6 +48,7 @@ import org.apache.commons.collections4.CollectionUtils;
48 import org.apache.commons.collections4.MapUtils; 48 import org.apache.commons.collections4.MapUtils;
49 import org.apache.commons.lang3.BooleanUtils; 49 import org.apache.commons.lang3.BooleanUtils;
50 import org.apache.commons.lang3.StringUtils; 50 import org.apache.commons.lang3.StringUtils;
  51 +import org.springframework.data.redis.core.RedisTemplate;
51 import org.springframework.transaction.annotation.Transactional; 52 import org.springframework.transaction.annotation.Transactional;
52 import com.lframework.xingyun.sc.mappers.ShipmentsOrderInfoMapper; 53 import com.lframework.xingyun.sc.mappers.ShipmentsOrderInfoMapper;
53 import com.lframework.xingyun.sc.service.shipments.ShipmentsOrderInfoService; 54 import com.lframework.xingyun.sc.service.shipments.ShipmentsOrderInfoService;
@@ -55,11 +56,14 @@ import org.springframework.stereotype.Service; @@ -55,11 +56,14 @@ import org.springframework.stereotype.Service;
55 56
56 import javax.annotation.Resource; 57 import javax.annotation.Resource;
57 import java.math.BigDecimal; 58 import java.math.BigDecimal;
  59 +import java.time.Duration;
58 import java.time.LocalDate; 60 import java.time.LocalDate;
59 import java.time.LocalDateTime; 61 import java.time.LocalDateTime;
60 import java.time.LocalTime; 62 import java.time.LocalTime;
  63 +import java.time.format.DateTimeFormatter;
61 import java.time.temporal.TemporalAdjusters; 64 import java.time.temporal.TemporalAdjusters;
62 import java.util.*; 65 import java.util.*;
  66 +import java.util.concurrent.TimeUnit;
63 import java.util.function.Function; 67 import java.util.function.Function;
64 import java.util.stream.Collectors; 68 import java.util.stream.Collectors;
65 69
@@ -103,6 +107,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -103,6 +107,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
103 private SampleResultFeedbackService sampleResultFeedbackService; 107 private SampleResultFeedbackService sampleResultFeedbackService;
104 @Resource 108 @Resource
105 private ShipmentDetailStatisticsService shipmentDetailStatisticsService; 109 private ShipmentDetailStatisticsService shipmentDetailStatisticsService;
  110 + @Resource
  111 + private RedisTemplate redisTemplate;
106 112
107 113
108 @Override 114 @Override
@@ -681,6 +687,29 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -681,6 +687,29 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
681 return shipmentsOrderInfos; 687 return shipmentsOrderInfos;
682 } 688 }
683 689
  690 + @Override
  691 + public String generateSerialNumber(String pre, String key, String format, LocalDateTime startTime, LocalDateTime endTime) {
  692 + // 获取当前时间,并做格式化处理
  693 + String datePart = LocalDate.now().format(DateTimeFormatter.ofPattern(format));
  694 + // Redis自增序列
  695 + Long id = redisTemplate.opsForValue().increment(key, 1);
  696 + if (id != null && id == 1) {
  697 + // 计算时间差(秒)
  698 + long secondsUntilMidnight = Duration.between(startTime, endTime).getSeconds();
  699 + redisTemplate.expire(key, secondsUntilMidnight, TimeUnit.SECONDS);
  700 + }
  701 + // 补零到4位
  702 + String incrPart = String.format("%04d", id);
  703 + // 拼接最终结果
  704 + String result = "";
  705 + if (StringUtils.isBlank(pre)) {
  706 + result = datePart + incrPart;
  707 + } else {
  708 + result = pre + datePart + incrPart;
  709 + }
  710 + return result;
  711 + }
  712 +
684 713
685 /** 714 /**
686 * 处理批次数据 715 * 处理批次数据
@@ -795,7 +824,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -795,7 +824,7 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
795 .withHour(23) 824 .withHour(23)
796 .withMinute(59) 825 .withMinute(59)
797 .withSecond(59); 826 .withSecond(59);
798 - String serialNumber = CommonUtil.generateSerialNumber(null, "", "yyMM", LocalDateTime.now(), monthEnd); 827 + String serialNumber = generateSerialNumber(null, "", "yyMM", LocalDateTime.now(), monthEnd);
799 shipmentsOrderInfo.setCode(serialNumber); 828 shipmentsOrderInfo.setCode(serialNumber);
800 shipmentsOrderInfo.setPlanId(planId); 829 shipmentsOrderInfo.setPlanId(planId);
801 shipmentsOrderInfo.setCustomerId(customerId); 830 shipmentsOrderInfo.setCustomerId(customerId);
@@ -196,6 +196,10 @@ public class CarRequestPlanServiceImpl extends BaseMpServiceImpl<CarRequestPlanM @@ -196,6 +196,10 @@ public class CarRequestPlanServiceImpl extends BaseMpServiceImpl<CarRequestPlanM
196 ticketVo.setReturnPlanArrangement(draftTicket.getReturnPlanArrangement()); 196 ticketVo.setReturnPlanArrangement(draftTicket.getReturnPlanArrangement());
197 ticketVo.setOther(draftTicket.getOther()); 197 ticketVo.setOther(draftTicket.getOther());
198 ticketVo.setSpecialLoadingRequirement(draftTicket.getSpecialLoadingRequirement()); 198 ticketVo.setSpecialLoadingRequirement(draftTicket.getSpecialLoadingRequirement());
  199 + List<ShipmentsPlanDetail> detailList = shipmentsOrderInfo.getDetailList();
  200 + if (CollectionUtil.isEmpty(detailList)) {
  201 + continue;
  202 + }
199 // 装货时间处理 203 // 装货时间处理
200 LocalTime minTime = shipmentsOrderInfo.getDetailList().stream() 204 LocalTime minTime = shipmentsOrderInfo.getDetailList().stream()
201 .map(ShipmentsPlanDetail::getShipmentsTime) 205 .map(ShipmentsPlanDetail::getShipmentsTime)
@@ -6,6 +6,7 @@ import com.lframework.starter.web.core.service.BaseMpService; @@ -6,6 +6,7 @@ import com.lframework.starter.web.core.service.BaseMpService;
6 import com.lframework.starter.web.core.components.resp.PageResult; 6 import com.lframework.starter.web.core.components.resp.PageResult;
7 7
8 import java.time.LocalDate; 8 import java.time.LocalDate;
  9 +import java.time.LocalDateTime;
9 import java.util.List; 10 import java.util.List;
10 import java.util.Map; 11 import java.util.Map;
11 12
@@ -126,4 +127,16 @@ public interface ShipmentsOrderInfoService extends BaseMpService<ShipmentsOrderI @@ -126,4 +127,16 @@ public interface ShipmentsOrderInfoService extends BaseMpService<ShipmentsOrderI
126 * @return List<ShipmentsOrderInfo> 127 * @return List<ShipmentsOrderInfo>
127 */ 128 */
128 List<ShipmentsOrderInfo> queryByShipmentDate(LocalDate shipmentDate); 129 List<ShipmentsOrderInfo> queryByShipmentDate(LocalDate shipmentDate);
  130 +
  131 + /**
  132 + * 生成流水号
  133 + *
  134 + * @param pre 流水号前缀
  135 + * @param key 缓存key
  136 + * @param format 时间格式
  137 + * @param startTime 缓存开始时间
  138 + * @param endTime 缓存到期时间
  139 + * @return String
  140 + */
  141 + String generateSerialNumber(String pre, String key, String format, LocalDateTime startTime, LocalDateTime endTime);
129 } 142 }
1 package com.lframework.xingyun.sc.utils; 1 package com.lframework.xingyun.sc.utils;
2 2
3 import com.lframework.starter.common.exceptions.impl.DefaultClientException; 3 import com.lframework.starter.common.exceptions.impl.DefaultClientException;
4 -import com.lframework.starter.web.core.utils.ApplicationUtil;  
5 import lombok.extern.slf4j.Slf4j; 4 import lombok.extern.slf4j.Slf4j;
6 import org.apache.commons.collections4.CollectionUtils; 5 import org.apache.commons.collections4.CollectionUtils;
7 -import org.apache.commons.lang3.StringUtils;  
8 -import org.springframework.data.redis.core.RedisTemplate;  
9 6
10 import java.io.*; 7 import java.io.*;
11 import java.math.BigDecimal; 8 import java.math.BigDecimal;
@@ -15,7 +12,6 @@ import java.time.format.DateTimeFormatter; @@ -15,7 +12,6 @@ import java.time.format.DateTimeFormatter;
15 import java.util.ArrayList; 12 import java.util.ArrayList;
16 import java.util.Collections; 13 import java.util.Collections;
17 import java.util.List; 14 import java.util.List;
18 -import java.util.concurrent.TimeUnit;  
19 15
20 @Slf4j 16 @Slf4j
21 public class CommonUtil { 17 public class CommonUtil {
@@ -170,38 +166,4 @@ public class CommonUtil { @@ -170,38 +166,4 @@ public class CommonUtil {
170 } 166 }
171 return String.valueOf(num); 167 return String.valueOf(num);
172 } 168 }
173 -  
174 -  
175 - /**  
176 - * 生成流水号  
177 - *  
178 - * @param pre 流水号前缀  
179 - * @param key 缓存key  
180 - * @param format 时间格式  
181 - * @param startTime 缓存开始时间  
182 - * @param endTime 缓存到期时间  
183 - * @return String  
184 - */  
185 - public static String generateSerialNumber(String pre, String key, String format, LocalDateTime startTime, LocalDateTime endTime) {  
186 - // 1. 获取当前时间,并做格式化处理  
187 - String datePart = LocalDate.now().format(DateTimeFormatter.ofPattern(format));  
188 - // 2. Redis自增序列  
189 - RedisTemplate redisTemplate = ApplicationUtil.getBean(RedisTemplate.class);  
190 - Long id = redisTemplate.opsForValue().increment(key, 1);  
191 - if (id != null && id == 1) {  
192 - // 计算时间差(秒)  
193 - long secondsUntilMidnight = Duration.between(startTime, endTime).getSeconds();  
194 - redisTemplate.expire(key, secondsUntilMidnight, TimeUnit.SECONDS);  
195 - }  
196 - // 3. 补零到4位  
197 - String incrPart = String.format("%04d", id);  
198 - // 4. 拼接最终结果  
199 - String result = "";  
200 - if (StringUtils.isBlank(pre)) {  
201 - result = datePart + incrPart;  
202 - } else {  
203 - result = pre + datePart + incrPart;  
204 - }  
205 - return result;  
206 - }  
207 } 169 }