mitao
2024-12-17 ab7b8b5e702989d894620c41fbaa0e2d6904ecd5
medicalWaste-system/src/main/resources/mapper/system/MwCheckoutRecordMapper.xml
@@ -28,5 +28,105 @@
        UPDATE_TIME,
        ID, CHECKOUT_TIME, DEPARTMENT_ID, HOSPITAL_NAME, STAGING_ROOM_ID, HOSPITAL_SIGNATURE, DRIVER_ID, CAR_ID
    </sql>
    <select id="pageHospitalTransitList" resultType="com.sinata.system.domain.vo.MwCheckoutRecordVO">
        SELECT mcr.ID,
        mcr.CHECKOUT_TIME,
        mcr.HOSPITAL_NAME,
        SUM(mcr.BOX_NUM) AS boxNum,
        SUM(mcr.BAG_NUM) AS bagNum,
        SUM(mcr.TOTAL_WEIGHT) AS totalWeight,
        su.NICK_NAME AS driverName,
        mtc.LICENSE_PLATE_NUMBER
        FROM MW_CHECKOUT_RECORD mcr
        LEFT JOIN SYS_USER su
        ON mcr.DRIVER_ID = su.USER_ID
        LEFT JOIN MW_TRANSIT_CAR mtc
        ON mcr.CAR_ID = mtc.ID
        LEFT JOIN SYS_DEPARTMENT sd
        ON mcr.DEPARTMENT_ID = sd.ID
        <where>
            <if test="treeCode != null and treeCode != ''">
                AND sd.TREE_CODE LIKE CONCAT(#{treeCode},'%')
            </if>
            <if test="query.checkoutTimeStart != null and query.checkoutTimeEnd!=null">
                AND mcr.CHECKOUT_TIME BETWEEN #{query.checkoutTimeStart} AND #{query.checkoutTimeEnd}
            </if>
        </where>
        GROUP BY mcr.DEPARTMENT_ID
    </select>
    <select id="hospitalDetail" resultType="com.sinata.system.domain.vo.MwCheckoutRecordVO">
        SELECT mcr.ID,
        mcr.CHECKOUT_TIME,
        mcr.HOSPITAL_NAME,
        SUM(mcr.BOX_NUM) AS boxNum,
        SUM(mcr.BAG_NUM) AS bagNum,
        SUM(mcr.TOTAL_WEIGHT) AS totalWeight,
        su.NICK_NAME AS driverName,
        mtc.LICENSE_PLATE_NUMBER
        FROM MW_CHECKOUT_RECORD mcr
        LEFT JOIN SYS_USER su
        ON mcr.DRIVER_ID = su.USER_ID
        LEFT JOIN MW_TRANSIT_CAR mtc
        ON mcr.CAR_ID = mtc.ID
        LEFT JOIN SYS_DEPARTMENT sd
        ON mcr.DEPARTMENT_ID = sd.ID
        <where>
            mcr.DEPARTMENT_ID = #{id}
        </where>
    </select>
    <select id="hospitalDetailPage" resultType="com.sinata.system.domain.vo.MwMedicalWasteBoxVO">
        SELECT
        mcr.BOX_ID AS id,
        mcr.BOX_NUMBER,
        mcr.WASTE_TYPE_STR,
        su.NICK_NAME AS COLLECT_USER_NAME,
        COUNT(*) AS bagNum,
        SUM(mcr.WEIGHT) AS totalWeight,
        (SELECT MAX(mcr_inner.BOX_TIME)
        FROM MW_COLLECT_RECORD mcr_inner
        WHERE mcr_inner.BOX_ID = mcr.BOX_ID) AS BOX_TIME
        FROM MW_COLLECT_RECORD mcr
        LEFT JOIN SYS_USER su ON mcr.COLLECT_USER_ID = su.USER_ID
        LEFT JOIN SYS_DEPARTMENT sd ON su.DEPARTMENT_ID = sd.ID
        <where>
            <if test="departmentId != null and departmentId != ''">
                AND mcr.DEPARTMENT_ID = #{departmentId}
            </if>
        </where>
        GROUP BY mcr.BOX_ID
        ORDER BY mcr.CREATE_TIME DESC
    </select>
    <select id="transitPageList" resultType="com.sinata.system.domain.vo.MwTransitRecordVO">
        SELECT MDR.DISPOSAL_UNIT_NAME,
        MTC.LICENSE_PLATE_NUMBER,
        SU.NICK_NAME,
        SUM(MCR.BOX_NUM) AS boxNum,
        SUM(MCR.TOTAL_WEIGHT) AS weight,
        MIN(MCR2.BOX_TIME) AS startTime,
        MDR.RECEIVE_TIME AS endTime
        FROM MW_DISPOSAL_RECORD MDR
        LEFT JOIN MW_DISPOSAL_RECORD_ITEM MDRI ON MDR.ID = MDRI.DISPOSAL_RECORD_ID
        LEFT JOIN MW_CHECKOUT_RECORD_ITEM MCRI ON MDRI.COLLECT_RECORD_ID = MCRI.COLLECT_RECORD_ID
        LEFT JOIN MW_CHECKOUT_RECORD MCR ON MCRI.CHECKOUT_RECORD_ID = MCR.ID
        LEFT JOIN MW_COLLECT_RECORD MCR2 ON MCRI.COLLECT_RECORD_ID = MCR2.ID
        LEFT JOIN MW_TRANSIT_CAR MTC ON MCR.CAR_ID = MTC.ID
        LEFT JOIN SYS_USER SU ON MCR.DRIVER_ID = SU.USER_ID
        LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID
        <where>
            <if test="treeCode != null and treeCode != null">
                AND SD.TREE_CODE LIKE CONCAT(#{treeCode},'%')
            </if>
            <if test="query.licensePlateNumber != null and query.licensePlateNumber != ''">
                AND MTC.LICENSE_PLATE_NUMBER LIKE CONCAT('%',#{query.licensePlateNumber},'%')
            </if>
            <if test="query.status != null">
                AND MCR2.STATUS = #{query.status}
            </if>
            <if test="query.startTime != null and query.endTime != null">
                AND MDR.RECEIVE_TIME BETWEEN #{query.startTime} AND #{query.endTime}
            </if>
        </where>
        GROUP BY MCR.CAR_ID
    </select>
</mapper>