订单管理、未排订单、分堆打包支持条件过滤作用到子单 mycat环境异常修复

This commit is contained in:
gaoqr
2026-05-25 18:28:07 +08:00
parent b223afe570
commit e40ef82eb5
4 changed files with 84 additions and 41 deletions
@@ -41,15 +41,13 @@ public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
/** /**
* 未排单子单查询 * 未排单子单查询
* *
* @param page
* @param wrapper * @param wrapper
* @param type * @param type
* @param orderGoodsIds 商品id列表 * @param orderGoodsIds 商品id列表
* @param orderIds 父级订单数组 * @param orderIds 父级订单数组
* @return * @return
*/ */
IPage<OrderRespVOCopy> selectOrderChildList(@Param("page") IPage<OrderRespVOCopy> page, List<OrderRespVOCopy> selectOrderChildList(@Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper,
@Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper,
@Param("type") int type, @Param("type") int type,
@Param("orderGoodsIds") List<Long> orderGoodsIds, @Param("orderGoodsIds") List<Long> orderGoodsIds,
@Param("orderIds") Long... orderIds); @Param("orderIds") Long... orderIds);
@@ -573,10 +573,7 @@ public class PlanServiceImpl implements PlanService {
if (CollUtil.isNotEmpty(mainOrderList)) { if (CollUtil.isNotEmpty(mainOrderList)) {
// 主单id列表 // 主单id列表
Long[] mainOrderIds = mainOrderList.stream().map(OrderRespVOCopy::getOrderId).toArray(Long[]::new); Long[] mainOrderIds = mainOrderList.stream().map(OrderRespVOCopy::getOrderId).toArray(Long[]::new);
PageDTO<OrderRespVOCopy> childPage = new PageDTO<>(pageReqVO.getPageNo(), PageParam.PAGE_SIZE_NONE); List<OrderRespVOCopy> childList = planItemMapper.selectOrderChildList(queryWrapperX, type, orderGoodsIds, mainOrderIds);
IPage<OrderRespVOCopy> childOrderList = planItemMapper.selectOrderChildList(childPage, queryWrapperX, type, orderGoodsIds, mainOrderIds);
List<OrderRespVOCopy> childList = childOrderList.getRecords();
if (CollUtil.isNotEmpty(childList)) { if (CollUtil.isNotEmpty(childList)) {
// 按 parentId 分组 // 按 parentId 分组
@@ -29,17 +29,22 @@
<select id="selectMainPage" resultType="com.cf.imes.module.executor.dal.dataobject.order.OrderDO"> <select id="selectMainPage" resultType="com.cf.imes.module.executor.dal.dataobject.order.OrderDO">
SELECT *
FROM orders o
WHERE o.parent_id = 0
AND o.id IN (
SELECT DISTINCT SELECT
CASE o.*
WHEN t.parent_id = 0 THEN t.id
ELSE t.parent_id FROM orders o
END AS root_id
JOIN (
SELECT
root_id
FROM (
SELECT
IF(t.parent_id = 0, t.id, t.parent_id) AS root_id
FROM orders t FROM orders t
WHERE 1 = 1 WHERE 1 = 1
<if test="reqVO.id != null and reqVO.id != ''"> <if test="reqVO.id != null and reqVO.id != ''">
@@ -124,7 +129,15 @@
AND t.deleted = #{reqVO.deleted} AND t.deleted = #{reqVO.deleted}
) ) tmp
GROUP BY root_id
) root_order
ON root_order.root_id = o.id
WHERE o.parent_id = 0
<choose> <choose>
@@ -197,6 +210,7 @@
</otherwise> </otherwise>
</choose> </choose>
</select> </select>
<select id="selectChildList" <select id="selectChildList"
@@ -812,7 +826,6 @@
<select id="selectPackOrderList" resultMap="PackMap" parameterType="map"> <select id="selectPackOrderList" resultMap="PackMap" parameterType="map">
SELECT SELECT
o.id, o.id,
o.order_type AS orderType, o.order_type AS orderType,
@@ -836,14 +849,14 @@
FROM orders o FROM orders o
WHERE o.id IN ( JOIN (
SELECT DISTINCT SELECT
root_id
FROM (
CASE SELECT
WHEN x.parent_id = 0 THEN x.id IF(x.parent_id = 0, x.id, x.parent_id) AS root_id
ELSE x.parent_id
END
FROM orders x FROM orders x
@@ -856,7 +869,8 @@
AND x.status IN (1,2,3,4) AND x.status IN (1,2,3,4)
<if test="pageReqVO.orderId != null and pageReqVO.orderId != ''"> <if test="pageReqVO.orderId != null and pageReqVO.orderId != ''">
AND CAST(x.id AS CHAR) LIKE CONCAT('%', #{pageReqVO.orderId}, '%') AND CAST(x.id AS CHAR)
LIKE CONCAT('%', #{pageReqVO.orderId}, '%')
</if> </if>
<if test="pageReqVO.status != null"> <if test="pageReqVO.status != null">
@@ -864,26 +878,36 @@
</if> </if>
<if test="pageReqVO.customOrderNo != null and pageReqVO.customOrderNo != ''"> <if test="pageReqVO.customOrderNo != null and pageReqVO.customOrderNo != ''">
AND x.custom_order_no LIKE CONCAT('%', #{pageReqVO.customOrderNo}, '%') AND x.custom_order_no
LIKE CONCAT('%', #{pageReqVO.customOrderNo}, '%')
</if> </if>
<if test="pageReqVO.customer != null and pageReqVO.customer != ''"> <if test="pageReqVO.customer != null and pageReqVO.customer != ''">
AND x.customer LIKE CONCAT('%', #{pageReqVO.customer}, '%') AND x.customer
LIKE CONCAT('%', #{pageReqVO.customer}, '%')
</if> </if>
<if test="pageReqVO.address != null and pageReqVO.address != ''"> <if test="pageReqVO.address != null and pageReqVO.address != ''">
AND x.address LIKE CONCAT('%', #{pageReqVO.address}, '%') AND x.address
LIKE CONCAT('%', #{pageReqVO.address}, '%')
</if> </if>
<if test="pageReqVO.dealer != null and pageReqVO.dealer != ''"> <if test="pageReqVO.dealer != null and pageReqVO.dealer != ''">
AND x.dealer LIKE CONCAT('%', #{pageReqVO.dealer}, '%') AND x.dealer
LIKE CONCAT('%', #{pageReqVO.dealer}, '%')
</if> </if>
</where> </where>
) ) tmp
AND o.parent_id = 0 GROUP BY root_id
) root_order
ON root_order.root_id = o.id
WHERE o.parent_id = 0
ORDER BY o.create_time DESC ORDER BY o.create_time DESC
@@ -19,6 +19,7 @@
</resultMap> </resultMap>
<select id="selectOrderList" resultMap="OrderPageMap"> <select id="selectOrderList" resultMap="OrderPageMap">
SELECT SELECT
o.id AS orderId, o.id AS orderId,
@@ -51,6 +52,7 @@
SUM(og.plate_num - og.planned_plate_num) AS num, SUM(og.plate_num - og.planned_plate_num) AS num,
SUM(og.area - og.planned_plate_area) AS area SUM(og.area - og.planned_plate_area) AS area
FROM order_goods og FROM order_goods og
WHERE og.plate_num - og.planned_plate_num > 0 WHERE og.plate_num - og.planned_plate_num > 0
<if test="orderGoodsIds != null and orderGoodsIds.size() > 0"> <if test="orderGoodsIds != null and orderGoodsIds.size() > 0">
@@ -70,22 +72,44 @@
</if> </if>
WHERE o.id IN ( JOIN (
SELECT DISTINCT SELECT
root_id
FROM (
CASE SELECT
WHEN x.parent_id = 0 THEN x.id IF(x.parent_id = 0, x.id, x.parent_id) AS root_id
ELSE x.parent_id
END
FROM orders x FROM orders x
${ew.customSqlSegment.replace('o.', 'x.')} <choose>
and IFNULL(x.plate_num,0) - IFNULL(x.planned_plate_num,0) > 0
)
AND o.parent_id = 0 <when test="ew != null and ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment.replace('o.', 'x.')}
AND IFNULL(x.plate_num,0) - IFNULL(x.planned_plate_num,0) > 0
</when>
<otherwise>
WHERE IFNULL(x.plate_num,0) - IFNULL(x.planned_plate_num,0) > 0
</otherwise>
</choose>
) tmp
GROUP BY root_id
) root_order
ON root_order.root_id = o.id
WHERE o.parent_id = 0
AND IFNULL(o.plate_num,0) - IFNULL(o.planned_plate_num,0) > 0 AND IFNULL(o.plate_num,0) - IFNULL(o.planned_plate_num,0) > 0