<?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.ManLocDetlMapper"> 
 | 
  
 | 
    <!-- 通用查询映射结果 --> 
 | 
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.ManLocDetl"> 
 | 
        <result column="host_id" property="hostId" /> 
 | 
        <result column="loc_no" property="locNo" /> 
 | 
        <result column="node_id" property="nodeId" /> 
 | 
        <result column="zpallet" property="zpallet" /> 
 | 
        <result column="anfme" property="anfme" /> 
 | 
        <result column="matnr" property="matnr" /> 
 | 
        <result column="maktx" property="maktx" /> 
 | 
        <result column="name" property="name" /> 
 | 
        <result column="specs" property="specs" /> 
 | 
        <result column="model" property="model" /> 
 | 
        <result column="batch" property="batch" /> 
 | 
        <result column="unit" property="unit" /> 
 | 
        <result column="barcode" property="barcode" /> 
 | 
        <result column="doc_id" property="docId" /> 
 | 
        <result column="doc_num" property="docNum" /> 
 | 
        <result column="cust_name" property="custName" /> 
 | 
        <result column="item_num" property="itemNum" /> 
 | 
        <result column="count" property="count" /> 
 | 
        <result column="price" property="price" /> 
 | 
        <result column="weight" property="weight" /> 
 | 
        <result column="status" property="status" /> 
 | 
        <result column="create_by" property="createBy" /> 
 | 
        <result column="create_time" property="createTime" /> 
 | 
        <result column="update_by" property="updateBy" /> 
 | 
        <result column="modi_time" property="modiTime" /> 
 | 
        <result column="produce_time" property="produceTime" /> 
 | 
        <result column="memo" property="memo" /> 
 | 
        <result column="owner" property="owner" /> 
 | 
        <result column="payment" property="payment" /> 
 | 
        <result column="real_anfme" property="realAnfme" /> 
 | 
        <result column="order_no" property="orderNo" /> 
 | 
        <result column="stock_freeze" property="stockFreeze" /> 
 | 
    </resultMap> 
 | 
  
 | 
    <resultMap id="WarningResultMap" type="com.zy.asrs.entity.LocDetlWarningDTO"> 
 | 
        <result column="loc_no" property="locNo" /> 
 | 
        <result column="matnr" property="matnr" /> 
 | 
        <result column="maktx" property="maktx" /> 
 | 
        <result column="create_time" property="createTime" /> 
 | 
        <result column="specs" property="specs" /> 
 | 
        <result column="inventory_max" property="inventoryMax" /> 
 | 
        <result column="inventory_min" property="inventoryMin" /> 
 | 
        <result column="inventory_age_max" property="inventoryAgeMax" /> 
 | 
        <result column="count_anfme" property="countAnfme" /> 
 | 
        <result column="diff_time" property="diffTime" /> 
 | 
        <result column="pageNumber" property="pageNumber" /> 
 | 
        <result column="pageSize" property="pageSize" /> 
 | 
        <result column="row" property="row" /> 
 | 
    </resultMap> 
 | 
  
 | 
    <sql id="locDetlCondition"> 
 | 
        <if test="host_id != null and host_id != ''"> 
 | 
            and mld.host_id = #{host_id} 
 | 
        </if> 
 | 
        <if test="loc_no != null and loc_no != ''"> 
 | 
            and mld.loc_no like concat('%',#{loc_no},'%') 
 | 
        </if> 
 | 
        <if test="locNo != null and locNo != ''"> 
 | 
            and mld.loc_no like concat('%',#{loc_no},'%') 
 | 
        </if> 
 | 
        <if test="matnr != null and matnr != ''"> 
 | 
            and mld.matnr like concat('%',#{matnr},'%') 
 | 
        </if> 
 | 
        <if test="maktx != null and maktx != ''"> 
 | 
            and mld.maktx like concat('%',#{maktx},'%') 
 | 
        </if> 
 | 
        <if test="zpallet != null and zpallet != ''"> 
 | 
            and mld.zpallet like concat('%',#{zpallet},'%') 
 | 
        </if> 
 | 
        <if test="startTime!=null and endTime!=null"> 
 | 
            and mld.update_time between #{startTime} and #{endTime} 
 | 
        </if> 
 | 
    </sql> 
 | 
    <sql id="locDetlCondition2"> 
 | 
        <if test="host_id != null and host_id != ''"> 
 | 
            and v.host_id = #{host_id} 
 | 
        </if> 
 | 
        <if test="loc_no != null and loc_no != ''"> 
 | 
            and v.loc_no like concat('%',#{loc_no},'%') 
 | 
        </if> 
 | 
        <if test="locNo != null and locNo != ''"> 
 | 
            and v.loc_no like concat('%',#{loc_no},'%') 
 | 
        </if> 
 | 
        <if test="matnr != null and matnr != ''"> 
 | 
            and v.matnr like concat('%',#{matnr},'%') 
 | 
        </if> 
 | 
        <if test="maktx != null and maktx != ''"> 
 | 
            and v.maktx like concat('%',#{maktx},'%') 
 | 
        </if> 
 | 
        <if test="startTime!=null and endTime!=null"> 
 | 
            and v.update_time between #{startTime} and #{endTime} 
 | 
        </if> 
 | 
    </sql> 
 | 
  
 | 
    <select id="listByPage" resultMap="BaseResultMap" parameterType="java.util.Map"> 
 | 
        select * from 
 | 
        ( 
 | 
        SELECT 
 | 
        ROW_NUMBER() over (order by mld.create_time desc) as row, 
 | 
        mld.* 
 | 
        FROM man_loc_detl mld 
 | 
        LEFT JOIN man_node mn ON mld.node_id = mn.id 
 | 
        LEFT JOIN man_mat mm ON mld.matnr = mm.matnr 
 | 
        LEFT JOIN man_tag mt ON mm.tag_id = mt.id 
 | 
        WHERE 1=1 
 | 
         AND (CHARINDEX(#{node_id}, mn.path) > 0 OR mn.id = #{node_id}) 
 | 
        <include refid="locDetlCondition"></include> 
 | 
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) 
 | 
    </select> 
 | 
  
 | 
    <select id="listByPageCount" parameterType="java.util.Map" resultType="java.lang.Integer"> 
 | 
        select 
 | 
        count(1) 
 | 
        FROM man_loc_detl mld 
 | 
        LEFT JOIN man_node mn ON mld.node_id = mn.id 
 | 
        LEFT JOIN man_mat mm ON mld.matnr = mm.matnr 
 | 
        LEFT JOIN man_tag mt ON mm.tag_id = mt.id 
 | 
        WHERE 1=1 
 | 
        AND (CHARINDEX(#{node_id}, mn.path) > 0 OR mn.id = #{node_id}) 
 | 
        <include refid="locDetlCondition"></include> 
 | 
    </select> 
 | 
  
 | 
    <select id="selectByLocNoAndMatnr" resultMap="BaseResultMap"> 
 | 
        select top 1 * 
 | 
        from man_loc_detl 
 | 
        where 1=1 
 | 
        and anfme > 0 
 | 
        <if test="nodeId != null and nodeId != ''"> 
 | 
            and node_id = #{nodeId} 
 | 
        </if> 
 | 
        <if test="matnr != null and matnr != ''"> 
 | 
            and matnr = #{matnr} 
 | 
        </if> 
 | 
        order by create_time asc 
 | 
    </select> 
 | 
  
 | 
    <select id="selectCountByMatnr" resultType="java.lang.Double"> 
 | 
       select sum(anfme) as count from man_loc_detl where 1=1 and matnr = #{matnr} and host_id = #{hostId} 
 | 
    </select> 
 | 
  
 | 
    <update id="reduceStock"> 
 | 
        update man_loc_detl 
 | 
        set anfme = anfme - #{anfme} 
 | 
        , update_time = getdate() 
 | 
        where 1=1 
 | 
        and node_id = #{nodeId} 
 | 
        and matnr = #{matnr} 
 | 
    </update> 
 | 
  
 | 
    <update id="incrementStock"> 
 | 
        update man_loc_detl 
 | 
        set anfme = anfme + #{anfme} 
 | 
        , update_time = getdate() 
 | 
        where 1=1 
 | 
        and node_id = #{nodeId} 
 | 
        and matnr = #{matnr} 
 | 
    </update> 
 | 
  
 | 
    <update id="removeStock"> 
 | 
        delete from man_loc_detl 
 | 
        where 1=1 
 | 
        and node_id = #{nodeId} 
 | 
        and matnr = #{matnr} 
 | 
    </update> 
 | 
  
 | 
    <select id="selectByPrior" resultMap="BaseResultMap"> 
 | 
        select 
 | 
        mld.* 
 | 
        from man_loc_detl mld 
 | 
        left join man_prior mp on mld.node_id = mp.node_id and mld.matnr = mp.matnr 
 | 
        where 1=1 
 | 
        <if test="hostId != null and hostId != ''"> 
 | 
            and mld.host_id = #{hostId} 
 | 
        </if> 
 | 
        <if test="nodeId != null and nodeId != ''"> 
 | 
            and mld.node_id = #{nodeId} 
 | 
        </if> 
 | 
        <if test="matnr != null and matnr != ''"> 
 | 
            and mld.matnr = #{matnr} 
 | 
        </if> 
 | 
        and mld.anfme > 0 
 | 
        and mp.status = 1 
 | 
        order by mp.prio desc, mld.create_time asc 
 | 
    </select> 
 | 
  
 | 
    <select id="getLocDetlStatis" resultMap="BaseResultMap"> 
 | 
        select 
 | 
        ROW_NUMBER() over (order by sum(a.anfme) desc) as row 
 | 
        , a.matnr 
 | 
        , sum(a.anfme) as anfme 
 | 
        from man_loc_detl a 
 | 
        where 1=1 
 | 
        group by a.matnr 
 | 
    </select> 
 | 
  
 | 
    <select id="selectByNodeUuid" resultMap="BaseResultMap"> 
 | 
        select * from man_loc_detl mld left join man_node mn on mld.node_id = mn.id 
 | 
        where 1=1 
 | 
        and mn.uuid = #{uuid} 
 | 
        and mld.hostId = #{hostId} 
 | 
        and mld.status = 1 
 | 
        order by mld.create_time 
 | 
    </select> 
 | 
  
 | 
    <select id="getStockStatis" resultMap="BaseResultMap"> 
 | 
        select * from 
 | 
        ( 
 | 
        select 
 | 
        ROW_NUMBER() over (order by a.matnr, sum(a.anfme) desc) as row 
 | 
        , a.matnr 
 | 
        , sum(a.anfme) as anfme 
 | 
        from man_loc_detl a 
 | 
        where 1=1 
 | 
        <include refid="stockOutCondition"></include> 
 | 
        group by a.matnr 
 | 
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) 
 | 
    </select> 
 | 
  
 | 
    <select id="getStockStatisCount" parameterType="java.util.Map" resultType="java.lang.Integer"> 
 | 
        select count(1) as count from 
 | 
        ( 
 | 
        select 
 | 
        a.matnr 
 | 
        from man_loc_detl a 
 | 
        where 1=1 
 | 
        <include refid="stockOutCondition"></include> 
 | 
        group by a.matnr 
 | 
        ) b 
 | 
    </select> 
 | 
  
 | 
    <sql id="stockOutCondition"> 
 | 
        <if test="host_id!=null and host_id!='' "> 
 | 
            and a.host_id = #{host_id} 
 | 
        </if> 
 | 
        <if test="node_id!=null and node_id!='' "> 
 | 
            and a.node_id like '%' + #{node_id} + '%' 
 | 
        </if> 
 | 
        <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> 
 | 
    </sql> 
 | 
  
 | 
    <select id="getStockStatisExcel" resultMap="BaseResultMap"> 
 | 
        select 
 | 
        ROW_NUMBER() over (order by a.matnr, sum(a.anfme) desc) as row 
 | 
        , a.matnr 
 | 
        , sum(a.anfme) as anfme 
 | 
        from man_loc_detl a 
 | 
        where 1=1 
 | 
        and a.host_id = #{hostId} 
 | 
        group by a.matnr 
 | 
    </select> 
 | 
    <select id="selectLocDetlSumQty" resultType="java.lang.Double"></select> 
 | 
  
 | 
    <select id="selectLocNo0" resultMap="BaseResultMap"> 
 | 
        select * from man_loc_detl 
 | 
        where loc_no = #{locNo} 
 | 
        and matnr = #{matnr} 
 | 
    </select> 
 | 
    <select id="selectItem" resultMap="BaseResultMap"> 
 | 
        select top 1 * from man_loc_detl 
 | 
        where loc_no = #{locNo} 
 | 
        and matnr = #{matnr} 
 | 
        <if test="batch!=null and batch!='' "> 
 | 
            and batch = #{batch} 
 | 
        </if> 
 | 
        <!--        <choose>--> 
 | 
        <!--            <when test="batch != null and batch != ''">--> 
 | 
        <!--                and batch = #{batch}--> 
 | 
        <!--            </when>--> 
 | 
        <!--            <otherwise>--> 
 | 
        <!--                and (batch IS NULL OR batch = '')--> 
 | 
        <!--            </otherwise>--> 
 | 
        <!--        </choose>--> 
 | 
    </select> 
 | 
  
 | 
    <select id="listByOutPage" resultMap="BaseResultMap"> 
 | 
        select * from 
 | 
        ( 
 | 
        SELECT 
 | 
        ROW_NUMBER() over (order by mld.create_time desc) as row, 
 | 
        mld.* 
 | 
        FROM man_loc_detl mld 
 | 
        LEFT JOIN man_node mn ON mld.node_id = mn.id 
 | 
        LEFT JOIN man_mat mm ON mld.matnr = mm.matnr 
 | 
        LEFT JOIN man_tag mt ON mm.tag_id = mt.id 
 | 
        WHERE 1=1 
 | 
        <include refid="locDetlCondition"></include> 
 | 
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) 
 | 
    </select> 
 | 
    <select id="listByOutPageCount" resultType="java.lang.Long"> 
 | 
        select 
 | 
        count(1) 
 | 
        FROM man_loc_detl mld 
 | 
        LEFT JOIN man_node mn ON mld.node_id = mn.id 
 | 
        LEFT JOIN man_mat mm ON mld.matnr = mm.matnr 
 | 
        LEFT JOIN man_tag mt ON mm.tag_id = mt.id 
 | 
        WHERE 1=1 
 | 
        <include refid="locDetlCondition"></include> 
 | 
    </select> 
 | 
    <select id="selectAllPage" resultMap="BaseResultMap"> 
 | 
        select * from 
 | 
        ( 
 | 
        SELECT 
 | 
        ROW_NUMBER() over (order by v.loc_no desc) as row, 
 | 
            v.* 
 | 
        FROM [dbo].[man_view_asrs_saas] v 
 | 
        WHERE 1=1 
 | 
        <include refid="locDetlCondition2"></include> 
 | 
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) 
 | 
    </select> 
 | 
    <select id="selectAllPageSize" resultType="java.lang.Long"> 
 | 
        select 
 | 
        count(1) 
 | 
        FROM [dbo].[man_view_asrs_saas] v 
 | 
        WHERE 1=1 
 | 
        <include refid="locDetlCondition2"></include> 
 | 
    </select> 
 | 
  
 | 
  
 | 
    <update id="updateLocNo0"> 
 | 
        update man_loc_detl set loc_no = #{locNo} 
 | 
        where node_id = #{nodeId} 
 | 
    </update> 
 | 
  
 | 
    <delete id="deleteLocNo0"> 
 | 
        delete from man_loc_detl 
 | 
        where loc_no = #{locNo} 
 | 
        and matnr = #{matnr} 
 | 
    </delete> 
 | 
  
 | 
    <update id="updateAnfme0"> 
 | 
        update man_loc_detl set anfme = #{anfme} 
 | 
        where node_id = #{nodeId} ; 
 | 
    </update> 
 | 
  
 | 
    <select id="selectInventory" resultMap="BaseResultMap"> 
 | 
        select top 1 * from man_loc_detl 
 | 
        where loc_no=#{LocNo} 
 | 
        and 1=1 
 | 
        and matnr=#{matnr} 
 | 
        <if test="batch != null and batch !='' "> 
 | 
          and  batch like '%' + #{batch} + '%' 
 | 
        </if> 
 | 
    </select> 
 | 
    <sql id="selectAllWarningSql"> 
 | 
        <if test="locNo!=null and locNo!='' "> 
 | 
            and t.loc_no like '%' + #{locNo} + '%' 
 | 
        </if> 
 | 
        <if test="matnr != null and matnr !='' "> 
 | 
            and t.matnr like '%' + #{matnr} + '%' 
 | 
        </if> 
 | 
  
 | 
    </sql> 
 | 
    <select id="selectAllWarning" resultMap="WarningResultMap" parameterType="com.zy.asrs.entity.LocDetlWarningDTO"> 
 | 
        SELECT 
 | 
        * 
 | 
        FROM 
 | 
        ( 
 | 
        SELECT 
 | 
        ROW_NUMBER ( ) OVER ( ORDER BY matnr ) AS row,* 
 | 
        FROM 
 | 
        ( 
 | 
        SELECT 
 | 
        DISTINCT loc_no, 
 | 
        locd.matnr, 
 | 
        locd.maktx, 
 | 
        locd.owner, 
 | 
        locd.batch, 
 | 
        produce_time as create_time, 
 | 
        produce_time, 
 | 
        locd.specs, 
 | 
        locd.unit, 
 | 
        inventory_max, 
 | 
        inventory_min, 
 | 
        inventory_age_max, 
 | 
        DATEDIFF( DAY, produce_time, GETDATE( ) ) AS [diff_time] 
 | 
        FROM 
 | 
        man_loc_detl locd 
 | 
        LEFT JOIN ( 
 | 
        SELECT 
 | 
        man_mat.matnr, 
 | 
        maktx, 
 | 
        specs, 
 | 
        unit, 
 | 
        inventory_max, 
 | 
        inventory_min, 
 | 
        inventory_age_max, 
 | 
        count_anfme 
 | 
        FROM 
 | 
        man_mat 
 | 
        RIGHT JOIN ( SELECT matnr,batch,owner, SUM ( anfme ) AS count_anfme FROM man_loc_detl loc GROUP BY matnr,batch,owner ) aa ON aa.matnr = man_mat.matnr 
 | 
        ) warn ON locd.matnr = warn.matnr 
 | 
        WHERE 
 | 
        DATEDIFF( DAY, produce_time, GETDATE( ) ) > inventory_age_max 
 | 
        OR count_anfme > inventory_max 
 | 
        OR count_anfme < inventory_min 
 | 
        ) t 
 | 
        WHERE 
 | 
        1 = 1 
 | 
        <include refid="selectAllWarningSql"></include> 
 | 
        ) a 
 | 
  
 | 
  
 | 
    </select> 
 | 
    <select id="queryStock"  resultMap="BaseResultMap"> 
 | 
        select a.* 
 | 
        from asr_loc_detl_merge a 
 | 
        left join asr_loc_detl_F_view b on a.loc_no = b.loc_no 
 | 
        where 1=1 
 | 
        and b.loc_sts = 'F' 
 | 
        and a.matnr = #{matnr} 
 | 
        <if test="batch != null || batch != ''"> 
 | 
            and a.batch = #{batch} 
 | 
        </if> 
 | 
  
 | 
    </select> 
 | 
    <delete id="deleteDatailed"> 
 | 
        delete from man_loc_detl 
 | 
        where loc_no = #{locNo} 
 | 
        and matnr = #{matnr} 
 | 
        <choose> 
 | 
            <when test="batch != null and batch != ''"> 
 | 
                and batch = #{batch} 
 | 
            </when> 
 | 
            <otherwise> 
 | 
                and (batch IS NULL OR batch = '') 
 | 
            </otherwise> 
 | 
        </choose> 
 | 
    </delete> 
 | 
  
 | 
    <update id="increase"> 
 | 
        update man_loc_detl 
 | 
        set  anfme= #{anfme} 
 | 
        , modi_time = getdate() 
 | 
        ,weight=#{weight} 
 | 
        where 1=1 
 | 
        and loc_no = #{locNo} 
 | 
        and matnr = #{matnr} 
 | 
        <if test="batch != null || batch != ''"> 
 | 
            and batch = #{batch} 
 | 
        </if> 
 | 
<!--        <choose>--> 
 | 
<!--            <when test="batch != null and batch!=''  ">--> 
 | 
<!--                and batch = #{batch}--> 
 | 
<!--            </when>--> 
 | 
<!--            <otherwise>--> 
 | 
<!--                and (batch IS NULL OR batch = '')--> 
 | 
<!--            </otherwise>--> 
 | 
<!--        </choose>--> 
 | 
    </update> 
 | 
    <select id="selectByLocNo" resultMap="BaseResultMap"> 
 | 
        select * from man_loc_detl 
 | 
        where 1=1 
 | 
          and loc_no = #{locNo} 
 | 
    </select> 
 | 
  
 | 
    <update id="updateStockFreeze"> 
 | 
        update man_loc_detl 
 | 
        set stock_freeze = #{stockFreeze} 
 | 
          , modi_time = getdate() 
 | 
        where 1=1 
 | 
          and loc_no = #{locNo} 
 | 
          and matnr = #{matnr} 
 | 
    </update> 
 | 
  
 | 
</mapper> 
 |