日照智慧社区接口服务
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.

443 lines
14 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.IssueDao">
<resultMap type="com.epmet.entity.IssueEntity" id="issueMap">
<result property="id" column="ID"/>
<result property="issueStatus" column="ISSUE_STATUS"/>
<result property="sourceType" column="SOURCE_TYPE"/>
<result property="sourceId" column="SOURCE_ID"/>
<result property="closeReason" column="CLOSE_REASON"/>
<result property="resolveType" column="RESOLVE_TYPE"/>
<result property="issueTitle" column="ISSUE_TITLE"/>
<result property="suggestion" column="SUGGESTION"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="gridId" column="GRID_ID"/>
<result property="orgIdPath" column="ORG_ID_PATH"/>
<result property="orgId" column="ORG_ID"/>
<result property="votingDeadline" column="VOTING_DEADLINE"/>
<result property="decidedTime" column="DECIDED_TIME"/>
<result property="shiftedTime" column="SHIFTED_TIME"/>
<result property="closedTime" column="CLOSED_TIME"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 议题详情 -->
<select id="issueDetail" parameterType="com.epmet.dto.form.IssueDetailFormDTO" resultType="com.epmet.dto.result.IssueResultDTO">
SELECT
source_id AS topicId,
issue_title AS issueTitle,
issue_status AS issueStatus,
suggestion AS issueSuggestion,
grid_id AS gridId,
created_by AS userId
FROM
issue
WHERE
id = #{issueId}
AND del_flag = 0
</select>
<select id="selectIssueListByGridId" parameterType="com.epmet.dto.form.ShiftProjectListFromDTO" resultType="com.epmet.entity.IssueEntity">
SELECT
*
FROM
issue
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{gridId}
AND ISSUE_STATUS = 'shift_project'
ORDER BY UPDATED_TIME DESC
</select>
<!-- 新增议题 -->
<insert id="insertOne" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="com.epmet.dto.IssueDTO">
<selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE">
SELECT replace(uuid(),'-','') AS ID
</selectKey>
INSERT INTO issue
<trim prefix="(" suffix=")" suffixOverrides=",">
id,
<if test ='null != issueStatus'>
issue_status,
</if>
<if test ='null != sourceType'>
source_type,
</if>
<if test ='null != sourceId'>
source_id,
</if>
<if test ='null != closeReason'>
close_reason,
</if>
<if test ='null != resolveType'>
resolve_type,
</if>
<if test ='null != issueTitle'>
issue_title,
</if>
<if test ='null != suggestion'>
suggestion,
</if>
<if test ='null != customerId'>
customer_id,
</if>
<if test ='null != gridId'>
grid_id,
</if>
<if test ='null != orgIdPath'>
org_id_path,
</if>
<if test ='null != orgId'>
org_id,
</if>
<if test ='null != votingDeadline'>
voting_deadline,
</if>
<if test ='null != decidedTime'>
decided_time,
</if>
<if test ='null != shiftedTime'>
shifted_time,
</if>
<if test ='null != closedTime'>
closed_time,
</if>
<if test ='null != createdBy'>
created_by,
</if>
<if test ='null != createdTime'>
created_time,
</if>
<if test ='null != createdBy'>
updated_by,
</if>
<if test ='null != createdTime'>
updated_time,
</if>
del_flag,
revision
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{id},
<if test ='null != issueStatus'>
#{issueStatus},
</if>
<if test ='null != sourceType'>
#{sourceType},
</if>
<if test ='null != sourceId'>
#{sourceId},
</if>
<if test ='null != closeReason'>
#{closeReason},
</if>
<if test ='null != resolveType'>
#{resolveType},
</if>
<if test ='null != issueTitle'>
#{issueTitle},
</if>
<if test ='null != suggestion'>
#{suggestion},
</if>
<if test ='null != customerId'>
#{customerId},
</if>
<if test ='null != gridId'>
#{gridId},
</if>
<if test ='null != orgIdPath'>
#{orgIdPath},
</if>
<if test ='null != orgId'>
#{orgId},
</if>
<if test ='null != votingDeadline'>
#{votingDeadline},
</if>
<if test ='null != decidedTime'>
#{decidedTime},
</if>
<if test ='null != shiftedTime'>
#{shiftedTime},
</if>
<if test ='null != closedTime'>
#{closedTime},
</if>
<if test ='null != createdBy'>
#{createdBy},
</if>
<if test ='null != createdTime'>
#{createdTime},
</if>
<if test ='null != createdBy'>
#{createdBy},
</if>
<if test ='null != createdTime'>
#{createdTime},
</if>
'0',
0
</trim>
</insert>
<!-- 查询表决中议题列表 -->
<select id="selectVotingList" parameterType="com.epmet.dto.form.CommonIssueListFormDTO" resultType="com.epmet.dto.result.VotingIssueListResultDTO">
SELECT
ID AS issueId,
IFNULL(ISSUE_TITLE,'') AS issueTitle,
IFNULL(SUGGESTION,'')AS suggestion,
UNIX_TIMESTAMP( created_time ) AS issuePublishTime
FROM
issue
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{gridId}
AND ISSUE_STATUS = 'voting'
ORDER BY
created_time DESC
LIMIT #{pageNo},
#{pageSize}
</select>
<!-- 查询已关闭议题列表 -->
<select id="selectClosedList" parameterType="com.epmet.dto.form.CommonIssueListFormDTO" resultType="com.epmet.dto.result.ClosedIssueListResultDTO">
SELECT
ID AS issueId,
IFNULL(ISSUE_TITLE,'') AS issueTitle,
IFNULL(CLOSE_REASON,'') AS solution,
UNIX_TIMESTAMP( created_time ) AS issueClosedTime
FROM
issue
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{gridId}
AND ISSUE_STATUS = 'closed'
ORDER BY
created_time DESC
LIMIT #{pageNo},
#{pageSize}
</select>
<!-- 查询已关闭议题列表 政府端 -->
<select id="selectClosedListGov" parameterType="com.epmet.dto.form.CommonIssueListFormDTO" resultType="com.epmet.dto.result.ClosedIssueListGovResultDTO">
SELECT
ID AS issueId,
IFNULL(ISSUE_TITLE,'') AS issueTitle,
IFNULL(CLOSE_REASON,'') AS closeReason,
UNIX_TIMESTAMP( created_time ) AS closedTime
FROM
issue
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{gridId}
AND ISSUE_STATUS = 'closed'
ORDER BY
created_time DESC
LIMIT #{pageNo},
#{pageSize}
</select>
<!-- 判断某人是不是议题发起人 -->
<select id="checkIssuePublisher" resultType="integer" parameterType="com.epmet.dto.form.VoteFormDTO">
SELECT
COUNT(*) AS publisher
FROM
issue
WHERE
del_flag = 0
AND created_by = #{createdBy}
AND id = #{issueId}
</select>
<!-- 获取转项目或者议题关闭时间 -->
<select id="operateTime" resultType="java.lang.String">
SELECT
DATE_FORMAT(updated_time,'%Y-%m-%d') AS updateTime
FROM
issue
WHERE
del_flag = 0
AND id = #{issueId}
</select>
<!-- 生成昨日的话题统计信息 -->
<select id="getIssueVotingStatistical" resultType="com.epmet.dto.result.IssuesToBeCountedResultDTO">
SELECT
issue.ID,
issue.ISSUE_STATUS,
vote.ATTITUDE,
vote.VOTE_COUNT,
totalvote.ATTITUDE AS ATTITUDE_UP_TO_YESTERDAY,
totalvote.VOTE_COUNT AS VOTE_COUNT_UP_TO_YESTERDAY
FROM
ISSUE issue
LEFT JOIN (
SELECT ISSUE_ID ,
ATTITUDE,
count(ATTITUDE) AS VOTE_COUNT
FROM issue_vote_detail
WHERE DEL_FLAG = '0'
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) totalvote ON issue.ID = totalvote.ISSUE_ID
LEFT JOIN (
SELECT ISSUE_ID ,
ATTITUDE,
count(ATTITUDE) AS VOTE_COUNT
FROM issue_vote_detail
WHERE DEL_FLAG = '0'
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) vote ON issue.ID = vote.ISSUE_ID AND totalvote.ATTITUDE = vote.ATTITUDE
WHERE
issue.DEL_FLAG = '0'
AND (
issue.ISSUE_STATUS = 'voting'
OR (
TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) <![CDATA[<=]]> 1
AND
TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) <![CDATA[>]]> 0
)
OR (
TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) <![CDATA[<=]]> 1
AND
TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) > 0
)
)
ORDER BY
issue.ID
</select>
<select id="selectIssueList" resultType="com.epmet.entity.IssueEntity">
SELECT
*
FROM issue
WHERE del_flag = '0'
AND customer_id = #{latestListForm.customerId}
AND grid_id = #{latestListForm.gridId}
<foreach item="issueId" collection="issueIdList" separator="OR" open="AND (" close=")" index="">
id = #{issueId}
</foreach>
ORDER BY field(
id,
<foreach item="issueId" collection="issueIdList" separator=",">
#{issueId}
</foreach>
)
LIMIT #{latestListForm.pageNo}, #{latestListForm.pageSize}
</select>
<select id="selectNewestIssueList" resultType="com.epmet.entity.IssueEntity">
SELECT
*
FROM issue
WHERE del_flag = '0'
AND customer_id = #{customerId}
AND grid_id = #{gridId}
AND issue_status = 'voting'
ORDER BY created_time DESC
LIMIT #{pageSize}
</select>
<!-- 条件查询出符合指定条件的议题ID集合 以及从昨天到现在被关闭或者转项目的议题 -->
<select id="selectIssueIdsByCondition" parameterType="com.epmet.dto.IssueDTO" resultType="com.epmet.dto.IssueDTO">
SELECT
ID,
GRID_ID
FROM
ISSUE
WHERE
DEL_FLAG = '0'
AND
ISSUE_STATUS = #{issueStatus}
</select>
5 years ago
<!-- 校验话题是否已转议题 -->
<select id="checkTopicShiftIssue" resultType="integer" parameterType="com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO">
SELECT
COUNT(*) AS issueCount
FROM
issue
WHERE
del_flag = 0
AND source_id = #{topicId}
</select>
<!-- 个人中心-我发起的议题列表-表决中 -->
<select id="myPubIssuesAuditing" resultType="com.epmet.dto.result.MyPubIssuesAuditingResultDTO">
SELECT
i.ID AS issueId,
i.SUGGESTION,
i.ISSUE_TITLE,
i.SOURCE_ID AS topicId,
i.GRID_ID AS gridId,
UNIX_TIMESTAMP(i.CREATED_TIME) AS shiftIssueTime
FROM issue i
WHERE i.DEL_FLAG = '0'
AND i.ISSUE_STATUS = 'voting'
AND i.CREATED_BY = #{userId}
5 years ago
ORDER BY i.CREATED_TIME DESC
</select>
<!-- 查询我发起的议题(可根据状态查询)-->
<select id="selectMyPubIssues" parameterType="map" resultType="com.epmet.dto.IssueDTO">
SELECT
i.*,
UNIX_TIMESTAMP(i.CLOSED_TIME) AS closedTimeStamp,
UNIX_TIMESTAMP(i.SHIFTED_TIME) AS shiftedTimeStamp,
m.PROJECT_ID
FROM
issue i
left join issue_project_relation m
on(i.id=m.ISSUE_ID and m.del_flag='0')
WHERE
i.DEL_FLAG = '0'
AND i.CREATED_BY = #{userId}
<if test ='null != issueStatus and "" != issueStatus'>
and i.ISSUE_STATUS=#{issueStatus}
</if>
<if test="issueStatus == 'shift_project'">
ORDER BY
m.CREATED_TIME DESC
</if>
<if test="issueStatus == 'closed'">
ORDER BY
i.CLOSED_TIME DESC
</if>
LIMIT #{pageNo}, #{pageSize}
</select>
<!-- 个人中心-我发表的话题列表-已转议题列表 -->
<select id="myShiftIssueTopics" resultType="com.epmet.dto.result.MyShiftIssueTopicsResultDTO">
SELECT
SOURCE_ID AS topicId,
UNIX_TIMESTAMP(CREATED_TIME) AS shiftIssueTime,
SUGGESTION,
ISSUE_TITLE,
GRID_ID
FROM issue
WHERE DEL_FLAG = '0'
AND ISSUE_STATUS != 'shift_project'
AND CUSTOMER_ID = #{customerId}
AND
<foreach collection="topicIds" item="topicId" separator=" OR ">
SOURCE_ID = #{topicId}
</foreach>
ORDER BY CREATED_TIME DESC
</select>
</mapper>