王佳豪
2021-06-19 2ba85fe129286f6f6fc0a19365926f37574b9a05
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?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.zy.asrs.mapper.LocDetlMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocDetl">
        <result column="loc_no" property="locNo"/>
        <result column="matnr" property="matnr"/>
        <result column="maktx" property="maktx"/>
        <result column="lgnum" property="lgnum"/>
        <result column="type" property="type"/>
        <result column="mnemonic" property="mnemonic"/>
        <result column="supplier" property="supplier"/>
        <result column="warehouse" property="warehouse"/>
        <result column="brand" property="brand"/>
        <result column="anfme" property="anfme"/>
        <result column="altme" property="altme"/>
        <result column="zpallet" property="zpallet"/>
        <result column="bname" property="bname"/>
        <result column="memo" property="memo"/>
        <result column="modi_user" property="modiUser"/>
        <result column="modi_time" property="modiTime"/>
        <result column="appe_user" property="appeUser"/>
        <result column="appe_time" property="appeTime"/>
        <result column="mat_status" property="matStatus"/>
    </resultMap>
 
    <sql id="stockOutCondition">
        <if test="loc_no!=null and loc_no!='' ">
            and a.loc_no like '%' + #{loc_no} + '%'
        </if>
        <if test="matnr!=null and matnr!='' ">
            and a.matnr like '%' + #{matnr} + '%'
        </if>
        <if test="maktx!=null and maktx!='' ">
            and a.maktx like '%' + #{maktx} + '%'
        </if>
        <if test="type!=null and type!='' ">
            and a.type like '%' + #{type} + '%'
        </if>
        <if test="lgnum!=null and lgnum!='' ">
            and a.lgnum like '%' + #{lgnum} + '%'
        </if>
        <if test="anfme!=null and anfme!='' ">
            and a.anfme like '%' + #{anfme} + '%'
        </if>
        <if test="altme!=null and altme!='' ">
            and a.altme like '%' + #{altme} + '%'
        </if>
        <if test="startTime!=null and endTime!=null">
            and a.modi_time between #{startTime} and #{endTime}
        </if>
        <if test="supplier!=null and supplier!=null">
            and a.supplier like '%' + #{supplier} + '%'
        </if>
        <if test="mnemonic!=null and mnemonic!=null">
            and a.mnemonic like '%' + #{mnemonic} + '%'
        </if>
    </sql>
 
    <sql id="sumLocDetlCondition">
        <if test="loc_no!=null and loc_no!='' ">
            and t.loc_no like '%' + #{loc_no} + '%'
        </if>
        <if test="matnr!=null and matnr!='' ">
            and t.matnr like '%' + #{matnr} + '%'
        </if>
        <if test="maktx!=null and maktx!='' ">
            and t.maktx like '%' + #{maktx} + '%'
        </if>
        <if test="type!=null and type!='' ">
            and t.type like '%' + #{type} + '%'
        </if>
        <if test="lgnum!=null and lgnum!='' ">
            and t.lgnum like '%' + #{lgnum} + '%'
        </if>
        <if test="anfme!=null and anfme!='' ">
            and t.anfme like '%' + #{anfme} + '%'
        </if>
        <if test="supplier!=null and supplier!=null">
            and t.supplier like '%' + #{supplier} + '%'
        </if>
        <if test="mnemonic!=null and mnemonic!=null">
            and t.mnemonic like '%' + #{mnemonic} + '%'
        </if>
    </sql>
 
    <select id="getStockOutPage" resultMap="BaseResultMap">
        select * from
        (
        select
        ROW_NUMBER() over (order by a.appe_time,a.matnr,a.loc_no) as row,
        a.*
        from asr_loc_detl a
        left join asr_loc_mast b on a.loc_no = b.loc_no
        where 1=1
        and b.loc_sts = 'F'
        <include refid="stockOutCondition"></include>
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    </select>
 
    <select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">
        select
        count(1)
        from asr_loc_detl a
        left join asr_loc_mast b on a.loc_no = b.loc_no
        where 1=1
        and b.loc_sts = 'F'
        <include refid="stockOutCondition"></include>
    </select>
 
    <select id="getAllLocDetlData" resultMap="BaseResultMap">
        select loc_no,matnr,maktx,lgnum,type,mnemonic,supplier,warehouse,
        brand,anfme,altme,zpallet,bname,memo,modi_user, modi_time,appe_user,
        appe_time,mat_status from asr_loc_detl where 1 = 1
        <if test="loc_no!=null and loc_no!='' ">
            and loc_no = #{loc_no,jdbcType=VARCHAR}
        </if>
        <if test="matnr!=null and matnr!='' ">
            and matnr = #{matnr,jdbcType=VARCHAR}
        </if>
    </select>
 
    <update id="updateMatStatus">
        BEGIN
        <foreach collection="list" item="item" index="index">
            update dbo.asr_loc_detl
            set mat_status = #{item.matStatus,jdbcType=VARCHAR}
            where 1 = 1
            <if test="item.locNo!=null and item.locNo!='' ">
                and loc_no = #{item.locNo,jdbcType=VARCHAR}
            </if>
            <if test="item.matnr!=null and item.matnr!='' ">
                and matnr = #{item.matnr,jdbcType=VARCHAR}
            </if>
        </foreach>
        END;
    </update>
 
    <select id="queryAllMatDetl" resultMap="BaseResultMap">
        select * from
        (
        select ROW_NUMBER() over (order by c.matnr,c.loc_no) as row,* from (select a.loc_no,a.matnr, a.maktx, a.lgnum, a.type, a.mnemonic, a.supplier, a.anfme from asr_loc_detl a
        union
        select b.warehouse as loc_no,matnr, b.maktx, b.lgnum, b.type, b.mnemonic, b.supplier, b.anfme from asr_loc_normal b) c
        ) t where 1=1
        <if test="loc_no!=null and loc_no!='' ">
            and t.loc_no = #{loc_no}
        </if>
        <if test="matnr!=null and matnr!='' ">
            and t.matnr = #{matnr}
        </if>
        and t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    </select>
 
    <select id="queryAllMatDetlPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">
        select count(1) from
        (
        select ROW_NUMBER() over (order by c.matnr,c.loc_no) as row,* from (select a.loc_no,a.matnr, a.maktx, a.lgnum, a.type, a.mnemonic, a.supplier, a.anfme from asr_loc_detl a
        union
        select b.warehouse as loc_no,matnr, b.maktx, b.lgnum, b.type, b.mnemonic, b.supplier, b.anfme from asr_loc_normal b) c
        ) t where 1=1
        <if test="loc_no!=null and loc_no!='' ">
            and t.loc_no = #{loc_no}
        </if>
        <if test="matnr!=null and matnr!='' ">
            and t.matnr = #{matnr}
        </if>
    </select>
</mapper>