From c80135e5c3f7bfab96ba558a910a06f1e587c53c Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 07 一月 2026 16:14:04 +0800
Subject: [PATCH] 1.新增@AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid") 2.将新增orgid的拦截器关掉 3.登陆新增campusid

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |  187 +++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 166 insertions(+), 21 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 4865213..ae7b580 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
@@ -1,7 +1,10 @@
 package com.ruoyi.web.controller.smartor;
 
 import com.github.pagehelper.ISelect;
+import com.ruoyi.common.annotation.AddOrgId;
 import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -14,7 +17,11 @@
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.reflect.ReflectUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.system.service.ISysConfigService;
 import com.smartor.domain.*;
 import com.smartor.mapper.PatMedInhospMapper;
 import com.smartor.mapper.PatMedOuthospMapper;
@@ -27,9 +34,11 @@
 import lombok.extern.slf4j.Slf4j;
 import net.bytebuddy.implementation.bytecode.Throw;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -39,6 +48,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -61,14 +71,21 @@
     @Autowired
     private IServiceSubtaskRecordService serviceSubtaskRecordService;
 
+    @Autowired
+    private ISysConfigService configService;
+
     @Value("${spring.profiles.active}")
     private String active;
+
+    @Autowired
+    private RedisCache redisCache;
 
     /**
      * 鏌ヨ鎮h�呴殢璁夸俊鎭�
      */
     @ApiOperation("鏌ヨ鎮h�呴殢璁夸俊鎭�")
     //@PreAuthorize("@ss.hasPermi('system:taskcall:list')")
+//    @Cacheable(value = "patItem", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskVO.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
     @PostMapping("/patItem")
     public TableDataInfo patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
         PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
@@ -90,6 +107,9 @@
             ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
             if (ObjectUtils.isNotEmpty(serviceTask)) serviceSubtask.setPreachform(serviceTask.getPreachform());
         }
+
+//      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<>();
@@ -104,6 +124,64 @@
             }
         });
         return getDataTable2(total, list);
+    }
+
+    /**
+     * 缁熻闅忚鏁版嵁 -- cache鐗�
+     */
+    @ApiOperation("缁熻闅忚鏁版嵁")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/patItemCount")
+    public Map<String, Object> patItemCount(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
+        Map<String, Object> map = new HashMap<>();
+        // 閫氳繃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(userId)) {
+            redisMap = redisCache.getCacheObject(userId + "patItemCount");
+            //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
+            Boolean redisFlag = false;
+            ServiceSubtaskVO oldCondition = null;
+            if (MapUtils.isNotEmpty(redisMap)) {
+                oldCondition = (ServiceSubtaskVO) redisMap.get("searchCondition");
+                // 姣旇緝鏌ヨ鏉′欢鏄惁涓�鑷�
+                if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskVO)) {
+                    // 鏉′欢涓�鑷达紝浣跨敤缂撳瓨
+                    redisFlag = true;
+                    map = redisMap;
+                    redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
+                }
+            }
+
+            // 濡傛灉娌℃湁缂撳瓨鎴栬�呮潯浠朵笉涓�鑷达紝閲嶆柊鏌ヨ
+            if (!redisFlag) {
+                map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+                map.put("searchCondition", serviceSubtaskVO);
+                redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
+            }
+        }
+
+        map.put("code", HttpStatus.SUCCESS);
+        return map;
+    }
+
+    /**
+     * 姣旇緝涓や釜ServiceSubtaskVO鐨勬煡璇㈡潯浠舵槸鍚︿竴鑷�
+     * 浣跨敤鍙嶅皠姣旇緝鎵�鏈夊瓧娈碉紝鎺掗櫎鍒嗛〉鍙傛暟鍜屾棤鍏冲瓧娈�
+     */
+    private boolean isSameCondition(ServiceSubtaskVO oldCondition, ServiceSubtaskVO newCondition) {
+        // 浣跨敤ReflectUtils鐨勯�氱敤鏂规硶姣旇緝锛屾帓闄ゅ垎椤靛弬鏁扮瓑鏃犲叧瀛楁
+        return ReflectUtils.equalsAllFields(oldCondition, newCondition,
+                // 鎺掗櫎鐨勫瓧娈碉細鍒嗛〉鍙傛暟銆佸簭鍒楀寲ID銆佹椂闂存埑绛�
+                "pageNum", "pageSize", "serialVersionUID", "createBy", "createTime", "updateBy", "updateTime", "searchValue", "params");
     }
 
 
@@ -139,6 +217,7 @@
      */
     @ApiOperation("鏌ヨ鎮h�呴殢璁夸俊鎭�")
     //@PreAuthorize("@ss.hasPermi('system:taskcall:list')")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/patItemByCondition")
     public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
         List<ServiceSubtask> serviceSubtaskList = null;
@@ -152,7 +231,10 @@
             serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
             serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
         }
+//      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);
@@ -185,6 +267,7 @@
      * 闅忚鏁版嵁鏌ヨ
      */
     @Log(title = "闅忚鏁版嵁鏌ヨ", businessType = BusinessType.EXPORT)
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/querySubtaskList")
     public AjaxResult querySubtaskList(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
         PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
@@ -219,6 +302,7 @@
      * 鏍规嵁鐤剧梾妯$硦鏌ヨ
      */
     //@PreAuthorize("@ss.hasPermi('system:taskcall:query')")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping(value = "/getSubtaskByDiagname")
     public Map<String, Object> getSubtaskByDiagname(@RequestBody ServiceSubtask serviceSubtask) {
         LoginUser loginUser = getLoginUser();
@@ -243,21 +327,8 @@
     /**
      * 闅忚鍘嗗彶璁板綍瀵煎嚭
      */
-    //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
-//    @Log(title = "闅忚鍘嗗彶璁板綍瀵煎嚭", businessType = BusinessType.EXPORT)
-//    @PostMapping("/getSubtaskByDiagnameExport")
-//    public void getSubtaskByDiagnameExport(HttpServletResponse response, List<ServiceSubtaskDiagname> serviceSubtaskDiagnameList) {
-//        ExcelUtil<ServiceSubtaskDiagname> util = new ExcelUtil<ServiceSubtaskDiagname>(ServiceSubtaskDiagname.class);
-//
-//        if (active.equals("ls") || active.equals("druid")) {
-//            util.exportExcel(response, serviceSubtaskDiagnameList, LocalDate.now().getMonthValue() + "闅忚缁熻瀵煎嚭");
-//        } else {
-//            util.exportExcel(response, serviceSubtaskDiagnameList, "闅忚缁熻瀵煎嚭");
-//        }
-//    }
-
-    //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "闅忚鍘嗗彶璁板綍瀵煎嚭", businessType = BusinessType.EXPORT)
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/getSubtaskByDiagnameExport")
     public void getSubtaskByDiagnameExport(HttpServletResponse response, ServiceSubtask serviceSubtask) {
         LoginUser loginUser = getLoginUser();
@@ -265,15 +336,17 @@
         serviceSubtask.setOrgid(user.getOrgid());
         serviceSubtask.setPageNum(PageUtils.getOffset(serviceSubtask.getPageNum(), serviceSubtask.getPageSize()));
         List<ServiceSubtask> subtaskList = serviceSubtaskService.selectServiceSubtaskByDiagname(serviceSubtask);
-        ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);
+        List<ServiceSubtaskDiagname> serviceSubtaskDiagnameList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(subtaskList))
+            serviceSubtaskDiagnameList = serviceSubtaskService.convertToDiagnameList(subtaskList);
+        ExcelUtil<ServiceSubtaskDiagname> util = new ExcelUtil<ServiceSubtaskDiagname>(ServiceSubtaskDiagname.class);
 
         if (active.equals("ls") || active.equals("druid")) {
-            util.exportExcel(response, subtaskList, LocalDate.now().getMonthValue() + "闅忚缁熻瀵煎嚭");
+            util.exportExcel(response, serviceSubtaskDiagnameList, LocalDate.now().getMonthValue() + "闅忚鍘嗗彶璁板綍瀵煎嚭");
         } else {
-            util.exportExcel(response, subtaskList, "闅忚缁熻瀵煎嚭");
+            util.exportExcel(response, serviceSubtaskDiagnameList, "闅忚鍘嗗彶璁板綍瀵煎嚭");
         }
     }
-
 
     /**
      * 鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟
@@ -281,6 +354,7 @@
     @ApiOperation("鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟")
     //@PreAuthorize("@ss.hasPermi('system:task:add')")
     @Log(title = "鍗曚竴浠诲姟锛堥殢璁匡級", businessType = BusinessType.INSERT)
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/insertOrUpdateTask")
     public AjaxResult insertOrUpdateHeTask(@RequestBody ServiceTaskVO ivrTaskVO) {
         log.info("insertOrUpdateHeTask鐨勫叆鍙備负锛歿}", ivrTaskVO);
@@ -293,6 +367,7 @@
     }
 
     @ApiOperation("淇敼瀛愪换鍔�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/update")
     public AjaxResult update(@RequestBody ServiceSubtask serviceSubtask) {
         serviceSubtask.setUpdateBy(getLoginUser().getUser().getNickName());
@@ -300,6 +375,7 @@
     }
 
     @ApiOperation("鏂板瀛愪换鍔�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/addSubTask")
     public AjaxResult addSubTask(@RequestBody ServiceSubtask serviceSubtask) {
         SysUser user = getLoginUser().getUser();
@@ -308,6 +384,7 @@
     }
 
     @ApiOperation("鎮h�呭啀娆¢殢璁�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/addSubTaskAgain")
     public AjaxResult addSubTaskAgain(@RequestBody ServiceSubtask serviceSubtask) {
         SysUser user = getLoginUser().getUser();
@@ -319,6 +396,7 @@
      * 鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅
      */
     @ApiOperation("鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/queryTaskByCondition")
     public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) {
         //鏍规嵁鍏ュ弬鏌ヨ淇℃伅
@@ -392,6 +470,7 @@
      * 鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺
      */
     @ApiOperation("鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/getSfFzInfoEveryMonth")
     public TableDataInfo getSfFzInfoEveryMonth(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
         return getDataTable(serviceSubtaskService.getSfFzInfoEveryMonth(serviceSubtaskCountReq));
@@ -401,6 +480,7 @@
      * 鑾峰彇闅忚缁熻姣斾緥
      */
     @ApiOperation("鑾峰彇闅忚缁熻姣斾緥")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/getSfStatistics")
     public AjaxResult getSfStatistics(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
         if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
@@ -413,6 +493,7 @@
      * 鑾峰彇闅忚缁熻姣斾緥
      */
     @ApiOperation("鑾峰彇闅忚婊℃剰搴︾粺璁�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/getSfStatisticsJoy")
     public Map<String, Object> getSfStatisticsJoy(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
         if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
@@ -422,7 +503,7 @@
     }
 
     /**
-     * 闅忚缁熻瀵煎嚭
+     * 闅忚鍘嗗彶璁板綍瀵煎嚭
      */
     //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "闅忚缁熻瀵煎嚭", businessType = BusinessType.EXPORT)
@@ -432,10 +513,14 @@
 
         ExcelUtil<ServiceSubtaskStatistic> util = new ExcelUtil<ServiceSubtaskStatistic>(ServiceSubtaskStatistic.class);
 
+        String sheetName = "";
+        String fileName = "";
         if (active.equals("ls") || active.equals("druid")) {
-            util.exportExcel(response, sfStatistics, LocalDate.now().getMonthValue() + "鏈堝嚭闄㈤殢璁跨粺璁¤〃");
+            fileName = sheetName = LocalDate.now().getMonthValue() + "鏈堝嚭闄㈤殢璁跨粺璁¤〃";
+            util.exportExcelWithFileName(response, sfStatistics, sheetName, fileName);
         } else {
-            util.exportExcel(response, sfStatistics, "闅忚缁熻瀵煎嚭");
+            sheetName = "闅忚缁熻瀵煎嚭";
+            util.exportExcel(response, sfStatistics, sheetName);
         }
     }
 
@@ -443,6 +528,7 @@
      * 闅忚缁熻瀵煎嚭
      */
     @ApiOperation("鏈嶅姟缁熻鏌ヨ-鎸夋椂闂寸淮搴︾粺璁″嚭闄�/闂ㄨ瘖闅忚鏁版嵁")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/getServiceStatistics")
     public AjaxResult getServiceStatistics(@RequestBody ServiceStatisticsRequest serviceStatisticsRequest) {
         SysUser user = getLoginUser().getUser();
@@ -456,6 +542,7 @@
      * 鑾峰彇闅忚缁熻姣斾緥
      */
     @ApiOperation("鑾峰彇闅忚婊℃剰搴︽槑缁�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/getSfStatisticsJoydetails")
     public AjaxResult getSfStatisticsJoydetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
         if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() == 0 && serviceSubtaskCountReq.getDeptcodes().size() == 0) {
@@ -464,6 +551,64 @@
         return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));
     }
 
+    /**
+     * 鑾峰彇闅忚鍒嗙被缁熻鏄庣粏
+     */
+    @ApiOperation("鑾峰彇闅忚鍒嗙被缁熻鏄庣粏")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/getSfStatisticsCount")
+    public Map<String, Object> getSfStatisticsCount(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
+            return error("鏈嶅姟绫诲瀷涓嶈兘涓虹┖");
+        }
+        PageUtils.startPageByPost(serviceSubtaskCountReq.getPageNum(), serviceSubtaskCountReq.getPageSize());
+
+        String configKey = serviceSubtaskCountReq.getConfigKey();
+        if (StringUtils.isNotEmpty(configKey)) {
+            String configValue = configService.selectConfigByKey(configKey);
+            serviceSubtaskCountReq.setConfigValue(configValue);
+            if (StringUtils.isEmpty(configValue)) {
+                String logInfo = "getSfStatisticsCount-鍙傛暟 " + configKey + " 鏈厤缃�, 璇烽厤缃ソ鍚庨噸璇�";
+                log.error(logInfo);
+                return error(logInfo);
+            }
+        } else {
+            String logInfo = "getSfStatisticsCount-鍙傛暟configKey鏈紶鍏�, 璇烽厤缃ソ鍚庨噸璇�";
+            log.error(logInfo);
+            return error(logInfo);
+        }
+        return success(serviceSubtaskService.getSfStatisticsScript(serviceSubtaskCountReq));
+    }
+
+    @ApiOperation("鑾峰彇闅忚鍒嗙被缁熻鏄庣粏璇︽儏")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/getSfStatisticsCountDetails")
+    public AjaxResult getSfStatisticsCountDetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() == 0 && serviceSubtaskCountReq.getDeptcodes().size() == 0) {
+            return error("绉戝鎴栫梾鍖轰笉鑳戒负绌�");
+        }
+        PageUtils.startPageByPost(serviceSubtaskCountReq.getPageNum(), serviceSubtaskCountReq.getPageSize());
+        //澶嶈瘖缁熻
+        String configKey = serviceSubtaskCountReq.getConfigKey();
+        if (StringUtils.isNotEmpty(configKey)) {
+            String configValue = configService.selectConfigByKey(configKey);
+            if (StringUtils.isEmpty(configValue)) {
+                String logInfo = "getSfStatisticsCountDetails-鍙傛暟 " + configKey + " 鏈厤缃�, 璇烽厤缃ソ鍚庨噸璇�";
+                log.error(logInfo);
+                return error(logInfo);
+            }
+            serviceSubtaskCountReq.setConfigValue(configValue);
+        } else {
+            String logInfo = "getSfStatisticsCountDetails-鍙傛暟configKey鏈紶鍏�, 璇烽厤缃ソ鍚庨噸璇�";
+            log.error(logInfo);
+            return error(logInfo);
+        }
+
+        LoginUser loginUser = getLoginUser();
+        String orgid = loginUser.getUser().getOrgid();
+        serviceSubtaskCountReq.setOrgid(orgid);
+        return success(serviceSubtaskService.getSfStatisticsScriptDetails(serviceSubtaskCountReq));
+    }
 
     /**
      * 鍙戦�佺煭淇℃ā鏉�

--
Gitblit v1.9.3