订单管理、未排订单、分堆打包支持条件过滤作用到子单

This commit is contained in:
gaoqr
2026-05-25 17:59:53 +08:00
parent f50ac1341e
commit b223afe570
7 changed files with 583 additions and 98 deletions
@@ -103,6 +103,23 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
return selectPage(reqVO, query); return selectPage(reqVO, query);
} }
/**
* 分页查询主单(带子单过滤)
*
* @param page
* @param reqVO
* @return
*/
IPage<OrderDO> selectMainPage(@Param("page") IPage<OrderDO> page, @Param("reqVO") OrderPageReqVO reqVO);
/**
* 查询子单列表
*
* @param reqVO
* @param parentIds
* @return
*/
List<OrderDO> selectChildList(@Param("reqVO") OrderPageReqVO reqVO, @Param("parentIds") List<Long> parentIds);
IPage<OrderRespVOCopy> selectOrderPage(@Param("page") IPage<OrderRespVOCopy> page, @Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper); IPage<OrderRespVOCopy> selectOrderPage(@Param("page") IPage<OrderRespVOCopy> page, @Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper);
@@ -322,8 +339,24 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
PrintOrderPackRespVO selectOrderPack(@Param("orderNo")Long orderNo, @Param("packageNo") Long packageNo, @Param("organId") Long organId); PrintOrderPackRespVO selectOrderPack(@Param("orderNo")Long orderNo, @Param("packageNo") Long packageNo, @Param("organId") Long organId);
/**
* 查询分堆打包订单分页
*
* @param page
* @param pageReqVO
* @param organId
* @return
*/
IPage<PackRespVO> selectPackOrderList(@Param("page") IPage<PackRespVO> page, @Param("pageReqVO") PackPageReqVO pageReqVO, @Param("organId") Long organId);
IPage<PackRespVO> selectOrderIdList(@Param("page") IPage<PackRespVO> page, @Param("pageReqVO") PackPageReqVO pageReqVO, @Param("organId") Long organId); /**
* 查询分堆打包子单列表
*
* @param pageReqVO
* @param organId
* @return
*/
List<PackRespVO> selectPackOrderChildList(@Param("pageReqVO") PackPageReqVO pageReqVO, @Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
List<LabelOrderData> selectLabelOrderData(@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId); List<LabelOrderData> selectLabelOrderData(@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
@@ -38,6 +38,22 @@ public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
@Param("orderGoodsIds") List<Long> orderGoodsIds, @Param("orderGoodsIds") List<Long> orderGoodsIds,
@Param("orderIds") Long... orderIds); @Param("orderIds") Long... orderIds);
/**
* 未排单子单查询
*
* @param page
* @param wrapper
* @param type
* @param orderGoodsIds 商品id列表
* @param orderIds 父级订单数组
* @return
*/
IPage<OrderRespVOCopy> selectOrderChildList(@Param("page") IPage<OrderRespVOCopy> page,
@Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper,
@Param("type") int type,
@Param("orderGoodsIds") List<Long> orderGoodsIds,
@Param("orderIds") Long... orderIds);
/** /**
* 查询排单小板 * 查询排单小板
* *
@@ -938,7 +938,7 @@ public class PackServiceImpl implements PackService {
// 查询主单分页 // 查询主单分页
IPage<PackRespVO> packRespVOS = ordersMapper.selectOrderIdList(page, pageReqVO, getUserOrganId()); IPage<PackRespVO> packRespVOS = ordersMapper.selectPackOrderList(page, pageReqVO, getUserOrganId());
if (CollUtil.isEmpty(packRespVOS.getRecords())) { if (CollUtil.isEmpty(packRespVOS.getRecords())) {
return new PageResult<>(); return new PageResult<>();
@@ -947,17 +947,10 @@ public class PackServiceImpl implements PackService {
orderIds.addAll(packRespVOS.getRecords().stream().map(PackRespVO::getId).toList()); orderIds.addAll(packRespVOS.getRecords().stream().map(PackRespVO::getId).toList());
// 查询分页下子级 // 查询分页下子级
List<OrderDO> childList = ordersMapper.selectList( List<PackRespVO> childList = ordersMapper.selectPackOrderChildList(pageReqVO, orderIds, getUserOrganId());
new LambdaQueryWrapperX<OrderDO>()
.in(OrderDO::getParentId, orderIds)
.eqIfPresent(OrderDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
.ne(OrderDO::getStatus, OrderStatusEnum.EMPTY.getStatus())
.orderByDesc(OrderDO::getId)
);
if (CollUtil.isNotEmpty(childList)) { if (CollUtil.isNotEmpty(childList)) {
for (OrderDO child : childList) { for (PackRespVO childPackRespVO : childList) {
PackRespVO childPackRespVO = BeanUtil.copyProperties(child, PackRespVO.class);
childPackRespVO.setTotalPieceCount(child.getPlateNum());
packRespVOS.getRecords().add(childPackRespVO); packRespVOS.getRecords().add(childPackRespVO);
orderIds.add(childPackRespVO.getId()); orderIds.add(childPackRespVO.getId());
} }
@@ -309,23 +309,20 @@ public class OrderServiceImpl implements OrderService {
@Override @Override
public PageResult<OrderDO> getMainOrderPage(OrderPageReqVO pageReqVO) { public PageResult<OrderDO> getMainOrderPage(OrderPageReqVO pageReqVO) {
PageResult<OrderDO> pageResult = orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId())); IPage<OrderDO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<OrderDO> pageResult = orderMapper.selectMainPage(page, pageReqVO);
Long pageResultTotal = pageResult.getTotal(); Long pageResultTotal = pageResult.getTotal();
if (pageResultTotal > 0) { if (pageResultTotal > 0) {
List<OrderDO> orderDOS = pageResult.getList(); List<OrderDO> orderDOS = pageResult.getRecords();
// 1、整理所有订单id // 1、整理所有订单id
List<Long> orderIds = orderDOS.stream().map(OrderDO::getId).toList(); List<Long> orderIds = orderDOS.stream().map(OrderDO::getId).toList();
// 2、查询订单id列表对应的子单 // 2、查询订单id列表对应的子单
List<OrderDO> childList = orderMapper.selectList( List<OrderDO> childList =
new LambdaQueryWrapperX<OrderDO>() orderMapper.selectChildList(pageReqVO, orderIds);
.in(OrderDO::getParentId, orderIds)
.eqIfPresent(OrderDO::getDeleted, pageReqVO.getDeleted())
.orderByDesc(OrderDO::getId)
);
if (CollUtil.isEmpty(childList)) { if (CollUtil.isEmpty(childList)) {
return pageResult; return new PageResult<>(pageResult.getRecords(), pageResultTotal);
} }
// 3、 按 parentId 分组 // 3、 按 parentId 分组
@@ -338,7 +335,7 @@ public class OrderServiceImpl implements OrderService {
} }
return new PageResult<>(orderDOS, pageResultTotal); return new PageResult<>(orderDOS, pageResultTotal);
} }
return pageResult; return new PageResult<>(pageResult.getRecords(), pageResultTotal);
} }
@Override @Override
@@ -574,7 +574,7 @@ public class PlanServiceImpl implements PlanService {
// 主单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); PageDTO<OrderRespVOCopy> childPage = new PageDTO<>(pageReqVO.getPageNo(), PageParam.PAGE_SIZE_NONE);
IPage<OrderRespVOCopy> childOrderList = planItemMapper.selectOrderList(childPage, queryWrapperX, type, orderGoodsIds, mainOrderIds); IPage<OrderRespVOCopy> childOrderList = planItemMapper.selectOrderChildList(childPage, queryWrapperX, type, orderGoodsIds, mainOrderIds);
List<OrderRespVOCopy> childList = childOrderList.getRecords(); List<OrderRespVOCopy> childList = childOrderList.getRecords();
@@ -28,6 +28,277 @@
</resultMap> </resultMap>
<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
CASE
WHEN t.parent_id = 0 THEN t.id
ELSE t.parent_id
END AS root_id
FROM orders t
WHERE 1 = 1
<if test="reqVO.id != null and reqVO.id != ''">
AND CAST(t.id AS CHAR) LIKE CONCAT('%', #{reqVO.id}, '%')
</if>
<if test="reqVO.parentNo != null">
AND t.parent_id = #{reqVO.parentNo}
</if>
<if test="reqVO.apiOrderId != null and reqVO.apiOrderId != ''">
AND t.api_order_id = #{reqVO.apiOrderId}
</if>
<if test="reqVO.orderDate != null and reqVO.orderDate.length == 2">
AND t.order_date BETWEEN #{reqVO.orderDate[0]} AND #{reqVO.orderDate[1]}
</if>
<if test="reqVO.deliveryDate != null and reqVO.deliveryDate.length == 2">
AND t.delivery_date BETWEEN #{reqVO.deliveryDate[0]} AND #{reqVO.deliveryDate[1]}
</if>
<if test="reqVO.orderType != null">
AND t.order_type = #{reqVO.orderType}
</if>
<if test="reqVO.orderSort != null">
AND t.order_sort = #{reqVO.orderSort}
</if>
<if test="reqVO.dataType != null">
AND t.data_type = #{reqVO.dataType}
</if>
<if test="reqVO.status != null">
AND t.status = #{reqVO.status}
</if>
<if test="reqVO.customOrderNo != null and reqVO.customOrderNo != ''">
AND t.custom_order_no LIKE CONCAT('%', #{reqVO.customOrderNo}, '%')
</if>
<if test="reqVO.customer != null and reqVO.customer != ''">
AND t.customer = #{reqVO.customer}
</if>
<if test="reqVO.address != null and reqVO.address != ''">
AND t.address LIKE CONCAT('%', #{reqVO.address}, '%')
</if>
<if test="reqVO.phoneNumber != null and reqVO.phoneNumber != ''">
AND t.phone_number = #{reqVO.phoneNumber}
</if>
<if test="reqVO.dealer != null and reqVO.dealer != ''">
AND t.dealer LIKE CONCAT('%', #{reqVO.dealer}, '%')
</if>
<if test="reqVO.dealerPhoneNumber != null and reqVO.dealerPhoneNumber != ''">
AND t.dealer_phone_number = #{reqVO.dealerPhoneNumber}
</if>
<if test="reqVO.salesman != null and reqVO.salesman != ''">
AND t.salesman = #{reqVO.salesman}
</if>
<if test="reqVO.splitter != null and reqVO.splitter != ''">
AND t.splitter = #{reqVO.splitter}
</if>
<if test="reqVO.remark != null and reqVO.remark != ''">
AND t.remark = #{reqVO.remark}
</if>
<if test="reqVO.organId != null">
AND t.organ_id = #{reqVO.organId}
</if>
<if test="reqVO.createTime != null and reqVO.createTime.length == 2">
AND t.create_time BETWEEN #{reqVO.createTime[0]} AND #{reqVO.createTime[1]}
</if>
AND t.deleted = #{reqVO.deleted}
)
<choose>
<when test="reqVO.order != null and reqVO.order == 'ascend'">
<choose>
<when test="reqVO.field == 'id'">
ORDER BY o.id ASC
</when>
<when test="reqVO.field == 'customOrderNo'">
ORDER BY o.custom_order_no ASC
</when>
<when test="reqVO.field == 'orderDate'">
ORDER BY o.order_date ASC
</when>
<when test="reqVO.field == 'deliveryDate'">
ORDER BY o.delivery_date ASC
</when>
<when test="reqVO.field == 'apiOrderId'">
ORDER BY o.api_order_id ASC
</when>
<otherwise>
ORDER BY o.id DESC
</otherwise>
</choose>
</when>
<when test="reqVO.order != null and reqVO.order == 'descend'">
<choose>
<when test="reqVO.field == 'id'">
ORDER BY o.id DESC
</when>
<when test="reqVO.field == 'customOrderNo'">
ORDER BY o.custom_order_no DESC
</when>
<when test="reqVO.field == 'orderDate'">
ORDER BY o.order_date DESC
</when>
<when test="reqVO.field == 'deliveryDate'">
ORDER BY o.delivery_date DESC
</when>
<when test="reqVO.field == 'apiOrderId'">
ORDER BY o.api_order_id DESC
</when>
<otherwise>
ORDER BY o.id DESC
</otherwise>
</choose>
</when>
<otherwise>
ORDER BY o.id DESC
</otherwise>
</choose>
</select>
<select id="selectChildList"
resultType="com.cf.imes.module.executor.dal.dataobject.order.OrderDO">
SELECT *
FROM orders t
WHERE t.parent_id IN
<foreach collection="parentIds"
item="parentId"
open="("
separator=","
close=")">
#{parentId}
</foreach>
<if test="reqVO.id != null and reqVO.id != ''">
AND CAST(t.id AS CHAR) LIKE CONCAT('%', #{reqVO.id}, '%')
</if>
<if test="reqVO.parentNo != null">
AND t.parent_id = #{reqVO.parentNo}
</if>
<if test="reqVO.apiOrderId != null and reqVO.apiOrderId != ''">
AND t.api_order_id = #{reqVO.apiOrderId}
</if>
<if test="reqVO.orderDate != null and reqVO.orderDate.length == 2">
AND t.order_date BETWEEN #{reqVO.orderDate[0]} AND #{reqVO.orderDate[1]}
</if>
<if test="reqVO.deliveryDate != null and reqVO.deliveryDate.length == 2">
AND t.delivery_date BETWEEN #{reqVO.deliveryDate[0]} AND #{reqVO.deliveryDate[1]}
</if>
<if test="reqVO.orderType != null">
AND t.order_type = #{reqVO.orderType}
</if>
<if test="reqVO.orderSort != null">
AND t.order_sort = #{reqVO.orderSort}
</if>
<if test="reqVO.dataType != null">
AND t.data_type = #{reqVO.dataType}
</if>
<if test="reqVO.status != null">
AND t.status = #{reqVO.status}
</if>
<if test="reqVO.customOrderNo != null and reqVO.customOrderNo != ''">
AND t.custom_order_no LIKE CONCAT('%', #{reqVO.customOrderNo}, '%')
</if>
<if test="reqVO.customer != null and reqVO.customer != ''">
AND t.customer = #{reqVO.customer}
</if>
<if test="reqVO.address != null and reqVO.address != ''">
AND t.address LIKE CONCAT('%', #{reqVO.address}, '%')
</if>
<if test="reqVO.phoneNumber != null and reqVO.phoneNumber != ''">
AND t.phone_number = #{reqVO.phoneNumber}
</if>
<if test="reqVO.dealer != null and reqVO.dealer != ''">
AND t.dealer LIKE CONCAT('%', #{reqVO.dealer}, '%')
</if>
<if test="reqVO.dealerPhoneNumber != null and reqVO.dealerPhoneNumber != ''">
AND t.dealer_phone_number = #{reqVO.dealerPhoneNumber}
</if>
<if test="reqVO.salesman != null and reqVO.salesman != ''">
AND t.salesman = #{reqVO.salesman}
</if>
<if test="reqVO.splitter != null and reqVO.splitter != ''">
AND t.splitter = #{reqVO.splitter}
</if>
<if test="reqVO.remark != null and reqVO.remark != ''">
AND t.remark = #{reqVO.remark}
</if>
<if test="reqVO.organId != null">
AND t.organ_id = #{reqVO.organId}
</if>
<if test="reqVO.createTime != null and reqVO.createTime.length == 2">
AND t.create_time BETWEEN #{reqVO.createTime[0]} AND #{reqVO.createTime[1]}
</if>
AND t.deleted = #{reqVO.deleted}
ORDER BY t.id DESC
</select>
<select id="selectOrderPage" resultMap="OrderPageMap"> <select id="selectOrderPage" resultMap="OrderPageMap">
@@ -539,65 +810,158 @@
</select> </select>
<select id="selectOrderIdList" resultMap="PackMap" parameterType="map"> <select id="selectPackOrderList" resultMap="PackMap" parameterType="map">
select SELECT
id, o.id,
order_type as orderType, o.order_type AS orderType,
parent_id as parentId, o.parent_id AS parentId,
custom_order_no as customOrderNo, o.custom_order_no AS customOrderNo,
dealer as dealer, o.dealer AS dealer,
dealer_phone_number as dealerPhoneNumber, o.dealer_phone_number AS dealerPhoneNumber,
order_date as orderDate, o.order_date AS orderDate,
create_time as createTime, o.create_time AS createTime,
delivery_date as deliveryDate, o.delivery_date AS deliveryDate,
customer as customer, o.customer AS customer,
phone_number as phoneNumber, o.phone_number AS phoneNumber,
address as address, o.address AS address,
salesman as salesman, o.salesman AS salesman,
splitter as splitter, o.splitter AS splitter,
packaged as packaged, o.packaged AS packaged,
remark as remark, o.remark AS remark,
plate_num as totalPieceCount, o.plate_num AS totalPieceCount,
packed_plates_count as packedPlatesCount, o.packed_plates_count AS packedPlatesCount,
packed_parts_count as packedPartsCount o.packed_parts_count AS packedPartsCount
FROM orders o
WHERE o.id IN (
SELECT DISTINCT
CASE
WHEN x.parent_id = 0 THEN x.id
ELSE x.parent_id
END
FROM orders x
from orders
<where> <where>
organ_id =#{organId} x.organ_id = #{organId}
and deleted = false
and status in (1,2,3,4)
and parent_id = 0
<if test="pageReqVO.orderId !=null"> AND x.deleted = false
and id like concat('%', #{pageReqVO.orderId},'%')
AND x.status IN (1,2,3,4)
<if test="pageReqVO.orderId != null and pageReqVO.orderId != ''">
AND CAST(x.id AS CHAR) LIKE CONCAT('%', #{pageReqVO.orderId}, '%')
</if> </if>
<if test="pageReqVO.status !=null "> <if test="pageReqVO.status != null">
and packaged = #{pageReqVO.status} AND x.packaged = #{pageReqVO.status}
</if> </if>
<if test="pageReqVO.customOrderNo !=null"> <if test="pageReqVO.customOrderNo != null and pageReqVO.customOrderNo != ''">
and custom_order_no like concat('%',#{pageReqVO.customOrderNo},'%') AND x.custom_order_no LIKE CONCAT('%', #{pageReqVO.customOrderNo}, '%')
</if> </if>
<if test="pageReqVO.customer !=null"> <if test="pageReqVO.customer != null and pageReqVO.customer != ''">
and customer like concat('%', #{pageReqVO.customer},'%') AND x.customer LIKE CONCAT('%', #{pageReqVO.customer}, '%')
</if> </if>
<if test="pageReqVO.address !=null"> <if test="pageReqVO.address != null and pageReqVO.address != ''">
and address like concat('%', #{pageReqVO.address},'%') AND x.address LIKE CONCAT('%', #{pageReqVO.address}, '%')
</if> </if>
<if test="pageReqVO.dealer !=null"> <if test="pageReqVO.dealer != null and pageReqVO.dealer != ''">
and dealer like concat('%', #{pageReqVO.dealer},'%') AND x.dealer LIKE CONCAT('%', #{pageReqVO.dealer}, '%')
</if> </if>
</where> </where>
order by create_time desc )
AND o.parent_id = 0
ORDER BY o.create_time DESC
</select>
<select id="selectPackOrderChildList" resultMap="PackMap" parameterType="map">
SELECT
o.id,
o.order_type AS orderType,
o.parent_id AS parentId,
o.custom_order_no AS customOrderNo,
o.dealer AS dealer,
o.dealer_phone_number AS dealerPhoneNumber,
o.order_date AS orderDate,
o.create_time AS createTime,
o.delivery_date AS deliveryDate,
o.customer AS customer,
o.phone_number AS phoneNumber,
o.address AS address,
o.salesman AS salesman,
o.splitter AS splitter,
o.packaged AS packaged,
o.remark AS remark,
o.plate_num AS totalPieceCount,
o.packed_plates_count AS packedPlatesCount,
o.packed_parts_count AS packedPartsCount
FROM orders o
<where>
o.parent_id IN
<foreach item="orderId"
collection="orderIds"
open="("
separator=","
close=")">
#{orderId}
</foreach>
AND o.deleted = false
AND o.status != 0
<if test="pageReqVO.orderId != null and pageReqVO.orderId != ''">
AND CAST(o.id AS CHAR)
LIKE CONCAT('%', #{pageReqVO.orderId}, '%')
</if>
<if test="pageReqVO.status != null">
AND o.packaged = #{pageReqVO.status}
</if>
<if test="pageReqVO.customOrderNo != null and pageReqVO.customOrderNo != ''">
AND o.custom_order_no
LIKE CONCAT('%', #{pageReqVO.customOrderNo}, '%')
</if>
<if test="pageReqVO.customer != null and pageReqVO.customer != ''">
AND o.customer
LIKE CONCAT('%', #{pageReqVO.customer}, '%')
</if>
<if test="pageReqVO.address != null and pageReqVO.address != ''">
AND o.address
LIKE CONCAT('%', #{pageReqVO.address}, '%')
</if>
<if test="pageReqVO.dealer != null and pageReqVO.dealer != ''">
AND o.dealer
LIKE CONCAT('%', #{pageReqVO.dealer}, '%')
</if>
</where>
ORDER BY o.id DESC
</select> </select>
@@ -19,12 +19,12 @@
</resultMap> </resultMap>
<select id="selectOrderList" resultMap="OrderPageMap"> <select id="selectOrderList" resultMap="OrderPageMap">
select SELECT
o.id as orderId, o.id AS orderId,
<if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@ORDER_GROUP.getType()"> <if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@ORDER_GROUP.getType()">
o.plate_num - o.planned_plate_num as num, o.plate_num - o.planned_plate_num AS num,
o.area - o.planned_plate_area as area, o.area - o.planned_plate_area AS area,
</if> </if>
<if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@GOODS_GROUP.getType()"> <if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@GOODS_GROUP.getType()">
@@ -32,51 +32,133 @@
t.area, t.area,
</if> </if>
o.parent_id as parentId, o.parent_id AS parentId,
o.order_type as orderType, o.order_type AS orderType,
o.order_date as orderDate, o.order_date AS orderDate,
o.delivery_date as deliveryDate, o.delivery_date AS deliveryDate,
o.customer as customer, o.customer AS customer,
o.address as address, o.address AS address,
o.custom_order_no as defineId, o.custom_order_no AS defineId,
o.status as status o.status AS status
from orders o FROM orders o
<if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@GOODS_GROUP.getType()"> <if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@GOODS_GROUP.getType()">
join (
select JOIN (
SELECT
og.order_id, og.order_id,
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">
AND og.id IN AND og.id IN
<foreach item="orderGoodsId" collection="orderGoodsIds" open="(" separator="," close=")"> <foreach item="orderGoodsId"
collection="orderGoodsIds"
open="("
separator=","
close=")">
#{orderGoodsId} #{orderGoodsId}
</foreach> </foreach>
</if> </if>
group by og.order_id
) t on t.order_id = o.id GROUP BY og.order_id
) t ON t.order_id = o.id
</if> </if>
${ew.customSqlSegment} WHERE o.id IN (
and o.plate_num - o.planned_plate_num > 0
SELECT DISTINCT
CASE
WHEN x.parent_id = 0 THEN x.id
ELSE x.parent_id
END
FROM orders x
${ew.customSqlSegment.replace('o.', 'x.')}
and IFNULL(x.plate_num,0) - IFNULL(x.planned_plate_num,0) > 0
)
AND o.parent_id = 0
AND IFNULL(o.plate_num,0) - IFNULL(o.planned_plate_num,0) > 0
ORDER BY o.id DESC
</select>
<select id="selectOrderChildList" resultMap="OrderPageMap">
SELECT
o.id AS orderId,
<if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@ORDER_GROUP.getType()"> <if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@ORDER_GROUP.getType()">
<choose> o.plate_num - o.planned_plate_num AS num,
<when test="orderIds != null and orderIds.length > 0"> o.area - o.planned_plate_area AS area,
AND o.parent_id IN
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
#{orderId}
</foreach>
</when>
<otherwise>
AND o.parent_id = 0
</otherwise>
</choose>
</if> </if>
order by o.id desc
<if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@GOODS_GROUP.getType()">
t.num,
t.area,
</if>
o.parent_id AS parentId,
o.order_type AS orderType,
o.order_date AS orderDate,
o.delivery_date AS deliveryDate,
o.customer AS customer,
o.address AS address,
o.custom_order_no AS defineId,
o.status AS status
FROM orders o
<if test="type != null and type == @com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum@GOODS_GROUP.getType()">
JOIN (
SELECT
og.order_id,
SUM(og.plate_num - og.planned_plate_num) AS num,
SUM(og.area - og.planned_plate_area) AS area
FROM order_goods og
WHERE og.plate_num - og.planned_plate_num > 0
<if test="orderGoodsIds != null and orderGoodsIds.size() > 0">
AND og.id IN
<foreach item="orderGoodsId"
collection="orderGoodsIds"
open="("
separator=","
close=")">
#{orderGoodsId}
</foreach>
</if>
GROUP BY og.order_id
) t ON t.order_id = o.id
</if>
${ew.customSqlSegment}
AND IFNULL(o.plate_num,0) - IFNULL(o.planned_plate_num,0) > 0
AND o.parent_id IN
<foreach item="orderId"
collection="orderIds"
open="("
separator=","
close=")">
#{orderId}
</foreach>
ORDER BY o.id DESC
</select> </select>