分堆打包mycat环境分堆异常修复;

This commit is contained in:
gaoqr
2026-04-28 11:30:45 +08:00
parent e11f8a40e0
commit 1896f175a6
3 changed files with 37 additions and 44 deletions
@@ -162,14 +162,6 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
void deleteOtherParts(@Param("partsId") Long partsId,@Param("orderId") Long orderId,@Param("organId") Long organId);
/**
* 更新板件item的分堆状态
*
* @param plateNos
* @param orderIds
* @param heapSplit true:没分堆改分堆、false:分堆改没分堆
*/
void updatePlatesItemHeapSplitStatus(@Param("plateNos") List<Long> plateNos, @Param("orderIds") List<Long> orderIds, @Param("heapSplit") boolean heapSplit);
void insertPartsId(@Param("packId") Long packId, @Param("addPartsIdList") List<Long> addPartsIdList,@Param("orderId") Long orderId,@Param("organId") Long organId);
@@ -2,8 +2,11 @@ package com.cf.imes.module.executor.service.heapsplit;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cf.imes.framework.common.enums.DeletedCodeEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.module.executor.controller.admin.manage.pack.heapsplit.HeapSplitSaveReqVO;
import com.cf.imes.module.executor.controller.admin.manage.pack.heapsplit.OrdersHeapSplitDetailRespVO;
@@ -11,6 +14,7 @@ import com.cf.imes.module.executor.controller.admin.manage.pack.vo.OrderPartsRes
import com.cf.imes.module.executor.controller.admin.manage.pack.vo.PackagePartsSaveReqVO;
import com.cf.imes.module.executor.controller.admin.manage.pack.vo.PlateDetailsRespVO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
@@ -55,6 +59,9 @@ public class HeapSplitServiceImpl implements HeapSplitService {
@Resource
private OrderService orderService;
@Resource
private PlateMapper orderPlateMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void saveHeapsplit(HeapSplitSaveReqVO reqVO) {
@@ -65,7 +72,21 @@ public class HeapSplitServiceImpl implements HeapSplitService {
if (CollUtil.isNotEmpty(plateNos)) {
List<List<Long>> platePartitions = CollUtil.split(plateNos, 1000);
for (List<Long> batch : platePartitions) {
orderItemMapper.updatePlatesItemHeapSplitStatus(batch, orderIds, true);
List<Long> plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper<PlateDO>()
.in(PlateDO::getPlateNo, batch)
.in(PlateDO::getOrderId, orderIds)
.eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
.select(PlateDO::getId)
).stream().map(PlateDO::getId).toList();
if (CollectionUtil.isEmpty(plateIds)) {
continue;
}
orderItemMapper.update(new LambdaUpdateWrapper<OrderItemDO>()
.in(OrderItemDO::getOrderId, orderIds)
.in(OrderItemDO::getPlateId, plateIds)
.eq(OrderItemDO::getHeapSplitStatus, HeapSplitStatusEnum.NO.getStatus())
.set(OrderItemDO::getHeapSplitStatus, HeapSplitStatusEnum.YES.getStatus())
);
}
}
@@ -74,7 +95,21 @@ public class HeapSplitServiceImpl implements HeapSplitService {
if (CollUtil.isNotEmpty(delPlateNos)) {
List<List<Long>> delPlatePartitions = CollUtil.split(delPlateNos, 1000);
for (List<Long> batch : delPlatePartitions) {
orderItemMapper.updatePlatesItemHeapSplitStatus(batch, orderIds, false);
List<Long> plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper<PlateDO>()
.in(PlateDO::getPlateNo, batch)
.in(PlateDO::getOrderId, orderIds)
.eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
.select(PlateDO::getId)
).stream().map(PlateDO::getId).toList();
if (CollectionUtil.isEmpty(plateIds)) {
continue;
}
orderItemMapper.update(new LambdaUpdateWrapper<OrderItemDO>()
.in(OrderItemDO::getOrderId, orderIds)
.in(OrderItemDO::getPlateId, plateIds)
.eq(OrderItemDO::getHeapSplitStatus, HeapSplitStatusEnum.YES.getStatus())
.set(OrderItemDO::getHeapSplitStatus, HeapSplitStatusEnum.NO.getStatus())
);
}
}
@@ -386,40 +386,6 @@
</delete>
<update id="updatePlatesItemHeapSplitStatus">
UPDATE order_item oi
JOIN order_plate op ON oi.order_id = op.order_id AND oi.plate_id = op.id
<choose>
<when test="heapSplit">
<set>
oi.heap_split_status = ${@com.cf.imes.module.executor.enums.heapsplit.HeapSplitStatusEnum@YES.status}
</set>
</when>
<otherwise>
<set>
oi.heap_split_status = ${@com.cf.imes.module.executor.enums.heapsplit.HeapSplitStatusEnum@NO.status}
</set>
</otherwise>
</choose>
where oi.order_id IN
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
#{orderId}
</foreach>
AND op.plate_no IN
<foreach item="plateNo" collection="plateNos" open="(" separator="," close=")">
#{plateNo}
</foreach>
AND
<choose>
<when test="heapSplit">
oi.heap_split_status = ${@com.cf.imes.module.executor.enums.heapsplit.HeapSplitStatusEnum@NO.status}
</when>
<otherwise>
oi.heap_split_status = ${@com.cf.imes.module.executor.enums.heapsplit.HeapSplitStatusEnum@YES.status}
</otherwise>
</choose>
</update>
<update id="insertPartsId" parameterType="java.lang.Long">