Files
nanguangszwlback/mhd_wms/src/main/resources/mapper/reviewOrder/ReviewOrderMapper.xml
T
2026-08-05 17:14:03 +08:00

294 lines
12 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mhd.wms.domain.reviewOrder.repository.mapper.ReviewOrderMapper">
<resultMap type="com.mhd.wms.domain.reviewOrder.repository.po.ReviewOrderPO" id="ReviewOrderResult">
<id property="reviewOrderId" column="review_order_id"/>
<result property="reviewOrderNumber" column="review_order_number"/>
<result property="outOrderId" column="out_order_id"/>
<result property="outOrderNumber" column="out_order_number"/>
<result property="organizationId" column="organization_id"/>
<result property="organizationName" column="organization_name"/>
<result property="topOrganizationId" column="top_organization_id"/>
<result property="reviewStatus" column="review_status"/>
<result property="issuedFlag" column="issued_flag"/>
<result property="issuedTime" column="issued_time"/>
<result property="warehouseId" column="warehouse_id"/>
<result property="warehouseCode" column="warehouse_code"/>
<result property="warehouseName" column="warehouse_name"/>
<result property="customerId" column="customer_id"/>
<result property="customerCode" column="customer_code"/>
<result property="customerName" column="customer_name"/>
<result property="shipperId" column="shipper_id"/>
<result property="shipperCode" column="shipper_code"/>
<result property="shipperName" column="shipper_name"/>
<result property="receiveTime" column="receive_time"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createByName" column="create_by_name"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateByName" column="update_by_name"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="materialKindCount" column="material_kind_count"/>
<result property="totalPlanQty" column="total_plan_qty"/>
<result property="totalReviewedQty" column="total_reviewed_qty"/>
</resultMap>
<resultMap type="com.mhd.wms.domain.reviewOrder.repository.po.ReviewMaterialDetailPO" id="ReviewMaterialDetailResult">
<result property="reviewMaterialDetailId" column="review_material_detail_id"/>
<result property="reviewOrderId" column="review_order_id"/>
<result property="reviewOrderNumber" column="review_order_number"/>
<result property="outOrderNumber" column="out_order_number"/>
<result property="outUniqueId" column="out_unique_id"/>
<result property="materialDetailId" column="material_detail_id"/>
<result property="materialBaseInfoId" column="material_base_info_id"/>
<result property="materialCode" column="material_code"/>
<result property="materialName" column="material_name"/>
<result property="barCode" column="bar_code"/>
<result property="size" column="SIZE"/>
<result property="unitCode" column="unit_code"/>
<result property="unitName" column="unit_name"/>
<result property="pendingReviewQty" column="pending_review_qty"/>
<result property="reviewedQty" column="reviewed_qty"/>
<result property="cancelQty" column="cancel_qty"/>
<result property="materialPlanQty" column="material_plan_qty"/>
<result property="receiptOrderNumber" column="receipt_order_number"/>
<result property="lotNo" column="lot_no"/>
<result property="batchNumber" column="batch_number"/>
<result property="productionDate" column="production_date"/>
<result property="expiryDate" column="expiry_date"/>
<result property="inventoryDate" column="inventory_date"/>
<result property="batchRefNo" column="batch_ref_no"/>
<result property="sheetRefNo" column="sheet_ref_no"/>
<result property="boxPalletNo" column="box_pallet_no"/>
<result property="extAttr1" column="ext_attr_1"/>
<result property="extAttr2" column="ext_attr_2"/>
<result property="extAttr3" column="ext_attr_3"/>
<result property="extAttr4" column="ext_attr_4"/>
<result property="reviewQtyEa" column="review_qty_ea"/>
<result property="netWeightKg" column="net_weight_kg"/>
<result property="grossWeightKg" column="gross_weight_kg"/>
<result property="volumeCbm" column="volume_cbm"/>
<result property="areaSqm" column="area_sqm"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createByName" column="create_by_name"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateByName" column="update_by_name"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<sql id="reviewOrderSelectColumns">
a.review_order_id AS review_order_id,
a.review_order_number,
a.out_order_id,
a.out_order_number,
a.organization_id,
a.organization_name,
a.top_organization_id,
a.review_status,
a.issued_flag,
a.issued_time,
a.warehouse_id,
a.warehouse_code,
a.warehouse_name,
a.customer_id,
a.customer_code,
a.customer_name,
a.shipper_id,
a.shipper_code,
a.shipper_name,
a.receive_time,
a.remark,
a.create_by,
a.create_by_name,
a.create_time,
a.update_by,
a.update_by_name,
a.update_time,
a.del_flag
</sql>
<sql id="reviewOrderWhere">
<if test="reviewOrderId != null">
and a.review_order_id = #{reviewOrderId}
</if>
<if test="reviewOrderNumber != null and reviewOrderNumber != ''">
and a.review_order_number like concat('%', #{reviewOrderNumber}, '%')
</if>
<if test="outOrderNumber != null and outOrderNumber != ''">
and a.out_order_number like concat('%', #{outOrderNumber}, '%')
</if>
<if test="reviewStatus != null">
and a.review_status = #{reviewStatus}
</if>
<if test="ltReviewStatus != null">
and a.review_status &lt; #{ltReviewStatus}
</if>
<if test="issuedFlag != null and issuedFlag != ''">
and a.issued_flag = #{issuedFlag}
</if>
<if test="organizationId != null">
and a.organization_id = #{organizationId}
</if>
<if test="topOrganizationId != null">
and a.top_organization_id = #{topOrganizationId}
</if>
<if test="warehouseId != null">
and a.warehouse_id = #{warehouseId}
</if>
<if test="reviewOrderIds != null and reviewOrderIds.size > 0 ">
and a.review_order_id in
<foreach collection="reviewOrderIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="customerName != null and customerName != ''">
and a.customer_name like concat('%', #{customerName}, '%')
</if>
<if test="shipperName != null and shipperName != ''">
and a.shipper_name like concat('%', #{shipperName}, '%')
</if>
<if test="shipperId != null and shipperId != ''">
and a.shipper_id like concat('%', #{shipperId}, '%')
</if>
<if test="createTimeStart != null and createTimeStart != ''">
and date_format(a.create_time, '%Y-%m-%d') &gt;= #{createTimeStart}
</if>
<if test="createTimeEnd != null and createTimeEnd != ''">
and date_format(a.create_time, '%Y-%m-%d') &lt;= #{createTimeEnd}
</if>
<if test="receiveTimeStart != null and receiveTimeStart != ''">
and date_format(a.receive_time, '%Y-%m-%d') &gt;= #{receiveTimeStart}
</if>
<if test="receiveTimeEnd != null and receiveTimeEnd != ''">
and date_format(a.receive_time, '%Y-%m-%d') &lt;= #{receiveTimeEnd}
</if>
<if test="onlyReceived != null and onlyReceived == 1">
and a.receive_time is not null
</if>
<choose>
<when test="delFlag != null">
and a.del_flag = #{delFlag}
</when>
<otherwise>
and a.del_flag = 1
</otherwise>
</choose>
</sql>
<!-- 复核单列表查询(头表 + 明细聚合:种类数、计划总量、已复核总量) -->
<select id="queryList" parameterType="com.mhd.wms.domain.reviewOrder.repository.todo.ReviewOrderDO"
resultMap="ReviewOrderResult">
select
<include refid="reviewOrderSelectColumns"/>,
ifnull(agg.material_kind_count, 0) as material_kind_count,
ifnull(agg.total_plan_qty, 0) as total_plan_qty,
ifnull(agg.total_reviewed_qty, 0) as total_reviewed_qty
from review_order a
left join (
select
d.review_order_id,
count(distinct d.material_base_info_id) as material_kind_count,
sum(ifnull(d.material_plan_qty, ifnull(d.pending_review_qty, 0) + ifnull(d.reviewed_qty, 0))) as total_plan_qty,
sum(ifnull(d.reviewed_qty, 0)) as total_reviewed_qty
from review_material_detail d
where d.del_flag = 1
group by d.review_order_id
) agg on a.review_order_id = agg.review_order_id
<where>
<include refid="reviewOrderWhere"/>
</where>
order by a.create_time desc
</select>
<!-- 详情:主表 by id -->
<select id="selectHeaderByReviewOrderId" resultMap="ReviewOrderResult">
select
<include refid="reviewOrderSelectColumns"/>
from review_order a
where a.review_order_id = #{reviewOrderId}
and a.del_flag = 1
</select>
<!-- 详情:主表 by 复核单号 -->
<select id="selectHeaderByReviewOrderNumber" resultMap="ReviewOrderResult">
select
<include refid="reviewOrderSelectColumns"/>
from review_order a
where a.review_order_number = #{reviewOrderNumber}
and a.del_flag = 1
</select>
<sql id="reviewMaterialDetailColumns">
d.review_material_detail_id,
d.review_order_id,
d.review_order_number,
d.out_order_number,
d.out_unique_id,
d.material_detail_id,
d.material_base_info_id,
d.material_code,
d.material_name,
d.bar_code,
d.SIZE,
d.unit_code,
d.unit_name,
d.pending_review_qty,
d.reviewed_qty,
d.cancel_qty,
d.material_plan_qty,
d.receipt_order_number,
d.lot_no,
d.batch_number,
d.production_date,
d.expiry_date,
d.inventory_date,
d.batch_ref_no,
d.sheet_ref_no,
d.box_pallet_no,
d.ext_attr_1,
d.ext_attr_2,
d.ext_attr_3,
d.ext_attr_4,
d.review_qty_ea,
d.net_weight_kg,
d.gross_weight_kg,
d.volume_cbm,
d.area_sqm,
d.remark,
d.create_by,
d.create_by_name,
d.create_time,
d.update_by,
d.update_by_name,
d.update_time,
d.del_flag,
d.pack_id, d.pack_code, d.pack_name, d.pack_detail_id
</sql>
<!-- 详情:明细 by 复核单主键 -->
<select id="queryDetailByReviewOrderId" resultMap="ReviewMaterialDetailResult">
select
<include refid="reviewMaterialDetailColumns"/>
from review_material_detail d
where d.review_order_id = #{reviewOrderId}
and d.del_flag = 1
order by d.review_material_detail_id asc
</select>
<!-- 详情:明细 by 复核单号 -->
<select id="queryDetailByReviewOrderNumber" resultMap="ReviewMaterialDetailResult">
select
<include refid="reviewMaterialDetailColumns"/>
from review_material_detail d
where d.review_order_number = #{reviewOrderNumber}
and d.del_flag = 1
order by d.review_material_detail_id asc
</select>
</mapper>