<?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.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.ruoyi.purchase.pojo.PurchaseReturnOrders">
|
<id column="id" property="id" />
|
<result column="no" property="no" />
|
<result column="return_type" property="returnType" />
|
<result column="supplier_id" property="supplierId" />
|
<result column="project_id" property="projectId" />
|
<result column="project_phase" property="projectPhase" />
|
<result column="prepared_at" property="preparedAt" />
|
<result column="prepared_user_id" property="preparedUserId" />
|
<result column="return_user_id" property="returnUserId" />
|
<result column="purchase_ledger_id" property="purchaseLedgerId" />
|
<result column="remark" property="remark" />
|
<result column="create_time" property="createTime" />
|
<result column="update_time" property="updateTime" />
|
</resultMap>
|
<sql id="getPurchaseReturnOrderHasAllInfoFormAndColumn">
|
SELECT
|
pro.*,
|
sm.supplier_name as supplier_name,
|
pl.purchase_contract_number as purchase_contract_number
|
FROM purchase_return_orders pro
|
LEFT JOIN supplier_manage sm ON pro.supplier_id = sm.id
|
LEFT JOIN purchase_ledger pl ON pl.id = pro.purchase_ledger_id
|
</sql>
|
<select id="listPage" resultType="com.ruoyi.purchase.dto.PurchaseReturnOrderHasAllInfoDto">
|
<include refid="getPurchaseReturnOrderHasAllInfoFormAndColumn"/>
|
<where>
|
<if test="params.no != null and params.no != '' ">
|
AND pro.no LIKE CONCAT('%',#{params.no},'%')
|
</if>
|
<if test="params.deptId != null">
|
AND pro.dept_id = #{params.deptId}
|
</if>
|
<if test="params.deptIds != null and params.deptIds.length > 0">
|
AND pro.dept_id IN
|
<foreach collection="params.deptIds" item="deptId" open="(" separator="," close=")">
|
#{deptId}
|
</foreach>
|
</if>
|
<if test="params.createUser != null">
|
AND pro.create_user = #{params.createUser}
|
</if>
|
</where>
|
ORDER BY pro.create_time DESC
|
</select>
|
<select id="getPurchaseReturnOrderHasAllInfoById"
|
resultType="com.ruoyi.purchase.dto.PurchaseReturnOrderHasAllInfoDto">
|
<include refid="getPurchaseReturnOrderHasAllInfoFormAndColumn"/>
|
where pro.id = #{id}
|
</select>
|
<select id="listPageAccountPurchaseReturn"
|
resultType="com.ruoyi.account.bean.vo.PurchaseReturnVo">
|
select pro.id,
|
pro.no returnNo,
|
t.inboundBatches,
|
sm.supplier_name,
|
pro.prepared_at,
|
pro.total_amount,
|
CASE pro.return_type WHEN 0 THEN '退货退款' WHEN 1 THEN '拒收' END AS returnType,
|
pl.purchase_contract_number
|
from purchase_return_orders pro
|
left join
|
(select prop.purchase_return_order_id,
|
GROUP_CONCAT(sir.inbound_batches SEPARATOR ',') AS inboundBatches
|
from purchase_return_order_products prop
|
left join stock_in_record sir on prop.stock_in_record_id = sir.id
|
GROUP BY prop.purchase_return_order_id) t on t.purchase_return_order_id = pro.id
|
left join supplier_manage sm on pro.supplier_id = sm.id
|
left join purchase_ledger pl on pro.purchase_ledger_id = pl.id
|
where 1=1
|
<if test="req.returnNo != null and req.returnNo != ''">
|
and pro.no like concat('%',#{req.returnNo},'%')
|
</if>
|
<if test="req.supplierName != null and req.supplierName != ''">
|
and sm.supplier_name like concat('%',#{req.supplierName},'%')
|
</if>
|
<if test="req.startDate != null and req.endDate != null">
|
AND DATE_FORMAT(pro.prepared_at, '%Y-%m-%d') BETWEEN #{req.startDate} AND #{req.endDate}
|
</if>
|
order by pro.id DESC
|
</select>
|
<select id="getByPurchaseLedgerId" resultType="com.ruoyi.purchase.vo.PurchaseStockInProductVo">
|
SELECT
|
sir.id,
|
sir.product_model_id,
|
slp.id saleLedgerProductId,
|
slp.product_category,
|
slp.specification_model,
|
slp.unit,
|
slp.is_checked,
|
sir.inbound_batches,
|
sir.stock_in_num,
|
sir.batch_no,
|
slp.tax_inclusive_unit_price,
|
GREATEST(sir.stock_in_num - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
|
COALESCE(rs.total_return_num, 0) AS total_return_num
|
FROM stock_in_record sir
|
LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id
|
LEFT JOIN purchase_ledger pl
|
ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
|
LEFT JOIN sales_ledger_product slp ON pl.id = slp.sales_ledger_id
|
LEFT JOIN (
|
SELECT
|
stock_in_record_id,
|
SUM(return_quantity) AS total_return_num
|
FROM purchase_return_order_products prop
|
left join purchase_return_orders pro on pro.id = prop.purchase_return_order_id
|
WHERE 1=1
|
GROUP BY stock_in_record_id
|
) rs ON rs.stock_in_record_id = sir.id
|
WHERE sir.approval_status = 1 AND slp.type = 2
|
AND sir.record_type IN ('7','10')
|
and pl.id = #{purchaseLedgerId}
|
</select>
|
<select id="getPurchaseReturnOrderProductsDetailById"
|
resultType="com.ruoyi.purchase.vo.PurchaseReturnOrderProductsDetailVo">
|
select prop.id,
|
prop.sales_ledger_product_id,
|
slp.product_model_id,
|
slp.product_category,
|
slp.specification_model,
|
slp.is_checked,
|
slp.unit,
|
sir.inbound_batches,
|
sir.stock_in_num,
|
sir.batch_no,
|
slp.tax_inclusive_unit_price,
|
prop.return_quantity,
|
prop.purchase_return_order_id,
|
GREATEST(sir.stock_in_num - COALESCE(prop.return_quantity, 0), 0) AS un_quantity,
|
COALESCE(rs.total_return_num, 0) AS total_return_num
|
from purchase_return_order_products prop
|
left join purchase_return_orders pro on prop.purchase_return_order_id = pro.id
|
LEFT JOIN stock_in_record sir ON prop.stock_in_record_id = sir.id and sir.record_type in ('7','10')
|
LEFT JOIN sales_ledger_product slp ON prop.sales_ledger_product_id = slp.id and slp.type = 2
|
LEFT JOIN (SELECT stock_in_record_id,
|
SUM(return_quantity) AS total_return_num
|
FROM purchase_return_order_products
|
WHERE 1 = 1 and purchase_return_order_id != #{id}
|
GROUP BY stock_in_record_id) rs ON rs.stock_in_record_id = sir.id
|
where pro.id = #{id}
|
</select>
|
</mapper>
|