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.

132 lines
5.0 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>
</mapper>