| <?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.LocMastMapper"> | 
|   | 
|     <!-- 通用查询映射结果 --> | 
|     <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocMast"> | 
|         <id column="loc_no" property="locNo" /> | 
|         <result column="whs_type" property="whsType" /> | 
|         <result column="plt_type" property="pltType" /> | 
|         <result column="ctn_type" property="ctnType" /> | 
|         <result column="loc_sts" property="locSts" /> | 
|         <result column="sheet_no" property="sheetNo" /> | 
|         <result column="crn_no" property="crnNo" /> | 
|         <result column="row1" property="row1" /> | 
|         <result column="bay1" property="bay1" /> | 
|         <result column="lev1" property="lev1" /> | 
|         <result column="full_plt" property="fullPlt" /> | 
|         <result column="loc_type" property="locType" /> | 
|         <result column="loc_type1" property="locType1" /> | 
|         <result column="loc_type2" property="locType2" /> | 
|         <result column="loc_type3" property="locType3" /> | 
|         <result column="out_enable" property="outEnable" /> | 
|         <result column="io_time" property="ioTime" /> | 
|         <result column="first_time" property="firstTime" /> | 
|         <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="error_time" property="errorTime" /> | 
|         <result column="error_memo" property="errorMemo" /> | 
|         <result column="ctn_kind" property="ctnKind" /> | 
|         <result column="sc_weight" property="scWeight" /> | 
|         <result column="inv_wh" property="invWh" /> | 
|         <result column="mk" property="mk" /> | 
|         <result column="barcode" property="barcode" /> | 
|         <result column="ctn_no" property="ctnNo" /> | 
|   | 
|     </resultMap> | 
|     <update id="updateLocSts"> | 
|         UPDATE asr_loc_mast SET loc_sts = #{locSts} WHERE loc_no = #{locNo} | 
|     </update> | 
|   | 
|     <select id="queryFreeLocMast" resultMap="BaseResultMap"> | 
|         select | 
|         * | 
|         from asr_loc_mast | 
|         where 1=1 | 
|         and row1 in | 
|         <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")"> | 
|             #{item} | 
|         </foreach> | 
|         and ctn_no = | 
|         ( | 
|             select | 
|             top 1 | 
|             ctn_no | 
|             from ( | 
|                 select | 
|                 ctn_no, | 
|                 count(1) as count | 
|                 from asr_loc_mast | 
|                 where 1=1 | 
|                 and row1 in | 
|                 <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")"> | 
|                     #{item} | 
|                 </foreach> | 
|                 and loc_sts = 'O' | 
|                 <if test="locType1 != null"> | 
|                     and loc_type1 = #{locType1} | 
|                 </if> | 
|                 and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401') | 
|                 group by ctn_no | 
|             ) a | 
|             where count = #{rowsLen} | 
|             order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc | 
|         ) | 
|     </select> | 
|   | 
|     <select id="queryFreeLocMast0" resultMap="BaseResultMap"> | 
|         select | 
|         * | 
|         from asr_loc_mast | 
|         where 1=1 | 
|         and row1 in | 
|         <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")"> | 
|             #{item} | 
|         </foreach> | 
|         and ctn_no = | 
|         ( | 
|             select | 
|             top 1 | 
|             ctn_no | 
|             from ( | 
|                 select | 
|                 ctn_no, | 
|                 count(1) as count | 
|                 from asr_loc_mast | 
|                 where 1=1 | 
|                 and row1 in | 
|                 <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")"> | 
|                     #{item} | 
|                 </foreach> | 
|                 and loc_sts = 'O' | 
|                 <if test="locType1 != null"> | 
|                     and loc_type1 = #{locType1} | 
|                 </if> | 
|                 <choose> | 
|                     <when test="inoutEveryday != null and inoutEveryday"> | 
|                         AND bay1 < 11 and lev1 in (3,4) | 
|                     </when> | 
|                     <otherwise> | 
|                         AND (bay1 >= 11 or (bay1 < 11 and lev1 in (1,2))) | 
|                     </otherwise> | 
|                 </choose> | 
|                 and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401') | 
|                 group by ctn_no | 
|             ) a | 
|             where count = #{rowsLen} | 
|             order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc | 
|         ) | 
|     </select> | 
|   | 
|     <select id="queryFreeLocMast1" resultMap="BaseResultMap"> | 
|         select | 
|         * | 
|         from asr_loc_mast | 
|         where 1=1 | 
|         and row1 in | 
|         <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")"> | 
|             #{item} | 
|         </foreach> | 
|         and ctn_no = | 
|         ( | 
|             select | 
|             top 1 | 
|             ctn_no | 
|             from ( | 
|                 select | 
|                 ctn_no, | 
|                 count(1) as count | 
|                 from asr_loc_mast | 
|                 where 1=1 | 
|                 and row1 in | 
|                 <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")"> | 
|                     #{item} | 
|                 </foreach> | 
|                 and loc_sts = 'O' | 
|   | 
|                 <if test="rowBeg != null"> | 
|                     and row1 >= #{rowBeg} | 
|                 </if> | 
|                 <if test="rowEnd != null"> | 
|                     and row1 <= #{rowEnd} | 
|                 </if> | 
|                 <if test="bayBeg != null"> | 
|                     and bay1 >= #{bayBeg} | 
|                 </if> | 
|                 <if test="bayEnd != null"> | 
|                     and bay1 <= #{bayEnd} | 
|                 </if> | 
|                 <if test="levBeg != null"> | 
|                     and lev1 >= #{levBeg} | 
|                 </if> | 
|                 <if test="levEnd != null"> | 
|                     and lev1 <= #{levEnd} | 
|                 </if> | 
|   | 
|                 <if test="locType1 != null"> | 
|                     and loc_type1 = #{locType1} | 
|                 </if> | 
|   | 
|                 <choose> | 
|                     <when test="inoutEveryday != null and inoutEveryday"> | 
|                         AND bay1 < 11 and lev1 in (3,4) | 
|                     </when> | 
|                     <otherwise> | 
|                         AND (bay1 >= 11 or (bay1 < 11 and lev1 in (1,2))) | 
|                     </otherwise> | 
|                 </choose> | 
|                 and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401') | 
|                 group by ctn_no | 
|             ) a | 
|             where count = #{rowsLen} | 
|             order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc | 
|         ) | 
|     </select> | 
|   | 
|     <select id="queryFreeLocMastEnd" resultMap="BaseResultMap"> | 
|         select * | 
|         from asr_loc_mast | 
|         where row1=#{row} | 
|         and loc_sts='O' | 
|         <if test="locType1 != null"> | 
|             and loc_type1 = #{locType1} | 
|         </if> | 
|         and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401') | 
|         order by loc_sts desc ,lev1 asc,bay1 asc | 
|     </select> | 
|   | 
|     <select id="queryFreeLocMastEnd1" resultMap="BaseResultMap"> | 
|         select * | 
|         from asr_loc_mast | 
|         where row1=#{row} | 
|         and loc_sts='O' | 
|         <if test="locType1 != null"> | 
|             and loc_type1 = #{locType1} | 
|         </if> | 
|         <choose> | 
|             <when test="inoutEveryday != null and inoutEveryday"> | 
|                 AND bay1 < 11             </when> | 
|             <otherwise> | 
|                 AND bay1 >= 11 | 
|             </otherwise> | 
|         </choose> | 
|         and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401') | 
|         order by loc_sts desc ,lev1 asc,bay1 asc | 
|     </select> | 
|   | 
|     <select id="queryFreeLocMastEnd0" resultMap="BaseResultMap"> | 
|         select * | 
|         from asr_loc_mast | 
|         where bay1=#{bay} | 
|         and lev1=#{lev} | 
| --         and loc_sts='O' | 
|         <if test="locType1 != null"> | 
|             and loc_type1 = #{locType1} | 
|         </if> | 
|         and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401') | 
|         <if test="row1 >= 1 and row1 <= 3"> | 
|             and row1 >= 1 and row1 <= 3 | 
|             order by loc_sts desc ,row1 asc | 
|         </if> | 
|         <if test="row1 >= 4 and row1 <= 7"> | 
|             and row1 >= 4 and row1 <= 7 | 
|             order by loc_sts desc ,row1 desc | 
|         </if> | 
|         <if test="row1 >= 8 and row1 <= 11"> | 
|             and row1 >= 8 and row1 <= 11 | 
|             order by loc_sts desc ,row1 asc | 
|         </if> | 
|         <if test="row1 >= 12 and row1 <= 14"> | 
|             and row1 >= 12 and row1 <= 14 | 
|             order by loc_sts desc ,row1 desc | 
|         </if> | 
|         <if test="row1 >= 15 and row1 <= 18"> | 
|             and row1 >= 15 and row1 <= 18 | 
|             order by loc_sts desc ,row1 asc | 
|         </if> | 
|         <if test="row1 >= 19 and row1 <= 21"> | 
|             and row1 >= 19 and row1 <= 21 | 
|             order by loc_sts desc ,row1 desc | 
|         </if> | 
|     </select> | 
|   | 
|     <select id="queryFreeLocMast2" resultMap="BaseResultMap"> | 
|         select * | 
|         from asr_loc_mast | 
|         where 1=1 | 
|         and loc_sts='O' | 
|         <if test="locType1 != null"> | 
|             and loc_type1 = #{locType1} | 
|         </if> | 
|   | 
|         <if test="rowBeg != null"> | 
|             and row1 >= #{rowBeg} | 
|         </if> | 
|         <if test="rowEnd != null"> | 
|             and row1 <= #{rowEnd} | 
|         </if> | 
|         <if test="bayBeg != null"> | 
|             and bay1 >= #{bayBeg} | 
|         </if> | 
|         <if test="bayEnd != null"> | 
|             and bay1 <= #{bayEnd} | 
|         </if> | 
|         <if test="levBeg != null"> | 
|             and lev1 >= #{levBeg} | 
|         </if> | 
|         <if test="levEnd != null"> | 
|             and lev1 <= #{levEnd} | 
|         </if> | 
|         and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401') | 
|         order by loc_sts desc ,lev1 asc,bay1 asc | 
|     </select> | 
|   | 
|     <select id="findOutMast" resultMap="BaseResultMap"> | 
|         select * from asr_loc_mast | 
|         where loc_type1 = #{locType1} | 
|         and loc_type2 = 2 | 
|         and crn_no in | 
|         <foreach item="item" collection="crnNos" index="index"  separator="," open="(" close=")"> | 
|             #{item} | 
|         </foreach> | 
|         and loc_sts = 'O' | 
|         order by bay1,lev1,row1 | 
|     </select> | 
|   | 
|     <select id="findInEmptyLocMast" resultMap="BaseResultMap"> | 
|         select * from asr_loc_mast | 
|         where loc_type2 = 1 | 
|         and loc_type1 = #{locType1} | 
|         and row1 in | 
|         <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")"> | 
|             #{item} | 
|         </foreach> | 
|         and loc_sts = 'O' | 
|         and crn_no = #{crnNo} | 
|         order by bay1,lev1,row1 | 
|     </select> | 
|   | 
|     <select id="findEmptyLocMastByLocNos" resultMap="BaseResultMap"> | 
|         select * from asr_loc_mast | 
|         where loc_type2 = 1 | 
|         and loc_type1 = #{locType1} | 
|         and loc_no in | 
|         <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")"> | 
|             #{item} | 
|         </foreach> | 
|         and loc_sts = 'O' | 
|         <if test="crnNo != null and crnNo != ''"> | 
|             and crn_no = #{crnNo} | 
|         </if> | 
|         order by bay1,lev1,row1 | 
|     </select> | 
|   | 
|     <select id="findEmptyLowFrequencyLocMast" resultMap="BaseResultMap"> | 
|         select * from asr_loc_mast | 
|         where loc_type2 = 3 | 
|         <if test="locType1 != 1"> | 
|             and loc_type1 = #{locType1} | 
|         </if> | 
|         and loc_sts = 'O' | 
|         and crn_no = #{crnNo} | 
|         order by bay1,lev1,row1 | 
|     </select> | 
|   | 
|     <select id="findEmptyLocMast" resultMap="BaseResultMap"> | 
|         select * from asr_loc_mast | 
|         where loc_type1 = #{locType1} | 
|         and loc_sts = 'O' | 
|         and crn_no = #{crnNo} | 
|         order by bay1,lev1,row1 | 
|     </select> | 
|   | 
|     <select id="selectLocByLev" resultMap="BaseResultMap"> | 
|         SELECT * FROM asr_loc_mast WHERE lev1 = #{lev} | 
|     </select> | 
|   | 
|     <select id="selectByLocNos" resultMap="BaseResultMap"> | 
|         select * from asr_loc_mast | 
|         where loc_no in | 
|         <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")"> | 
|             #{item} | 
|         </foreach> | 
|     </select> | 
|   | 
|     <select id="selectEmptyLocCount0" resultType="java.lang.Integer"> | 
|         select count(1) from asr_loc_mast | 
|         where 1=1 | 
|         and loc_sts = 'O' | 
|         and loc_type1 = #{locType1} | 
|         and loc_type2 = #{locType2} | 
|         and crn_no = #{crnNo} | 
|         <if test="crnNo == 1"> | 
|             and row1 in (3,4) | 
|         </if> | 
|         <if test="crnNo == 2"> | 
|             and row1 in (11,12) | 
|         </if> | 
|         <if test="crnNo == 3"> | 
|             and row1 in (18,19) | 
|         </if> | 
|     </select> | 
| </mapper> |