guoyujie
2025-07-29 33331f53cc53742a0d7581857b77303a27a91250
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?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.example.erp.mapper.sd.ProductMapper">
    <resultMap id="productMap" type="com.example.erp.entity.sd.Product" >
        <id column="id" property="id"/>
        <result column="product_name" property="productName"/>
        <result column="product_abbreviation" property="productAbbreviation"/>
        <result column="total_thickness" property="totalThickness"/>
        <result column="thickness" property="thickness"/>
        <result column="query" property="query"/>
        <result column="remarks" property="remarks"/>
        <result column="state" property="state"/>
        <result column="creator" property="creator"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <!--接收其他外键实体类数据-->
        <association property="basicGlassType" javaType="com.example.erp.entity.sd.BasicGlassType">
            <result column="type_id" property="typeId"/>
            <result column="type_name" property="typeName"/>
        </association>
 
        <!--<result column="g_typeId" property="glassTypes.typeId"/>
        <result column="g_type" property="glassTypes.type"/>-->
 
    </resultMap>
 
    <select id="defaultProduct" resultMap="productMap">
        select a.id ,
        a.product_name,
        a.product_abbreviation,
        a.total_thickness,
        a.thickness,
        a.query,
        a.remarks,
        a.state,
        a.creator,
        date(a.create_time) as create_time,
        a.update_time       as update_time,
        a.type_id         as type_id,
        bgt.type_name
        from product as a
        left join basic_glass_type bgt on bgt.type_id = a.type_id
        <where>
            <if test="glassTypeId != null and glassTypeId != ''">
                and a.type_id like concat('%',#{glassTypeId},'%')
            </if>
            <if test="product.id != null and product.id != ''">
                and a.id like concat('%',#{product.id},'%')
            </if>
            <if test="product.productName != null and product.productName != ''">
                and a.product_name like concat('%',#{product.productName},'%')
            </if>
            <if test="product.productAbbreviation != null and product.productAbbreviation != ''">
                and a.product_abbreviation like concat('%',#{product.productAbbreviation},'%')
            </if>
            <if test="product.basicGlassType.typeName != null and product.basicGlassType.typeName!= ''">
                and bgt.type_name like concat('%',#{product.basicGlassType.typeName},'%')
            </if>
            <if test="product.query != null and product.query != ''">
                and a.query like concat('%',#{product.query},'%')
            </if>
            <if test="product.creator != null and product.creator != ''">
                and a.creator like concat('%',#{product.creator},'%')
            </if>
            <if test="product.state != null">
                and a.state = #{product.state}
            </if>
            <if test="product.createTime != null and product.createTime != ''">
                and date(a.create_time) like concat('%',#{product.createTime},'%')
            </if>
            <if test="product.remarks != null and product.remarks != ''">
                and a.remarks like concat('%',#{product.remarks},'%')
            </if>
        </where>
 
        order by id desc
        limit #{offset},#{pageSize}
        ;
    </select>
 
    <select id="selectProduct">
        select * from sd.product where ${productName}=#{productNameValue}
    </select>
 
    <select id="selectProductId">
        select * from sd.product where ${productName}=#{productNameValue} and id != #{id}
    </select>
 
    <select id="getPageTotal" >
        select
            CEILING(count(a.id)/#{pageSize})
        from product as a
        left join basic_glass_type bgt on bgt.type_id = a.type_id
        <where>
            <if test="glassTypeId != null and glassTypeId != ''">
                and a.type_id regexp #{glassTypeId}
            </if>
            <if test="product.id != null and product.id != ''">
                and a.id regexp #{product.id}
            </if>
            <if test="product.productName != null and product.productName != ''">
                and a.product_name regexp #{product.productName}
            </if>
            <if test="product.basicGlassType.typeName != null and product.basicGlassType.typeName!= ''">
                and bgt.type_name regexp #{product.basicGlassType.typeName}
            </if>
            <if test="product.query != null and product.query != ''">
                and a.query regexp #{product.query}
            </if>
            <if test="product.creator != null and product.creator != ''">
                and a.creator regexp #{product.creator}
            </if>
            <if test="product.createTime != null and product.createTime != ''">
                and date(a.create_time) regexp #{product.createTime}
            </if>
            <if test="product.remarks != null and product.remarks != ''">
                and a.remarks like concat('%',#{product.remarks},'%')
            </if>
            <if test="product.state != null">
                and a.state = #{product.state}
            </if>
            <if test="product.productAbbreviation != null and product.productAbbreviation != ''">
                and a.product_abbreviation like concat('%',#{product.productAbbreviation},'%')
            </if>
        </where>
 
        order by a.id desc
        limit #{offset},#{pageSize};
    </select>
    
    <update id="updateProductStateById">
        update product set state = #{state} where id = #{id}
    </update>
 
    <select id="getGlassThickness">
        select sum(REPLACE(JSON_UNQUOTE(JSON_EXTRACT(separation, '$.thickness')),'mm',''))
        from product_detail as a
        where a.prod_id = #{productId}
        and a.id &lt;= (select b.id
                        from product_detail as b
                        where b.prod_id = #{productId} and b.glass_sort = #{technologyNumber})
 
    </select>
</mapper>