Commit a269d4e9ef8a33c799cd19e6ec54fa85b3891484

Authored by 房远帅
1 parent 012a3d0d

发货:只处理今日应该发货但状态仍是未发货的数据,避免已签收/已发货的数据被重复处理

@@ -248,30 +248,36 @@ public class ShipmentsOrderInfoController extends DefaultBaseController { @@ -248,30 +248,36 @@ public class ShipmentsOrderInfoController extends DefaultBaseController {
248 @GetMapping("/dataHandler") 248 @GetMapping("/dataHandler")
249 @Scheduled(cron = "0 8 0 * * ?") 249 @Scheduled(cron = "0 8 0 * * ?")
250 public InvokeResult<Void> dataHandler() { 250 public InvokeResult<Void> dataHandler() {
251 - List<ShipmentsOrderInfo> shipmentsOrderInfoList = shipmentsOrderInfoService.queryByShipmentDate(LocalDate.now()); 251 + // 只处理今日应该发货但状态仍是未发货的数据,避免已签收/已发货的数据被重复处理
  252 + List<ShipmentsOrderInfo> shipmentsOrderInfoList = shipmentsOrderInfoService.queryUnShipmentsByShipmentDate(LocalDate.now());
252 if (CollectionUtils.isNotEmpty(shipmentsOrderInfoList)) { 253 if (CollectionUtils.isNotEmpty(shipmentsOrderInfoList)) {
253 for (ShipmentsOrderInfo orderInfo : shipmentsOrderInfoList) { 254 for (ShipmentsOrderInfo orderInfo : shipmentsOrderInfoList) {
254 - ShipmentsOrderInfo shipmentsOrderInfo = shipmentsOrderInfoService.findById(orderInfo.getId());  
255 - List<ShipmentsPlanDetail> detailList = shipmentsPlanDetailService.listByShipmentOrderId(shipmentsOrderInfo.getId());  
256 - if (CollectionUtils.isEmpty(detailList)) {  
257 - continue;  
258 - }  
259 - List<String> orderIds = new ArrayList<>();  
260 - List<String> orderSpecIds = new ArrayList<>();  
261 - List<String> detailIds = new ArrayList<>();  
262 - for (ShipmentsPlanDetail shipmentsPlanDetail : detailList) {  
263 - if (!orderIds.contains(shipmentsPlanDetail.getOrderId())) {  
264 - orderIds.add(shipmentsPlanDetail.getOrderId());  
265 - }  
266 - if (!orderSpecIds.contains(shipmentsPlanDetail.getOrderSpecId())) {  
267 - orderSpecIds.add(shipmentsPlanDetail.getOrderSpecId()); 255 + try {
  256 + ShipmentsOrderInfo shipmentsOrderInfo = shipmentsOrderInfoService.findById(orderInfo.getId());
  257 + List<ShipmentsPlanDetail> detailList = shipmentsPlanDetailService.listByShipmentOrderId(shipmentsOrderInfo.getId());
  258 + if (CollectionUtils.isEmpty(detailList)) {
  259 + continue;
268 } 260 }
269 - if (!detailIds.contains(shipmentsPlanDetail.getId())) {  
270 - detailIds.add(shipmentsPlanDetail.getId()); 261 + List<String> orderIds = new ArrayList<>();
  262 + List<String> orderSpecIds = new ArrayList<>();
  263 + List<String> detailIds = new ArrayList<>();
  264 + for (ShipmentsPlanDetail shipmentsPlanDetail : detailList) {
  265 + if (!orderIds.contains(shipmentsPlanDetail.getOrderId())) {
  266 + orderIds.add(shipmentsPlanDetail.getOrderId());
  267 + }
  268 + if (!orderSpecIds.contains(shipmentsPlanDetail.getOrderSpecId())) {
  269 + orderSpecIds.add(shipmentsPlanDetail.getOrderSpecId());
  270 + }
  271 + if (!detailIds.contains(shipmentsPlanDetail.getId())) {
  272 + detailIds.add(shipmentsPlanDetail.getId());
  273 + }
271 } 274 }
  275 + List<PurchaseOrderInfo> orderInfoList = purchaseOrderInfoService.listByIds(orderIds);
  276 + shipmentsOrderInfoService.handleData(shipmentsOrderInfo, orderInfoList, orderSpecIds, detailIds);
  277 + } catch (Exception e) {
  278 + // 单张发货单处理失败不影响其他发货单
  279 + log.error("定时任务处理发货单 [{}] 失败:{}", orderInfo.getId(), e.getMessage(), e);
272 } 280 }
273 - List<PurchaseOrderInfo> orderInfoList = purchaseOrderInfoService.listByIds(orderIds);  
274 - shipmentsOrderInfoService.handleData(shipmentsOrderInfo, orderInfoList, orderSpecIds, detailIds);  
275 } 281 }
276 } 282 }
277 return InvokeResultBuilder.success(); 283 return InvokeResultBuilder.success();
@@ -705,6 +705,47 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr @@ -705,6 +705,47 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
705 } 705 }
706 706
707 @Override 707 @Override
  708 + public List<ShipmentsOrderInfo> queryUnShipmentsByShipmentDate(LocalDate shipmentDate) {
  709 + // 只查未发货状态
  710 + LambdaQueryWrapper<ShipmentsOrderInfo> queryWrapper = Wrappers.lambdaQuery(ShipmentsOrderInfo.class);
  711 + queryWrapper.eq(ShipmentsOrderInfo::getStatus, "UN_SHIPMENTS");
  712 + if (shipmentDate != null) {
  713 + LocalDate finalShipmentDate = shipmentDate;
  714 + queryWrapper.and(wrapper -> wrapper
  715 + .eq(ShipmentsOrderInfo::getShipmentsDate, finalShipmentDate)
  716 + .or()
  717 + .eq(ShipmentsOrderInfo::getNewShipmentDate, finalShipmentDate));
  718 + } else {
  719 + shipmentDate = LocalDate.now();
  720 + queryWrapper.and(wrapper -> wrapper
  721 + .lt(ShipmentsOrderInfo::getShipmentsDate, LocalDate.now())
  722 + .or()
  723 + .lt(ShipmentsOrderInfo::getNewShipmentDate, LocalDate.now()));
  724 + }
  725 + List<ShipmentsOrderInfo> shipmentsOrderInfos = getBaseMapper().selectList(queryWrapper);
  726 + if (CollectionUtils.isEmpty(shipmentsOrderInfos)) {
  727 + return Collections.emptyList();
  728 + }
  729 + // 过滤掉不符合条件的数据
  730 + Iterator<ShipmentsOrderInfo> iterator = shipmentsOrderInfos.iterator();
  731 + while (iterator.hasNext()) {
  732 + ShipmentsOrderInfo next = iterator.next();
  733 + Boolean onTimeShipment = next.getOnTimeShipment();
  734 + if (BooleanUtils.isFalse(onTimeShipment)) {
  735 + LocalDate newShipmentDate = next.getNewShipmentDate();
  736 + if (newShipmentDate == null || newShipmentDate.isAfter(shipmentDate)) {
  737 + iterator.remove();
  738 + }
  739 + } else {
  740 + if (next.getShipmentsDate().isAfter(shipmentDate)) {
  741 + iterator.remove();
  742 + }
  743 + }
  744 + }
  745 + return shipmentsOrderInfos;
  746 + }
  747 +
  748 + @Override
708 public String generateSerialNumber(String pre, String key, String format, LocalDateTime startTime, LocalDateTime endTime) { 749 public String generateSerialNumber(String pre, String key, String format, LocalDateTime startTime, LocalDateTime endTime) {
709 // 获取当前时间,并做格式化处理 750 // 获取当前时间,并做格式化处理
710 String datePart = LocalDate.now().format(DateTimeFormatter.ofPattern(format)); 751 String datePart = LocalDate.now().format(DateTimeFormatter.ofPattern(format));
@@ -130,6 +130,14 @@ public interface ShipmentsOrderInfoService extends BaseMpService<ShipmentsOrderI @@ -130,6 +130,14 @@ public interface ShipmentsOrderInfoService extends BaseMpService<ShipmentsOrderI
130 List<ShipmentsOrderInfo> queryByShipmentDate(LocalDate shipmentDate); 130 List<ShipmentsOrderInfo> queryByShipmentDate(LocalDate shipmentDate);
131 131
132 /** 132 /**
  133 + * 根据发货日期获取未发货的数据
  134 + *
  135 + * @param shipmentDate 发货日期
  136 + * @return List<ShipmentsOrderInfo>
  137 + */
  138 + List<ShipmentsOrderInfo> queryUnShipmentsByShipmentDate(LocalDate shipmentDate);
  139 +
  140 + /**
133 * 生成流水号 141 * 生成流水号
134 * 142 *
135 * @param pre 流水号前缀 143 * @param pre 流水号前缀