自动化立体仓库 - WMS系统
pang.jiabao
2025-09-09 ea5663c37742844e6fe32c7e521a9ca9b5e711f9
src/main/resources/mapper/LocDetlMapper.xml
@@ -185,6 +185,24 @@
            </otherwise>
        </choose>
    </sql>
    <sql id="batchSeqB">
        <choose>
            <when test="batch != null and batch != ''">
                and a.batch = #{batch}
            </when>
            <otherwise>
                and (a.batch IS NULL OR a.batch = '')
            </otherwise>
        </choose>
        <choose>
            <when test="model != null and model != ''">
                and a.model = #{model}
            </when>
            <otherwise>
                and (a.model IS NULL OR a.model = '')
            </otherwise>
        </choose>
    </sql>
    <sql id="batchSeqNew">
        <choose>
            <when test="batch != null and batch != ''">
@@ -342,6 +360,12 @@
        <if test="specs!=null and specs!='' ">
            and a.specs like '%' + #{specs} + '%'
        </if>
        <if test="model!=null and model!='' ">
            and a.model like '%' + #{model} + '%'
        </if>
        <if test="volume!=null and volume!='' ">
            and a.volume like '%' + #{volume} + '%'
        </if>
    </sql>
    <select id="getStockOutPage" resultMap="BaseResultMap">
@@ -372,16 +396,20 @@
        select * from
        (
            select
            ROW_NUMBER() over (order by sum(a.anfme) desc) as row
            ROW_NUMBER() over (order by matnr desc) as row
            , a.matnr
            , a.maktx
            , a.model
            , a.volume
            ,manu_date manuDate
            ,batch
            , sum(a.anfme) as anfme
            ,sum(a.weight) weight
            ,sum(a.man_length) manLength
            from asr_loc_detl a
            where 1=1
            <include refid="stockOutCondition"></include>
            group by a.matnr,a.maktx,a.model,a.volume
            group by a.matnr,a.maktx,a.model,a.volume,manu_date,batch
         ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    </select>
@@ -393,10 +421,12 @@
        , a.maktx
        , a.model
        , a.volume
        ,manu_date manuDate
        ,batch
        from asr_loc_detl a
        where 1=1
        <include refid="stockOutCondition"></include>
        group by a.matnr, a.maktx, a.model,a.volume
        group by a.matnr,a.maktx,a.model,a.volume,manu_date,batch
     ) b
    </select>
@@ -404,10 +434,17 @@
        select
        ROW_NUMBER() over (order by sum(a.anfme) desc) as row
        , a.matnr
        , a.maktx
        , a.model
        , a.volume
        ,manu_date manuDate
        ,batch
        , sum(a.anfme) as anfme
        ,sum(a.weight) weight
        ,sum(a.man_length) manLength
        from asr_loc_detl a
        where 1=1
        group by a.matnr
        group by a.matnr,a.maktx,a.model,a.volume,manu_date,batch
    </select>
    <select id="selectPakoutByRule" resultMap="BaseResultMap">
@@ -614,6 +651,86 @@
        desc
    </select>
    <select id="queryStockAllNew" 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}
        and a.volume = #{volume}
        <if test="orderNo != null and orderNo != ''">
            and a.order_no = #{orderNo}
        </if>
        <include refid="batchSeqB"></include>
        <if test="locNos != null and locNos.size > 0">
            and b.loc_no not in
            <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        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="queryStockAnfme" resultType="java.lang.Double">
        select sum(anfme) as count from man_loc_detl
         where 1=1