You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
7.7 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.topic.TopicDao">
<resultMap id="groupTopic" type="com.epmet.dto.topic.result.ResiGroupTopicResultDTO">
<id property="groupId" column="groupId" />
<result property="gridId" column="GRID_ID" />
<result property="customerId" column="CUSTOMER_ID" />
<result property="groupName" column="GROUP_NAME" />
<collection property="topics" ofType="com.epmet.dto.topic.result.ResiTopicResultDTO">
<id property="topicId" column="topicId" />
<id property="status" column="STATUS"/>
<id property="shiftIssue" column="SHIFT_ISSUE" />
<id property="incrFlag" column="incrFlag" />
</collection>
</resultMap>
<!-- 将组按照网格Id排序,并取出组Id、话题Id等相关信息,incrFlag代表是否是在当日创建 -->
<select id="selectGroupOrderByGrid" resultMap="groupTopic">
SELECT
groupp.ID AS groupId,
groupp.GRID_ID,
groupp.CUSTOMER_ID ,
groupp.GROUP_NAME,
topic.ID AS topicID,
topic.STATUS,
topic.SHIFT_ISSUE,
<choose>
<when test="null != targetDate">
(CASE WHEN
topic.CREATED_TIME <![CDATA[>=]]> #{targetDate} AND topic.CREATED_TIME <![CDATA[<]]> DATE_SUB( #{targetDate}, INTERVAL - 1 DAY)
THEN '1'
ELSE '0' END ) AS incrFlag
</when>
<otherwise>
(CASE WHEN
topic.CREATED_TIME <![CDATA[<]]> CURDATE( ) AND topic.CREATED_TIME <![CDATA[>=]]> DATE_SUB( CURDATE( ), INTERVAL 1 DAY )
THEN '1'
ELSE '0' END ) AS incrFlag
</otherwise>
</choose>
FROM RESI_GROUP groupp LEFT JOIN RESI_TOPIC topic ON groupp.ID = topic.GROUP_ID AND topic.DEL_FLAG = '0'
WHERE groupp.DEL_FLAG = '0'
<if test='null != customerId and "" != customerId'>
AND groupp.CUSTOMER_ID = #{customerId}
</if>
<choose>
<when test="null != targetDate">
AND topic.CREATED_TIME <![CDATA[<]]> DATE_SUB( #{targetDate}, INTERVAL - 1 DAY)
AND groupp.CREATED_TIME <![CDATA[<]]> DATE_SUB( #{targetDate}, INTERVAL - 1 DAY)
</when>
<otherwise>
AND topic.CREATED_TIME <![CDATA[<]]> CURDATE( )
AND groupp.CREATED_TIME <![CDATA[<]]> CURDATE( )
</otherwise>
</choose>
ORDER BY groupp.GRID_ID
</select>
<!-- 查询话题的操作记录,如果返回结果中没有对应Id的话题说明当日话题没有操作记录 -->
<select id="selectTopicOperationRecord" resultType="com.epmet.dto.topic.result.ResiTopicOperationResultDTO">
SELECT
TOPIC_ID ,
OPERATION_TYPE AS status,
date_format(CREATED_TIME,'%Y-%m-%d') AS createdTime
FROM RESI_TOPIC_OPERATION operation
WHERE operation.DEL_FLAG = '0'
<choose>
<when test="null != targetDate">
AND CREATED_TIME <![CDATA[>=]]> #{targetDate} AND CREATED_TIME <![CDATA[<]]> DATE_SUB( #{targetDate}, INTERVAL - 1 DAY)
</when>
<otherwise>
AND CREATED_TIME <![CDATA[<]]> CURDATE( ) AND CREATED_TIME <![CDATA[>=]]> DATE_SUB( CURDATE( ), INTERVAL 1 DAY )
</otherwise>
</choose>
order by TOPIC_ID
</select>
<!-- 将组按照网格Id排序,并取出组Id、话题Id等相关信息,incrFlag代表是否是在当日创建 -->
<select id="selectGroupOrderByGridBetweenTimeRange" resultMap="groupTopic">
SELECT
groupp.ID AS groupId,
groupp.GRID_ID,
groupp.CUSTOMER_ID ,
groupp.GROUP_NAME,
topic.ID AS topicID,
topic.STATUS,
topic.SHIFT_ISSUE,
(CASE WHEN
topic.CREATED_TIME <![CDATA[>=]]> #{startDate} AND topic.CREATED_TIME <![CDATA[<]]> DATE_SUB( #{endDate}, INTERVAL - 1 DAY)
THEN '1'
ELSE '0' END ) AS incrFlag
FROM RESI_GROUP groupp LEFT JOIN RESI_TOPIC topic ON groupp.ID = topic.GROUP_ID AND topic.DEL_FLAG = '0'
WHERE groupp.DEL_FLAG = '0'
<if test='null != customerId and "" != customerId'>
AND groupp.CUSTOMER_ID = #{customerId}
</if>
AND topic.CREATED_TIME <![CDATA[<]]> DATE_SUB( #{endDate}, INTERVAL - 1 DAY)
AND groupp.CREATED_TIME <![CDATA[<]]> DATE_SUB( #{endDate}, INTERVAL - 1 DAY)
ORDER BY groupp.GRID_ID
</select>
<!-- 查询话题的操作记录,如果返回结果中没有对应Id的话题说明当日话题没有操作记录 -->
<select id="selectTopicOperationRecordBetweenTimeRange" resultType="com.epmet.dto.topic.result.ResiTopicOperationResultDTO">
SELECT
TOPIC_ID ,
OPERATION_TYPE AS status,
date_format(CREATED_TIME,'%Y-%m-%d') AS createdTime
FROM RESI_TOPIC_OPERATION operation
WHERE operation.DEL_FLAG = '0'
5 years ago
AND
CREATED_TIME <![CDATA[>=]]> #{startDate} AND CREATED_TIME <![CDATA[<]]> DATE_SUB( #{endDate}, INTERVAL - 1 DAY)
order by TOPIC_ID
</select>
<!-- 查询话题创建者信息 -->
<select id="selectTopicInfo" resultType="com.epmet.dto.extract.result.TopicInfoResultDTO">
SELECT
id AS topicId,
CREATED_BY AS userId
FROM
resi_topic
WHERE
del_flag = '0'
AND
(
<foreach collection="topicIds" item="item" separator=" OR ">
id = #{item}
</foreach>
)
</select>
5 years ago
<!-- 根据日期查询resi_topic_operation,返回当前日期这一天内所有话题相关的操作记录 -->
<select id="selectListTopicOriginInfo" parameterType="map" resultType="com.epmet.dto.topic.TopicOriginInfoDTO">
5 years ago
SELECT
rto.TOPIC_ID,
5 years ago
(case
when rto.OPERATION_TYPE='closed' and rt.CLOSED_STATUS='resolved' then 'closed_resolved'
when rto.OPERATION_TYPE='closed' and rt.CLOSED_STATUS='unresolved' then 'closed_unresolved'
else rto.OPERATION_TYPE
end
)as ACTION_CODE,
5 years ago
rto.CREATED_BY as OPERATE_USER_ID,
DATE_FORMAT(rto.CREATED_TIME,'%Y%m%d') as DATE_ID,
DATE_FORMAT(rto.CREATED_TIME,'%Y%m') as MONTH_ID,
DATE_FORMAT(rto.CREATED_TIME,'%Y') as YEAR_ID,
rto.CREATED_TIME AS ORIGINAL_BUSINESS_TIME,
rt.GROUP_ID,
rt.STATUS as TOPIC_STATUS,
rg.GRID_ID,
RG.CUSTOMER_ID
FROM
resi_topic_operation rto
LEFT JOIN resi_topic rt ON ( rto.TOPIC_ID = rt.id AND rt.DEL_FLAG = '0' )
LEFT JOIN RESI_GROUP RG ON(RT.GROUP_ID=RG.ID AND RG.DEL_FLAG='0')
WHERE
rto.DEL_FLAG = '0'
AND DATE_FORMAT(rto.CREATED_TIME,'%Y%m%d')=#{dateId}
AND RG.CUSTOMER_ID=#{customerId}
5 years ago
union all
SELECT
rtc.TOPIC_ID,
'comment' as ACTION_CODE,
rtc.CREATED_BY as OPERATE_USER_ID,
DATE_FORMAT(rtc.CREATED_TIME,'%Y%m%d') as DATE_ID,
DATE_FORMAT(rtc.CREATED_TIME,'%Y%m') as MONTH_ID,
DATE_FORMAT(rtc.CREATED_TIME,'%Y') as YEAR_ID,
rtc.CREATED_TIME AS ORIGINAL_BUSINESS_TIME,
rt.GROUP_ID ,
rt.STATUS as TOPIC_STATUS,
rg.GRID_ID,
rg.CUSTOMER_ID
FROM
resi_topic_comment rtc
LEFT JOIN resi_topic rt ON ( rtc.TOPIC_ID = rt.id AND rt.DEL_FLAG = '0' )
LEFT JOIN resi_group rg ON ( rt.GROUP_ID = rg.id AND rg.DEL_FLAG = '0' )
WHERE
rtc.DEL_FLAG = '0'
AND DATE_FORMAT( rtc.CREATED_TIME, '%Y%m%d' )=#{dateId}
AND RG.CUSTOMER_ID =#{customerId}
5 years ago
</select>
5 years ago
</mapper>