From 6097fd6ceaaaa8ade75a016a9b31467b2d062ec5 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Wed, 20 May 2026 12:16:07 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=85=E9=81=93bug#1548=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mysql/orderItem/OrderItemBatchMapper.java | 15 +++++ .../dal/mysql/orderItem/OrderItemMapper.java | 16 +++++ .../orderItem/OrderItemTempBatchMapper.java | 15 +++++ .../mysql/orderItem/OrderItemTempMapper.java | 24 ++++--- .../service/order/OrderServiceImpl.java | 62 +++++++++++++++++- .../OrderComponentServiceImpl.java | 65 ++++++++++++++++++- .../mapper/orderItem/OrderItemMapper.xml | 37 +++++++++++ .../mapper/orderItem/OrderItemTempMapper.xml | 48 +++++++------- 8 files changed, 240 insertions(+), 42 deletions(-) create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemBatchMapper.java create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemTempBatchMapper.java diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemBatchMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemBatchMapper.java new file mode 100644 index 000000000..5eab5eefd --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemBatchMapper.java @@ -0,0 +1,15 @@ +package com.cf.imes.module.executor.dal.mysql.orderItem; + +import com.cf.imes.framework.mybatis.core.injector.BaseBatchMapper; +import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * + * @author Gqr + * @since 2026/5/20 11:50 + */ +@Mapper +public interface OrderItemBatchMapper extends BaseBatchMapper { +} \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java index 82948b384..f1aaa4d30 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java @@ -299,4 +299,20 @@ public interface OrderItemMapper extends BaseMapperX { * @return */ List selectOrdersPrintPartsList(@Param("orderIds") List orderIds, @Param("componentIds") Set componentIds); + + /** + * 查询临时表所需数据 + * + * @param orderId + * @param organId + * @param bodyIds + * @param componentIds + * @return + */ + List selectOrderItemForTemp(@Param("orderId") Long orderId, + @Param("organId") Long organId, + @Param("lastId") Long lastId, + @Param("pageSize") int pageSize, + @Param("bodyIds") Set bodyIds, + @Param("compIds") Set componentIds); } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemTempBatchMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemTempBatchMapper.java new file mode 100644 index 000000000..b6d20c5e6 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemTempBatchMapper.java @@ -0,0 +1,15 @@ +package com.cf.imes.module.executor.dal.mysql.orderItem; + +import com.cf.imes.framework.mybatis.core.injector.BaseBatchMapper; +import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemTempDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * + * @author Gqr + * @since 2026/5/20 11:42 + */ +@Mapper +public interface OrderItemTempBatchMapper extends BaseBatchMapper { +} \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemTempMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemTempMapper.java index 15da78c1f..0af0932ec 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemTempMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemTempMapper.java @@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Set; /** * 订单明细临时表 order_item_temp Mapper @@ -16,21 +17,18 @@ import java.util.List; @Mapper public interface OrderItemTempMapper extends BaseMapper { /** - * 查询订单明细插入到明细临时表 + * 查询临时表所需数据 * * @param orderId + * @param organId * @param bodyIds - * @param compIds + * @param componentIds + * @return */ - void selectInsertOrderItemTemp(@Param("orderId") Long orderId, @Param("organId") Long organId, @Param("bodyIds") List bodyIds, @Param("compIds") List compIds); - - /** - * 查询订单明细临时插入到明细表 - * - * @param orderId - * @param bodyIds - * @param compIds - */ - void selectInsertOrderItem(@Param("orderId") Long orderId, @Param("organId") Long organId, @Param("bodyIds") List bodyIds, @Param("compIds") List compIds); - + List selectOrderItemTempForItem(@Param("orderId") Long orderId, + @Param("organId") Long organId, + @Param("lastId") Long lastId, + @Param("pageSize") int pageSize, + @Param("bodyIds") Set bodyIds, + @Param("compIds") Set componentIds); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index 7c42aafe8..817780eb6 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -54,7 +54,9 @@ import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.executor.dal.mysql.order.OrderMapper; import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper; import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper; +import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemBatchMapper; import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper; +import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemTempBatchMapper; import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemTempMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper; @@ -169,6 +171,12 @@ public class OrderServiceImpl implements OrderService { @Resource private OrderItemTempMapper orderItemTempMapper; + @Resource + private OrderItemBatchMapper orderItemBatchMapper; + + @Resource + private OrderItemTempBatchMapper orderItemTempBatchMapper; + @Resource @Lazy private PackService packService; @@ -471,7 +479,7 @@ public class OrderServiceImpl implements OrderService { } // order_item记录临时表 - orderItemTempMapper.selectInsertOrderItemTemp(orderId, organId, bodyIds, null); + copyOrderItemToTemp(orderId, organId, bodyIds.stream().collect(Collectors.toSet())); // order_item删除记录 orderItemMapper.delete(new LambdaQueryWrapper() @@ -491,6 +499,32 @@ public class OrderServiceImpl implements OrderService { orderInfoVersionControlService.updateOrderPlateNumAndArea(orderDO, true); } + /** + * 复制订单明细到临时表 + * + * @param orderId + * @param organId + * @param deleteIds + */ + private void copyOrderItemToTemp(Long orderId, Long organId, Set deleteIds) { + int pageSize = 1000; + long lastId = 0L; + + while (true) { + + List list = + orderItemMapper.selectOrderItemForTemp(orderId, organId, lastId, pageSize, deleteIds, null); + + if (CollUtil.isEmpty(list)) { + break; + } + + orderItemTempBatchMapper.insertBatchSomeColumn(BeanUtil.copyToList(list, OrderItemTempDO.class)); + + lastId = list.get(list.size() - 1).getId(); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void updateRestoreBody(Long orderId, Set roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0 @@ -525,7 +559,7 @@ public class OrderServiceImpl implements OrderService { } // order_item恢复临时记录 - orderItemTempMapper.selectInsertOrderItem(orderId, organId, bodyIds, null); + copyTempToOrderItem(orderId, organId, bodyIds.stream().collect(Collectors.toSet())); // order_item_temp删除记录 orderItemTempMapper.delete(new LambdaQueryWrapper() @@ -552,7 +586,31 @@ public class OrderServiceImpl implements OrderService { } + /** + * 复制订单明细到临时表 + * + * @param orderId + * @param organId + * @param deleteIds + */ + private void copyTempToOrderItem(Long orderId, Long organId, Set deleteIds) { + int pageSize = 1000; + long lastId = 0L; + while (true) { + + List list = + orderItemTempMapper.selectOrderItemTempForItem(orderId, organId, lastId, pageSize, deleteIds, null); + + if (CollUtil.isEmpty(list)) { + break; + } + + orderItemBatchMapper.insertBatchSomeColumn(BeanUtil.copyToList(list, OrderItemDO.class)); + + lastId = list.get(list.size() - 1).getId(); + } + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/ordercomponent/OrderComponentServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/ordercomponent/OrderComponentServiceImpl.java index 8cf308329..5e57fbd3f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/ordercomponent/OrderComponentServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/ordercomponent/OrderComponentServiceImpl.java @@ -35,7 +35,9 @@ import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.mysql.order.OrderMapper; import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper; +import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemBatchMapper; import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper; +import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemTempBatchMapper; import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemTempMapper; import com.cf.imes.module.executor.dal.mysql.ordercomponent.OrderComponentMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; @@ -96,6 +98,12 @@ public class OrderComponentServiceImpl implements OrderComponentService { @Resource private OrderItemTempMapper orderItemTempMapper; + @Resource + private OrderItemBatchMapper orderItemBatchMapper; + + @Resource + private OrderItemTempBatchMapper orderItemTempBatchMapper; + @Resource private FileApi fileApi; @@ -447,7 +455,7 @@ public class OrderComponentServiceImpl implements OrderComponentService { } // order_item记录临时表 - orderItemTempMapper.selectInsertOrderItemTemp(orderId, organId, null, deleteIds.stream().toList()); + copyOrderItemToTemp(orderId, organId, deleteIds); // order_item删除记录 orderItemMapper.delete(new LambdaQueryWrapper() @@ -472,6 +480,32 @@ public class OrderComponentServiceImpl implements OrderComponentService { orderInfoVersionControlService.updateOrderPlateNumAndArea(orderDO, true); } + /** + * 复制订单明细到临时表 + * + * @param orderId + * @param organId + * @param deleteIds + */ + private void copyOrderItemToTemp(Long orderId, Long organId, Set deleteIds) { + int pageSize = 1000; + long lastId = 0L; + + while (true) { + + List list = + orderItemMapper.selectOrderItemForTemp(orderId, organId, lastId, pageSize, null, deleteIds); + + if (CollUtil.isEmpty(list)) { + break; + } + + orderItemTempBatchMapper.insertBatchSomeColumn(BeanUtil.copyToList(list, OrderItemTempDO.class)); + + lastId = list.get(list.size() - 1).getId(); + } + } + /** * 解包和删除包裹 @@ -583,7 +617,7 @@ public class OrderComponentServiceImpl implements OrderComponentService { } // order_item恢复临时记录 - orderItemTempMapper.selectInsertOrderItem(orderId, organId, null, restoreIds.stream().toList()); + copyTempToOrderItem(orderId, organId, restoreIds); // order_item_temp删除记录 orderItemTempMapper.delete(new LambdaQueryWrapper() @@ -603,6 +637,33 @@ public class OrderComponentServiceImpl implements OrderComponentService { orderInfoVersionControlService.updateOrderPlateNumAndArea(orderDO, false); } + + /** + * 复制订单明细到临时表 + * + * @param orderId + * @param organId + * @param deleteIds + */ + private void copyTempToOrderItem(Long orderId, Long organId, Set deleteIds) { + int pageSize = 1000; + long lastId = 0L; + + while (true) { + + List list = + orderItemTempMapper.selectOrderItemTempForItem(orderId, organId, lastId, pageSize, null, deleteIds); + + if (CollUtil.isEmpty(list)) { + break; + } + + orderItemBatchMapper.insertBatchSomeColumn(BeanUtil.copyToList(list, OrderItemDO.class)); + + lastId = list.get(list.size() - 1).getId(); + } + } + /** * 累计必要数据 * diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml index cd8ba663f..3cbfd4f02 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml @@ -860,4 +860,41 @@ WHERE op.deleted = false ORDER BY op.id, op.type + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemTempMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemTempMapper.xml index 89432f03d..da9f04964 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemTempMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemTempMapper.xml @@ -1,42 +1,40 @@ - - INSERT INTO order_item_temp - SELECT * - FROM order_item - WHERE order_id = #{orderId} and organ_id = #{organId} - - AND body_id IN - - #{bodyId} - - - - AND comp_id IN - - #{compId} - - - AND source_id = 0 - + \ No newline at end of file