#
luxiaotao1123
2021-04-07 746bc3009489b5fe644666cbed138582726f498a
src/main/resources/mapper/LocDetlMapper.xml
@@ -31,15 +31,9 @@
    </resultMap>
    <select id="listByPage" resultMap="BaseResultMap">
        SELECT
        mld.*
        FROM man_loc_detl mld
        LEFT JOIN man_node mn ON mld.node_id = mn.id
        WHERE 1=1
        AND (CHARINDEX(#{nodeId}, ','+mn.path+',') > 0 OR mn.id = #{nodeId})
        <if test="locNo != null and locNo != ''">
            and mld.loc_no like concat('%',#{locNo},'%')
    <sql id="locDetlCondition">
        <if test="loc_no != null and loc_no != ''">
            and mld.loc_no like concat('%',#{loc_no},'%')
        </if>
        <if test="matnr != null and matnr != ''">
            and mld.matnr like concat('%',#{matnr},'%')
@@ -47,15 +41,168 @@
        <if test="maktx != null and maktx != ''">
            and mld.maktx like concat('%',#{maktx},'%')
        </if>
        ORDER BY mld.create_time DESC
        <if test="startTime!=null and endTime!=null">
            and mld.update_time between #{startTime} and #{endTime}
        </if>
    </sql>
    <select id="listByPage" 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
            AND (CHARINDEX(','+#{node_id}+',', ','+mn.path+',') > 0 OR mn.id = #{node_id})
            AND (CHARINDEX(','+#{tag_id}+',', ','+mt.path+',') > 0 OR mt.id = #{tag_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})
        AND (CHARINDEX(','+#{tag_id}+',', ','+mt.path+',') > 0 OR mt.id = #{tag_id})
        <include refid="locDetlCondition"></include>
    </select>
    <select id="selectByLocNoAndMatnr" resultMap="BaseResultMap">
        select * from man_loc_detl where 1=1 and node_id = #{nodeId} and matnr = #{matnr}
        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}
    </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="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.status = 1
        order by mld.create_time
    </select>
    <select id="getStockStatis" resultMap="BaseResultMap">
        select * from
        (
            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
            <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="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 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>
</mapper>