From b7b0da18a6cd9775b5c5e2af4da91f15d6d3871e Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Thu, 15 Sep 2022 15:27:10 +0800
Subject: [PATCH] 解决时间排序导致的分页重复

---
 src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml |  148 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 129 insertions(+), 19 deletions(-)

diff --git a/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml b/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml
index 85052d2..b41053f 100644
--- a/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml
+++ b/src/main/java/org/springblade/modules/taskqd/mapper/TaskqdMapper.xml
@@ -10,7 +10,6 @@
         <result column="time" property="time"/>
         <result column="province" property="province"/>
         <result column="city" property="city"/>
-        <result column="county" property="county"/>
         <result column="jnum" property="jnum"/>
         <result column="line" property="line"/>
         <result column="rtype" property="rtype"/>
@@ -44,24 +43,73 @@
         where id = #{id}
     </update>
     <update id="updateRtype">
+        UPDATE sys_taskqd
+        <set>
+            <if test='type == "0" '>rtype=#{type},stime = now(),</if>
+            <if test='type == "1" '>rtype=#{type},sendtime = now(),</if>
+        </set>
+        WHERE id = #{rid}
+    </update>
+
+    <update id="updateSerid">
         update sys_taskqd
-        SET rtype=#{type}
+        SET serid=#{serid},team=#{newteam},num=#{newnum}
         where id = #{rid}
     </update>
 
-
     <!--日常任务列表-->
+    <select id="getlist" resultMap="taskResultMap">
+        SELECT
+        *
+        FROM
+        sys_taskqd
+        WHERE
+        serid LIKE concat("%",#{id},"%")
+        <if test="type == 3">
+            and rtype = 1
+        </if>
+        <if test="type == 2">
+            AND ( rtype = "0" OR rtype = "2" )
+        </if>
+    </select>
+
+    <!--任务统计-->
     <select id="selectList" resultMap="taskResultMap">
-        select jnum, num, serid, team
+        select jnum, num, serid, team ,time,endtime
         from sys_taskqd
         where id = #{id}
     </select>
+    <select id="taskCount" resultType="java.util.HashMap">
+        SELECT
+            count( * ) AS count
+        FROM
+            sys_taskqd
+        WHERE
+            serid LIKE  concat("%",#{id},"%")
+            AND rtype = "1" UNION ALL
+        SELECT
+            count( * ) AS count
+        FROM
+            sys_taskqd
+        WHERE
+            serid LIKE concat("%",#{id},"%")
+            AND ( rtype = "0" OR rtype = "2" )
+    </select>
+    <select id="allTask" resultType="java.util.HashMap">
+        SELECT
+        *
+        FROM
+        sys_taskqd
+        WHERE 1 = 1
+        AND ( rtype = "0" OR rtype = "2" )
+
+    </select>
 
     <select id="queryReceiver" resultType="java.util.HashMap">
-        SELECT u.* ,
-	    r.role_name
-        FROM blade_user
-        LEFT JOIN ( SELECT id, role_name FROM blade_role ) r on u.role_id = r.id
+        SELECT u.*,
+               r.role_name
+        FROM blade_user u
+                 LEFT JOIN (SELECT id, role_name FROM blade_role) r on u.role_id = r.id
         WHERE u.id in (${serid})
     </select>
 
@@ -69,15 +117,45 @@
         SELECT A.*,IFNULL(B.num,0) as nums FROM (
         select qd.* from sys_taskqd qd LEFT JOIN sys_jurisdiction j ON j.id = qd.jurisdiction where 1=1 AND
         <if test="type==0">
-            find_in_set(#{serid}, serid)) A LEFT JOIN (SELECT COUNT(*) as num,hdid,serid FROM sys_taskfk WHERE
-            serid=#{serid} GROUP BY hdid,serid) B ON A.id=B.hdid
+            (qd.rtype = "2" or qd.rtype = "0") AND
+            <if test="serid != '1123598821738675201'">
+                find_in_set(#{serid}, serid) and
+            </if>
+            qd.tasktype=#{tasktype}) A LEFT JOIN (SELECT COUNT(*) as num,hdid,serid
+            FROM
+            sys_taskfk WHERE 1 = 1
+            <if test="serid != '1123598821738675201'">
+                and serid=#{serid}
+            </if>
+            GROUP BY hdid,serid) B ON A.id=B.hdid
+        </if>
+        <if test="type==2">
+            qd.rtype = "1" AND
+            <if test="serid != '1123598821738675201'">
+                find_in_set(#{serid}, serid) and
+            </if>
+            qd.tasktype=#{tasktype}) A LEFT JOIN (SELECT COUNT(*) as num,hdid,serid
+            FROM
+            sys_taskfk WHERE 1 = 1
+            <if test="serid != '1123598821738675201'">
+                and serid=#{serid}
+            </if>
+            GROUP BY hdid,serid) B ON A.id=B.hdid
         </if>
         <if test="type==1">
             <if test="jurisdiction!='1372091709474910209'">
-                qd.jnum!=qd.num AND qd.rtype = "2"
-                and (!find_in_set(#{serid}, serid) OR serid IS NULL )
-                and (j.id =#{jurisdiction} or
-                j.parent_id = #{jurisdiction})
+                <if test="tasktype !=2">
+                    qd.jnum!=qd.num AND
+                </if>
+                qd.rtype = "2"
+                and qd.tasktype=#{tasktype}
+                <if test="serid != '1123598821738675201'">
+                    and (!find_in_set(#{serid}, serid) OR serid IS NULL )
+                </if>
+                and
+                ((j.id =#{jurisdiction} or
+                j.parent_id = #{jurisdiction}) or (j.id =#{workjurisdiction} or
+                j.parent_id = #{workjurisdiction}))
             </if>
             ) A LEFT JOIN (SELECT
             COUNT(*)
@@ -86,17 +164,49 @@
     </select>
 
     <select id="selectNum" resultType="java.util.HashMap">
-        SELECT COUNT(*) as num,tasktype
+        SELECT COUNT(*) as num, tasktype
         FROM sys_taskqd qd
                  LEFT JOIN sys_jurisdiction j ON j.id = qd.jurisdiction
         WHERE jnum!=num AND qd.rtype = "2" AND
-           (!find_in_set(#{serid}, serid) OR serid IS NULL )
-          and (j.id =#{jurisdiction} or j.parent_id = #{jurisdiction})
-          or (j.id =#{workjurisdiction} or j.parent_id = #{workjurisdiction})
+           (!find_in_set(#{serid}
+            , serid)
+           OR serid IS NULL )
+          and ((j.id =#{jurisdiction}
+           or j.parent_id = #{jurisdiction})
+           or (j.id =#{workjurisdiction}
+           or j.parent_id = #{workjurisdiction}))
         GROUP BY tasktype
     </select>
 
     <select id="querySerid" resultType="java.lang.String">
-        SELECT serid from sys_taskqd where id = #{rid}
+        SELECT serid
+        from sys_taskqd
+        where id = #{rid}
+    </select>
+
+    <select id="countTaskByJur" resultType="org.springblade.modules.taskqd.entity.Taskqd">
+        SELECT *
+        FROM sys_taskqd qd
+        WHERE qd.jurisdiction = #{jurisdiction}
+        <choose>
+            <when test='period=="day" '>
+                AND TO_DAYS(qd.time) = TO_DAYS(#{startTime})
+            </when>
+            <when test='period == "week" '>
+                 AND YEARWEEK(DATE_FORMAT(qd.time,"%Y-%m-%d"),1) = YEARWEEK(#{startTime},1)
+             </when>
+            <when test='period == "month" '>
+                AND DATE_FORMAT(qd.time,"%Y-%m") = DATE_FORMAT(#{startTime},"%Y-%m")
+            </when>
+            <when test='period == "all" '></when>
+        </choose>
+        LIMIT 0,15
+    </select>
+
+    <select id="getRealTime" resultType="java.lang.Integer">
+        SELECT (UNIX_TIMESTAMP(sendtime)-UNIX_TIMESTAMP(stime))
+            subsecond
+        FROM sys_taskqd
+        WHERE id = #{hdid}
     </select>
 </mapper>

--
Gitblit v1.9.3