zhanghua
2023-06-24 cc7f335315c8439a6341c999fdffde0c772394af
ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
@@ -22,6 +22,12 @@
        <result column="final_opinion" property="finalOpinion"/>
        <result column="create_time" property="createTime"/>
    </resultMap>
    <resultMap type="com.ycl.entity.caseHandler.BaseCase" id="CondMapResultMap" extends="BaseResultMap">
        <result column="category_text" property="categoryText"/>
        <result column="street_text" property="streetText"/>
        <result column="community_text" property="communityText"/>
        <result column="create_user_text" property="createUserText"/>
    </resultMap>
    <!-- 通用查询映射结果 -->
    <resultMap id="settingsResultMap" type="com.ycl.vo.IllegalBuildingSettingVO">
@@ -38,24 +44,30 @@
        , code, event_source, category, street_id, community_id, site, longitude, latitude, alarm_time, create_user, state, handling_opinion, remark, audit_opinion, final_opinion, create_time
    </sql>
    <select id="listViolationsPage" resultType="com.ycl.bo.casePool.CasePoolViolationDO">
    <select id="listViolationsPage" resultType="com.ycl.vo.casePool.CasePoolViolationVO">
        SELECT
            ubc.`id`,
        ubc.`id`,
        ubc.`code`,
        ubc.event_source,
        uv.category_id,
        uv.type_id,
        uv.action_cause,
        t3.name as category,
        t4.name as type,
        t5.region_name as street,
        ubc.site,
        ubc.street_id,
        ubc.alarm_time,
        ubc.close_time
        FROM
        `ums_base_case` AS ubc
        JOIN ums_violations AS uv ON ubc.id = uv.id
        LEFT JOIN ums_data_dictionary AS t3 ON uv.category_id = t3.id
        LEFT JOIN ums_data_dictionary AS t4 ON uv.type_id = t4.id
        LEFT JOIN ums_sccg_region t5 ON ubc.street_id = t5.id
        <where>
            <if test="state!=null">
            <if test="state!=null and state!=6">
                ubc.state=#{state}
            </if>
            <if test="state!=null and state==6">
                ubc.state &gt;=#{state}
            </if>
            <if test="resource!=null">
                and ubc.event_source=#{resource}
@@ -63,18 +75,42 @@
            <if test="type!=null">
                and ubc.category=#{type}
            </if>
            <if test="code!=null">
                and ubc.code=#{code}
            </if>
            <if test="categoryBig != null">
                and t3.name like concat('%', #{categoryBig},'%')
            </if>
            <if test="categorySmall != null">
                and t4.name like concat('%', #{categorySmall},'%')
            </if>
            <if test="street != null">
                and ubc.street_id = #{street}
            </if>
            <if test="site">
                and ubc.site like concat('%', #{site},'%')
            </if>
            <if test="startTime !='' and endTime !='' and startTime!=null and endTime !=null">
                and ubc.create_time between #{startTime} and #{endTime}
            </if>
            <if test="violationsTypeId !=null">
                and uv.grade_id = #{violationsTypeId}
            </if>
            <if test="videoId !=null">
                and uv.video_point_id = #{videoId}
            </if>
        </where>
        order by id desc
    </select>
    <select id="listIllegalBuildingsPage" resultType="com.ycl.bo.casePool.CasePoolIllegalBuildingDO">
    <select id="listIllegalBuildingsPage" resultType="com.ycl.vo.casePool.CasePoolIllegalBuildingVO">
        SELECT
        ubc.`id`,
        ubc.`code`,
        ubc.event_source,
        uib.category_id,
        t1.name as category,
        ubc.site,
        ubc.community_id,
        t2.region_name as community,
        uib.building_high,
        uib.building_width,
        uib.building_length,
@@ -82,10 +118,15 @@
        uib.materials
        FROM
        `ums_base_case` AS ubc
        JOIN ums_illegal_building AS uib ON ubc.id = uib.base_case_id
        left JOIN ums_illegal_building AS uib ON ubc.id = uib.base_case_id
        left JOIN ums_data_dictionary AS t1 ON uib.category_id = t1.id
        left JOIN ums_sccg_region t2 ON ubc.community_id = t2.id
        <where>
            <if test="state!=null">
            <if test="state!=null and state!=6">
                ubc.state=#{state}
            </if>
            <if test="state!=null and state==6">
                ubc.state &gt;=#{state}
            </if>
            <if test="resource!=null">
                and ubc.event_source=#{resource}
@@ -94,6 +135,326 @@
                and ubc.category=#{type}
            </if>
        </where>
        order by ubc.id desc
    </select>
    <select id="selectCondMap" parameterType="map" resultMap="CondMapResultMap">
        SELECT ubc.*,
               udd.name         category_text,
               usr.region_name  street_text,
               usr2.region_name community_text,
               ua.username      create_user_text
        FROM ums_base_case ubc
                 LEFT JOIN ums_data_dictionary udd on ubc.category = udd.id
                 LEFT JOIN ums_sccg_region usr on ubc.street_id = usr.id
                 LEFT JOIN ums_sccg_region usr2 on ubc.community_id = usr2.id
                 LEFT JOIN ums_admin ua on ubc.create_user = ua.id
        WHERE ubc.`code` = #{code}
    </select>
    <select id="selectBaseCasePage" resultType="com.ycl.entity.caseHandler.BaseCase">
        select t1.*,
        t3.region_name community_text
        from ums_base_case t1
        left join ums_sccg_region t3 on t1.community_id=t3.id
        <where>
            <if test="categories != null">
                t1.category = #{categories}
            </if>
            <if test="streetId != null">
                and t1.community_id = #{streetId}
            </if>
            <if test="code != null and code !=''">
                and t1.code like concat('%',#{code},'%')
            </if>
            <if test="site != null and site!=''">
                and t1.site like concat('%',#{site},'%')
            </if>
            <if test="startTime !='' and endTime !='' and startTime!=null and endTime !=null">
                and t1.create_time between #{startTime} and #{endTime}
            </if>
        </where>
        order by t1.alarm_time desc
    </select>
    <select id="selectViolationPage" resultType="com.ycl.vo.casePool.QueryForViolationVO"
            parameterType="com.ycl.dto.caseHandler.QueryForViolationParam">
        SELECT
        t1.`code`,
        t1.alarm_time,
        t1.handling_opinion,
        CASE
        t1.event_source
        WHEN 1 THEN
        "视频巡查"
        WHEN 2 THEN
        "人工上报"
        END AS event_source,
        t1.site,
        CASE
        t1.state
        WHEN 7 THEN
        "待审核"
        WHEN 8 THEN
        "已审核"
        END AS state,
        t3.`name` as categoryName,
        t4.`name` AS typeName,
        t5.`name` as gradeName,
        t2.car_number,
        t6.region_name as communityName,
        t7.region_name as streetName,
        t8.url,
        t9.address
        FROM
        ums_base_case t1
        LEFT JOIN ums_violations t2 on t1.id=t2.id
        LEFT JOIN ums_data_dictionary t3 on t3.id=t2.category_id
        LEFT JOIN ums_data_dictionary t4 on t4.id=t2.type_id
        LEFT JOIN ums_data_dictionary t5 on t5.id=t2.grade_id
        LEFT JOIN ums_sccg_region t6 on t6.id=t1.community_id
        LEFT JOIN ums_sccg_region t7 on t7.id=t1.street_id
        LEFT JOIN ums_image_resources t8 on t8.belong_to_id=t1.id
        LEFT JOIN ums_video_point t9 on t9.id=t2.video_point_id
        <where>
            <if test="queryForViolationParam.eventSource != null">
                and t1.event_source=#{queryForViolationParam.eventSource}
            </if>
            <if test="queryForViolationParam.categoryId != null">
                and t2.category_id=#{queryForViolationParam.categoryId}
            </if>
            <if test="queryForViolationParam.startTime != null and queryForViolationParam.startTime !='' and queryForViolationParam.endTime !=null and queryForViolationParam.endTime !=''">
                and t1.alarm_time between #{queryForViolationParam.startTime} and #{queryForViolationParam.endTime}
            </if>
            <if test="queryForViolationParam.code != null and queryForViolationParam.code != '' ">
                and t1.code like concat('%',#{queryForViolationParam.code},'%')
            </if>
            <if test=" queryForViolationParam.typeId!= null">
                and t2.type_id=#{v.typeId}
            </if>
            <if test="queryForViolationParam.gradeId != null">
                and t2.grade_id=#{queryForViolationParam.gradeId}
            </if>
            <if test="queryForViolationParam.streetId != null">
                and t1.street_id=#{queryForViolationParam.streetId}
            </if>
            <if test="queryForViolationParam.communityId != null">
                and t1.community_id=#{queryForViolationParam.communityId}
            </if>
            <if test="queryForViolationParam.state != null">
                and t1.state=#{queryForViolationParam.state}
            </if>
            <if test="queryForViolationParam.carNumber != null and  queryForViolationParam.carNumber!=''">
                and t2.car_number like concat('%',#{queryForViolationParam.carNumber},'%')
            </if>
            <if test="queryForViolationParam.videoPointId != null">
                and t2.video_point_id=#{queryForViolationParam.videoPointId}
            </if>
            <if test="queryForViolationParam.handlingOpinion != null and queryForViolationParam.handlingOpinion !=''">
                and t1.handling_opinion like concat('%',#{queryForViolationParam.handlingOpinion},'%')
            </if>
        </where>
    </select>
</mapper>
    <select id="selectVideoInspection" resultType="com.ycl.vo.casePool.BaseCaseVO">
        SELECT t1.id as baseId,
        t1.`code`,
        t3.`name`,
        t3.url_address,
        t3.longitude,
        t3.latitude,
        t4.pic_data,
        t5.`name` as grade,
        t3.address,
        t3.plat_resource_id as platResourceId,
        t3.code as videoCode,
        t1.alarm_time as alarmTime,
        t1.alarm_time as currentAlarmTime,
        t4.algo_name as algoName
        FROM ums_base_case t1
        LEFT JOIN ums_violations t2 ON t1.id = t2.id
        LEFT JOIN ums_video_point t3 on t2.video_point_id = t3.id
        LEFT JOIN ums_video_alarm_report t4 on t4.id = t2.video_alarm_report_id
        LEFT JOIN ums_data_dictionary t5 on t5.id = t2.grade_id
        WHERE t1.state = 1
        <if test="gradeId!=null">
            and t2.grade_id = #{gradeId}
        </if>
        <if test="videoId!=null">
            and t2.video_point_id = #{videoId}
        </if>
        <if test="beginTime!=null and beginTime!=''">
            and t1.alarm_time between #{beginTime} and #{endTime}
        </if>
        group by t1.id
        order by t1.id desc
    </select>
    <select id="selectRegisterCount" resultType="java.lang.Long">
        select count(1)
        from ums_base_case
        where state in (2, 6, 7, 8, 9)
          and to_days(create_time) = TO_DAYS(now());
    </select>
    <select id="selectStudyCount" resultType="java.lang.Long">
        select count(1)
        from ums_base_case
        where state = 3
          and to_days(create_time) = TO_DAYS(now());
    </select>
    <select id="dayCount" resultType="java.lang.Integer">
        SELECT
            count(1)
        FROM
            ums_base_case
        WHERE
            create_time BETWEEN CONCAT( CURDATE(), ' 00:00:00' )
                AND CONCAT( CURDATE(), ' 23:59:59' );
    </select>
    <select id="weekCount" resultType="java.lang.Integer">
        SELECT
            count( 1 )
        FROM
            ums_base_case
        WHERE
                YEARWEEK(
                        date_format( create_time, '%Y-%m-%d' ), 1) = YEARWEEK(
                        now(), 1);
    </select>
    <select id="dispatchCount" resultType="java.lang.Integer">
        select count(1)
        FROM ums_base_case t1
                 LEFT JOIN ums_dispose_record t2 ON t1.id = t2.base_case_id
        WHERE t2.workflow_config_step_id = 1
    </select>
    <select id="alCount" resultType="java.lang.Integer">
        select count(1)
        FROM ums_base_case
        WHERE event_source = 1;
    </select>
    <select id="selectEventList" resultType="com.ycl.vo.cockpit.enforcementEvents.EventVO">
        SELECT
        t1.alarm_time,
        t1.longitude,
        t1.latitude,
        dd.name AS type,
        ( CASE WHEN t1.event_source = 1 THEN "视频巡查" WHEN t1.event_source = 2 THEN "网格巡查" ELSE "其他" END ) AS source,
        t1.site AS address,
        t2.description,
        t3.`name` AS point,
        t4.pic_data AS picture,
        (case
        WHEN t1.state = 0 THEN '待处理'
        WHEN t1.state = 1 THEN '报警'
        WHEN t1.state = 2 THEN '上报'
        WHEN t1.state = 3 THEN '再学习'
        WHEN t1.state = 4 THEN '暂不处理'
        WHEN t1.state = 5 THEN '立案'
        WHEN t1.state = 6 THEN '调度'
        WHEN t1.state = 7 THEN '处置'
        WHEN t1.state = 8 THEN '核查'
        WHEN t1.state = 9 THEN '结案'
        END) `alarmAdvice` ,
        pdd.`name` as grade
        FROM
        ums_base_case t1
        LEFT JOIN ums_violations t2 ON t1.id = t2.id
        LEFT JOIN ums_video_point t3 ON t3.id = t2.video_point_id
        LEFT JOIN ums_video_alarm_report t4 ON t4.id = t2.video_alarm_report_id
        LEFT JOIN ums_data_dictionary dd on t2.grade_id = dd.id
        LEFT JOIN ums_data_dictionary pdd on pdd.id = dd.parent_id
        <where>
            t1.category=1
            <if test="beginTime !=''and beginTime!=null and endTime!=''and endTime!=null">
                and t1.create_time BETWEEN #{beginTime}
                AND #{endTime}
            </if>
        </where>
        order by t1.id desc
    </select>
    <select id="areaCount" resultType="com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO">
        SELECT t2.region_name name,
               COUNT(1) AS count
        FROM
            `ums_base_case` t1
            LEFT JOIN ums_sccg_region t2
        ON t1.street_id = t2.id
        GROUP BY
            street_id
    </select>
    <select id="selectDelayVOList" resultType="com.ycl.dto.cockpitManage.DelayDO">
        SELECT t1.`code`,
               t3.description,
               t2.start_time,
               t2.end_time,
               t2.limit_time
        FROM `ums_base_case` t1
                 LEFT JOIN ums_dispose_record t2 ON t1.id = t2.base_case_id
                 LEFT JOIN ums_violations t3 on t1.id = t3.id
        WHERE t2.workflow_config_step_id IN (1, 2)
    </select>
    <select id="selectType" resultType="com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO">
        SELECT IFNULL(t2.`name`, "其他") as name,
               COUNT(1) as count
        FROM
            ums_violations t1
            LEFT JOIN ums_data_dictionary t2
        ON t1.grade_id = t2.id
        GROUP BY
            t1.grade_id
        ORDER BY       COUNT(1) desc
    </select>
    <select id="selectLastMonthCount" resultType="java.lang.Long">
        SELECT
        count(1)
        FROM
        ums_base_case
        WHERE
        state in
        <foreach collection="list" open="(" separator="," close=")" item="state">
            #{state}
        </foreach>
        AND PERIOD_DIFF( date_format( now( ), '%Y%m' ), date_format( create_time, '%Y%m' ) ) =1
    </select>
    <select id="selectRecentlyMonthCount" resultType="java.lang.Long">
        SELECT
        count(1)
        FROM
        ums_base_case
        WHERE
        state in
        <foreach collection="list" open="(" separator="," close=")" item="state">
            #{state}
        </foreach>
        AND PERIOD_DIFF( date_format( now( ), '%Y%m' ), date_format( create_time, '%Y%m' ) ) =0
    </select>
    <select id="selectOnTimeCaseCount" resultType="java.lang.Long">
        SELECT COUNT(1)
        FROM ums_dispose_record
        WHERE end_time &lt; limit_time
    </select>
    <select id="selectOnTimeCaseLastMonthCount" resultType="java.lang.Long">
        SELECT COUNT(1)
        FROM ums_dispose_record
        WHERE end_time &lt; limit_time
          AND PERIOD_DIFF(date_format(now(), '%Y%m'), date_format(create_time, '%Y%m')) = 1
    </select>
    <select id="selectOnTimeCaseRecentlyMonthCount" resultType="java.lang.Long">
        SELECT COUNT(1)
        FROM ums_dispose_record
        WHERE end_time &lt; limit_time
          AND PERIOD_DIFF(date_format(now(), '%Y%m'), date_format(create_time, '%Y%m')) = 0
    </select>
</mapper>