1、部分接口板件孔/造型数量sql规范性修正、部分接口排版面字段补充;2、禅道bug#1679修复;3、需求#37实现;

This commit is contained in:
gaoqr
2026-06-15 17:08:40 +08:00
parent d800ea36ea
commit 0a523b3a5e
25 changed files with 440 additions and 145 deletions
@@ -87,6 +87,11 @@
<artifactId>cf-spring-boot-starter-test</artifactId> <artifactId>cf-spring-boot-starter-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- Job 定时任务相关 -->
<dependency>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-job</artifactId>
</dependency>
<!-- 工具类相关 --> <!-- 工具类相关 -->
<dependency> <dependency>
<groupId>com.cf.imes</groupId> <groupId>com.cf.imes</groupId>
@@ -67,6 +67,9 @@ public class PackageDetailsRespVO {
@Schema(description = "是否有孔") @Schema(description = "是否有孔")
private Boolean isRowHole; private Boolean isRowHole;
@Schema(description = "排版面")
private Integer holeArrange;
@Schema(description = "加工组") @Schema(description = "加工组")
private String processGroup; private String processGroup;
@@ -113,7 +113,7 @@ public class OrderViewPlatePageRespVO {
private Boolean isRowHole; private Boolean isRowHole;
@Schema(description = "排版面") @Schema(description = "排版面")
private Integer holeFace; private Integer holeArrange;
@Schema(description = "开门类型") @Schema(description = "开门类型")
private Integer openDoorType; private Integer openDoorType;
@@ -175,7 +175,7 @@ public class OrdersViewPlatesPageDO {
/** /**
* 排版面 * 排版面
*/ */
private Integer holeFace; private Integer holeArrange;
/** /**
* 开门类型 * 开门类型
@@ -224,4 +224,11 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
* @return * @return
*/ */
List<Long> getParentOrderIdsByGoodsIds(@Param("goodsIds") List<String> goodsId, @Param("orderIds") List<Long> orderIds); List<Long> getParentOrderIdsByGoodsIds(@Param("goodsIds") List<String> goodsId, @Param("orderIds") List<Long> orderIds);
/**
* 物理删除订单材质
*
* @return
*/
int physicalDeleteByOrderIds(@Param("ids") List<Long> ids);
} }
@@ -261,11 +261,18 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
.eqIfPresent(OrderDO::getId, id)); .eqIfPresent(OrderDO::getId, id));
} }
// 查询修改时间距离当天日期为30的订单 /**
default List<Long> selectOrderListByUpdateTime() { * 查询修改时间距离当天日期为30的订单
*
* @param organId
* @return
*/
default List<Long> selectOrderListByUpdateTime(Long organId) {
return selectList(new LambdaQueryWrapper<OrderDO>() return selectList(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getDeleted, OrderDeletedEnum.DELETED.getStatus()) .eq(OrderDO::getDeleted, OrderDeletedEnum.DELETED.getStatus())
.lt(OrderDO::getUpdateTime, LocalDateTime.now().minusDays(30))).stream().map(OrderDO::getId).toList(); .lt(OrderDO::getUpdateTime, LocalDateTime.now().minusDays(30))
.eq(OrderDO::getOrganId, organId)
).stream().map(OrderDO::getId).toList();
} }
default int updateOrderListStatus(List<Long> orderIds, Integer status,Long organId) { default int updateOrderListStatus(List<Long> orderIds, Integer status,Long organId) {
@@ -393,4 +400,11 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
* @return * @return
*/ */
List<OrderPackNumDO> selectPackPartsNum(@Param("orderIds") Collection<Long> orderIds); List<OrderPackNumDO> selectPackPartsNum(@Param("orderIds") Collection<Long> orderIds);
/**
* 物理删除订单
*
* @return
*/
int physicalDeleteByOrderIds(@Param("orderIds") List<Long> orderIds);
} }
@@ -204,4 +204,11 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
* @return * @return
*/ */
List<OrderBodyPlateNumDO> selectPlateNumAndArea(@Param("orderBodyIds") Collection<Long> orderBodyIds, @Param("delete") Boolean delete); List<OrderBodyPlateNumDO> selectPlateNumAndArea(@Param("orderBodyIds") Collection<Long> orderBodyIds, @Param("delete") Boolean delete);
/**
* 物理删除订单材质
*
* @return
*/
int physicalDeleteByOrderIds(@Param("ids") List<Long> ids);
} }
@@ -152,4 +152,10 @@ public interface OrderGroupMapper extends BaseMapperX<OrderGroupDO> {
List<OrderIds> selectFilterGoodsPlateList(@Param(Constants.WRAPPER) Wrapper<OrderGroupDO> wrapper); List<OrderIds> selectFilterGoodsPlateList(@Param(Constants.WRAPPER) Wrapper<OrderGroupDO> wrapper);
/**
* 物理删除订单材质
*
* @return
*/
int physicalDeleteByOrderIds(@Param("ids") List<Long> ids);
} }
@@ -352,4 +352,11 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
@Param("pageSize") int pageSize, @Param("pageSize") int pageSize,
@Param("bodyIds") Set<Long> bodyIds, @Param("bodyIds") Set<Long> bodyIds,
@Param("compIds") Set<Long> componentIds); @Param("compIds") Set<Long> componentIds);
/**
* 物理删除订单材质
*
* @return
*/
int physicalDeleteByOrderIds(@Param("ids") List<Long> ids);
} }
@@ -151,4 +151,10 @@ public interface OrderPartsMapper extends BaseMapperX<OrderPartsDO> {
List<LabelOrderPartsData> selectLabelOrderPartsData(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId); List<LabelOrderPartsData> selectLabelOrderPartsData(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
/**
* 物理删除订单配件
*
* @return
*/
int physicalDeleteByOrderIds(@Param("ids") List<Long> ids);
} }
@@ -88,4 +88,11 @@ public interface OrderComponentMapper extends BaseMapperX<OrderComponentDO> {
* @param componentIds * @param componentIds
*/ */
void updateOrderComponentsDeletedStatus(@Param("orderId") Long orderId, @Param("componentIds") List<Long> componentIds, @Param("delete") boolean delete); void updateOrderComponentsDeletedStatus(@Param("orderId") Long orderId, @Param("componentIds") List<Long> componentIds, @Param("delete") boolean delete);
/**
* 物理删除订单
*
* @return
*/
int physicalDeleteByOrderIds(@Param("ids") List<Long> id);
} }
@@ -458,4 +458,11 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
* @return * @return
*/ */
IPage<OrdersViewPlatesPageDO> selectPlanPlateInfoPage(@Param("page") IPage<OrdersViewPlatesPageDO> page, @Param("planIds") List<Long> planIds, @Param("orderIds") Set<Long> orderIds); IPage<OrdersViewPlatesPageDO> selectPlanPlateInfoPage(@Param("page") IPage<OrdersViewPlatesPageDO> page, @Param("planIds") List<Long> planIds, @Param("orderIds") Set<Long> orderIds);
/**
* 物理删除订单材质
*
* @return
*/
int physicalDeleteByOrderIds(@Param("ids") List<Long> ids);
} }
@@ -150,19 +150,19 @@ public class OrderInfoVersionControlServiceImpl implements OrderInfoVersionContr
.collect(Collectors.toMap(OrderDO::getId, Function.identity())); .collect(Collectors.toMap(OrderDO::getId, Function.identity()));
List<OrderPackNumDO> orderPackPlateNumDOS = orderMapper.selectPackPlateNum(orderIds); List<OrderPackNumDO> orderPackPlateNumDOS = orderMapper.selectPackPlateNum(orderIds);
List<OrderPackNumDO> orderPackPartsNumDOS = orderMapper.selectPackPartsNum(orderIds); // List<OrderPackNumDO> orderPackPartsNumDOS = orderMapper.selectPackPartsNum(orderIds);
Map<Long, Integer> orderPackPartsNumMap = new HashMap<>(); // Map<Long, Integer> orderPackPartsNumMap = new HashMap<>();
if (CollUtil.isNotEmpty(orderPackPartsNumDOS)) { // if (CollUtil.isNotEmpty(orderPackPartsNumDOS)) {
orderPackPartsNumMap = orderPackPartsNumDOS.stream() // orderPackPartsNumMap = orderPackPartsNumDOS.stream()
.collect(Collectors.toMap(OrderPackNumDO::getOrderId, OrderPackNumDO::getPartsNum)); // .collect(Collectors.toMap(OrderPackNumDO::getOrderId, OrderPackNumDO::getPartsNum));
} // }
for (OrderPackNumDO orderPackPlateNumDO : orderPackPlateNumDOS) { for (OrderPackNumDO orderPackPlateNumDO : orderPackPlateNumDOS) {
Long orderId = orderPackPlateNumDO.getOrderId(); Long orderId = orderPackPlateNumDO.getOrderId();
// 当前订单下已打包板件 // 当前订单下已打包板件
Integer plateNum = orderPackPlateNumDO.getPlateNum(); Integer plateNum = orderPackPlateNumDO.getPlateNum();
// 当前订单下已打包配件 // // 当前订单下已打包配件
Integer partsNum = orderPackPartsNumMap.getOrDefault(orderId, 0); // Integer partsNum = orderPackPartsNumMap.getOrDefault(orderId, 0);
OrderDO orderDO = orderMap.get(orderId); OrderDO orderDO = orderMap.get(orderId);
@@ -175,7 +175,7 @@ public class OrderInfoVersionControlServiceImpl implements OrderInfoVersionContr
.eq(OrderDO::getId, orderId) .eq(OrderDO::getId, orderId)
.eq(OrderDO::getVersion, version) .eq(OrderDO::getVersion, version)
.set(OrderDO::getPackedPlatesCount, plateNum) .set(OrderDO::getPackedPlatesCount, plateNum)
.set(OrderDO::getPackedPartsCount, partsNum) // .set(OrderDO::getPackedPartsCount, partsNum)
.set(OrderDO::getVersion, version + 1); .set(OrderDO::getVersion, version + 1);
int update = orderMapper.update(updateWrapper); int update = orderMapper.update(updateWrapper);
if (update == 0) { if (update == 0) {
@@ -230,4 +230,11 @@ public interface OrderService {
* @return * @return
*/ */
List<OrderPrintInfoRespVO> getOrderPrintInfo(List<Long> orderIds); List<OrderPrintInfoRespVO> getOrderPrintInfo(List<Long> orderIds);
/**
* 订单作废超过30天清理
*
* @param organId
*/
void expireByOrganId(Long organId);
} }
@@ -7,10 +7,11 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.enums.DeletedCodeEnum; import com.cf.imes.framework.common.enums.DeletedCodeEnum;
import com.cf.imes.framework.common.enums.OrderPackageStatusEnum; import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
@@ -46,6 +47,7 @@ import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemTempDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemTempDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO; import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO; import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordercomponent.OrderComponentDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
@@ -61,6 +63,7 @@ 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.orderItem.OrderItemTempMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper;
import com.cf.imes.module.executor.dal.mysql.ordercomponent.OrderComponentMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import com.cf.imes.module.executor.dal.mysql.planitem.PlanItemMapper; import com.cf.imes.module.executor.dal.mysql.planitem.PlanItemMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
@@ -81,11 +84,13 @@ import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail;
import com.cf.imes.module.executor.util.elasticsearch.EsUtils; import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataTypeVo; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataTypeVo;
import com.cf.imes.module.infra.api.file.FileApi; import com.cf.imes.module.infra.api.file.FileApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -116,6 +121,7 @@ import static com.cf.imes.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS;
*/ */
@Service @Service
@Validated @Validated
@Slf4j
public class OrderServiceImpl implements OrderService { public class OrderServiceImpl implements OrderService {
@Resource @Resource
@@ -151,9 +157,6 @@ public class OrderServiceImpl implements OrderService {
@Resource @Resource
private OrderInputProcessor orderInputProcessor; private OrderInputProcessor orderInputProcessor;
@Resource
private IdentifierGenerator identifierGenerator;
@Resource @Resource
private PartsMapper partsMapper; private PartsMapper partsMapper;
@@ -183,6 +186,9 @@ public class OrderServiceImpl implements OrderService {
@Lazy @Lazy
private PackService packService; private PackService packService;
@Resource
private OrderComponentMapper orderComponentMapper;
@Resource @Resource
private OrderInfoVersionControlService orderInfoVersionControlService; private OrderInfoVersionControlService orderInfoVersionControlService;
@@ -932,11 +938,6 @@ public class OrderServiceImpl implements OrderService {
orderMapper.deleteOrder(orderId, getUserOrganId()); // 订单删除 orderMapper.deleteOrder(orderId, getUserOrganId()); // 订单删除
// 删除板材的造型数据 es
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL.getIndex());
// 删除备注信息 es
orderInputProcessor.deleteByOrderId(orderId, ORDER_PARTS_REMARK_MODEL.getIndex());
} }
/** /**
@@ -1899,4 +1900,219 @@ public class OrderServiceImpl implements OrderService {
); );
return BeanUtil.copyToList(orderDOS, OrderPrintInfoRespVO.class); return BeanUtil.copyToList(orderDOS, OrderPrintInfoRespVO.class);
} }
@Override
@DS("imes_prod")
@Transactional(
rollbackFor = Exception.class,
propagation = Propagation.REQUIRES_NEW)
public void expireByOrganId(Long organId) {
try {
List<Long> orderDOList = orderMapper.selectOrderListByUpdateTime(organId);
if (CollUtil.isNotEmpty(orderDOList)) {
// 每10条订单删除一次
List<List<Long>> split = CollUtil.split(orderDOList, 10);
// 订单各种组成每1000条删除一次,直到完全删除
for (List<Long> orderIdBatch : split) {
goodsClean(orderIdBatch);
orderBodyClean(orderDOList);
orderGroupClean(orderDOList);
orderPartsClean(orderDOList);
orderItemClean(orderDOList);
plateClean(orderDOList);
orderComponentClean(orderDOList);
orderClean(orderDOList);
}
System.out.println("=======1清理1111111111111111");
}
} catch (Exception e) {
log.error("订单作废30天清理异常,组织{}", organId, e);
}
}
/**
* 物理删除订单材质
*
* @param orderIds
*/
public void goodsClean(List<Long> orderIds) {
while (true) {
List<Long> ids = goodsMapper.selectList(
Wrappers.<GoodsDO>lambdaQuery()
.select(GoodsDO::getId)
.in(GoodsDO::getOrderId, orderIds)
.last("limit 1000")
).stream()
.map(GoodsDO::getId)
.toList();
if (ids.isEmpty()) {
break;
}
goodsMapper.physicalDeleteByOrderIds(ids);
}
}
/**
* 物理删除订单柜体
*
* @param orderIds
*/
public void orderBodyClean(List<Long> orderIds) {
while (true) {
List<Long> ids = orderBodyMapper.selectList(
Wrappers.<OrderBodyDO>lambdaQuery()
.select(OrderBodyDO::getId)
.in(OrderBodyDO::getOrderId, orderIds)
.last("limit 1000")
).stream()
.map(OrderBodyDO::getId)
.toList();
if (ids.isEmpty()) {
break;
}
orderBodyMapper.physicalDeleteByOrderIds(ids);
}
}
/**
* 物理删除订单加工组
*
* @param orderIds
*/
public void orderGroupClean(List<Long> orderIds) {
while (true) {
List<Long> ids = orderGroupMapper.selectList(
Wrappers.<OrderGroupDO>lambdaQuery()
.select(OrderGroupDO::getId)
.in(OrderGroupDO::getOrderId, orderIds)
.last("limit 1000")
).stream()
.map(OrderGroupDO::getId)
.toList();
if (ids.isEmpty()) {
break;
}
orderGroupMapper.physicalDeleteByOrderIds(ids);
}
}
/**
* 物理删除订单配件
*
* @param orderIds
*/
public void orderPartsClean(List<Long> orderIds) {
while (true) {
List<Long> ids = orderPartsMapper.selectList(
Wrappers.<OrderPartsDO>lambdaQuery()
.select(OrderPartsDO::getId)
.in(OrderPartsDO::getOrderId, orderIds)
.last("limit 1000")
).stream()
.map(OrderPartsDO::getId)
.toList();
if (ids.isEmpty()) {
break;
}
orderPartsMapper.physicalDeleteByOrderIds(ids);
}
}
/**
* 物理删除订单关联明细
*
* @param orderIds
*/
public void orderItemClean(List<Long> orderIds) {
while (true) {
List<Long> ids = orderItemMapper.selectList(
Wrappers.<OrderItemDO>lambdaQuery()
.select(OrderItemDO::getId)
.in(OrderItemDO::getOrderId, orderIds)
.last("limit 1000")
).stream()
.map(OrderItemDO::getId)
.toList();
if (ids.isEmpty()) {
break;
}
orderItemMapper.physicalDeleteByOrderIds(ids);
}
}
/**
* 物理删除订单板件
*
* @param orderIds
*/
public void plateClean(List<Long> orderIds) {
while (true) {
List<Long> ids = plateMapper.selectList(
Wrappers.<PlateDO>lambdaQuery()
.select(PlateDO::getId)
.in(PlateDO::getOrderId, orderIds)
.last("limit 1000")
).stream()
.map(PlateDO::getId)
.toList();
if (ids.isEmpty()) {
break;
}
plateMapper.physicalDeleteByOrderIds(ids);
}
}
/**
* 物理删除订单部件
*
* @param orderIds
*/
public void orderComponentClean(List<Long> orderIds) {
while (true) {
List<Long> ids = orderComponentMapper.selectList(
Wrappers.<OrderComponentDO>lambdaQuery()
.select(OrderComponentDO::getId)
.in(OrderComponentDO::getOrderId, orderIds)
.last("limit 1000")
).stream()
.map(OrderComponentDO::getId)
.toList();
if (ids.isEmpty()) {
break;
}
orderComponentMapper.physicalDeleteByOrderIds(ids);
}
}
/**
* 物理删除订单
*
* @param orderIds
*/
public void orderClean(List<Long> orderIds) {
while (true) {
List<Long> ids = orderMapper.selectList(
Wrappers.<OrderDO>lambdaQuery()
.select(OrderDO::getId)
.in(OrderDO::getId, orderIds)
.last("limit 1000")
).stream()
.map(OrderDO::getId)
.toList();
if (ids.isEmpty()) {
break;
}
orderMapper.physicalDeleteByOrderIds(ids);
}
}
} }
@@ -0,0 +1,27 @@
package com.cf.imes.module.executor.service.order.intervalometer;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.framework.organ.core.job.OrganJob;
import com.cf.imes.module.executor.service.order.OrderService;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import jakarta.annotation.Resource;
/**
* 订单定时处理器
*/
@Slf4j
@Component
public class OrderInvalidCleanJob {
@Resource
private OrderService orderService;
@XxlJob("orderInvalidCleanJob")
@OrganJob
public void execute() {
orderService.expireByOrganId(OrganContextHolder.getOrganId());
}
}
@@ -1,87 +0,0 @@
package com.cf.imes.module.executor.service.order.intervalometer;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
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.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
import com.cf.imes.module.executor.service.order.OrderInputProcessor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import jakarta.annotation.Resource;
import java.util.List;
import static com.cf.imes.module.executor.enums.EsIndexEnum.ORDER_PARTS_REMARK_MODEL;
import static com.cf.imes.module.executor.enums.EsIndexEnum.ORDER_PLATE_MODEL;
/**
* 订单定时处理器
*/
@Slf4j
@Component
@DS("slave")
public class OrderScheduledImpl {
@Resource
private OrderMapper orderMapper;
@Resource
private RawGoodsMapper rawGoodsMapper;
@Resource
private GoodsMapper goodsMapper;
@Resource
private OrderPartsMapper orderPartsMapper;
@Resource
private PlateMapper plateMapper;
@Resource
private OrderBodyMapper orderBodyMapper;
@Resource
private OrderGroupMapper orderGroupMapper;
@Resource
private OrderItemMapper orderItemMapper;
@Resource
private OrderInputProcessor orderInputProcessor;
// @Scheduled(cron = "0 0 2 * * ?")
@OrganIgnore
@Transactional(rollbackFor = Exception.class)
public void fixedDeletedOrder() {
List<Long> orderDOList = orderMapper.selectOrderListByUpdateTime();
// 作废 订单表,bodygroupgoodspartsplateraw_goodsitem
rawGoodsMapper.deleteBatch(orderDOList);
goodsMapper.deleteBatch(orderDOList);
orderItemMapper.deleteBatch(orderDOList);
orderBodyMapper.deleteBatch(orderDOList);
orderGroupMapper.deleteBatch(orderDOList);
orderPartsMapper.deleteBatch(orderDOList);
plateMapper.deleteBatch(orderDOList);
orderMapper.deleteBatchIds(orderDOList); // 订单删除
// 删除板材的造型数据 es
orderInputProcessor.deleteByOrderId(orderDOList, ORDER_PLATE_MODEL.getIndex());
// 删除备注信息 es
orderInputProcessor.deleteByOrderId(orderDOList, ORDER_PARTS_REMARK_MODEL.getIndex());
}
}
@@ -621,5 +621,13 @@
</select> </select>
<delete id="physicalDeleteByOrderIds">
delete from order_goods
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper> </mapper>
@@ -934,7 +934,7 @@
</select> </select>
<select id="selectPackPlateNum" resultType="com.cf.imes.module.executor.dal.dataobject.order.OrderPackNumDO"> <select id="selectPackPlateNum" resultType="com.cf.imes.module.executor.dal.dataobject.order.OrderPackNumDO">
select o.id as orderId, count(oi.plate_id) as plateNum select o.id as orderId, count(distinct oi.plate_id) as plateNum
from orders o from orders o
left join order_item oi left join order_item oi
on o.organ_id = oi.organ_id on o.organ_id = oi.organ_id
@@ -964,4 +964,12 @@
) t ) t
group by order_id group by order_id
</select> </select>
<delete id="physicalDeleteByOrderIds">
delete from orders
where id in
<foreach item="orderIds" collection="orderIds" open="(" separator="," close=")">
#{orderIds}
</foreach>
</delete>
</mapper> </mapper>
@@ -95,4 +95,12 @@
</foreach> </foreach>
GROUP BY oi.body_id GROUP BY oi.body_id
</select> </select>
<delete id="physicalDeleteByOrderIds">
delete from order_body
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper> </mapper>
@@ -101,4 +101,11 @@
</select> </select>
<delete id="physicalDeleteByOrderIds">
delete from order_group
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper> </mapper>
@@ -1027,4 +1027,12 @@
LIMIT #{pageSize} LIMIT #{pageSize}
</select> </select>
<delete id="physicalDeleteByOrderIds">
delete from order_item
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper> </mapper>
@@ -629,4 +629,12 @@
and op.id = #{partsId}; and op.id = #{partsId};
</update> </update>
<delete id="physicalDeleteByOrderIds">
delete from order_parts
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper> </mapper>
@@ -151,4 +151,12 @@
</foreach> </foreach>
and deleted != #{delete} and deleted != #{delete}
</update> </update>
<delete id="physicalDeleteByOrderIds">
delete from order_component
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper> </mapper>
@@ -472,7 +472,7 @@
op.open_door_type as openDoorType, op.open_door_type as openDoorType,
op.offset_x as offsetX, op.offset_x as offsetX,
op.offset_y as offsetY, op.offset_y as offsetY,
(op.unregular_point_count > 0 ) AS isSpecialShaped, CASE WHEN op.unregular_point_count > 0 THEN 1 ELSE 0 END AS isSpecialShaped,
op.is_sculpt as isSculpt, op.is_sculpt as isSculpt,
op.is_side_sculpt AS sideModel, op.is_side_sculpt AS sideModel,
op.is_row_hole as isRowHole, op.is_row_hole as isRowHole,
@@ -480,13 +480,13 @@
op.model_data as modelData, op.model_data as modelData,
op.is_2v as is2v, op.is_2v as is2v,
op.is_side_2v as isSide2v, op.is_side_2v as isSide2v,
(op.front_model_count > 0 AND op.back_model_count > 0) AS doubleSideModel, CASE WHEN op.front_model_count > 0 AND op.back_model_count > 0 THEN 1 ELSE 0 END AS doubleSideModel,
(op.front_hole_count > 0 AND op.back_hole_count > 0) AS doubleSideHole, CASE WHEN op.front_hole_count > 0 AND op.back_hole_count > 0 THEN 1 ELSE 0 END AS doubleSideHole,
(op.front_model_count > 0) AS frontModel, CASE WHEN op.front_model_count > 0 THEN 1 ELSE 0 END AS frontModel,
(op.back_model_count > 0) AS backModel, CASE WHEN op.back_model_count > 0 THEN 1 ELSE 0 END AS backModel,
(op.front_hole_count > 0) AS frontHole, CASE WHEN op.front_hole_count > 0 THEN 1 ELSE 0 END AS frontHole,
(op.back_hole_count > 0) AS backHole, CASE WHEN op.back_hole_count > 0 THEN 1 ELSE 0 END AS backHole,
(op.side_hole_count > 0) AS sideHole CASE WHEN op.side_hole_count > 0 THEN 1 ELSE 0 END AS sideHole
FROM order_plate op FROM order_plate op
@@ -588,20 +588,20 @@
op.open_door_type as openDoorType, op.open_door_type as openDoorType,
op.offset_x as offsetX, op.offset_x as offsetX,
op.offset_y as offsetY, op.offset_y as offsetY,
(op.unregular_point_count > 0 ) AS isSpecialShaped, CASE WHEN op.unregular_point_count > 0 THEN 1 ELSE 0 END AS isSpecialShaped,
op.is_sculpt as isSculpt, op.is_sculpt as isSculpt,
op.is_row_hole as isRowHole, op.is_row_hole as isRowHole,
op.remark as remark, op.remark as remark,
op.model_data as modelData, op.model_data as modelData,
op.is_2v as is2v, op.is_2v as is2v,
op.is_side_2v as isSide2v, op.is_side_2v as isSide2v,
(op.front_model_count > 0 AND op.back_model_count > 0) AS doubleSideModel, CASE WHEN op.front_model_count > 0 AND op.back_model_count > 0 THEN 1 ELSE 0 END AS doubleSideModel,
(op.front_hole_count > 0 AND op.back_hole_count > 0) AS doubleSideHole, CASE WHEN op.front_hole_count > 0 AND op.back_hole_count > 0 THEN 1 ELSE 0 END AS doubleSideHole,
(op.front_model_count > 0) AS frontModel, CASE WHEN op.front_model_count > 0 THEN 1 ELSE 0 END AS frontModel,
(op.back_model_count > 0) AS backModel, CASE WHEN op.back_model_count > 0 THEN 1 ELSE 0 END AS backModel,
(op.front_hole_count > 0) AS frontHole, CASE WHEN op.front_hole_count > 0 THEN 1 ELSE 0 END AS frontHole,
(op.back_hole_count > 0) AS backHole, CASE WHEN op.back_hole_count > 0 THEN 1 ELSE 0 END AS backHole,
(op.side_hole_count > 0) AS sideHole CASE WHEN op.side_hole_count > 0 THEN 1 ELSE 0 END AS sideHole
FROM order_plate op FROM order_plate op
@@ -1507,21 +1507,21 @@
p.reserved_edge_down AS reservedEdgeDown, p.reserved_edge_down AS reservedEdgeDown,
p.area, p.area,
p.texture, p.texture,
(p.unregular_point_count > 0 ) AS isSpecialShaped, CASE WHEN p.unregular_point_count > 0 THEN 1 ELSE 0 END AS isSpecialShaped,
p.is_sculpt , p.is_sculpt ,
p.is_side_sculpt AS sideModel, p.is_side_sculpt AS sideModel,
p.is_row_hole, p.is_row_hole,
p.hole_face, p.hole_arrange,
p.open_door_type, p.open_door_type,
p.is_2v as is2v, p.is_2v as is2v,
p.is_side_2v as isSide2v, p.is_side_2v as isSide2v,
(p.front_model_count > 0 AND p.back_model_count > 0) AS doubleSideModel, CASE WHEN p.front_model_count > 0 AND p.back_model_count > 0 THEN 1 ELSE 0 END AS doubleSideModel,
(p.front_hole_count > 0 AND p.back_hole_count > 0) AS doubleSideHole, CASE WHEN p.front_hole_count > 0 AND p.back_hole_count > 0 THEN 1 ELSE 0 END AS doubleSideHole,
(p.front_model_count > 0) AS frontModel, CASE WHEN p.front_model_count > 0 THEN 1 ELSE 0 END AS frontModel,
(p.back_model_count > 0) AS backModel, CASE WHEN p.back_model_count > 0 THEN 1 ELSE 0 END AS backModel,
(p.front_hole_count > 0) AS frontHole, CASE WHEN p.front_hole_count > 0 THEN 1 ELSE 0 END AS frontHole,
(p.back_hole_count > 0) AS backHole, CASE WHEN p.back_hole_count > 0 THEN 1 ELSE 0 END AS backHole,
(p.side_hole_count > 0) AS sideHole, CASE WHEN p.side_hole_count > 0 THEN 1 ELSE 0 END AS sideHole,
p.split_height, p.split_height,
p.split_width, p.split_width,
og.material, og.material,
@@ -1644,21 +1644,21 @@
p.reserved_edge_down AS reservedEdgeDown, p.reserved_edge_down AS reservedEdgeDown,
p.area, p.area,
p.texture, p.texture,
(p.unregular_point_count > 0 ) AS isSpecialShaped, CASE WHEN p.unregular_point_count > 0 THEN 1 ELSE 0 END AS isSpecialShaped,
p.is_sculpt , p.is_sculpt ,
p.is_side_sculpt AS sideModel, p.is_side_sculpt AS sideModel,
p.is_row_hole, p.is_row_hole,
p.hole_face, p.hole_arrange,
p.open_door_type, p.open_door_type,
p.is_2v as is2v, p.is_2v as is2v,
p.is_side_2v as isSide2v, p.is_side_2v as isSide2v,
(p.front_model_count > 0 AND p.back_model_count > 0) AS doubleSideModel, CASE WHEN p.front_model_count > 0 AND p.back_model_count > 0 THEN 1 ELSE 0 END AS doubleSideModel,
(p.front_hole_count > 0 AND p.back_hole_count > 0) AS doubleSideHole, CASE WHEN p.front_hole_count > 0 AND p.back_hole_count > 0 THEN 1 ELSE 0 END AS doubleSideHole,
(p.front_model_count > 0) AS frontModel, CASE WHEN p.front_model_count > 0 THEN 1 ELSE 0 END AS frontModel,
(p.back_model_count > 0) AS backModel, CASE WHEN p.back_model_count > 0 THEN 1 ELSE 0 END AS backModel,
(p.front_hole_count > 0) AS frontHole, CASE WHEN p.front_hole_count > 0 THEN 1 ELSE 0 END AS frontHole,
(p.back_hole_count > 0) AS backHole, CASE WHEN p.back_hole_count > 0 THEN 1 ELSE 0 END AS backHole,
(p.side_hole_count > 0) AS sideHole, CASE WHEN p.side_hole_count > 0 THEN 1 ELSE 0 END AS sideHole,
p.split_height, p.split_height,
p.split_width, p.split_width,
og.material, og.material,
@@ -1678,6 +1678,14 @@
and p.deleted = false and p.deleted = false
</select> </select>
<delete id="physicalDeleteByOrderIds">
delete from order_plate
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<resultMap id="orderItemMap" type="com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.PackageDetailsRespVO"> <resultMap id="orderItemMap" type="com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.PackageDetailsRespVO">
<result property="packageNo" column="packageId"/> <result property="packageNo" column="packageId"/>
<result property="roomName" column="roomName"/> <result property="roomName" column="roomName"/>