自动化立体仓库 - WMS系统
pang.jiabao
2024-07-05 07c572bea979dbd3ee46ec24083cb1bdcc014e3a
src/main/resources/mapper/LocDetlMapper.xml
@@ -5,15 +5,17 @@
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocDetl">
        <result column="loc_no" property="locNo" />
        <result column="matnr" property="matnr" />
        <result column="lgnum" property="lgnum" />
        <result column="tbnum" property="tbnum" />
        <result column="tbpos" property="tbpos" />
        <result column="zmatid" property="zmatid" />
        <result column="maktx" property="maktx" />
        <result column="werks" property="werks" />
        <result column="anfme" property="anfme" />
        <result column="altme" property="altme" />
        <result column="mat_no" property="matNo" />
        <result column="mat_name" property="matName" />
        <result column="specs" property="specs" />
        <result column="size" property="size" />
        <result column="color" property="color" />
        <result column="weight" property="weight" />
        <result column="supplier" property="supplier" />
        <result column="warehouse" property="warehouse" />
        <result column="brand" property="brand" />
        <result column="qty" property="qty" />
        <result column="unit" property="unit" />
        <result column="zpallet" property="zpallet" />
        <result column="bname" property="bname" />
        <result column="memo" property="memo" />
@@ -21,23 +23,154 @@
        <result column="modi_time" property="modiTime" />
        <result column="appe_user" property="appeUser" />
        <result column="appe_time" property="appeTime" />
        <result column="all_qty" property="allQty"/>
        <result column="all_weight" property="allWeight"/>
        <result column="source" property="source" />
        <result column="vendor" property="vendor" />
        <result column="qty_box" property="qtyBox"/>
        <result column="str3" property="str3" />
        <result column="str4" property="str4" />
        <result column="str5" property="str5"/>
    </resultMap>
    <select id="getStockOutPage" parameterType="java.util.Map" resultMap="BaseResultMap">
    <sql id="stockOutCondition">
        <if test="loc_no!=null and loc_no!='' ">
            and a.loc_no like '%' + #{loc_no} + '%'
        </if>
        <if test="mat_no!=null and mat_no!='' ">
            and a.mat_no like '%' + #{mat_no} + '%'
        </if>
        <if test="mat_name!=null and mat_name!='' ">
            and a.mat_name like '%' + #{mat_name} + '%'
        </if>
        <if test="str3!=null and str3!=''" >
            and a.str3 like '%'+#{str3}+'%'
        </if>
        <if test="qty!=null and qty!='' ">
            and a.qty = #{qty}
        </if>
        <if test="altme!=null and altme!='' ">
            and a.unit like '%' + #{unit} + '%'
        </if>
        <if test="startTime!=null and endTime!=null">
            and a.modi_time between #{startTime} and #{endTime}
        </if>
        <if test="memo!=null and memo!='' ">
            and (
               a.loc_no like '%' + #{memo} + '%'
            or a.mat_no like '%' + #{memo} + '%'
            or a.mat_name like '%' + #{memo} + '%'
            or a.qty like '%' + #{memo} + '%'
            or a.str3 like '%' + #{memo} + '%'
            or a.unit like '%' + #{memo} + '%'
            or a.specs like '%' + #{memo} + '%'
            or a.size like '%' + #{memo} + '%'
            or a.color like '%' + #{memo} + '%'
            or a.supplier like '%' + #{memo} + '%'
            or a.zpallet like '%' + #{memo} + '%'
            or a.source like '%' + #{memo} + '%'
            or a.vendor like '%' + #{memo} + '%'
            or a.qty_box like '%' + #{memo} + '%'
            or a.str3 like '%' + #{memo} + '%'
            or a.str4 like '%' + #{memo} + '%'
            or a.str5 like '%' + #{memo} + '%'
            or a.memo like '%' + #{memo} + '%'
            )
        </if>
        <if test="crnNo!=null and crnNo!='' ">
            and b.crn_no=#{crnNo}
        </if>
    </sql>
    <sql id="stockOutCondition1">
    <if test="mat_no!=null and mat_no!='' ">
        and c.mat_no like '%' + #{mat_no} + '%'
    </if>
    <if test="mat_name!=null and mat_name!='' ">
        and c.mat_name like '%' + #{mat_name} + '%'
    </if>
    <if test="supplier!=null and supplier!=''" >
        and c.supplier like '%'+#{supplier}+'%'
    </if>
    <if test="str3!=null and str3!=''" >
        and c.str3 like '%'+#{str3}+'%'
    </if>
    <if test="str4!=null and str4!=''" >
        and c.str4 like '%'+#{str4}+'%'
    </if>
    <if test="memo!=null and memo!='' ">
        and (
        c.mat_no like '%' + #{memo} + '%'
        or c.mat_name like '%' + #{memo} + '%'
        or c.qty like '%' + #{memo} + '%'
        or c.str3 like '%' + #{memo} + '%'
        or c.unit like '%' + #{memo} + '%'
        or c.specs like '%' + #{memo} + '%'
        or c.size like '%' + #{memo} + '%'
        or c.color like '%' + #{memo} + '%'
        or c.supplier like '%' + #{memo} + '%'
        or c.source like '%' + #{memo} + '%'
        or c.vendor like '%' + #{memo} + '%'
        or c.qty_box like '%' + #{memo} + '%'
        or c.str3 like '%' + #{memo} + '%'
        or c.str4 like '%' + #{memo} + '%'
        or c.str5 like '%' + #{memo} + '%'
        or c.memo like '%' + #{memo} + '%'
        )
    </if>
    </sql>
    <sql id="stockOutCondition2">
        <if test="matNo!=null and matNo!='' ">
            and mat_no like '%' + #{matNo} + '%'
        </if>
        <if test="matName!=null and matName!='' ">
            and mat_name like '%' + #{matName} + '%'
        </if>
        <if test="supplier!=null and supplier!=''" >
            and supplier like '%'+#{supplier}+'%'
        </if>
        <if test="str3!=null and str3!=''" >
            and str3 like '%'+#{str3}+'%'
        </if>
        <if test="str4!=null and str4!=''" >
            and str4 like '%'+#{str4}+'%'
        </if>
        <if test="memo!=null and memo!='' ">
            and (
            mat_no like '%' + #{memo} + '%'
            or mat_name like '%' + #{memo} + '%'
            or qty like '%' + #{memo} + '%'
            or str3 like '%' + #{memo} + '%'
            or unit like '%' + #{memo} + '%'
            or specs like '%' + #{memo} + '%'
            or size like '%' + #{memo} + '%'
            or color like '%' + #{memo} + '%'
            or supplier like '%' + #{memo} + '%'
            or source like '%' + #{memo} + '%'
            or vendor like '%' + #{memo} + '%'
            or qty_box like '%' + #{memo} + '%'
            or str3 like '%' + #{memo} + '%'
            or str4 like '%' + #{memo} + '%'
            or str5 like '%' + #{memo} + '%'
            or memo like '%' + #{memo} + '%'
            )
        </if>
    </sql>
    <select id="getStockOutPage" resultMap="BaseResultMap">
        select * from
        (
            select
            ROW_NUMBER() over (order by a.appe_time,a.matnr,a.loc_no) as row,
            ROW_NUMBER() over (order by a.supplier,a.mat_no,a.loc_no) as row,
            a.*
            from asr_loc_detl a
            left join asr_loc_mast b on a.loc_no = b.loc_no
            where 1=1
            and b.loc_type = 'F'
            <if test="loc_no!=null and loc_no!='' ">
                and a.loc_no like '%' + #{loc_no} + '%'
            </if>
            and b.loc_sts = 'F'
            <include refid="stockOutCondition"></include>
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
        order by supplier,appe_time,loc_no
    </select>
    <select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">
@@ -46,6 +179,240 @@
        from asr_loc_detl a
        left join asr_loc_mast b on a.loc_no = b.loc_no
        where 1=1
        and b.loc_type = 'F'
        and b.loc_sts = 'F'
        <include refid="stockOutCondition"></include>
    </select>
    <select id="selectLocDetlList" resultMap="BaseResultMap">
        select a.*
        from asr_loc_detl a
        left join asr_loc_mast b on a.loc_no = b.loc_no
        where 1=1
        and b.loc_sts = 'F' and a.mat_no= #{mat_no}
        order by a.appe_time
    </select>
    <select id="selectLocDetlSumQty" resultType="double">
        select SUM(qty) qty
        from asr_loc_detl
        where loc_no=#{locNo}
    </select>
    <select id="getStockStatis" resultMap="BaseResultMap">
        select  * ,str6 as qty_box,(qty * str6) as all_qty from
        (
        select ROW_NUMBER() over (order by a.mat_no) as row,
        a.mat_name,a.mat_no,a.str3,sum(a.qty) qty, specs,unit,color,weight,str4,str5,num1,str6  from
        (
        select
        c.mat_name,c.mat_no,c.str3,c.qty,c.all_qty,c.specs,c.unit,c.color,c.weight,c.str4,c.str5,m.num1,m.str6
        from asr_loc_detl c
        LEFT JOIN bas_mat_code m ON c.mat_no = m.mat_no
        where 1=1
        <include refid="stockOutCondition1"></include>
        ) a
        group by a.mat_no,a.mat_name,a.str3,a.specs,a.unit,a.color,a.weight,a.str4,a.str5,num1,str6
        ) d
        where 1=1
        and row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
        order by mat_no,specs
<!--        select * from-->
<!--        (-->
<!--        select ROW_NUMBER() over (order by a.mat_no) as row,-->
<!--        a.mat_name,a.mat_no,a.supplier,a.str3,sum(a.qty) qty,specs,unit,color,qty_box,weight,str4,str5  from-->
<!--        (-->
<!--        select-->
<!--        mat_name,mat_no,supplier,str3,qty,specs,unit,color,qty_box,weight,str4,str5-->
<!--        from asr_loc_detl c-->
<!--        where 1=1-->
<!--        <include refid="stockOutCondition1"></include>-->
<!--        ) a-->
<!--        group by a.mat_no,a.mat_name,a.supplier,a.str3,a.specs,a.unit,a.color,a.qty_box,a.weight,a.str4,a.str5-->
<!--        ) d-->
<!--        where 1=1-->
<!--        and row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})-->
<!--        order by a.mat_no,a.supplier-->
    </select>
    <select id="getStockStatisCount" resultType="integer">
        select count(1) from
        (
        select ROW_NUMBER() over (order by a.mat_no) as row,
        a.mat_name,a.mat_no,a.str3,sum(a.qty) qty, specs,unit,color,qty_box,weight,str4,str5,num1,str6  from
        (
        select
        c.mat_name,c.mat_no,c.str3,c.qty,c.all_qty,c.specs,c.unit,c.color,c.qty_box,c.weight,c.str4,c.str5,m.num1,m.str6
        from asr_loc_detl c
        LEFT JOIN bas_mat_code m ON c.mat_no = m.mat_no
        where 1=1
        <include refid="stockOutCondition1"></include>
        ) a
        group by a.mat_no,a.mat_name,a.str3,a.specs,a.unit,a.color,a.qty_box,a.weight,a.str4,a.str5,num1,str6
        ) d
        where 1=1
<!--        select count(1) from-->
<!--        (-->
<!--        select ROW_NUMBER() over (order by a.mat_no) as row,-->
<!--        a.mat_name,a.mat_no,a.supplier,a.str3,sum(a.qty) qty,specs,unit,color,qty_box,weight,str4,str5  from-->
<!--        (-->
<!--        select-->
<!--        mat_name,mat_no,supplier,str3,qty,specs,unit,color,qty_box,weight,str4,str5-->
<!--        from asr_loc_detl c-->
<!--        where 1=1-->
<!--        <include refid="stockOutCondition1"></include>-->
<!--        ) a-->
<!--        group by a.mat_no,a.mat_name,a.supplier,a.str3,a.specs,a.unit,a.color,a.qty_box,a.weight,a.str4,a.str5-->
<!--        ) d-->
    </select>
<!--    <select id="getStockStatisExcel" resultType="com.zy.asrs.entity.LocDetl">-->
    <select id="getStockStatisExcel" resultMap="BaseResultMap">
     select
        ROW_NUMBER() over (order by a.mat_no, sum(a.qty) desc) as row
        , a.mat_no, a.mat_name,a.supplier,str3,specs,unit,color,qty_box as qtyBox,weight,str4,str5
        , sum(a.qty) as qty
        from asr_loc_detl a
        where 1=1
        <include refid="stockOutCondition2"></include>
        group by a.mat_no,a.mat_name,a.supplier,a.str3,a.specs,a.unit,a.color,a.qty_box,a.weight,a.str4,a.str5
    </select>
    <sql id="selectAllWarningSql">
        <if test="mat_name != null and mat_name != '' ">
            and c.mat_name like '%' + #{mat_name} + '%'
        </if>
        <if test="mat_no != null and mat_no !='' ">
            and c.mat_no like '%' + #{mat_no} + '%'
        </if>
    </sql>
    <select id="selectAllWarning" resultType="com.zy.asrs.entity.LocDetlWarningDTO">
        SELECT
        *,(qty * str6) as all_qty
        FROM
        (
        SELECT
        ROW_NUMBER ( ) OVER ( ORDER BY a.mat_no ) AS row,
        a.mat_name,
        a.mat_no,
        a.str3,
        SUM ( a.qty ) qty,
        specs,
        unit,
        color,
        qty_box,
        weight,
        str4,
        str5,
        num1,
        str6
        FROM
        (
        SELECT
        c.mat_name,
        c.mat_no,
        c.str3,
        c.qty,
        c.all_qty,
        c.specs,
        c.unit,
        c.color,
        c.qty_box,
        c.weight,
        c.str4,
        c.str5,
        m.num1,
        str6
        FROM
        asr_loc_detl c
        LEFT JOIN bas_mat_code m ON c.mat_no = m.mat_no
        WHERE
        1 = 1
        <include refid="selectAllWarningSql"></include>
        ) a
        GROUP BY
        a.mat_no,
        a.mat_name,
        a.str3,
        a.specs,
        a.unit,
        a.color,
        a.qty_box,
        a.weight,
        a.str4,
        a.str5,
        a.num1,
        str6
        ) d
        WHERE
        1 = 1
        AND qty &lt;= num1
        AND d.row BETWEEN ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    </select>
    <select id="getAllWarningCount" resultType="java.lang.Integer">
        SELECT
            COUNT(1)
        FROM
            (
        SELECT
            ROW_NUMBER ( ) OVER ( ORDER BY a.mat_no ) AS row,
                a.mat_name,
            a.mat_no,
            a.str3,
            SUM ( a.qty ) qty,
            SUM ( all_qty ) all_qty,
            specs,
            unit,
            color,
            qty_box,
            weight,
            str4,
            str5,
            num1
        FROM
            (
            SELECT
                c.mat_name,
                c.mat_no,
                c.str3,
                c.qty,
                c.all_qty,
                c.specs,
                c.unit,
                c.color,
                c.qty_box,
                c.weight,
                c.str4,
                c.str5,
                m.num1
            FROM
                asr_loc_detl c
                    LEFT JOIN bas_mat_code m ON c.mat_no = m.mat_no
            WHERE
                1 = 1
            <include refid="selectAllWarningSql"></include>
            ) a
        GROUP BY
            a.mat_no,
            a.mat_name,
            a.str3,
            a.specs,
            a.unit,
            a.color,
            a.qty_box,
            a.weight,
            a.str4,
            a.str5,
            a.num1
            ) d
        WHERE
            1 = 1
          AND qty &lt;= num1
    </select>
    <!--    <select id="getStockSum" resultMap="BaseResultMap">-->
<!--        select mat_no,mat_name,sum(qty) qty  from asr_loc_detl-->
<!--        group by mat_no,mat_name-->
<!--    </select>-->
</mapper>