From 9b992ec72dde89dedfc71497f44a8cca36cca870 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 18 三月 2026 15:00:14 +0800
Subject: [PATCH] 【丽水】获取当前用户随访数量统计

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |   24 ++++++++++++
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java            |    3 +
 smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java                       |    9 ++++
 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java                    |    2 +
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                       |   24 ++++++++++++
 5 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
index 507e492..10d2848 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -32,6 +32,7 @@
 import com.smartor.service.IServiceSubtaskRecordService;
 import com.smartor.service.IServiceSubtaskService;
 import com.smartor.service.IServiceTaskService;
+import com.smartor.service.impl.ServiceSubtaskServiceImpl;
 import com.sun.org.apache.bcel.internal.generic.NEW;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -651,4 +652,27 @@
         return map;
     }
 
+    /**
+     * 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堜紭鍖栫増锛�
+     * @return Map<String, Object> 鍖呭惈鍚勭姸鎬佺粺璁℃暟鎹�
+     *         pendingVisitCount: 褰撳墠鐧诲綍浜烘埅姝粖鏃ュ緟闅忚鎬婚噺
+     *         failedVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″け璐ユ�婚噺
+     *         abnormalVisitVount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″紓甯告�婚噺
+     */
+    @ApiOperation("鑾峰彇褰撳墠鐢ㄦ埛闅忚鏁伴噺缁熻")
+    @PostMapping("/getCurrentUserServiceSubtaskCount")
+    public Map<String, Object> getCurrentUserServiceSubtaskCount() {
+        Map<String, Object> map = new HashMap<>();
+        LoginUser loginUser = getLoginUser();
+        SysUser sysUser = loginUser.getUser();
+        if (ObjectUtils.isNotEmpty(sysUser)) {
+            List<String> deptCodes = sysUser.getDeptCodes();
+            List<String> wardCodes = sysUser.getWardCodes();
+            ServiceSubtaskEntity entity = new ServiceSubtaskEntity();
+            entity.setLeaveldeptcodes(deptCodes);
+            entity.setLeavehospitaldistrictcodes(wardCodes);
+            map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
+        }
+        return map;
+    }
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
index cc20b7e..9a0ffc8 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -166,4 +166,13 @@
      */
     public Map<String, Object> countByCondition(ServiceSubtaskEntity serviceSubtaskVO);
 
+    /**
+     * 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堜紭鍖栫増锛�
+     * @param serviceSubtaskVO 鏌ヨ鏉′欢
+     * @return Map<String, Object> 鍖呭惈鍚勭姸鎬佺粺璁℃暟鎹�
+     *         pendingVisitCount: 褰撳墠鐧诲綍浜烘埅姝粖鏃ュ緟闅忚鎬婚噺
+     *         failedVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″け璐ユ�婚噺
+     *         abnormalVisitVount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″紓甯告�婚噺
+     */
+    public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity serviceSubtaskVO);
 }
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index 68443df..83f15bb 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -147,4 +147,6 @@
     public List<PatArchiveSrmVO> sendMsgTemplate(List<PatArchiveSrmVO> patArchiveSrmVOS);
 
     public List<ServiceSubtaskDiagname> convertToDiagnameList(List<ServiceSubtask> subtaskList) ;
+
+    public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity);
     }
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index b7a5d61..7117122 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -3543,4 +3543,7 @@
         }).collect(Collectors.toList());
     }
 
+    public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity){
+        return serviceSubtaskMapper.getCurrentUserServiceSubtaskCount(entity);
+    }
 }
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index c9698fc..0190f40 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -2257,4 +2257,28 @@
         </if>
     </select>
 
+    <select id="getCurrentUserServiceSubtaskCount" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity" resultType="map">
+        SELECT
+        COUNT(CASE WHEN sendstate IN (1, 2) AND date_format(senddate,'%y%m%d') &lt;= date_format(CURDATE(),'%y%m%d') THEN 1 END) AS pendingVisitCount,
+        COUNT(CASE WHEN sendstate = 5 THEN 1 END)                                  AS failedVisitCount,
+        COUNT(CASE WHEN isabnormal IN (1, 2) THEN 1 END)                           AS abnormalVisitCount
+        FROM service_subtask
+        WHERE del_flag = '0'
+        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+            AND leavehospitaldistrictcode IN
+            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
+                     separator=","
+                     close=")">
+                #{leavehospitaldistrictcode}
+            </foreach>
+        </if>
+        <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
+            AND deptcode IN
+            <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
+                     close=")">
+                #{leaveldeptcode}
+            </foreach>
+        </if>
+    </select>
+
 </mapper>

--
Gitblit v1.9.3