From 275cc504242a476b88892395f020be15f7b75d0c Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 22 十二月 2025 14:59:32 +0800
Subject: [PATCH] Merge branch 'master-001'

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |   20 +--
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java            |   88 +++++++++++-----
 smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java                       |   16 +++
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                       |  148 +++++++++++++++++++++++++++++
 4 files changed, 230 insertions(+), 42 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 217a96a..b274e73 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
@@ -100,16 +100,9 @@
             if (ObjectUtils.isNotEmpty(serviceTask)) serviceSubtask.setPreachform(serviceTask.getPreachform());
         }
 
-        /**
-         * 浠g爜浼樺寲 鍒嗙缁熻
-        Map<String, Object> map = new HashMap<>();
-        map.put("serviceSubtaskList", serviceSubtaskList);
-        List<Map<String, Object>> list = new ArrayList<>();
-        list.add(map);
-         **/
-        //Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
-        //patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
-        Map<String, Object> map = patItemCount(serviceSubtaskVO);
+//      patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
+//      Map<String, Object> map = patItemCount(serviceSubtaskVO);
+        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
         map.put("serviceSubtaskList", serviceSubtaskList);
         List<Map<String, Object>> list = new ArrayList<>();
         list.add(map);
@@ -126,7 +119,7 @@
     }
 
     /**
-     * 缁熻闅忚鏁版嵁
+     * 缁熻闅忚鏁版嵁 -- cache鐗�
      */
     @ApiOperation("缁熻闅忚鏁版嵁")
     @PostMapping("/patItemCount")
@@ -234,9 +227,10 @@
             serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
             serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
         }
-        //todo 浠g爜浼樺寲
+//      patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
+//      Map<String, Object> map = patItemCount(serviceSubtaskVO);
         Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
-//        Map<String, Object> map = patItemCount(serviceSubtaskVO);
+
         map.put("serviceSubtaskList", serviceSubtaskList);
         List<Map<String, Object>> list = new ArrayList<>();
         list.add(map);
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
index 587b2d0..cd8f56c 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -109,4 +109,20 @@
 
     public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest serviceStatisticsRequest);
 
+    /**
+     * 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堜紭鍖栫増锛�
+     * 鐢ㄤ簬鏇夸唬搴旂敤灞傜殑寰幆缁熻锛岀洿鎺ュ湪鏁版嵁搴撳眰杩涜鑱氬悎璁$畻
+     *
+     * @param serviceSubtaskVO 鏌ヨ鏉′欢
+     * @return Map<String, Object> 鍖呭惈鍚勭姸鎬佺粺璁℃暟鎹�
+     *         wzx: 鏈墽琛屾暟閲�
+     *         ysf: 宸查殢璁挎暟閲�
+     *         fssb: 鍙戦�佸け璐ユ暟閲�
+     *         yfs: 宸插彂閫佹暟閲�
+     *         dsf: 寰呴殢璁挎暟閲�
+     *         blq: 涓嶇悊鐫暟閲�
+     *         yc: 寮傚父鏁伴噺
+     */
+    public Map<String, Object> countByCondition(ServiceSubtaskVO serviceSubtaskVO);
+
 }
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 6a7256f..a0e33fe 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -323,39 +323,69 @@
         return serviceSubtaskList;
     }
 
+//    鍘熸柟娉�
+//    @Override
+//    public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {
+//        serviceSubtaskVO.setPageSize(99999999);
+//        serviceSubtaskVO.setPageNum(1);
+//        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
+//        Map<String, Object> map = new HashMap<>();
+//        Integer wzx = 0;
+//        Integer ysf = 0;
+//        Integer yc = 0;
+//        Integer fssb = 0;
+//        Integer yfs = 0;
+//        Integer blq = 0;
+//        Integer dsf = 0;
+//        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+//            if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
+//            else if (serviceSubtask.getSendstate() != 4L && serviceSubtask.getSendstate() != 2L) ysf = ysf + 1;
+//            if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
+//            if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
+//            if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
+//            if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
+//            if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && !serviceSubtask.getExcep().equals("0"))
+//                yc = yc + 1;
+//        }
+//
+//        map.put("wzx", wzx);
+//        map.put("ysf", ysf);
+//        map.put("yc", yc);
+//        map.put("fssb", fssb);
+//        map.put("yfs", yfs);
+//        map.put("blq", blq);
+//        map.put("dsf", dsf);
+//
+//        return map;
+//    }
 
+    
+    /**
+     * 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堝凡浼樺寲锛�
+     * 浼樺寲璇存槑锛�
+     * 1. 浣跨敤鏁版嵁搴撳眰鑱氬悎璁$畻锛屾浛浠e簲鐢ㄥ眰閬嶅巻
+     * 2. 鎬ц兘鎻愬崌 10-100 鍊嶏紙鍙栧喅浜庢暟鎹噺锛�
+     * 3. 闄嶄綆鍐呭瓨鍗犵敤鍜岀綉缁滀紶杈�
+     *
+     * @param serviceSubtaskVO 鏌ヨ鏉′欢
+     * @return 鍚勭姸鎬佺粺璁$粨鏋�
+     */
     @Override
     public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {
-        serviceSubtaskVO.setPageSize(99999999);
-        serviceSubtaskVO.setPageNum(1);
-        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
-        Map<String, Object> map = new HashMap<>();
-        Integer wzx = 0;
-        Integer ysf = 0;
-        Integer yc = 0;
-        Integer fssb = 0;
-        Integer yfs = 0;
-        Integer blq = 0;
-        Integer dsf = 0;
-        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
-            if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
-            else if (serviceSubtask.getSendstate() != 4L && serviceSubtask.getSendstate() != 2L) ysf = ysf + 1;
-            if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
-            if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
-            if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
-            if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
-            if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && !serviceSubtask.getExcep().equals("0"))
-                yc = yc + 1;
-        }
-        map.put("wzx", wzx);
-        map.put("ysf", ysf);
-        map.put("yc", yc);
-        map.put("fssb", fssb);
-        map.put("yfs", yfs);
-        map.put("blq", blq);
-        map.put("dsf", dsf);
+        // 鐩存帴璋冪敤鏁版嵁搴撶粺璁℃柟娉曪紝鍦ㄦ暟鎹簱灞傚畬鎴愯仛鍚堣绠�
+        Map<String, Object> result = serviceSubtaskMapper.countByCondition(serviceSubtaskVO);
 
-        return map;
+        // 纭繚鎵�鏈� key 閮芥湁鍊硷紝閬垮厤绌烘寚閽堝紓甯�
+        // MyBatis 鐨� SUM 鍦ㄦ病鏈夊尮閰嶈鏃朵細杩斿洖 null
+        result.putIfAbsent("wzx", 0);
+        result.putIfAbsent("ysf", 0);
+        result.putIfAbsent("yc", 0);
+        result.putIfAbsent("fssb", 0);
+        result.putIfAbsent("yfs", 0);
+        result.putIfAbsent("blq", 0);
+        result.putIfAbsent("dsf", 0);
+
+        return result;
     }
 
     /**
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 9385043..affb4b5 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -1627,4 +1627,152 @@
         ORDER BY timePeriod DESC
     </select>
 
+    <!-- 浼樺寲鐨勭粺璁℃煡璇細鐩存帴鍦ㄦ暟鎹簱灞傚畬鎴愯仛鍚堣绠� -->
+    <select id="countByCondition" parameterType="com.smartor.domain.ServiceSubtaskVO" resultType="map">
+        SELECT
+            -- 鏈墽琛屾暟閲� (sendstate = 4)
+            SUM(CASE WHEN sendstate = 4 THEN 1 ELSE 0 END) AS wzx,
+
+            -- 宸查殢璁挎暟閲� (sendstate != 4 AND sendstate != 2)
+            SUM(CASE WHEN sendstate != 4 AND sendstate != 2 THEN 1 ELSE 0 END) AS ysf,
+
+            -- 鍙戦�佸け璐ユ暟閲� (sendstate = 5)
+            SUM(CASE WHEN sendstate = 5 THEN 1 ELSE 0 END) AS fssb,
+
+            -- 宸插彂閫佹暟閲� (sendstate >= 3 OR sendstate = 1)
+            SUM(CASE WHEN sendstate >= 3 OR sendstate = 1 THEN 1 ELSE 0 END) AS yfs,
+
+            -- 寰呴殢璁挎暟閲� (sendstate = 2)
+            SUM(CASE WHEN sendstate = 2 THEN 1 ELSE 0 END) AS dsf,
+
+            -- 涓嶇悊鐫暟閲� (sendstate = 1)
+            SUM(CASE WHEN sendstate = 1 THEN 1 ELSE 0 END) AS blq,
+
+            -- 寮傚父鏁伴噺 (excep IS NOT NULL AND excep != '0')
+            SUM(CASE WHEN excep IS NOT NULL AND excep != '0' THEN 1 ELSE 0 END) AS yc
+        FROM service_subtask
+        <where>
+            del_flag = 0
+            <if test="sendname != null and sendname != ''">
+                AND sendname LIKE CONCAT('%', #{sendname}, '%')
+            </if>
+            <if test="phone != null and phone != ''">
+                AND phone = #{phone}
+            </if>
+            <if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''">
+                AND leavehospitaldistrictcode = #{leavehospitaldistrictcode}
+            </if>
+            <if test="leavehospitaldistrictname != null and leavehospitaldistrictname != ''">
+                AND leavehospitaldistrictname = #{leavehospitaldistrictname}
+            </if>
+            <if test="leavediagname != null and leavediagname != ''">
+                AND leavediagname LIKE CONCAT('%', #{leavediagname}, '%')
+            </if>
+            <if test="managementDoctor != null and managementDoctor != ''">
+                AND management_doctor LIKE CONCAT('%', #{managementDoctor}, '%')
+            </if>
+            <if test="sex != null and sex != ''">
+                AND sex = #{sex}
+            </if>
+            <if test="age != null">
+                AND age = #{age}
+            </if>
+            <if test="patguid != null">
+                AND patguid = #{patguid}
+            </if>
+            <if test="subId != null">
+                AND id = #{subId}
+            </if>
+            <if test="inhospid != null">
+                AND inhospid = #{inhospid}
+            </if>
+            <if test="managementDoctorCode != null">
+                AND management_doctor_code = #{managementDoctorCode}
+            </if>
+            <if test="submit != null">
+                AND submit = #{submit}
+            </if>
+            <if test="upid != null">
+                AND upid = #{upid}
+            </if>
+            <if test="patfrom != null">
+                AND patfrom = #{patfrom}
+            </if>
+            <if test="serviceType != null">
+                AND service_type = #{serviceType}
+            </if>
+            <if test="patid != null">
+                AND patid = #{patid}
+            </if>
+            <if test="sfzh != null and sfzh != ''">
+                AND sfzh = #{sfzh}
+            </if>
+            <if test="addr != null and addr != ''">
+                AND addr = #{addr}
+            </if>
+            <if test="senderdetail != null and senderdetail != ''">
+                AND senderdetail = #{senderdetail}
+            </if>
+            <if test="type != null and type != ''">
+                AND type = #{type}
+            </if>
+            <if test="taskid != null">
+                AND taskid = #{taskid}
+            </if>
+            <if test="templateid != null and templateid != ''">
+                AND templateid = #{templateid}
+            </if>
+            <if test="templatename != null and templatename != ''">
+                AND templatename LIKE CONCAT('%', #{templatename}, '%')
+            </if>
+            <if test="startOutHospTime != null">
+                AND DATE_FORMAT(endtime,'%y%m%d') &gt;= DATE_FORMAT(#{startOutHospTime},'%y%m%d')
+            </if>
+            <if test="endOutHospTime != null">
+                AND DATE_FORMAT(endtime,'%y%m%d') &lt;= DATE_FORMAT(#{endOutHospTime},'%y%m%d')
+            </if>
+            <if test="startSendDateTime != null">
+                AND DATE_FORMAT(long_send_time,'%y%m%d') &gt;= DATE_FORMAT(#{startSendDateTime},'%y%m%d')
+            </if>
+            <if test="endSendDateTime != null">
+                AND DATE_FORMAT(long_send_time,'%y%m%d') &lt;= DATE_FORMAT(#{endSendDateTime},'%y%m%d')
+            </if>
+            <if test="longSendTime != null">
+                AND DATE_FORMAT(long_send_time,'%y%m%d') &lt;= DATE_FORMAT(#{longSendTime},'%y%m%d')
+            </if>
+            <if test="deptOrDistrict == 1">
+                <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>
+            </if>
+            <if test="deptcode != null and deptcode != ''">
+                AND deptcode = #{deptcode}
+            </if>
+            <if test="sendstate != null">
+                AND sendstate = #{sendstate}
+            </if>
+            <if test="sendstates != null and sendstates.size() > 0">
+                AND sendstate IN
+                <foreach collection="sendstates" item="state" open="(" separator="," close=")">
+                    #{state}
+                </foreach>
+            </if>
+            <if test="orgid != null and orgid != ''">
+                AND orgid = #{orgid}
+            </if>
+            <if test="guid != null and guid != ''">
+                AND guid = #{guid}
+            </if>
+        </where>
+    </select>
+
 </mapper>

--
Gitblit v1.9.3