自动化立体仓库 - WMS系统
1
4 天以前 51889b97a85b070cbb80a5bb2893149c80448d5d
src/main/resources/mapper/LocDetlMapper.xml
@@ -354,6 +354,27 @@
        <if test="standby2!=null and standby2!='' ">
            and a.standby2 like '%' + #{standby2} + '%'
        </if>
        <if test="standby3!=null and standby3!='' ">
            and a.standby3 like '%' + #{standby3} + '%'
        </if>
        <if test="boxType3!=null and boxType3!='' ">
            and a.box_type3 like '%' + #{boxType3} + '%'
        </if>
    </sql>
    <sql id="stockOutCondition1">
        <if test="matnr!=null and matnr!='' ">
            and a.matnr like '%' + #{matnr} + '%'
        </if>
        <if test="standby1!=null and standby1!='' ">
            and a.standby1 like '%' + #{standby1} + '%'
        </if>
        <if test="standby2!=null and standby2!='' ">
            and a.standby2 like '%' + #{standby2} + '%'
        </if>
        <if test="boxType3!=null and boxType3!='' ">
            and a.box_type3 like '%' + #{boxType3} + '%'
        </if>
    </sql>
    <select id="getStockOutPage" resultMap="BaseResultMap">
@@ -380,21 +401,48 @@
        <include refid="stockOutCondition"></include>
    </select>
    <select id="getStockStatis" resultType="com.zy.asrs.entity.LocDetl">
        select * from
        (
            select
            ROW_NUMBER() over (order by sum(a.anfme) desc) as row
            , a.matnr
            , a.batch
            , a.standby1
            , a.standby2
            , sum(a.anfme) as anfme
            from asr_loc_detl a
            where 1=1
            <include refid="stockOutCondition"></include>
            group by a.matnr, a.batch, a.standby1, a.standby2
         ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    <select id="getStockStatis" resultMap="BaseResultMap">
        SELECT * FROM (
            SELECT
                ROW_NUMBER() OVER (ORDER BY SUM(a.anfme) DESC) AS row,
                a.matnr,
                a.batch,
                a.standby1,
                a.standby2,
                MAX(a.box_type3) AS box_type3,  -- 关键:用 MAX 避免 null 或不确定性
                SUM(a.anfme) AS anfme
                FROM asr_loc_detl a
                WHERE 1=1
                <include refid="stockOutCondition"/>
                GROUP BY
                a.matnr,
                a.batch,
                a.standby1,
                a.standby2,
                a.box_type3  -- 保留,因为业务需要按采购单区分
            ) t
        WHERE t.row BETWEEN ((#{pageNumber}-1)*#{pageSize}+1) AND (#{pageNumber}*#{pageSize})
    </select>
    <!-- 库存统计导出:全量汇总数据(不分页) -->
    <select id="selectStockStatisExport" resultMap="BaseResultMap">
        SELECT
        a.matnr,
        a.batch,
        a.standby1,
        a.standby2,
        MAX(a.box_type3) AS box_type3,
        SUM(a.anfme) AS anfme
        FROM asr_loc_detl a
        WHERE 1=1
        <include refid="stockOutCondition1"/>
        GROUP BY
        a.matnr,
        a.batch,
        a.standby1,
        a.standby2,
        a.box_type3
        ORDER BY SUM(a.anfme) DESC
    </select>
    <select id="getStockStatisCount" parameterType="java.util.Map" resultType="java.lang.Integer">
@@ -541,7 +589,70 @@
        end
        desc
    </select>
    <select id="queryStockMatnr" 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.matnr = #{matnr}
        order by
        DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
        desc,
        NEWID(),
        case
        when (left(a.loc_no, 2) = '01') then 0
        when (left(a.loc_no, 2) = '02') then 1
        when (left(a.loc_no, 2) = '03') then 1
        when (left(a.loc_no, 2) = '04') then 0
        when (left(a.loc_no, 2) = '05') then 0
        when (left(a.loc_no, 2) = '06') then 1
        when (left(a.loc_no, 2) = '07') then 1
        when (left(a.loc_no, 2) = '08') then 0
        when (left(a.loc_no, 2) = '09') then 0
        when (left(a.loc_no, 2) = '10') then 1
        when (left(a.loc_no, 2) = '11') then 1
        when (left(a.loc_no, 2) = '12') then 0
        when (left(a.loc_no, 2) = '13') then 0
        when (left(a.loc_no, 2) = '14') then 1
        when (left(a.loc_no, 2) = '15') then 1
        when (left(a.loc_no, 2) = '16') then 0
        when (left(a.loc_no, 2) = '17') then 0
        when (left(a.loc_no, 2) = '18') then 1
        when (left(a.loc_no, 2) = '19') then 1
        when (left(a.loc_no, 2) = '20') then 0
        when (left(a.loc_no, 2) = '21') then 0
        when (left(a.loc_no, 2) = '22') then 1
        when (left(a.loc_no, 2) = '23') then 1
        when (left(a.loc_no, 2) = '24') then 0
        when (left(a.loc_no, 2) = '25') then 0
        when (left(a.loc_no, 2) = '26') then 1
        when (left(a.loc_no, 2) = '27') then 1
        when (left(a.loc_no, 2) = '28') then 0
        when (left(a.loc_no, 2) = '29') then 0
        when (left(a.loc_no, 2) = '30') then 1
        when (left(a.loc_no, 2) = '31') then 1
        when (left(a.loc_no, 2) = '32') then 0
        when (left(a.loc_no, 2) = '33') then 0
        when (left(a.loc_no, 2) = '34') then 1
        when (left(a.loc_no, 2) = '35') then 1
        when (left(a.loc_no, 2) = '36') then 0
        when (left(a.loc_no, 2) = '37') then 0
        when (left(a.loc_no, 2) = '38') then 1
        when (left(a.loc_no, 2) = '39') then 1
        when (left(a.loc_no, 2) = '40') then 0
        when (left(a.loc_no, 2) = '41') then 0
        when (left(a.loc_no, 2) = '42') then 1
        when (left(a.loc_no, 2) = '43') then 1
        when (left(a.loc_no, 2) = '44') then 0
        when (left(a.loc_no, 2) = '45') then 0
        when (left(a.loc_no, 2) = '46') then 1
        when (left(a.loc_no, 2) = '47') then 1
        when (left(a.loc_no, 2) = '48') then 0
        else 0
        end
        desc
    </select>
    <select id="queryStockAll" resultMap="BaseResultMap">
        select a.*
        from asr_loc_detl a