From 6a4497d2fcd015f73856ce0f75e2c2832362c88f Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期日, 04 五月 2025 16:54:33 +0800 Subject: [PATCH] 5.4问题修复 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java | 64 ++++++++++++++++++++++++++++++++ 1 files changed, 64 insertions(+), 0 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java index 820fe6e..5692412 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java @@ -1,15 +1,27 @@ package com.vincent.rsf.server.manager.schedules; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.manager.entity.AsnOrder; +import com.vincent.rsf.server.manager.entity.AsnOrderItem; +import com.vincent.rsf.server.manager.entity.AsnOrderItemLog; +import com.vincent.rsf.server.manager.entity.AsnOrderLog; +import com.vincent.rsf.server.manager.enums.AsnExceStatus; import com.vincent.rsf.server.manager.service.AsnOrderItemLogService; import com.vincent.rsf.server.manager.service.AsnOrderItemService; import com.vincent.rsf.server.manager.service.AsnOrderLogService; import com.vincent.rsf.server.manager.service.AsnOrderService; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; /** * @author Ryan @@ -21,6 +33,17 @@ @Component public class AsnOrderLogSchedule { + @Autowired + private AsnOrderService asnOrderService; + @Autowired + private AsnOrderItemService asnOrderItemService; + + @Autowired + private AsnOrderLogService asnOrderLogService; + + @Autowired + private AsnOrderItemLogService asnOrderItemLogService; + /** * @author Ryan * @description 鍒犻櫎宸插畬鎴愯鍗曞姞鍏og琛� @@ -31,6 +54,47 @@ @Scheduled(cron = "0 0/05 * * * ? ") @Transactional(rollbackFor = Exception.class) public void moveOrderToLog() { + List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val)); + if (asnOrders.isEmpty()) { + return; + } + Set<Long> longSet = asnOrders.stream().map(AsnOrder::getId).collect(Collectors.toSet()); + List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, longSet)); + if (orderItems.isEmpty()) { + throw new CoolException("鏀惰揣鏄庣粏涓虹┖锛侊紒"); + } + for (AsnOrder order : asnOrders) { + AsnOrderLog orderLog = new AsnOrderLog(); + BeanUtils.copyProperties(order, orderLog); + orderLog.setId(null); + orderLog.setAsnId(order.getId()); + + if (!asnOrderLogService.save(orderLog)) { + throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�"); + } + + List<AsnOrderItemLog> logs = new ArrayList<>(); + List<AsnOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId())); + items.forEach(item -> { + AsnOrderItemLog itemLog = new AsnOrderItemLog(); + BeanUtils.copyProperties(item, itemLog); + itemLog.setAsnItemId(itemLog.getId()) + .setLogId(orderLog.getId()) + .setAsnId(item.getAsnId()); + logs.add(itemLog); + }); + + if (!asnOrderItemLogService.saveBatch(logs)) { + throw new CoolException("閫氱煡鍗曟槑缁嗗巻鍙叉。淇濆瓨澶辫触锛侊紒"); + } + } + + if (!asnOrderItemService.remove(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, longSet))) { + throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�"); + } + if (!this.asnOrderService.removeByIds(longSet)) { + throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�"); + } } } -- Gitblit v1.9.1