1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?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="cn.iocoder.yudao.module.wealth.dal.mysql.receipt.ReceiptMapper">
<update id="updateReceiptNewFieldBatch">
UPDATE ecw_receipt
<trim prefix="set" suffixOverrides=",">
<trim prefix="receipt_item_status=case" suffix="end,">
<foreach collection="list" item="i" index="index">
when id=#{i.id} then #{i.receiptItemStatus}
</foreach>
</trim>
<trim prefix="invoicing_status=case" suffix="end,">
<foreach collection="list" item="i" index="index">
when id=#{i.id} then #{i.invoicingStatus}
</foreach>
</trim>
<trim prefix="invoice_data_status=case" suffix="end,">
<foreach collection="list" item="i" index="index">
when id=#{i.id} then #{i.invoiceDataStatus}
</foreach>
</trim>
</trim>
where
<foreach collection="list" separator="or" item="i" index="index">
id = #{i.id}
</foreach>
</update>
<select id="getReceiptBackPage" resultType="cn.iocoder.yudao.module.wealth.vo.receipt.ReceiptBackVO">
<!--添加关联订单和应收款表的关联-->
SELECT
er.*
FROM ecw_receipt er
<if test="query.numberNo != null and query.numberNo != ''">
INNER JOIN (SELECT receipt_id,order_id FROM ecw_receivable GROUP BY receipt_id, order_id ) AS rb ON rb.receipt_id = er.id
LEFT JOIN ecw_order o ON o.order_id=rb.order_id AND o.deleted=0
</if>
WHERE er.deleted = 0
<include refid="pageCondition"/>
<if test="query.numberNo != null and query.numberNo != ''">
GROUP BY er.receipt_no
</if>
LIMIT #{start}, #{size}
</select>
<select id="getOrderInfoByReceiptId"
resultType="cn.iocoder.yudao.module.wealth.vo.receipt.ReceiptRelationOrderInfoVO">
SELECT
o.order_no AS orderNo,
o.tidan_no AS tidanNo,
o.order_id AS orderId,
o.status
FROM ecw_receivable er
LEFT JOIN ecw_order o ON o.order_id=er.order_id
WHERE er.deleted= 0 AND er.receipt_id = #{id}
GROUP BY o.order_id
</select>
<select id="countReceiptBackPage" resultType="java.lang.Integer">
SELECT count(1)
FROM ecw_receipt er
<if test="query.numberNo != null and query.numberNo != ''">
INNER JOIN (SELECT receipt_id,order_id FROM ecw_receivable GROUP BY receipt_id, order_id ) AS rb ON rb.receipt_id = er.id
LEFT JOIN ecw_order o ON o.order_id=rb.order_id AND o.deleted=0
</if>
WHERE er.deleted = 0
<include refid="pageCondition"/>
<if test="query.numberNo != null and query.numberNo != ''">
GROUP BY er.receipt_no
</if>
</select>
<sql id="pageCondition">
<if test="query.receiptItemStatus != null">
<if test="query.receiptItemStatus.size() == 1">
AND er.`receipt_item_status` = #{query.receiptItemStatus[0]}
</if>
<if test="query.receiptItemStatus.size() > 1">
AND er.`receipt_item_status` IN
<foreach collection="query.receiptItemStatus" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</if>
<if test="query.invoicingStatus != null">
<if test="query.invoicingStatus.size() == 1">
AND er.`invoicing_status` = #{query.invoicingStatus[0]}
</if>
<if test="query.invoicingStatus.size() > 1">
AND er.`invoicing_status` IN
<foreach collection="query.invoicingStatus" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</if>
<if test="query.invoiceDataStatus != null">
<if test="query.invoiceDataStatus.size() == 1">
AND er.`invoice_data_status` = #{query.invoiceDataStatus[0]}
</if>
<if test="query.invoiceDataStatus.size() > 1">
AND er.`invoice_data_status` IN
<foreach collection="query.invoiceDataStatus" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</if>
<if test="query.receiptNo != null">
AND er.`receipt_no` = #{query.receiptNo}
</if>
<if test="query.customerId != null">
AND er.`customer_id` = #{query.customerId}
</if>
<if test="query.customerName != null">
AND er.`customer_name` = #{query.customerName}
</if>
<if test="query.state != null">
AND er.`state` = #{query.state}
</if>
<if test="query.salesmanId != null">
AND (er.`salesman_id` = #{query.salesmanId} or er.`customer_id` in(select cus.id from ecw_customer cus where
cus.is_customer_service_confirmed = 1 and cus.customer_service = #{query.salesmanId} ))
</if>
<if test="query.salesmanName != null">
AND er.`salesman_name` = #{query.salesmanName}
</if>
<if test="query.beginCreateTime != null and query.endCreateTime != null ">
AND er.`create_time` between #{query.beginCreateTime} and #{query.endCreateTime}
</if>
<if test="query.numberNo != null and query.numberNo != '' ">
AND (o.order_no = #{query.numberNo} OR o.tidan_no = #{query.numberNo} OR o.container_number = #{query.numberNo})
</if>
</sql>
</mapper>