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
<?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.by4cloud.platformx.business.mapper.ProductMapper">
 
  <resultMap id="productMap" type="com.by4cloud.platformx.business.entity.Product">
        <id property="id" column="id"/>
        <result property="productName" column="product_name"/>
        <result property="erpCode" column="erp_code"/>
        <result property="mainCode" column="main_code"/>
        <result property="taxRate" column="tax_rate"/>
        <result property="compId" column="comp_id"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
  </resultMap>
    <select id="getProductListByScope" resultType="com.by4cloud.platformx.business.vo.ProductSelectVo">
        SELECT
            t.id,
            t.product_name,
            t.main_code,
            t.erp_code,
            t.product_type,
            t.tax_rate,
            t.tax_class,
            t.tax_code,
            t.parent_id,
            t.create_by,
            t.update_by,
            t.create_time,
            t.update_time,
            t.del_flag,
            t.comp_id
        FROM
            product t
        WHERE
            del_flag = '0'
        <if test="product.productName !=null and product.productName !=''">
            and t.product_name LIKE CONCAT('%', #{product.productName}, '%')
        </if>
          AND (
            NOT EXISTS ( SELECT 1 FROM product t1 WHERE t1.parent_id = t.id ))
    </select>
    <select id="getProductListByParentId" resultType="com.by4cloud.platformx.business.vo.ProductSelectVo">
        SELECT
            t.id,
            t.product_name,
            t.main_code,
            t.erp_code,
            t.product_type,
            t.tax_rate,
            t.tax_class,
            t.tax_code,
            t.parent_id,
            t.create_by,
            t.update_by,
            t.create_time,
            t.update_time,
            t.del_flag,
            t.comp_id ,
            ( SELECT count( 1 ) FROM product t1 WHERE t1.parent_id = t.id ) AS childNum
        FROM
            product t
        WHERE
            del_flag = '0'
        <if test="queryDTO.productName !=null and queryDTO.productName !=''">
            and t.product_name LIKE CONCAT('%', #{queryDTO.productName}, '%')
        </if>
        <if test="queryDTO.parentId !=null ">
            and t.parent_id = #{queryDTO.parentId}
        </if>
        <choose>
            <when test="queryDTO.contractCategory !=null and queryDTO.contractCategory !='' and queryDTO.contractCategory=='water_house'">
                and t.erp_code in
                <foreach collection="erpCodes" item="erp" open="(" separator="," close=")">
                    #{erp}
                </foreach>
            </when>
            <otherwise>
                and t.erp_code not in
                <foreach collection="erpCodes" item="erp" open="(" separator="," close=")">
                    #{erp}
                </foreach>
            </otherwise>
        </choose>
 
    </select>
</mapper>