From 27700927ebef0dbe669433ec2cdd3170647c226a Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 10 四月 2026 18:05:40 +0800
Subject: [PATCH] Merge branch 'master' into master-手术随访

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |  108 ++++++++++++++++++++++++++++++-----------------------
 1 files changed, 61 insertions(+), 47 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 f0d78ce..67406f3 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
@@ -96,12 +96,6 @@
     @ApiOperation("鏌ヨ鎮h�呴殢璁夸俊鎭�")
     @PostMapping("/patItem")
     public Map<String, Object> patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
-//        if (serviceSubtaskVO.getLeavehospitaldistrictcodes() != null && serviceSubtaskVO.getLeavehospitaldistrictcodes().size() > 10) {
-//            throw new BaseException("鐥呭尯鏌ヨ鏁伴噺涓嶈兘瓒呰繃10涓�");
-//        }
-//        if (serviceSubtaskVO.getLeaveldeptcodes() != null && serviceSubtaskVO.getLeaveldeptcodes().size() > 10) {
-//            throw new BaseException("绉戝鏌ヨ鏁伴噺涓嶈兘瓒呰繃10涓�");
-//        }
 
         serviceSubtaskVO.setPageNum(PageUtils.getOffset(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()));
         List<ServiceSubtaskRes> serviceSubtaskList = null;
@@ -114,29 +108,42 @@
             serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
             serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskEntity);
         }
-        for (ServiceSubtaskRes serviceSubtask : serviceSubtaskList) {
-            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-            serviceSubtaskRecord.setOrgid(serviceSubtask.getOrgid());
-            if (ObjectUtils.isNotEmpty((serviceSubtask.getTaskid())))
-                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-            serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
 
-            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-            if (ObjectUtils.isNotEmpty(serviceTask)) serviceSubtask.setPreachform(serviceTask.getPreachform());
+        // 鎵归噺鏌� subtask_record锛�1娆QL鏇夸唬寰幆涓璑娆″崟鐙煡
+        List<Long> subtaskIds = serviceSubtaskList.stream().map(ServiceSubtaskRes::getId).filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
+        Map<Long, List<ServiceSubtaskRecord>> recordMap = serviceSubtaskRecordService.selectRecordMapBySubtaskIds(subtaskIds);
+
+        for (ServiceSubtaskRes serviceSubtask : serviceSubtaskList) {
+            serviceSubtask.setServiceSubtaskRecordList(recordMap.getOrDefault(serviceSubtask.getId(), new ArrayList<>()));
         }
 
-//      patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
-        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
+//      patItemCount 璧癛edis缂撳瓨鐗堬紝閬垮厤姣忔鍏ㄨ〃鑱氬悎鎵弿
+        Map<String, Object> map = getPatItemCountWithCache(serviceSubtaskEntity);
         map.put("serviceSubtaskList", serviceSubtaskList);
         List<Map<String, Object>> list = new ArrayList<>();
         list.add(map);
 
-        serviceSubtaskEntity.setPageNum(null);
-        serviceSubtaskEntity.setPageSize(null);
-        List<ServiceSubtaskRes> serviceSubtasks = serviceSubtaskService.patItem(serviceSubtaskEntity);
+        // 鐩存帴浠庡凡鏈夎仛鍚堢粨鏋滄帹绠梩otal锛岄伩鍏嶅幓鎺夊垎椤靛悗鍐嶅叏閲忔煡涓�閬嶅ぇ琛�
+        long total = 0L;
+        try {
+            long wzx = map.get("wzx") != null ? ((Number) map.get("wzx")).longValue() : 0L;
+            long ysf = map.get("ysf") != null ? ((Number) map.get("ysf")).longValue() : 0L;
+            long dsf = map.get("dsf") != null ? ((Number) map.get("dsf")).longValue() : 0L;
+            long yc = map.get("yc") != null ? ((Number) map.get("yc")).longValue() : 0L;
+            long jg = map.get("jg") != null ? ((Number) map.get("jg")).longValue() : 0L;
+            long fssb = map.get("fssb") != null ? ((Number) map.get("fssb")).longValue() : 0L;
+            long yfs = map.get("yfs") != null ? ((Number) map.get("yfs")).longValue() : 0L;
+            long blq = map.get("blq") != null ? ((Number) map.get("blq")).longValue() : 0L;
+            total = wzx + ysf + dsf + yc + jg + fssb + yfs + blq;
+        } catch (Exception e) {
+            // 鍏滃簳锛氬叏閲廲ount
+            serviceSubtaskEntity.setPageNum(null);
+            serviceSubtaskEntity.setPageSize(null);
+            List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskEntity);
+            total = CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L;
+        }
 
-        return getDataTable3(CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L, list);
+        return getDataTable3(total, list);
     }
 
     /**
@@ -151,42 +158,48 @@
         ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
         serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
 
-        // 閫氳繃redis璁板綍缁撴灉
-        Map<String, Object> redisMap = new HashMap<>();
         LoginUser loginUser = getLoginUser();
-        SysUser user = null;
         Long userId = null;
-        if (ObjectUtils.isNotEmpty(loginUser)) {
-            user = loginUser.getUser();
-            if (ObjectUtils.isNotEmpty(user)) {
-                userId = user.getUserId();
-            }
+        if (ObjectUtils.isNotEmpty(loginUser) && ObjectUtils.isNotEmpty(loginUser.getUser())) {
+            userId = loginUser.getUser().getUserId();
         }
         if (ObjectUtils.isNotEmpty(userId)) {
-            redisMap = redisCache.getCacheObject(userId + "patItemCount");
-            //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
+            map = getPatItemCountWithCache(serviceSubtaskEntity);
+        }
+
+        map.put("code", HttpStatus.SUCCESS);
+        return map;
+    }
+
+    /**
+     * 甯edis缂撳瓨鐨勭粺璁℃煡璇紝渚沺atItem鍜宲atItemCount鍏辩敤锛屾潯浠朵笉鍙樻椂鐩存帴鍛戒腑缂撳瓨
+     */
+    private Map<String, Object> getPatItemCountWithCache(ServiceSubtaskEntity serviceSubtaskEntity) {
+        Map<String, Object> map = new HashMap<>();
+        LoginUser loginUser = getLoginUser();
+        Long userId = null;
+        if (ObjectUtils.isNotEmpty(loginUser) && ObjectUtils.isNotEmpty(loginUser.getUser())) {
+            userId = loginUser.getUser().getUserId();
+        }
+        if (ObjectUtils.isNotEmpty(userId)) {
+            Map<String, Object> redisMap = redisCache.getCacheObject(userId + "patItemCount");
             Boolean redisFlag = false;
-            ServiceSubtaskEntity oldCondition = null;
             if (MapUtils.isNotEmpty(redisMap)) {
-                oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
-                // 姣旇緝鏌ヨ鏉′欢鏄惁涓�鑷�
+                ServiceSubtaskEntity oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
                 if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
-                    // 鏉′欢涓�鑷达紝浣跨敤缂撳瓨
                     redisFlag = true;
                     map = redisMap;
                     redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
                 }
             }
-
-            // 濡傛灉娌℃湁缂撳瓨鎴栬�呮潯浠朵笉涓�鑷达紝閲嶆柊鏌ヨ
             if (!redisFlag) {
                 map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
                 map.put("searchCondition", serviceSubtaskEntity);
                 redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
             }
+        } else {
+            map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
         }
-
-        map.put("code", HttpStatus.SUCCESS);
         return map;
     }
 
@@ -659,11 +672,12 @@
 
     /**
      * 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堜紭鍖栫増锛�
+     *
      * @return Map<String, Object> 鍖呭惈鍚勭姸鎬佺粺璁℃暟鎹�
-     *         pendingVisitCount: 褰撳墠鐧诲綍浜烘埅姝粖鏃ュ緟闅忚鎬婚噺
-     *         failedVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″け璐ユ�婚噺
-     *         abnormalVisitVount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″紓甯告�婚噺
-     *         allVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔℃�婚噺
+     * pendingVisitCount: 褰撳墠鐧诲綍浜烘埅姝粖鏃ュ緟闅忚鎬婚噺
+     * failedVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″け璐ユ�婚噺
+     * abnormalVisitVount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″紓甯告�婚噺
+     * allVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔℃�婚噺
      */
     @ApiOperation("鑾峰彇褰撳墠鐢ㄦ埛闅忚鏁伴噺缁熻")
     @PostMapping("/getCurrentUserServiceSubtaskCount")
@@ -687,12 +701,12 @@
         entity.setOrgid(sysUser.getOrgid());
         entity.setLeaveldeptcodes(deptCodes);
         entity.setLeavehospitaldistrictcodes(wardCodes);
-        if(ObjectUtils.isNotEmpty(sysUser)){
-            if(!("admin").equals(sysUser.getUserName())){
-                if(ObjectUtils.isNotEmpty(sysUserWards) && ObjectUtils.isNotEmpty(sysUserDepts)){
+        if (ObjectUtils.isNotEmpty(sysUser)) {
+            if (!("admin").equals(sysUser.getUserName())) {
+                if (ObjectUtils.isNotEmpty(sysUserWards) && ObjectUtils.isNotEmpty(sysUserDepts)) {
                     map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
                 }
-            }else {
+            } else {
                 map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
             }
         }

--
Gitblit v1.9.3