自动化立体仓库 - WMS系统
pang.jiabao
2024-09-02 0671b22545b660cae46568ba7f6a14f52cad8ad8
src/main/resources/mapper/LocDetlMapper.xml
@@ -5,26 +5,134 @@
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocDetl">
        <result column="loc_no" property="locNo" />
        <result column="zpallet" property="zpallet" />
        <result column="anfme" property="anfme" />
        <result column="matnr" property="matnr" />
        <result column="maktx" property="maktx" />
        <result column="batch" property="batch" />
        <result column="order_no" property="orderNo" />
        <result column="lgnum" property="lgnum" />
        <result column="type" property="type" />
        <result column="specs" property="specs" />
        <result column="model" property="model" />
        <result column="color" property="color" />
        <result column="supplier" property="supplier" />
        <result column="warehouse" property="warehouse" />
        <result column="brand" property="brand" />
        <result column="anfme" property="anfme" />
        <result column="altme" property="altme" />
        <result column="zpallet" property="zpallet" />
        <result column="bname" property="bname" />
        <result column="memo" property="memo" />
        <result column="unit" property="unit" />
        <result column="price" property="price" />
        <result column="sku" property="sku" />
        <result column="units" property="units" />
        <result column="barcode" property="barcode" />
        <result column="origin" property="origin" />
        <result column="manu" property="manu" />
        <result column="manu_date" property="manuDate" />
        <result column="item_num" property="itemNum" />
        <result column="safe_qty" property="safeQty" />
        <result column="weight" property="weight" />
        <result column="length" property="length" />
        <result column="volume" property="volume" />
        <result column="three_code" property="threeCode" />
        <result column="supp" property="supp" />
        <result column="supp_code" property="suppCode" />
        <result column="be_batch" property="beBatch" />
        <result column="dead_time" property="deadTime" />
        <result column="dead_warn" property="deadWarn" />
        <result column="source" property="source" />
        <result column="inspect" property="inspect" />
        <result column="danger" property="danger" />
        <result column="modi_user" property="modiUser" />
        <result column="modi_time" property="modiTime" />
        <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">
        <choose>
            <when test="batch != null and batch != ''">
                and batch = #{batch}
            </when>
            <otherwise>
                and (batch IS NULL OR batch = '')
            </otherwise>
        </choose>
    </sql>
    <insert id="batchDetls">
        INSERT INTO
        asr_loc_detl(loc_no,zpallet,barcode,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.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 *
        from asr_loc_detl
        where 1=1
        and loc_no = #{locNo}
        and matnr = #{matnr}
        <include refid="batchSeq"></include>
    </select>
    <delete id="deleteItem">
        delete from asr_loc_detl
        where 1=1
        and loc_no = #{locNo}
        and matnr = #{matnr}
        <include refid="batchSeq"></include>
    </delete>
    <update id="updateAnfme">
        update asr_loc_detl
        set anfme = #{anfme}
        , modi_time = getdate()
        where 1=1
        and loc_no = #{locNo}
        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!='' ">
@@ -39,11 +147,17 @@
        <if test="anfme!=null and anfme!='' ">
            and a.anfme like '%' + #{anfme} + '%'
        </if>
        <if test="altme!=null and altme!='' ">
            and a.altme like '%' + #{altme} + '%'
        </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>
    </sql>
@@ -144,15 +258,32 @@
        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="batch != null and batch != ''">
            and a.batch = #{batch}
        </if>
        <if test="orderNo != null and orderNo != ''">
            and a.orderNo = #{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
        when (left(a.loc_no, 2) = '01') then 0
        when (left(a.loc_no, 2) = '02') then 1
@@ -207,4 +338,66 @@
        desc
    </select>
    <select id="queryStockAnfme" resultType="java.lang.Double">
        select sum(anfme) as count from man_loc_detl
         where 1=1
         and matnr = #{matnr}
        <if test="batch != null and batch != ''">
            and batch = #{batch}
        </if>
    </select>
    <select id="queryStockTotal" resultType="com.zy.asrs.entity.result.StockVo">
        select
        matnr,
        batch,
        count(anfme) as count
        from asr_loc_detl
        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>
    <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>
</mapper>