You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
7.0 KiB

<?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.qs.serve.modules.tbs.mapper.TbsCostApplySumAmountMapper">
<resultMap id="dataCheckApplyDetailItem" type="com.qs.serve.modules.excel.entity.DataCheckApplyDetailItem" >
<result property="costApplyId" column="id"/>
<result property="activityCode" column="activity_code"/>
<result property="activityDate" column="activity_date"/>
<result property="activityTheme" column="activity_theme"/>
<result property="costApplyAmt" column="cost_apply_amt"/>
<result property="checkedAmt" column="checked_amt"/>
<result property="checkingAmt" column="checking_amt"/>
<result property="notCheckAmt" column="not_check_amt"/>
<result property="dontCheckAmt" column="dont_check_amt"/>
<result property="payAmt" column="pay_amt"/>
<result property="unPayAmt" column="not_pay_amt"/>
<result property="notPayAmt" column="un_pay_amt"/>
</resultMap>
<select id="selectDataCheckApplyDetailItem" resultMap="dataCheckApplyDetailItem">
SELECT
c.id AS id,
c.code as activity_code,
DATE_FORMAT(c.submit_time,'%Y%m%d') as activity_date,
c.charge_theme as activity_theme,
IFNULL(activity_totals.cost_apply_amt, 0) AS cost_apply_amt,
IFNULL(verification_totals.checked_amt, 0) AS checked_amt,
IFNULL(verification_totals.checking_amt, 0) AS checking_amt,
IFNULL(activity_totals.dont_check_amt, 0) AS dont_check_amt,
IFNULL(payment_totals.pay_amt, 0) AS pay_amt,
IFNULL(payment_totals.not_pay_amt, 0) AS not_pay_amt,
IFNULL(activity_totals.cost_apply_amt - verification_totals.checked_amt - verification_totals.checking_amt - activity_totals.dont_check_amt,0) as not_check_amt,
IFNULL(verification_totals.checked_amt - payment_totals.pay_amt - payment_totals.not_pay_amt,0) as un_pay_amt
FROM
tbs_cost_apply c
LEFT JOIN (
SELECT
cost_apply_id,
SUM(total_amount) AS cost_apply_amt,
SUM(release_amount) AS dont_check_amt
FROM
tbs_activity
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) activity_totals ON activity_totals.cost_apply_id = c.id
LEFT JOIN (
SELECT
cost_apply_id,
SUM(CASE WHEN verification_state = 1 THEN amount ELSE 0 END) AS checked_amt,
SUM(CASE WHEN verification_state IN (0, 3) THEN amount ELSE 0 END) AS checking_amt
FROM
vtb_verification
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) verification_totals ON verification_totals.cost_apply_id = c.id
LEFT JOIN (
SELECT
cost_apply_id,
SUM(CASE WHEN pay_type = 'pay' THEN item_pay_amount ELSE 0 END) AS pay_amt,
SUM(CASE WHEN pay_type = 'unPay' THEN item_pay_amount ELSE 0 END) AS not_pay_amt
FROM
pay_payment_item
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) payment_totals ON payment_totals.cost_apply_id = c.id
WHERE
c.del_flag = 0
AND c.charge_state IN (2, 3)
<if test="costApplyIds !=null and costApplyIds.size > 0">
and c.id in
<foreach collection="costApplyIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
<if test="supplierId !=null">
AND c.supplier_id = #{supplierId};
</if>
order by c.submit_time
</select>
<resultMap id="dataCheckApplyMainInfo" type="com.qs.serve.modules.excel.entity.DataCheckApplyMainInfo" >
<result property="costApplyId" column="id"/>
<result property="activityCode" column="activity_code"/>
<result property="activityDate" column="activity_date"/>
<result property="activityTheme" column="activity_theme"/>
<result property="costApplyAmt" column="cost_apply_amt"/>
<result property="checkedAmt" column="checked_amt"/>
<result property="checkingAmt" column="checking_amt"/>
<result property="notCheckAmt" column="not_check_amt"/>
<result property="dontCheckAmt" column="dont_check_amt"/>
<result property="payAmt" column="pay_amt"/>
<result property="unPayAmt" column="not_pay_amt"/>
<result property="notPayAmt" column="un_pay_amt"/>
</resultMap>
<select id="selectDataCheckApplyMainInfo" resultMap="dataCheckApplyMainInfo">
SELECT
IFNULL(SUM(activity_totals.cost_apply_amt), 0) AS cost_apply_amt,
IFNULL(SUM(verification_totals.checked_amt), 0) AS checked_amt,
IFNULL(SUM(verification_totals.checking_amt), 0) AS checking_amt,
IFNULL(SUM(activity_totals.dont_check_amt), 0) AS dont_check_amt,
IFNULL(SUM(payment_totals.pay_amt), 0) AS pay_amt,
IFNULL(SUM(payment_totals.not_pay_amt), 0) AS not_pay_amt,
IFNULL(SUM(activity_totals.cost_apply_amt - verification_totals.checked_amt - verification_totals.checking_amt - activity_totals.dont_check_amt),0) as not_check_amt,
IFNULL(SUM(verification_totals.checked_amt - payment_totals.pay_amt - payment_totals.not_pay_amt),0) as un_pay_amt
FROM
tbs_cost_apply c
LEFT JOIN (
SELECT
cost_apply_id,
SUM(total_amount) AS cost_apply_amt,
SUM(release_amount) AS dont_check_amt
FROM
tbs_activity
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) activity_totals ON activity_totals.cost_apply_id = c.id
LEFT JOIN (
SELECT
cost_apply_id,
SUM(CASE WHEN verification_state = 1 THEN amount ELSE 0 END) AS checked_amt,
SUM(CASE WHEN verification_state IN (0, 3) THEN amount ELSE 0 END) AS checking_amt
FROM
vtb_verification
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) verification_totals ON verification_totals.cost_apply_id = c.id
LEFT JOIN (
SELECT
cost_apply_id,
SUM(CASE WHEN pay_type = 'pay' THEN item_pay_amount ELSE 0 END) AS pay_amt,
SUM(CASE WHEN pay_type = 'unPay' THEN item_pay_amount ELSE 0 END) AS not_pay_amt
FROM
pay_payment_item
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) payment_totals ON payment_totals.cost_apply_id = c.id
WHERE
c.del_flag = 0
AND c.charge_state IN (2, 3)
<if test="supplierId !=null">
AND c.supplier_id = #{supplierId}
</if>
<if test="costApplyIds !=null and costApplyIds.size > 0">
and c.id in
<foreach collection="costApplyIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
</select>
</mapper>