自动化立体仓库 - WMS系统
pang.jiabao
2025-04-27 f1a3407130d88ad15320ab9fcfabd109e5127c78
src/main/resources/mapper/LocDetlMapper.xml
@@ -44,6 +44,7 @@
        <result column="appe_user" property="appeUser" />
        <result column="appe_time" property="appeTime" />
        <result column="memo" property="memo" />
        <result column="roll_up" property="rollUp" />
    </resultMap>
    <sql id="batchSeq">
@@ -56,6 +57,39 @@
            </otherwise>
        </choose>
    </sql>
    <insert id="batchDetls">
        INSERT INTO
        asr_loc_detl(loc_no,zpallet,barcode,batch,anfme,matnr,maktx,unit,specs,model,color,manu,sku,brand
        ,origin,item_num,manu_date,weight,volume,length,modi_time,modi_user,appe_time,appe_user)
        VALUES
        <foreach collection="locDetls" item="item" index="index" separator=",">
            (
            #{item.locNo},
            #{item.zpallet},
            #{item.barcode},
            #{item.batch},
            #{item.anfme},
            #{item.matnr},
            #{item.maktx},
            #{item.unit},
            #{item.specs},
            #{item.model},
            #{item.color},
            #{item.manu},
            #{item.sku},
            #{item.brand},
            #{item.origin},
            #{item.itemNum},
            #{item.manuDate},
            #{item.weight},
            #{item.volume},
            #{item.length},
            #{item.modiTime},
            #{item.modiUser},
            #{item.appeTime},
            #{item.appeUser}
            )</foreach>
    </insert>
    <select id="selectItem" resultMap="BaseResultMap">
        select top 1 *
@@ -83,6 +117,23 @@
        and matnr = #{matnr}
        <include refid="batchSeq"></include>
    </update>
    <delete id="deleteItem2">
        delete from asr_loc_detl
        where 1=1
        and loc_no = #{locNo}
        and model = #{model}
        <include refid="batchSeq"></include>
    </delete>
    <update id="updateAnfme2">
        update asr_loc_detl
        set anfme = #{anfme}
        , modi_time = getdate()
        where 1=1
        and loc_no = #{locNo}
        and model = #{model}
        <include refid="batchSeq"></include>
    </update>
    <sql id="stockOutCondition">
        <if test="loc_no!=null and loc_no!='' ">
@@ -99,6 +150,24 @@
        </if>
        <if test="startTime!=null and endTime!=null">
            and a.modi_time between #{startTime} and #{endTime}
        </if>
        <if test="crnNo!=null and crnNo!='' ">
            and b.crn_no=#{crnNo}
        </if>
        <if test="batch!=null and batch!='' ">
            and a.batch like '%' + #{batch} + '%'
        </if>
        <if test="specs!=null and specs!='' ">
            and a.specs like '%' + #{specs} + '%'
        </if>
        <if test="brand!=null and brand!='' ">
            and a.brand like '%' + #{brand} + '%'
        </if>
        <if test="model!=null and model!='' ">
            and a.model like '%' + #{model} + '%'
        </if>
        <if test="unit!=null and unit!='' ">
            and a.unit like '%' + #{unit} + '%'
        </if>
    </sql>
@@ -199,19 +268,30 @@
        where 1=1
        and b.loc_sts = 'F'
        and a.matnr = #{matnr}
        <choose>
            <when test="batch != null and batch != ''">
                and a.batch = #{batch}
            </when>
            <otherwise>
                and (a.batch IS NULL OR a.batch = '')
            </otherwise>
        </choose>
        <if test="orderNo != null and orderNo != ''">
            and a.orderNo = #{orderNo}
<!--        <choose>-->
<!--            <when test="batch != null and batch != ''">-->
<!--                and a.batch = #{batch}-->
<!--            </when>-->
<!--            <otherwise>-->
<!--                and (a.batch IS NULL OR a.batch = '')-->
<!--            </otherwise>-->
<!--        </choose>-->
        <if test="batch != null and batch != ''">
            and a.batch = #{batch}
        </if>
        <if test="orderNo != null and orderNo != ''">
            and a.order_no = #{orderNo}
        </if>
        <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)
        DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
        desc,
        NEWID(),
        case
@@ -286,5 +366,83 @@
        where 1=1
        group by matnr,batch
    </select>
    <select id="sum" resultType="java.lang.Integer">
        SELECT SUM(anfme) FROM asr_loc_detl
    </select>
    <select id="unreason" resultMap="BaseResultMap">
        SELECT
            *
        FROM
            [dbo].[asr_loc_detl]
        WHERE
            DATALENGTH( batch ) != 11 or
            batch LIKE '%[a-z]%'
    </select>
    <select id="selectLocDetlSumQty" resultType="double">
        select SUM(anfme) anfme
        from asr_loc_detl
        where loc_no=#{locNo}
    </select>
    <select id="queryInLocTime" resultType="com.zy.asrs.entity.InLocTimeDto">
        select
            brand packageGroupNo,
            DATEDIFF(day, appe_time , getdate()) diffDay
        from
            asr_loc_detl
        where brand in
        <foreach collection="param" index="index" item="item" separator="," open="(" close=")">
            #{item}
        </foreach>
        group by
            brand,
            appe_time
    </select>
    <select id="selectLocNoByGroupNo" resultType="com.zy.asrs.entity.LocDetl">
        select distinct ald.loc_no as locNo,ald.brand from asr_loc_detl ald where ald.brand in
        <foreach collection="packageGroupNos" item="item" index="index" open="(" close=")" separator=",">
            #{item}
        </foreach>
    </select>
    <select id="selectTallyGoosList" resultMap="BaseResultMap">
        select
            a.*
        from
            asr_loc_detl a
        where
                a.loc_no in(
                select
                    DISTINCT ald.loc_no
                from
                    asr_loc_mast alm
                        inner join asr_loc_detl ald on
                        alm.loc_no = ald.loc_no
                where
                    alm.loc_sts = 'F'
                  and alm.bay1 > #{columnNum}
                  and ald.dead_warn = 0
                group by
                    ald.loc_no ,
                    ald.brand
                HAVING
                    count(ald.model) = 1
            )
        order by
            a.manu_date asc
    </select>
    <update id="updateMatTurn">
        UPDATE a
        SET a.matnr=b.matnr,
            a.specs=b.specs,
            a.maktx=b.maktx,
            a.unit=b.unit
        FROM asr_loc_detl a
        INNER JOIN man_mat b ON a.matnr=#{matnrOld} AND b.matnr=#{matnr};
    </update>
    <update id="updateLhStsByLocNo">
        update asr_loc_detl set dead_warn = #{status},modi_time = getdate() where loc_no = #{locNo}
    </update>
</mapper>