zhangf
2024-05-08 0414ddb0b2b3a7199ae6181a770f97ac140dbd73
equipment/equipment-service/src/main/resources/config/mapper/equipment/SafeMaterialDetailInfoMapper.xml
@@ -8,18 +8,21 @@
        <id column="id" property="id" jdbcType="BIGINT"/>
        <result column="name" property="name" jdbcType="VARCHAR"/>
        <result column="material_no" property="materialNo" jdbcType="VARCHAR"/>
        <result column="material_classify_id" property="materialClassifyId" jdbcType="BIGINT"/>
        <result column="big_classify_id" property="bigClassifyId" jdbcType="BIGINT"/>
        <result column="small_classify_id" property="smallClassifyId" jdbcType="BIGINT"/>
        <result column="rfid" property="rfid" jdbcType="VARCHAR"/>
        <result column="consumable" property="consumable" jdbcType="TINYINT"/>
        <result column="valid_type" property="validType" jdbcType="TINYINT"/>
        <result column="valid_time" property="validTime" jdbcType="TIMESTAMP"/>
        <result column="valid_status" property="validStatus" jdbcType="TINYINT"/>
        <result column="status" property="status" jdbcType="TINYINT"/>
        <result column="ir_status" property="irStatus" jdbcType="TINYINT"/>
        <result column="ware_housing_time" property="wareHousingTime" jdbcType="TIMESTAMP"/>
        <result column="delivery_time" property="deliveryTime" jdbcType="TIMESTAMP"/>
        <result column="sm_id" property="smId" jdbcType="BIGINT"/>
        <result column="claimant_id" property="claimantId" jdbcType="BIGINT"/>
        <result column="claimant_name" property="claimantName" jdbcType="VARCHAR"/>
        <result column="receive_uid" property="receiveUid" jdbcType="BIGINT"/>
        <result column="receive_uname" property="receiveUname" jdbcType="VARCHAR"/>
        <result column="remark" property="remark" jdbcType="VARCHAR"/>
        <result column="del_flag" property="delFlag" jdbcType="INTEGER"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="create_uid" property="createUid" jdbcType="BIGINT"/>
@@ -36,31 +39,33 @@
        select id,
               name,
               material_no,
               material_classify_id,
               big_classify_id,
               rfid,
               consumable,
               valid_type,
               valid_time,
               valid_status,
               status,
               ir_status,
               ware_housing_time,
               ware_housing_time,
               delivery_time,
               sm_id,
               claimant_id,
               claimant_name
               receive_uid,
               receive_uname
        from safe_material_detail where del_flag = 0 and id = #{id}
    </select>
    <update id="updateReceiptStatus" >
        update safe_material_detail
        set ir_status = #{status},
            ware_housing_time = #{wareHousingTime},
            claimant_id = null,
            claimant_name = null
            receive_uid = null,
            receive_uname = null,
            delivery_time = null
        where id = #{id}
    </update>
    <select id="getListByIds" resultMap="materialDetailResult">
        select id,name,material_no,material_classify_id,rfid,consumable,valid_type,valid_time,valid_status,ir_status,ware_housing_time,ware_housing_time,delivery_time,sm_id,claimant_id,claimant_name
        select id,name,material_no,big_classify_id,rfid,consumable,valid_type,valid_time,valid_status,status,ir_status,ware_housing_time,ware_housing_time,delivery_time,sm_id,receive_uid,
        receive_uname,remark
               from safe_material_detail
               where del_flag = 0
                 and id in
@@ -72,8 +77,10 @@
        update safe_material_detail
        set ir_status = #{irStatus},
            ware_housing_time = #{wareHousingTime},
            claimant_id = null,
            claimant_name = null where id in
            receive_uid = null,
            receive_uname = null,
            delivery_time = null
            where id in
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
@@ -114,24 +121,13 @@
    <update id="updateDeliveryStatusByIds" >
        update safe_material_detail
        set ir_status = #{detailBO.irStatus},
            claimant_id = #{detailBO.claimantId},
            claimant_name = #{detailBO.claimantName},
            receive_uid = #{detailBO.receiveUid},
            receive_uname = #{detailBO.receiveUname},
            delivery_time = #{detailBO.deliveryTime}
        where id in
        <foreach collection="detailBO.ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </update>
    <!--批量出库-随机-->
    <update id="deliveryBatchRandom" >
        update safe_material_detail
        set ir_status = #{detailBO.irStatus},
            claimant_id = #{detailBO.claimantId},
            claimant_name = #{detailBO.claimantName},
            delivery_time = #{detailBO.deliveryTime}
        where id in
              (select t.id from (select id from safe_material_detail where ir_status = 0 and valid_status = 0 and del_flag = 0 ORDER BY ware_housing_time asc LIMIT #{detailBO.count}) t
              )
    </update>
    <select id="getValidStockCount" resultType="java.lang.Integer">
@@ -144,30 +140,39 @@
    </select>
    <select id="listByCondition" resultType="com.gkhy.safePlatform.equipment.entity.SafeMaterialDetailInfoDO">
        select sd.id,
               sd.name,
               CONCAT(sd.name,'(',sm.serial_num,')') as name,
               sd.material_no,
               sd.material_classify_id,
               sd.big_classify_id,
               sd.rfid,
               sd.consumable,
               sd.valid_type,
               sd.valid_time,
               sd.valid_status,
               sd.status,
               sd.remark,
               sd.ir_status,
               sd.ware_housing_time,
               sd.claimant_name,
               sd.receive_uname,
               sd.delivery_time,
               sm.dep_id,
               sm.dep_name,
               sc.material_classify_name
               sd.sm_id,
               sc.material_classify_name as bigClassifyName
        from safe_material_detail sd
                 INNER JOIN safe_material_classify sc on sd.material_classify_id = sc.id
                 INNER JOIN safe_material_classify sc on sd.big_classify_id = sc.id
                 INNER JOIN safe_material sm on sd.sm_id = sm.id
        where sd.del_flag = 0
        <if test="query.rfid != null and query.rfid != '' ">
            and sd.rfid = #{query.rfid}
        </if>
        <if test="query.irStatus != null and query.irStatus != '' or query.irStatus == 0">
        <if test="query.irStatus != null">
            and sd.ir_status = #{query.irStatus}
        </if>
        <if test="query.smId != null">
            and sd.sm_id = #{query.smId}
        </if>
        <if test="query.depId != null">
            and sm.dep_id = #{query.depId}
        </if>
        ORDER BY sd.create_time desc
    </select>
@@ -187,4 +192,169 @@
    <update id="updateValidStatus" >
        update safe_material_detail set valid_status = #{validStatus} where id = #{id}
    </update>
    <select id="getRfidNotNullList" resultType="java.lang.Long">
        select id from safe_material_detail where sm_id = #{smId} and ir_status = 0 and valid_status = 0 and del_flag = 0 and rfid is not null ORDER BY ware_housing_time asc LIMIT #{count}
    </select>
    <select id="getRfidNullList" resultType="java.lang.Long">
        select id from safe_material_detail where sm_id = #{smId} and ir_status = 0 and valid_status = 0 and del_flag = 0 and rfid is null ORDER BY ware_housing_time asc LIMIT #{count}
    </select>
    <select id="getListBySmIdAndRfid" resultType="com.gkhy.safePlatform.equipment.entity.SafeMaterialDetailInfo">
        select id,
               name,
               material_no,
               big_classify_id,
               rfid,
               consumable,
               valid_type,
               valid_time,
               valid_status,
               status,
               ir_status,
               ware_housing_time,
               delivery_time,
               sm_id,
               receive_uid,
               receive_uname
        from safe_material_detail where del_flag = 0 and sm_id = #{query.smId} and ir_status = #{query.irStatus} and valid_status = #{query.validStatus} and rfid = #{query.rfid} ORDER BY create_time asc LIMIT #{query.count}
    </select>
    <select id="getListBySmId" resultType="com.gkhy.safePlatform.equipment.entity.SafeMaterialDetailInfo">
        select id,
               name,
               material_no,
               big_classify_id,
               rfid,
               consumable,
               valid_type,
               valid_time,
               valid_status,
               status,
               ir_status,
               ware_housing_time,
               delivery_time,
               sm_id,
               receive_uid,
               receive_uname
        from safe_material_detail where del_flag = 0 and sm_id = #{query.smId} and ir_status = #{query.irStatus} and valid_status = #{query.validStatus} ORDER BY create_time asc LIMIT #{query.count}
    </select>
    <select id="getSmallClassifyStockByIds" resultType="com.gkhy.safePlatform.equipment.entity.SafeMaterialClassifyStockDO">
        select d.small_classify_id,
        m.dep_id,
        m.dep_name,
        count(1) as stockCount
        from safe_material_detail d
        INNER JOIN safe_material m
        ON d.sm_id = m.id
        where d.del_flag = 0
        and d.ir_status = 0
        and d.valid_status = 0
        and d.small_classify_id in
        <foreach collection="smallClassifyIds" item="smallClassifyId" separator="," open="(" close=")">
            #{smallClassifyId}
        </foreach>
        group By d.small_classify_id,m.dep_id,m.dep_name
    </select>
    <select id="getListBySmallClassifyIds" resultType="com.gkhy.safePlatform.equipment.entity.SafeMaterialDetailDO">
        SELECT
        sd.id,
        sd.rfid,
        sm.dep_id,
        sd.small_classify_id,
        sd.big_classify_id
        FROM
        safe_material_detail sd
        INNER JOIN safe_material sm ON sd.sm_id = sm.id
        WHERE
        sd.del_flag = 0
        AND sd.ir_status = 0
        AND sd.valid_status = 0
        AND sd.small_classify_id IN
        <foreach collection="smallClassifyIds" item="smallClassifyId" open="(" close=")" separator=",">
            #{smallClassifyId}
        </foreach>
        AND sm.dep_id IN
        <foreach collection="depIds" item="depId" open="(" close=")" separator=",">
            #{depId}
        </foreach>
        ORDER BY
        sd.create_time ASC
    </select>
    <select id="getListByRfids" resultType="com.gkhy.safePlatform.equipment.entity.SafeMaterialDetailInfoDO">
        SELECT
            sd.id,
            CONCAT( sd.NAME, '(NO', sd.material_no, ')' ) as name,
            sd.big_classify_id,
            sd.small_classify_id,
            sm.dep_id
        FROM
            safe_material_detail sd
        inner join safe_material sm on sd.sm_id = sm.id
        WHERE
            sd.del_flag = 0
          AND sd.ir_status = 1
          AND sd.rfid in
        <foreach collection="rfids" item="rfid" open="(" close=")" separator=",">
            #{rfid}
        </foreach>
    </select>
    <select id="updateValidStatusByIds" >
        update safe_material_detail set valid_status = #{validStatus} where id in
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </select>
    <select id="getUnValidList" resultType="com.gkhy.safePlatform.equipment.entity.SafeMaterialDetailInfo">
        select
            id,
            name,
            material_no,
            big_classify_id,
            rfid,
            consumable,
            valid_type,
            valid_time,
            valid_status,
            ir_status,
            ware_housing_time,
            ware_housing_time,
            delivery_time,
            sm_id,
            receive_uid,
            receive_uname,
            status
        from safe_material_detail
        where del_flag = 0
            and valid_status = #{validStatus}
            and  DATE_FORMAT(valid_time,'%Y%m%d') &lt; DATE_FORMAT(CURDATE( ),'%Y%m%d')
    </select>
    <update id="updateBatch" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
            update safe_material_detail
            <trim prefix="SET" suffixOverrides=",">
                <if test="null != item.receiveUid">
                    receive_uid = #{item.receiveUid},
                </if>
                <if test="null != item.receiveUname and '' != item.receiveUname">
                    receive_uname = #{item.receiveUname},
                </if>
                <if test="null != item.irStatus">
                    ir_status = #{item.irStatus},
                </if>
                <if test="null != item.deliveryTime">
                    delivery_time = #{item.deliveryTime}
                </if>
                <if test="null != item.validStatus">
                    valid_status = #{item.validStatus}
                </if>
                <if test="null != item.remark and '' != item.remark">
                    remark = #{item.remark}
                </if>
                <if test="null != item.status">
                    status = #{item.status}
                </if>
            </trim>
            where id = #{item.id}
        </foreach>
    </update>
</mapper>