<?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.huaheng.pc.config.location.mapper.LocationMapper"> <resultMap id="BaseResultMap" type="com.huaheng.pc.config.location.domain.Location"> <!--@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" /> <result column="roadway" jdbcType="VARCHAR" property="roadway" /> <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" /> <result column="deleted" jdbcType="BIT" property="deleted" /> </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> id, code, warehouseCode, zoneCode, locationType, containerCode, iRow, iColumn, iLayer, iGrid, roadway, status, `name`, lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, systemCreated </sql> <update id="updateStatus"> UPDATE location set `status`=#{status} WHERE warehouseCode=#{warehouseCode} AND `code`=#{code} </update> <select id="position" resultMap="BaseResultMap"> select code from location where #{locatingRule} </select> <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, area, createdBy, lastUpdatedBy, status, high )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}, #{item.area}, #{item.createdBy}, #{item.lastUpdatedBy}, #{item.status}, #{item.high} ) </foreach> </insert> <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, area, 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}, #{item.area}, #{item.createdBy}, #{item.lastUpdatedBy}, #{item.status} ) </foreach> </update> <select id="getAllLocation" resultType="com.huaheng.pc.config.location.domain.Location"> 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} </select> <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> <select id="pickLocation" resultType="com.huaheng.pc.config.location.domain.Location"> select * from location where containerCode != '' and status = 'empty' </select> <select id="selectContainerEmpty" resultType="com.huaheng.pc.config.location.domain.Location"> SELECT id, code, warehouseCode, zoneCode, locationType, containerCode, iRow, iColumn, iLayer, iGrid, roadway, `name`, `enable`, lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy, 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 (SELECT b.locationCode FROM inventory_detail WHERE b.warehouseCode = #{warehouseCode}) ORDER BY t.lastUpdated ASC </where> </select> <select id="getFirstRowOfZone" resultType="java.lang.Integer"> select min(iRow) from location where warehouseCode=#{warehouseCode} and zoneCode = #{locationType} </select> <select id="getLastRowOfZone" resultType="java.lang.Integer"> select max(iRow) from location where warehouseCode=#{warehouseCode} and zoneCode = #{locationType} </select> <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> <select id="selectlistEnpty" resultType="java.lang.String"> SELECT a.code from (SELECT * from location where row=3 and containerCode='' and zoneCode='LK') a INNER JOIN (SELECT * from location where row=2 and containerCode!='' and zoneCode='LK') b on a.iColumn=b.iColumn and a.iLayer=b.iLayer and a.iGrid=b.iGrid </select> <select id="selectCode" resultType="com.huaheng.pc.config.location.domain.Location"> select l.* from location l inner join task_header t on t.status<=10 and l.zoneCode='LK' and (t.fromLocation = l.code or t.toLocation =l.code) and l.containerCode !='' </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> order by iColumn desc,FIND_IN_SET(row,'3,1,2'),iGrid desc,iLayer asc limit 1 </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> order by iColumn desc,FIND_IN_SET(row,'3,1,2'),iGrid desc,iLayer asc limit 1 </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> order by iColumn desc,FIND_IN_SET(row,'3,1,2'),iGrid desc,iLayer asc limit 1 </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> and iLayer=#{layer} <choose> <when test="line==23"> and iColumn < 23 ORDER BY iColumn desc </when> <when test="line==1"> and iColumn > 1 ORDER BY iColumn asc </when> <otherwise> and iColumn >=#{line} ORDER BY iColumn asc </otherwise> </choose> limit 2 </select> <select id="getLocationRoadWay" resultType="com.huaheng.pc.config.location.domain.Location"> select * from location where roadway = #{roadway} and zoneCode ="LK" and length(containerCode) > 1 and status="empty" and iLayer=ceiling(rand()*8) limit 1 </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> and (iColumn between #{line}-2 and #{line}+2) and (iLayer between #{layer}-3 and #{layer}+3) and iColumn >1 </select> <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> <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> </mapper>