From a9d3da5b62ed78a9e4d50e774672b3f0f658fd4a Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 05 六月 2026 00:49:11 +0800
Subject: [PATCH] 【丽水】getSpecialSfStatistics 获取专病随访统计比例

---
 smartor/src/main/java/com/smartor/domain/ServiceSubtask.java                             |    7 +
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java              |   18 ++--
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |   25 ++++++
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java            |   66 ++++++++++++++--
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java                     |    2 
 smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java                       |    2 
 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java                    |    2 
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                       |  114 +++++++++++++++++++++++++++
 8 files changed, 214 insertions(+), 22 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 d458f35..6f829f4 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
@@ -559,6 +559,31 @@
     }
 
     /**
+     * 鑾峰彇涓撶梾闅忚缁熻姣斾緥
+     */
+    @ApiOperation("鑾峰彇涓撶梾闅忚缁熻姣斾緥")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/getSpecialSfStatistics")
+    public Map<String, Object> getSpecialSfStatistics(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
+            return error("鏈嶅姟绫诲瀷涓嶈兘涓虹┖");
+        }
+        Integer offset = PageUtils.getOffset(serviceSubtaskCountReq.getPageNum(), serviceSubtaskCountReq.getPageSize());
+        serviceSubtaskCountReq.setPageNum(offset);
+
+        String followUpCountStyle = configService.selectConfigByKey("followUpCountStyle", serviceSubtaskCountReq.getOrgid());
+        if (ObjectUtils.isNotEmpty(followUpCountStyle)) {
+            serviceSubtaskCountReq.setFollowUpCountStyle(followUpCountStyle);
+        } else {
+            serviceSubtaskCountReq.setFollowUpCountStyle("1");
+        }
+        serviceSubtaskCountReq.setPageNum(null);
+        serviceSubtaskCountReq.setPageSize(null);
+        List<ServiceSubtaskStatistic> sfStatistics = serviceSubtaskService.getSpecialSfStatistics(serviceSubtaskCountReq);
+        return getDataTable4(CollectionUtils.isEmpty(sfStatistics) ? sfStatistics.size() : 0, serviceSubtaskService.getSpecialSfStatistics(serviceSubtaskCountReq));
+    }
+
+    /**
      * 鑾峰彇闅忚缁熻姣斾緥
      */
     @ApiOperation("鑾峰彇闅忚婊℃剰搴︾粺璁�")
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
index 5f92c5d..e7ba287 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -680,4 +680,11 @@
 
     @ApiModelProperty(value = "鎵嬫湳璁板綍id 瀵瑰簲pat_med_operation_item.id")
     private Long operationItemId;
+
+    /**
+     * 鐤剧梾鐥呯
+     */
+    @ApiModelProperty(value = "鐤剧梾鐥呯")
+    @Excel(name = " 鐤剧梾鐥呯")
+    private String diagType;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
index c796fd1..ff0f0b8 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
@@ -57,7 +57,7 @@
     @ApiModelProperty(value = "瀛愪换鍔d闆嗗悎")
     private List<Long> subTaskIds;
 
-    @ApiModelProperty(value = "绉戝鐥呭尯锛�1锛岀梾鍖虹粺璁�  2锛岀瀹ょ粺璁�")
+    @ApiModelProperty(value = "绉戝鐥呭尯锛�1锛岀梾鍖虹粺璁�  2锛岀瀹ょ粺璁�  3. 鐥呯缁熻")
     private Integer statisticaltype;
 
     private String visitDeptCode;
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
index 38ba8e1..90003e1 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -126,6 +126,8 @@
 
     public List<ServiceSubtask> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq);
 
+    public List<ServiceSubtaskStatistic> getSpecialSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq);
+
     public List<ServiceSubtask> getSfStatisticsHyperlink(ServiceSubtaskCountReq serviceSubtaskCountReq);
 
     public List<String> getSfStatisticsGroupKey(ServiceSubtaskCountReq serviceSubtaskCountReq);
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index 2c91991..ab2dd12 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -141,6 +141,8 @@
 
     public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq);
 
+    public List<ServiceSubtaskStatistic> getSpecialSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq);
+
     //瀵煎嚭闅忚
     public List<ServiceSubtaskStatistic> getSfStatisticsExport(ServiceSubtaskCountReq serviceSubtaskCountReq);
 
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
index 919fb64..778fee9 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -702,6 +702,7 @@
                 //璇存槑璇ユ偅鑰呮槸琚繃婊ょ殑锛屼笉鐢ㄥ啀鎵ц浜�
                 serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                 serviceSubtask.setCreateTime(new Date());
+                serviceSubtask.setSendstate(4L);
                 i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
             } else {
                 if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
@@ -848,6 +849,7 @@
                 //璇存槑璇ユ偅鑰呮槸琚繃婊ょ殑锛屼笉鐢ㄥ啀鎵ц浜�
                 serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                 serviceSubtask.setCreateTime(new Date());
+                serviceSubtask.setSendstate(4L);
                 i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
             } else {
                 if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
@@ -1204,7 +1206,7 @@
                 e.printStackTrace();
                 log.error("浜哄憳鎵嬫湳澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                 opItem.setOpercheckFlag("2");
-                opItem.setLongTaskReason("浜哄憳鎵嬫湳澶勭悊寮傚父锛�" + e.getMessage());
+                opItem.setLongTaskReason("浜哄憳鎵嬫湳澶勭悊寮傚父");
                 patMedOperationItemMapper.updatePatMedOperationItem(opItem);
             }
         }
@@ -1295,7 +1297,7 @@
                 e.printStackTrace();
                 log.error("浜哄憳鐤剧梾澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                 pmiJB.setDiagcheckFlag("2");
-                pmiJB.setLongTaskReason("浜哄憳鐤剧梾澶勭悊寮傚父锛�" + e.getMessage());
+                pmiJB.setLongTaskReason("浜哄憳鐤剧梾澶勭悊寮傚父");
                 patMedInhospMapper.updatePatMedInhosp(pmiJB);
             }
         }
@@ -1364,7 +1366,7 @@
                 e.printStackTrace();
                 log.error("浜哄憳鐥呭尯澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                 pmiBQ1.setWardcheckFlag("2");
-                pmiBQ1.setLongTaskReason("浜哄憳鐥呭尯澶勭悊寮傚父锛�" + e.getMessage());
+                pmiBQ1.setLongTaskReason("浜哄憳鐥呭尯澶勭悊寮傚父");
                 patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
             }
         }
@@ -1424,7 +1426,7 @@
                 e.printStackTrace();
                 log.error("浜哄憳绉戝澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                 patMedInhosp1.setDeptcheckFlag("2");
-                patMedInhosp1.setLongTaskReason("浜哄憳绉戝澶勭悊寮傚父锛�" + e.getMessage());
+                patMedInhosp1.setLongTaskReason("浜哄憳绉戝澶勭悊寮傚父");
                 patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
             }
         }
@@ -1629,7 +1631,7 @@
                 e.printStackTrace();
                 log.error("銆愬熀浜庤鍒欍�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
                 patMedInhosp1.setDeptcheckFlag("2");
-                patMedInhosp1.setLongTaskReason("鍩轰簬瑙勫垯澶勭悊寮傚父锛�" + e.getMessage());
+                patMedInhosp1.setLongTaskReason("鍩轰簬瑙勫垯澶勭悊寮傚父");
                 patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
             }
         }
@@ -1669,7 +1671,7 @@
             e.printStackTrace();
             log.error("銆愮瀹や换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
             patMedInhosp1.setDeptcheckFlag("2");
-            patMedInhosp1.setLongTaskReason("绉戝浠诲姟澶勭悊寮傚父锛�" + e.getMessage());
+            patMedInhosp1.setLongTaskReason("绉戝浠诲姟澶勭悊寮傚父");
             patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
         }
         return generatedCount;
@@ -1717,7 +1719,7 @@
             e.printStackTrace();
             log.error("銆愮梾鍖轰换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
             patMedInhosp1.setWardcheckFlag("2");
-            patMedInhosp1.setLongTaskReason("鐥呭尯浠诲姟澶勭悊寮傚父锛�" + e.getMessage());
+            patMedInhosp1.setLongTaskReason("鐥呭尯浠诲姟澶勭悊寮傚父");
             patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
         }
         return generatedCount;
@@ -1783,7 +1785,7 @@
             e.printStackTrace();
             log.error("銆愮柧鐥呬换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
             patMedInhosp1.setDiagcheckFlag("2");
-            patMedInhosp1.setLongTaskReason("鐤剧梾浠诲姟澶勭悊寮傚父锛�" + e.getMessage());
+            patMedInhosp1.setLongTaskReason("鐤剧梾浠诲姟澶勭悊寮傚父");
             patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
         }
         return generatedCount;
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 c6f675e..1f66b89 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -329,18 +329,41 @@
             }
 
             //鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
-            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(serviceSubtask1.getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
-            List<Map<String, Object>> resultList = serviceSubtaskPreachformList.stream().map(item -> {
-                Map<String, Object> map = new HashMap<>();
-                map.put("sort", item.getSort());
-                map.put("preachform", item.getPreachform());
-                map.put("compensateTime", item.getCompensateTime());
-                return map;
-            }).collect(Collectors.toList());
-            serviceTaskVO.setPreachformList(resultList);
+//            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(serviceSubtask1.getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
+//            List<Map<String, Object>> resultList = serviceSubtaskPreachformList.stream().map(item -> {
+//                Map<String, Object> map = new HashMap<>();
+//                map.put("sort", item.getSort());
+//                map.put("preachform", item.getPreachform());
+//                map.put("compensateTime", item.getCompensateTime());
+//                return map;
+//            }).collect(Collectors.toList());
+//            serviceTaskVO.setPreachformList(resultList);
 
 //            String result = resultList.stream().map(mapList1 -> mapList1.get("preachform")).map(String::valueOf).collect(Collectors.joining(","));
 //            serviceTaskVO.setPreachform(result);
+        }
+
+        if(StringUtils.isNotEmpty(serviceTaskVO.getPreachformDesc())){
+            //鐩存帴閫氳繃PreachformDesc鐢熸垚List杩斿洖
+            try {
+                List<Map<String, Object>> mapList = objectMapper.readValue(serviceTaskVO.getPreachformDesc(), List.class);
+                serviceTaskVO.setPreachformList(mapList);
+            }catch (Exception e) {
+            }
+        }else {
+            if(CollectionUtils.isNotEmpty(list)){
+                //鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
+                List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream()
+                        .filter((item -> item.getSubid().equals(list.get(0).getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
+                List<Map<String, Object>> resultList = serviceSubtaskPreachformList.stream().map(item -> {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("sort", item.getSort());
+                    map.put("preachform", item.getPreachform());
+                    map.put("compensateTime", item.getCompensateTime());
+                    return map;
+                }).collect(Collectors.toList());
+                serviceTaskVO.setPreachformList(resultList);
+            }
         }
         serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
         return serviceTaskVO;
@@ -493,6 +516,7 @@
         if (patMedInhospList.size() > 0) {
             serviceSubtask1.setIsVisitAgain(2);
             serviceSubtask1.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";鎮h�呭啀鍏ラ櫌浜�" : "鎮h�呭啀鍏ラ櫌浜�");
+            serviceSubtask1.setSendstate(4L);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
             return "鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜�";
         } else if (serviceSubtask1.getSendstate() == 4L) {
@@ -2521,6 +2545,29 @@
     }
 
     /**
+     * 鑾峰彇涓撶梾闅忚缁熻姣斾緥
+     *
+     * @param serviceSubtaskCountReq
+     * @return
+     */
+    @Override
+    @Cacheable(value = "specialSfStatistics", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
+    public List<ServiceSubtaskStatistic> getSpecialSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        log.info("getSpecialSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
+        String groupKey = "drcode";
+        if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
+            groupKey = "drcode";
+        } else {
+            groupKey = "task_name";
+        }
+        List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
+        serviceSubtaskCountReq.setGroupKey(groupKey);
+        serviceSubtaskStatistics = serviceSubtaskMapper.getSpecialSfStatistics(serviceSubtaskCountReq);
+
+        return serviceSubtaskStatistics;
+    }
+
+    /**
      * 闅忚缁熻-鍙婃椂鐜囩粺璁�
      *
      * @param serviceSubtaskCountReq
@@ -2996,7 +3043,6 @@
         }
         return serviceSubtaskStatistic;
     }
-
     /**
      * 棣栨闅忚缁熻
      *
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 0ea8666..effc758 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -121,6 +121,25 @@
         <result property="options" column="options"/>
     </resultMap>
 
+    <resultMap type="com.smartor.domain.ServiceSubtaskStatistic" id="ServiceSubtaskStatisticResult">
+        <result property="dischargeCount" column="discharge_count"/>
+        <result property="nonFollowUp" column="non_follow_up"/>
+        <result property="filterCount" column="filter_count"/>
+        <result property="followUpNeeded" column="follow_up_needed"/>
+        <result property="needFollowUp" column="need_follow_up"/>
+        <result property="pendingFollowUp" column="pending_follow_up"/>
+        <result property="followUpFail" column="follow_up_fail"/>
+        <result property="manual" column="manual"/>
+        <result property="voice" column="voice"/>
+        <result property="sms" column="sms"/>
+        <result property="weChat" column="we_chat"/>
+        <result property="taskSituation1" column="task_situation1"/>
+        <result property="taskSituation2" column="task_situation2"/>
+        <result property="taskSituation3" column="task_situation3"/>
+        <result property="taskSituation4" column="task_situation4"/>
+        <result property="taskSituation5" column="task_situation5"/>
+        <result property="taskSituation6" column="task_situation6"/>
+    </resultMap>
     <sql id="selectServiceSubtaskVo">
         select id,
                hosp_type,
@@ -1485,6 +1504,92 @@
             </foreach>
         </if>
     </select>
+
+    <select id="getSpecialSfStatistics" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
+            resultMap="ServiceSubtaskStatisticResult">
+        select
+        COUNT(1) AS discharge_count,
+        SUM(CASE WHEN b.sendstate = 4 THEN 1 ELSE 0 END) AS non_follow_up,
+        SUM(CASE WHEN b.sendstate = 4 and b.task_situation = 6 THEN 1 ELSE 0 END) AS filter_count,
+        SUM(CASE WHEN b.sendstate != 4 THEN 1 ELSE 0 END) AS follow_up_needed,
+        SUM(CASE WHEN b.sendstate != 4 THEN 1 ELSE 0 END) AS need_follow_up,
+        SUM(CASE WHEN b.sendstate = 2 THEN 1 ELSE 0 END) AS pending_follow_up,
+        SUM(CASE WHEN b.sendstate = 5 or b.sendstate = 7 THEN 1 ELSE 0 END) AS follow_up_fail,
+        SUM(CASE WHEN b.current_preachform = '1' THEN 1 ELSE 0 END) AS manual,
+        SUM(CASE WHEN b.current_preachform = '3' THEN 1 ELSE 0 END) AS voice,
+        SUM(CASE WHEN b.current_preachform = '4' THEN 1 ELSE 0 END) AS sms,
+        SUM(CASE WHEN b.current_preachform = '5' THEN 1 ELSE 0 END) AS we_chat,
+        SUM(CASE WHEN b.task_situation = 1 THEN 1 ELSE 0 END) AS task_situation1,
+        SUM(CASE WHEN b.task_situation = 2 THEN 1 ELSE 0 END) AS task_situation2,
+        SUM(CASE WHEN b.task_situation = 3 THEN 1 ELSE 0 END) AS task_situation3,
+        SUM(CASE WHEN b.task_situation = 4 THEN 1 ELSE 0 END) AS task_situation4,
+        SUM(CASE WHEN b.task_situation = 5 THEN 1 ELSE 0 END) AS task_situation5,
+        SUM(CASE WHEN b.task_situation = 7 THEN 1 ELSE 0 END) AS task_situation7
+        from service_task a
+        JOIN service_subtask b on a.taskid = b.taskid
+        where 1=1
+        and a.del_flag = '0'
+        and b.del_flag = '0'
+        and a.appltype = '3'
+        <if test="orgid != null and orgid != ''">
+            and a.orgid = #{orgid}
+        </if>
+        <if test="taskId != null">
+            and a.task_id = #{taskId}
+        </if>
+        <if test="taskName != null and taskName != ''">
+            and a.task_name like concat('%', #{taskName}, '%')
+        </if>
+        <if test="diagType != null and diagType != ''">
+            and a.diag_type = #{diagType}
+        </if>
+        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+            AND b.leavehospitaldistrictcode IN
+            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
+                     close=")">
+                #{leavehospitaldistrictcode}
+            </foreach>
+        </if>
+        <if test="deptcodes != null and deptcodes.size() > 0">
+            AND b.deptcode IN
+            <foreach collection="deptcodes" item="deptcode" open="(" separator=","
+                     close=")">
+                #{deptcode}
+            </foreach>
+        </if>
+        <if test="serviceType != null and serviceType.size() > 0">
+            AND b.service_type IN
+            <foreach collection="serviceType" item="serviceType" open="(" separator=","
+                     close=")">
+                #{serviceType}
+            </foreach>
+        </if>
+        <if test="startTime != null and endTime!=null">
+            AND b.visit_time >= DATE(#{startTime})
+            AND b.visit_time &lt; DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY)
+        </if>
+        <if test="visitDeptCode != null">and b.visit_dept_code = #{visitDeptCode}</if>
+        <if test="visitDeptName != null">and b.visit_dept_name = #{visitDeptName}</if>
+        <if test="isabnormal != null">and b.isabnormal = #{isabnormal}</if>
+        <if test="continueFlag != null ">and b.continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and b.continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
+        <if test="continueCount != null ">and b.continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and b.continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP}</if>
+        <!-- 鐩墠鍙粺璁¤闊冲拰闂嵎 -->
+        <if test="type != null">
+            and b.type = #{type}
+        </if>
+        <if test="visitCount != null and visitCount == 1">
+            AND b.visit_count = 1
+        </if>
+        <if test="visitCount != null and visitCount > 1">
+            AND b.visit_count > 1
+        </if>
+        <if test="groupKey != null and groupKey != ''">
+            GROUP BY ${groupKey}
+        </if>
+    </select>
+
     <select id="getSfStatisticsGroupKey" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
             resultType="String">
         select
@@ -2111,8 +2216,10 @@
         SELECT deptname,
         count(1) AS rc
         FROM service_subtask
-        WHERE DATE_FORMAT(finishtime, '%Y-%m-%d') >= #{startDate}
-        AND DATE_FORMAT(finishtime, '%Y-%m-%d') &lt;= #{endDate}
+        WHERE DATE_FORMAT(visit_time, '%Y-%m-%d') >= #{startDate}
+        AND DATE_FORMAT(visit_time, '%Y-%m-%d') &lt;= #{endDate}
+        AND service_type IN (2, 13)
+        AND del_flag = '0'
         <if test="orgid != null">
             AND orgid = #{orgid}
         </if>
@@ -2154,6 +2261,7 @@
         FROM service_subtask
         WHERE
         del_flag = '0'
+        AND service_type IN (2, 13)
         <if test="startDate != null and endDate != null">
             AND visit_time >= #{startDate}
             AND visit_time &lt;= DATE_ADD(#{endDate}, INTERVAL 1 DAY)
@@ -2215,7 +2323,7 @@
             AND endtime >= #{startDate}
             AND endtime &lt;= DATE_ADD(#{endDate}, INTERVAL 1 DAY)
         </if>
-
+        AND service_type IN (2, 13)
         AND inhospstate=1
         <if test="orgid != null">
             AND orgid = #{orgid}

--
Gitblit v1.9.3