xiangpei
2024-09-10 f8889f7364adae89e45a5ec3fcf4b38e430cf389
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -19,6 +19,7 @@
        <result column="province_tag" property="provinceTag"/>
        <result column="important_tag" property="importantTag"/>
        <result column="important_command_image_tag" property="importantCommandImageTag"/>
        <result column="dept_tag" property="deptTag"/>
    </resultMap>
    <select id="selectData" resultType="com.ycl.platform.base.BaseSelect">
@@ -41,7 +42,8 @@
        typ.update_time,
        typ.important_tag,
        typ.province_tag,
        typ.important_command_image_tag
        typ.important_command_image_tag,
        typ.dept_tag
        FROM
        t_yw_point typ
        LEFT JOIN t_yw_unit tyu ON typ.unit_id = tyu.id AND tyu.deleted = 0
@@ -50,6 +52,90 @@
            <if test="query.pointName != null and query.pointName != ''">
                AND typ.point_name like concat('%', #{query.pointName}, '%')
            </if>
        </where>
    </select>
    <select id="dataCenterPage">
        SELECT
               m.*
        FROM
             t_yw_point p INNER JOIN t_monitor m ON p.serial_number = m.serial_number
        <where>
            AND p.create_time between #{query.startTime} and #{query.endTime}
            <if test="query.keyword != null and query.keyword != ''">
                AND (m.name like concat('%', #{query.keyword}, '%') OR m.serial_number like concat('%', #{query.keyword}, '%'))
            </if>
            <if test="query.dataType == 1">
                AND p.province_tag = 1
            </if>
            <choose>
                <when test="query.deptTag == 1">
                    AND p.dept_tag = 1
                </when>
                <when test="query.deptTag == 2">
                    AND p.province_tag = 1
                </when>
                <when test="query.deptTag == 3">
                    AND p.important_tag = 1
                </when>
                <when test="query.deptTag == 4">
                    AND p.important_command_image_tag = 1
                </when>
                <when test="query.deptTag == 5">
                    AND p.new_device = 1
                </when>
            </choose>
            <choose>
                <when test="query.deviceType == 1">
                    AND m.camera_fun_type like '%1%'
                </when>
                <when test="query.deviceType == 2">
                    AND m.camera_fun_type like '%2%'
                </when>
                <when test="query.deviceType == 3">
                    AND m.camera_fun_type like '%3%'
                </when>
            </choose>
        </where>
    </select>
    <select id="distinctCount" resultType="integer">
        SELECT
            count(DISTINCT m.serial_number)
        FROM
            t_yw_point p INNER JOIN t_monitor m ON p.serial_number = m.serial_number
        <where>
            <if test="query.dataType == 1">
                AND p.province_tag = 1
            </if>
            <choose>
                <when test="query.deptTag == 1">
                    AND dept_tag = 1
                </when>
                <when test="query.deptTag == 2">
                    AND province_tag = 1
                </when>
                <when test="query.deptTag == 3">
                    AND important_tag = 1
                </when>
                <when test="query.deptTag == 4">
                    AND important_command_image_tag = 1
                </when>
                <when test="query.deptTag == 5">
                    AND new_device = 1
                </when>
            </choose>
            <choose>
                <when test="query.deviceType == 1">
                    AND m.camera_fun_type like '%1%'
                </when>
                <when test="query.deviceType == 2">
                    AND m.camera_fun_type like '%2%'
                </when>
                <when test="query.deviceType == 3">
                    AND m.camera_fun_type like '%3%'
                </when>
            </choose>
        </where>
    </select>
@@ -78,6 +164,9 @@
            <if test="commandImage!=null and commandImage == true ">
                and important_command_image_tag = #{commandImage}
            </if>
            <if test="deptTag !=null and deptTag == true ">
                and dept_tag = #{deptTag}
            </if>
        </where>
    </select>
@@ -85,13 +174,14 @@
        SELECT
        m.name as pointName,
        m.serial_number,
        m.ip,
        m.ip as pointIp,
        yu.unit_name,
        yp.start_time,
        yp.end_time,
        yp.province_tag,
        yp.important_tag,
        yp.important_command_image_tag
        CASE WHEN yp.province_tag = 0 THEN '否' ELSE '是' END AS provinceTagString,
        CASE WHEN yp.important_tag = 0 THEN '否' ELSE '是' END AS importantTagString,
        CASE WHEN yp.important_command_image_tag = 0 THEN '否' ELSE '是' END AS importantCommandImageTagString,
        CASE WHEN yp.dept_tag = 0 THEN '否' ELSE '是' END AS deptTag
        FROM
        t_yw_point yp
        INNER JOIN t_monitor m ON yp.serial_number = m.serial_number
@@ -101,9 +191,123 @@
                AND m.name like concat('%', #{query.pointName} ,'%')
            </if>
        </where>
        ORDER BY yu.unit_name
    </select>
    <delete id="deleteAll">
        delete from t_yw_point
    </delete>
    <update id="updatePoint">
        <foreach collection="pointList" separator=";" item="point">
            UPDATE t_yw_point
            SET
            <if test="point.pointName != null and point.pointName != ''">
                point_name = #{point.pointName},
            </if>
            <if test="point.unitId != null">
                unit_id = #{point.unitId},
            </if>
            <if test="point.startTime != null">
                start_time = #{point.startTime},
            </if>
            <if test="point.endTime != null">
                end_time = #{point.endTime},
            </if>
            province_tag = #{point.provinceTag},
            important_command_image_tag = #{point.importantCommandImageTag},
            dept_tag = #{point.deptTag}
            WHERE serial_number = #{point.serialNumber}
        </foreach>
    </update>
    <select id="countNotFinishedWorkOrderByPointId" resultType="com.ycl.platform.domain.vo.YwPointVO">
        SELECT
            yp.id, yp.point_name, wo.serial_number
        FROM
             t_yw_point yp
                 INNER JOIN t_work_order wo ON yp.serial_number = wo.serial_number
                                                   AND wo.status not in ('AUDITING_SUCCESS','WAIT_DISTRIBUTE')
                                                   AND wo.deleted = 0
                                                   AND yp.deleted = 0
        WHERE
            yp.id = #{pointId}
    </select>
    <select id="countNotFinishedWorkOrderByGb" resultType="com.ycl.platform.domain.vo.YwPointVO">
        SELECT
            yp.id, yp.point_name, wo.serial_number
        FROM
            t_yw_point yp
                INNER JOIN t_work_order wo ON yp.serial_number = wo.serial_number
                AND wo.status not in ('AUDITING_SUCCESS','WAIT_DISTRIBUTE')
                AND wo.deleted = 0
                AND yp.deleted = 0
                AND yp.serial_number = #{serialNumber}
        LIMIT 1
    </select>
    <select id="getDeptPointGB" resultType="string">
        SELECT
            DISTINCT serial_number
        FROM
             t_yw_point
        WHERE
            <if test="tagType == 0">
                dept_tag = 1
            </if>
            <if test="tagType == 1">
                important_tag = 1
            </if>
            <if test="tagType == 2">
                important_command_image_tag = 1
            </if>
             AND deleted = 0
    </select>
    <select id="select" resultType="com.ycl.platform.domain.entity.YwPoint">
        SELECT
               *
        FROM
             t_yw_point
        <where>
            <if test="keyword != null and keyword != ''">
                AND (serial_number like concat('%', #{keyword}, '%') or point_name like concat('%', #{keyword}, '%'))
            </if>
            <if test="unitId != null">
                AND unit_id = #{unitId}
            </if>
            AND deleted = 0
        </where>
    </select>
    <select id="getReportResult" resultType="com.ycl.platform.domain.vo.ReportAuditingRecordVO">
        SELECT
               ar.result, r.begin_create_time, r.end_create_time
        FROM
             t_report r
                 INNER JOIN t_report_auditing_record ar ON r.id = ar.report_id
                                                               AND ar.deleted = 0
                                                               AND r.report_type = #{reportType}
                                                               AND r.deleted = 0
                                                               AND r.serial_number = #{serialNumber}
                                                                AND ar.result = 1
        ORDER BY
             ar.create_time DESC
        limit 1
    </select>
    <select id="getTagsByGB" resultType="com.ycl.platform.domain.vo.CheckTagVO">
        SELECT
               serial_number as no, province_tag, important_tag, important_command_image_tag, dept_tag
        FROM
            t_yw_point
        WHERE
            deleted = 0 AND serial_number in <foreach collection="gbList" open="(" separator="," close=")" item="no">#{no}</foreach>
        GROUP BY
            serial_number, province_tag, important_tag, important_command_image_tag, dept_tag
    </select>
</mapper>