Blame view

src/main/resources/mybatis/config/LocationMapper.xml 13.4 KB
1
2
<?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">
3
4
<mapper namespace="com.huaheng.pc.config.location.mapper.LocationMapper">
  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.location.domain.Location">
5
6
7
8
9
10
11
12
13
14
15
    <!--@mbg.generated-->
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="code" jdbcType="VARCHAR" property="code" />
    <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
    <result column="zoneCode" jdbcType="VARCHAR" property="zoneCode" />
    <result column="locationType" jdbcType="VARCHAR" property="locationType" />
    <result column="containerCode" jdbcType="VARCHAR" property="containerCode" />
    <result column="iRow" jdbcType="INTEGER" property="iRow" />
    <result column="iColumn" jdbcType="INTEGER" property="iColumn" />
    <result column="iLayer" jdbcType="INTEGER" property="iLayer" />
    <result column="iGrid" jdbcType="INTEGER" property="iGrid" />
16
    <result column="roadway" jdbcType="VARCHAR" property="roadway" />
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="lastCycleCountDate" jdbcType="TIMESTAMP" property="lastCycleCountDate" />
    <result column="created" jdbcType="TIMESTAMP" property="created" />
    <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
    <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" />
    <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" />
    <result column="version" jdbcType="INTEGER" property="version" />
    <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
    <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
    <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
    <result column="userDef4" jdbcType="VARCHAR" property="userDef4" />
    <result column="userDef5" jdbcType="VARCHAR" property="userDef5" />
    <result column="userDef6" jdbcType="VARCHAR" property="userDef6" />
    <result column="userDef7" jdbcType="VARCHAR" property="userDef7" />
    <result column="userDef8" jdbcType="VARCHAR" property="userDef8" />
    <result column="systemCreated" jdbcType="INTEGER" property="systemCreated" />
xqs authored
33
      <result column="deleted" jdbcType="BIT" property="deleted" />
34
35
36
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
37
    id, code, warehouseCode, zoneCode, locationType, containerCode, iRow, iColumn, iLayer,
xqs authored
38
    iGrid, roadway, status, `name`, lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy,
39
    version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8,
40
    systemCreated,deleted
41
  </sql>
pengcheng authored
42
43
44
45

  <update id="updateStatus">
        UPDATE location set `status`=#{status} WHERE warehouseCode=#{warehouseCode} AND `code`=#{code}
    </update>
46
47
  <select id="position" resultMap="BaseResultMap">
    select code from location where #{locatingRule}
48
  </select>
xqs authored
49
50
51
52
53
54
55
56
57
58
59
60
  <insert id="addList" parameterType="com.huaheng.pc.config.location.domain.Location" keyProperty="id" useGeneratedKeys="true" >
    INSERT INTO location(
    code,
    warehouseCode,
    zoneCode,
    locationType,
    iRow,
    iColumn,
    iLayer,
    iGrid,
    roadway,
61
    area,
62
63
    createdBy,
    lastUpdatedBy,
游杰 authored
64
65
    status,
    high
66
67
68
69
70
71
72
73
74
75
76
77
    )values
    <foreach collection="locations" item="item" index="index" separator=",">
      (
      #{item.code},
      #{item.warehouseCode},
      #{item.zoneCode},
      #{item.locationType},
      #{item.iRow},
      #{item.iColumn},
      #{item.iLayer},
      #{item.iGrid},
      #{item.roadway},
78
      #{item.area},
79
80
      #{item.createdBy},
      #{item.lastUpdatedBy},
游杰 authored
81
82
      #{item.status},
      #{item.high}
83
84
85
86
      )
    </foreach>
  </insert>
87
88
89
90
91
92
93
94
95
96
97
98
    <update id="updateList" parameterType="com.huaheng.pc.config.location.domain.Location" keyProperty="id" useGeneratedKeys="true" >
        replace INTO location(
        code,
        warehouseCode,
        zoneCode,
        locationType,
        iRow,
        iColumn,
        iLayer,
        iGrid,
        rowFlag,
        roadway,
99
        area,
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
        createdBy,
        lastUpdatedBy,
        status
        )values
        <foreach collection="locations" item="item" index="index" separator=",">
            (
            #{item.code},
            #{item.warehouseCode},
            #{item.zoneCode},
            #{item.locationType},
            #{item.iRow},
            #{item.iColumn},
            #{item.iLayer},
            #{item.iGrid},
            #{item.rowFlag},
            #{item.roadway},
116
            #{item.area},
117
118
119
120
121
122
123
            #{item.createdBy},
            #{item.lastUpdatedBy},
            #{item.status}
            )
        </foreach>
    </update>
mahuandong authored
124
  <select id="getAllLocation" resultType="com.huaheng.pc.config.location.domain.Location">
125
    select  max(iRow) as iRow,max(iColumn) as iColumn,max(iLayer) as iLayer,max(iGrid) as iGrid from location l where l.warehouseCode=#{warehouseCode} AND l.zoneCode=#{type}
mahuandong authored
126
127
  </select>
128
129
130
131
132
133
134
  <select id="getLocationProp"  resultType="java.util.LinkedHashMap">
      SELECT w.name warehouseName,ifnull(convert(a.num1/(b.num2+a.num1),decimal(15,2)),0) '有货',ifnull(convert(b.num2/(b.num2+a.num1),decimal(15,2)),0) '无货'  from warehouse w
      left join
      (SELECT count(1) num1,warehouseCode FROM location WHERE containerCode!='' GROUP BY warehouseCode) a on a.warehouseCode=w.code
      LEFT JOIN
      (SELECT count(1) num2,warehouseCode FROM location WHERE containerCode ='' GROUP BY warehouseCode) b on b.warehouseCode=w.code
    </select>
游杰 authored
135
136

  <select id="pickLocation" resultType="com.huaheng.pc.config.location.domain.Location">
游杰 authored
137
        select * from location
xqs authored
138
        where containerCode != '' and status = 'empty'
游杰 authored
139
    </select>
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
    <select id="selectLocationByContainerEmpty" resultType="com.huaheng.pc.config.location.domain.Location">
        SELECT id, code, warehouseCode, zoneCode, locationType, containerCode, iRow, iColumn, iLayer,
        iGrid, roadway, `name`, lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy,
        version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8,
        systemCreated
        FROM location t
        <where>
            t.warehouseCode = #{warehouseCode}
            <if test="zoneCode != null">
                AND zoneCode = #{zoneCode}
            </if>
            <if test="roadWay != null">
                AND roadWay = #{roadWay}
            </if>
            AND t.status='empty'
            AND t.containerCode =''
            AND t.`code` NOT in
            (SELECT b.locationCode FROM inventory_detail b WHERE b.warehouseCode = #{warehouseCode}
            <if test="zoneCode != null">
                AND zoneCode = #{zoneCode}
            </if>
            )
            ORDER BY t.lastUpdated ASC
        </where>
    </select>
169
170
    <select id="selectContainerEmpty" resultType="com.huaheng.pc.config.location.domain.Location">
        SELECT id, code, warehouseCode, zoneCode, locationType, containerCode, iRow, iColumn, iLayer,
171
        iGrid, roadway, `name`, lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy,
172
173
174
175
176
177
178
179
180
        version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8,
        systemCreated
        FROM location t
        <where>
            t.warehouseCode = #{warehouseCode}
            AND t.status='empty'
            AND t.containerCode !=''
            AND t.containerCode is not NULL
            AND t.`code` NOT in
181
            (SELECT b.locationCode FROM inventory_detail b WHERE b.warehouseCode = #{warehouseCode})
182
183
184
            ORDER BY t.lastUpdated ASC
        </where>
    </select>
周峰 authored
185
    <select id="getFirstRowOfZone" resultType="java.lang.Integer">
186
        select min(iRow) from location where warehouseCode=#{warehouseCode} and  zoneCode = #{locationType}
周峰 authored
187
188
    </select>
    <select id="getLastRowOfZone" resultType="java.lang.Integer">
189
        select max(iRow) from location where warehouseCode=#{warehouseCode} and zoneCode = #{locationType}
周峰 authored
190
    </select>
191
周鸿 authored
192
193
194
195
196
197
198
199
    <select id="selectAddress" resultType="com.huaheng.pc.config.location.domain.Location">
        SELECT max(row)  AS row,max(line)  AS line FROM location where type='A' and warehouseCode=#{warehouseCode}
    </select>
    <select id="selectEmptyAddress" resultType="com.huaheng.pc.config.location.domain.Location">
        SELECT DISTINCT l.row,l.line from location l
                                              inner join location_position i on i.warehouseCode=l.warehouseCode and l.code=i.locationCode
                                              inner join points p on i.warehouseCode=p.warehouseCode and i.intX=p.intX and i.intY=p.intY and p.isLocked=#{isLocked} and p.warehouseCode=#{warehouseCode}
    </select>
周鸿 authored
200
xumiao authored
201
202
203
    <select id="selectlistEmpty" resultType="java.lang.String">
        SELECT a.code from (SELECT * from location where iRow=3 and containerCode='' and zoneCode='LK' and warehouseCode=#{warehouseCode}) a
                               INNER JOIN (SELECT * from location where iRow=2 and containerCode!='' and zoneCode='LK' and warehouseCode=#{warehouseCode}) b on a.iColumn=b.iColumn and a.iLayer=b.iLayer and a.iGrid=b.iGrid
周鸿 authored
204
205
    </select>
    <select id="selectCode" resultType="com.huaheng.pc.config.location.domain.Location">
xumiao authored
206
        select l.* from location l inner join task_header t on t.status&lt;=10 and l.zoneCode='LK' and (t.fromLocation = l.code or t.toLocation =l.code) and l.containerCode !='' and l.warehouseCode=#{warehouseCode}
周鸿 authored
207
208
209
210
211
212
213
214
215
216
    </select>


    <select id="selectByPrefix" resultType="com.huaheng.pc.config.location.domain.Location">
        select * from location
        <where> warehouseCode=#{warehouseCode} and locationType=#{type} and containerCode ='' and status='empty'
            <if test="roadway != null">
                AND roadway = #{roadway}
            </if>
        </where>
xumiao authored
217
        order by iColumn desc,FIND_IN_SET(iRow,'3,1,2'),iGrid desc,iLayer asc limit 1
周鸿 authored
218
219
220
221
222
223
224
225
226
227

    </select>

    <select id="selectModelByOld" resultType="com.huaheng.pc.config.location.domain.Location">
        select * from location
        <where> warehouseCode=#{warehouseCode} and locationType=#{locationType} and containerCode ='' and status='empty' and code !=#{code}
            <if test="roadway != null">
                AND roadway = #{roadway}
            </if>
        </where>
xumiao authored
228
        order by iColumn desc,FIND_IN_SET(iRow,'3,1,2'),iGrid desc,iLayer asc limit 1
周鸿 authored
229
230
231
232
233
234
235
236

    </select>
    <select id="selectModelByOlds" resultType="com.huaheng.pc.config.location.domain.Location">
        select * from location
        where warehouseCode=#{location.warehouseCode} and locationType=#{location.locationType} and containerCode ='' and status='empty' and code not in
        <foreach item="item" index="index" collection="codes" open="(" separator="," close=")">
            #{item}
        </foreach>
xumiao authored
237
        order by iColumn desc,FIND_IN_SET(iRow,'3,1,2'),iGrid desc,iLayer asc limit 1
周鸿 authored
238
239
240
241
242
243
244
245
246
247
248
249
250

    </select>

    <select id="getLocationAajacentIsNull" resultType="com.huaheng.pc.config.location.domain.Location">
        select * from location where zoneCode='LK' and status='empty' and roadWay=2
        <choose>
            <when test="flag==true">
                and length(containerCode)>1
            </when>
            <otherwise>
                and (containerCode is null or containerCode ='')
            </otherwise>
        </choose>
251
        and iLayer=#{layer}
周鸿 authored
252
253
254
255
256
257
258
259
        <choose>
            <when test="line==23">
                and iColumn &lt; 23  ORDER BY iColumn desc
            </when>
            <when test="line==1">
                and iColumn &gt; 1  ORDER BY iColumn asc
            </when>
            <otherwise>
260
                and iColumn &gt;=#{line}  ORDER BY iColumn asc
周鸿 authored
261
262
263
264
265
266
            </otherwise>
        </choose>
        limit 2
    </select>

    <select id="getLocationRoadWay" resultType="com.huaheng.pc.config.location.domain.Location">
267
        select * from location  where roadway = #{roadway} and zoneCode ="LK" and length(containerCode) &gt; 1  and status="empty" and iLayer=ceiling(rand()*8) limit 1
周鸿 authored
268
269
270
271
272
273
274
275
276
277
278
    </select>
    <select id="getLocationAdjacent" resultType="com.huaheng.pc.config.location.domain.Location">
        select * from location where zoneCode='LK' and status='empty' and roadWay=2
        <choose>
            <when test="flag==true">
                and length(containerCode)>1
            </when>
            <otherwise>
                and (containerCode is null or containerCode ='')
            </otherwise>
        </choose>
279
        and (iColumn between #{line}-2  and #{line}+2) and (iLayer between #{layer}-3 and #{layer}+3) and iColumn >1
周鸿 authored
280
    </select>
281
282
283
284
285
286

    <select id="getLocationOfRule" resultType="com.huaheng.pc.config.location.domain.Location">
        select * from location where zoneCode='XC' and  status = 'empty'
                                 AND (containerCode IS NULL OR containerCode = '')  ORDER BY iColumn asc,iRow  asc LIMIT 1

    </select>
周鸿 authored
287
288
289
290
291
292

    <select id="selectListInventory" resultType="com.huaheng.pc.config.location.domain.Location">
        SELECT l.code from location l inner join container c on
                l.warehouseCode=c.warehouseCode and l.status='empty' and l.zoneCode=#{zoneCode}
                and l.containerCode =c.code and c.status!='empty' ORDER BY code asc limit 2
    </select>
293
294
295
296
297
298
299
300
301

    <update id="updateStatusNew">
        UPDATE location
        SET `status`= #{status}
        WHERE warehouseCode = #{warehouseCode}
          AND `code`= #{code}
          AND `status` = #{oldStatus}
    </update>
</mapper>