From 0c1f8c479065739f3c7a5126de8e667035d00b58 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 12 十月 2026 14:21:52 +0800
Subject: [PATCH] 【丽水】满意度模块化:新增 ruoyi-satisfaction 独立模块

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |  242 +++++++++++++++++++++++++++++++----------------
 1 files changed, 158 insertions(+), 84 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 f13ba40..c9f4cbe 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
@@ -23,10 +23,10 @@
 import com.ruoyi.quartz.task.RyTask;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserDeptService;
+import com.ruoyi.satisfaction.api.SatisfactionExportBundle;
+import com.ruoyi.satisfaction.api.SatisfactionFacade;
 import com.smartor.domain.*;
-import com.smartor.domain.VO.HeLibraryCountVO;
-import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
-import com.smartor.domain.VO.ServiceSubtaskVO;
+import com.smartor.domain.VO.*;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.service.IServiceSubtaskRecordService;
 import com.smartor.service.IServiceSubtaskService;
@@ -45,6 +45,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDate;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -68,6 +69,15 @@
 
     @Autowired
     private IServiceSubtaskService serviceSubtaskService;
+
+    /**
+     * 婊℃剰搴︽ā鍧楀澶栭棬闈紙甯搁┗ Bean锛夈��
+     * <p>
+     * 婊℃剰搴︾浉鍏虫暟鎹紙闂璇︽儏鍗犳瘮锛夊彧鑳介�氳繃瀹冭幏鍙栵紱婊℃剰搴︽ā鍧楀叧闂椂
+     * 闂ㄩ潰杩斿洖绌虹粨鏋滃苟鎵� WARN锛�<b>涓嶄細</b>褰卞搷闅忚瀵煎嚭鐨勫叾瀹冨唴瀹广��
+     */
+    @Autowired
+    private SatisfactionFacade satisfactionFacade;
 
     @Autowired
     private IServiceTaskService serviceTaskService;
@@ -102,6 +112,18 @@
     @Autowired
     private RedisCache redisCache;
 
+
+    /**
+     * 杞Щ绉戝鐥呭尯
+     */
+    @ApiOperation("杞Щ绉戝鐥呭尯")
+    @PostMapping("/transferDept")
+    public Map<String, Object> transferDept(@RequestBody TransferDeptVO transferDeptVO) {
+        Integer i = serviceSubtaskService.transferDept(transferDeptVO);
+        return success(i == 1 ? true : false);
+    }
+
+
     /**
      * 鏌ヨ鎮h�呴殢璁夸俊鎭�
      */
@@ -113,6 +135,7 @@
         LoginUser loginUser = getLoginUser();
         SysUser user = loginUser.getUser();
         serviceSubtaskVO.setOrgid(user.getOrgid());
+        serviceSubtaskVO.setCampusid(user.getCampusid());
         ServiceSubtaskEntity serviceSubtaskEntity = null;
         if (serviceSubtaskVO != null) {
             serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
@@ -176,74 +199,23 @@
     }
 
     /**
-     * 甯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 (serviceSubtaskEntity.getSendstateView() != null) {
-            //            1锛氬緟闅忚锛�1 琚鍙栥��2 寰呭彂閫併��3 宸插彂閫併��5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級锛�2锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�3锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
-            if (serviceSubtaskEntity.getSendstateView() == 1)
-                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
-            if (serviceSubtaskEntity.getSendstateView() == 2)
-                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
-            if (serviceSubtaskEntity.getSendstateView() == 3)
-                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L)));
-        }
-        if (ObjectUtils.isNotEmpty(userId)) {
-            Map<String, Object> redisMap = redisCache.getCacheObject(userId + "patItemCount");
-            Boolean redisFlag = false;
-            if (MapUtils.isNotEmpty(redisMap)) {
-                ServiceSubtaskEntity oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
-                if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
-                    redisFlag = true;
-                    map = redisMap;
-                    redisCache.setCacheObject(userId + "patItemCount", map, 60, 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);
-        }
-        return map;
-    }
-
-    /**
-     * 姣旇緝涓や釜ServiceSubtaskVO鐨勬煡璇㈡潯浠舵槸鍚︿竴鑷�
-     * 浣跨敤鍙嶅皠姣旇緝鎵�鏈夊瓧娈碉紝鎺掗櫎鍒嗛〉鍙傛暟鍜屾棤鍏冲瓧娈�
-     */
-    private boolean isSameCondition(ServiceSubtaskEntity oldCondition, ServiceSubtaskEntity newCondition) {
-        // 浣跨敤ReflectUtils鐨勯�氱敤鏂规硶姣旇緝锛屾帓闄ゅ垎椤靛弬鏁扮瓑鏃犲叧瀛楁
-        return ReflectUtils.equalsAllFields(oldCondition, newCondition,
-                // 鎺掗櫎鐨勫瓧娈碉細鍒嗛〉鍙傛暟銆佸簭鍒楀寲ID銆佹椂闂存埑绛�
-                "pageNum", "pageSize", "serialVersionUID", "createBy", "createTime", "updateBy", "updateTime", "searchValue", "params");
-    }
-
-
-    /**
      * 瀵煎嚭鍗曚竴浠诲姟鍒楄〃
      */
     //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "鍗曚竴浠诲姟", businessType = BusinessType.EXPORT)
     @PostMapping("/patItemExport")
-    public void patItemExport(HttpServletResponse response, ServiceSubtaskEntity serviceSubtaskVO) {
+    public void patItemExport(HttpServletResponse response, ServiceSubtaskVO serviceSubtaskVO) {
         LoginUser loginUser = getLoginUser();
         SysUser user = loginUser.getUser();
         serviceSubtaskVO.setOrgid(user.getOrgid());
         List<ServiceSubtaskRes> serviceSubtaskList = null;
         if (serviceSubtaskVO != null) {
-            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);
+           ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
+            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskEntity);
         }
         List<ServiceSubtaskExport> serviceSubtaskExports = null;
-        List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = null;
+        //婊℃剰搴﹀崰姣斿鍑哄寘锛氶粯璁ょ┖鍖咃紙娌℃湁鍙鍑虹殑鎮h�呮椂淇濇寔涓虹┖锛夛紝鏈夋暟鎹椂鐢辨弧鎰忓害闂ㄩ潰濉厖
+        SatisfactionExportBundle ratioBundle = SatisfactionExportBundle.empty();
         if (!CollectionUtils.isEmpty(serviceSubtaskList)) {
             serviceSubtaskExports = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExport.class);
             for (ServiceSubtaskExport serviceSubtaskExport : serviceSubtaskExports) {
@@ -260,16 +232,24 @@
                     serviceSubtaskExport.setEndDay(endDay);
                 }
             }
-
-            //鑾峰彇serviceSubtaskList涓殑鎵�鏈塼askid
-            List<Long> taskIds = serviceSubtaskList.stream().map(ServiceSubtaskRes::getTaskid).filter(ObjectUtils::isNotEmpty).distinct().collect(Collectors.toList());
-            serviceSubtaskDetailRatioExports = serviceSubtaskService.statQuestionOption(taskIds, serviceSubtaskVO.getStartOutHospTime(), serviceSubtaskVO.getEndOutHospTime());
-
+            //闂璇︽儏鍗犳瘮锛氬彧缁熻鏈瀵煎嚭鐨勮繖鎵规偅鑰咃紝鏁伴噺=閫夎閫夐」鐨勬偅鑰呮暟锛屾瘮渚�=鍗犺棰樹綔绛斾汉鏁�
+            //婊℃剰搴︽ā鍧楀寲鍚庯細鍙�氳繃婊℃剰搴︽ā鍧楁毚闇茬殑 api 鍖呭彇鏁帮紙瀵煎嚭鍖� = 琛� + 琛岀被鍨� + 鍥捐〃鏋勫缓鍣級锛�
+            //妯″潡鍏抽棴锛坰atisfaction.enabled=false锛夋椂闂ㄩ潰杩斿洖绌哄鍑哄寘锛屽鍑虹収甯稿畬鎴愶紙鍙槸娌℃湁鍗犳瘮 Sheet锛夈��
+            List<Long> subtaskIds = new ArrayList<>();
+            for (ServiceSubtaskRes serviceSubtaskRes : serviceSubtaskList) {
+                if (serviceSubtaskRes.getId() != null) {
+                    subtaskIds.add(serviceSubtaskRes.getId());
+                }
+            }
+            ratioBundle = satisfactionFacade.getQuestionOptionRatioExport(subtaskIds, null);
         }
 
 
         ExcelUtil<ServiceSubtaskExport> util = new ExcelUtil<ServiceSubtaskExport>(ServiceSubtaskExport.class);
-        util.exportExcelTwoSheet(response, serviceSubtaskExports, "鎮h�呴殢璁夸俊鎭〃鍗�", serviceSubtaskDetailRatioExports, "闂璇︽儏鍗犳瘮", ServiceSubtaskDetailRatioExport.class);
+        //绗笁涓猄heet锛氶棶棰樿鎯呭崰姣斿浘琛紙鎸変换鍔″悕绉板垎缁勶紝涓�涓换鍔′竴寮犳煴鐘跺浘锛�
+        util.exportExcelTwoSheetWithChart(response, serviceSubtaskExports, "鎮h�呴殢璁夸俊鎭〃鍗�",
+                ratioBundle.getRows(), "闂璇︽儏鍗犳瘮", ratioBundle.getRowClass(),
+                ratioBundle.getChartBuilder());
     }
 
     /**
@@ -429,7 +409,11 @@
         ivrTaskVO.setCreateBy(user.getNickName());
         ivrTaskVO.setUpdateBy(user.getNickName());
         ivrTaskVO.setOrgid(user.getOrgid());
-        ivrTaskVO.setCampusid(user.getCampusid());
+        if(StringUtils.isNotEmpty(user.getCampusid())){
+            ivrTaskVO.setCampusid(user.getCampusid());
+        }else {
+            ivrTaskVO.setCampusid("1");
+        }
         return success(serviceSubtaskService.insertOrUpdateTask(ivrTaskVO));
     }
 
@@ -456,7 +440,10 @@
         SysUser user = getLoginUser().getUser();
         if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid());
         if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setCampusid(user.getCampusid());
-        return toAjax(serviceSubtaskService.insertServiceSubtask(serviceSubtask));
+        serviceSubtask.setCampusid(user.getCampusid());
+        serviceSubtask.setCreateBy(user.getNickName());
+        serviceSubtask.setUpdateBy(user.getNickName());
+        return success(serviceSubtaskService.insertServiceSubtask(serviceSubtask));
     }
 
     @ApiOperation("鎮h�呭啀娆¢殢璁�")
@@ -581,9 +568,10 @@
                         SysUserDept sysUserWard = new SysUserDept();
                         sysUserWard.setUserId(user.getUserId());
                         sysUserWard.setOrgid(user.getOrgid());
+                        sysUserWard.setCampusid(user.getCampusid());
                         sysUserWard.setDeptType("2");
                         List<SysUserDept> wardList = sysUserDeptService.selectSysUserDeptList(sysUserWard);
-                        if(CollectionUtils.isNotEmpty(wardList)) {
+                        if (CollectionUtils.isNotEmpty(wardList)) {
                             leavehospitaldistrictcodes = wardList.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
                         }
                         serviceSubtaskCountReq.setLeavehospitaldistrictcodes(leavehospitaldistrictcodes);
@@ -595,9 +583,10 @@
                         SysUserDept sysUserDept = new SysUserDept();
                         sysUserDept.setUserId(user.getUserId());
                         sysUserDept.setOrgid(user.getOrgid());
+                        sysUserDept.setCampusid(user.getCampusid());
                         sysUserDept.setDeptType("1");
                         List<SysUserDept> deptList = sysUserDeptService.selectSysUserDeptList(sysUserDept);
-                        if(CollectionUtils.isNotEmpty(deptList)){
+                        if (CollectionUtils.isNotEmpty(deptList)) {
                             deptCodes = deptList.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
                         }
                         serviceSubtaskCountReq.setDeptcodes(deptCodes);
@@ -872,11 +861,13 @@
         SysUserDept sysUserDept = new SysUserDept();
         sysUserDept.setUserId(sysUser.getUserId());
         sysUserDept.setOrgid(sysUser.getOrgid());
+        sysUserDept.setCampusid(sysUser.getCampusid());
         sysUserDept.setDeptType("1");
         List<SysUserDept> sysUserDepts = sysUserDeptService.selectSysUserDeptList(sysUserDept);
         SysUserDept sysUserWard = new SysUserDept();
         sysUserWard.setUserId(sysUser.getUserId());
         sysUserWard.setOrgid(sysUser.getOrgid());
+        sysUserWard.setCampusid(sysUser.getCampusid());
         sysUserWard.setDeptType("2");
         List<SysUserDept> sysUserWards = sysUserDeptService.selectSysUserDeptList(sysUserWard);
         List<String> deptCodes = sysUserDepts.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
@@ -931,10 +922,10 @@
     @PostMapping(value = "/goSfRelay")
     public AjaxResult goSfRelay(@RequestParam("taskId") Long taskId, @RequestParam("deptcode") String deptcode, @RequestParam("leavehospitaldistrictcode") String leavehospitaldistrictcode) {
         String url = localIP + ":" + req_path + "/SfRelay?taskid=" + taskId;
-        if(StringUtils.isNotEmpty(deptcode)){
+        if (StringUtils.isNotEmpty(deptcode)) {
             url = url + "&deptcode=" + deptcode;
         }
-        if(StringUtils.isNotEmpty(leavehospitaldistrictcode)){
+        if (StringUtils.isNotEmpty(leavehospitaldistrictcode)) {
             url = url + "&leavehospitaldistrictcode=" + leavehospitaldistrictcode;
         }
         return AjaxResult.success(url);
@@ -951,27 +942,110 @@
         return AjaxResult.success(serviceSubtaskService.scanGenerateSubtask(serviceTask));
     }
 
-
-    @PostMapping("/test")
-    public void test() {
-        ryTask.dealOutHospInfo();
+    @PostMapping("/syncMedInhospForShiyi")
+    public AjaxResult syncMedInhospForShiyi(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
+        // 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
+        CompletableFuture.runAsync(() -> {
+            collectHISService.syncMedInhosp(startTime, endTime);
+        });
+        return AjaxResult.success("鍚屾浠诲姟宸插惎鍔紝璇风◢鍚庢煡鐪嬬粨鏋�");
     }
 
-    @PostMapping("/syncMedInhospForShiyi")
-    public void syncMedInhospForShiyi(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
-        collectHISService.syncMedInhosp(startTime, endTime);
+    @PostMapping("/syncMedInhospForShiyiYesterday")
+    public AjaxResult syncMedInhospForShiyiYesterday() {
+        // 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
+        ryTask.collectHISYesterday();
+        return AjaxResult.success("鍚屾浠诲姟宸插惎鍔紝璇风◢鍚庢煡鐪嬬粨鏋�");
+    }
+
+    @PostMapping("/syncMedInhospForShiyiDaysBefore")
+    public AjaxResult syncMedInhospForShiyiDaysBefore(@RequestParam("day") Long day) {
+        // 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
+        ryTask.collectHISDaysBefore(day);
+        return AjaxResult.success("銆恈ollectHISDaysBefore銆戝悓姝ヤ换鍔″凡鍚姩锛屽ぉ鏁颁负" + day + "澶╋紝璇风◢鍚庢煡鐪嬬粨鏋�");
     }
 
     @PostMapping("/syncMedOperForShiyi")
-    public void syncMedOperForShiyi(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
-        collectHISService.syncOper(startTime, endTime);
+    public AjaxResult syncMedOperForShiyi(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
+        // 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
+        CompletableFuture.runAsync(() -> {
+            collectHISService.syncOper(startTime, endTime);
+        });
+        return AjaxResult.success("鍚屾浠诲姟宸插惎鍔紝璇风◢鍚庢煡鐪嬬粨鏋�");
     }
 
-    @PostMapping("/qwenLLMTest")
-    public int qwenLLMTest(@RequestParam("voiceText") String questionText, @RequestParam("voiceText") String voiceText, @RequestParam("value") String value, @RequestParam("regexText") String regexText) {
-        int result = ryTask.qwenLLMTest(questionText, voiceText, value, regexText);
-        return result;
+    @PostMapping("/dealSubtaskDeadline")
+    public AjaxResult dealSubtaskDeadline(@RequestParam("orgid") String orgid, @RequestParam("day") Integer day) {
+        // 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
+        ryTask.dealSubtaskDeadline(orgid, day);
+        return AjaxResult.success("銆恉ealSubtaskDeadline銆戝悓姝ヤ换鍔″凡鍚姩锛屽ぉ鏁颁负" + day + "澶╋紝璇风◢鍚庢煡鐪嬬粨鏋�");
+    }
+
+    @PostMapping("/sendExceptInfo")
+    public AjaxResult sendExceptInfo() throws Exception {
+        ryTask.sendExceptInfo();
+        return AjaxResult.success("sendExceptInfo");
+    }
+
+    /**
+     * 甯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 (serviceSubtaskEntity.getSendstateView() != null) {
+            //            1锛氬緟闅忚锛�1 琚鍙栥��2 寰呭彂閫併��3 宸插彂閫併��5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級锛�2锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�3锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
+            if (serviceSubtaskEntity.getSendstateView() == 1)
+                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
+            if (serviceSubtaskEntity.getSendstateView() == 2)
+                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
+            if (serviceSubtaskEntity.getSendstateView() == 3)
+                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L)));
+        }
+        if (ObjectUtils.isNotEmpty(userId)) {
+            Map<String, Object> redisMap = redisCache.getCacheObject(userId + "patItemCount");
+            Boolean redisFlag = false;
+            if (MapUtils.isNotEmpty(redisMap)) {
+                ServiceSubtaskEntity oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
+                if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
+                    redisFlag = true;
+                    map = redisMap;
+                    redisCache.setCacheObject(userId + "patItemCount", map, 60, 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);
+        }
+        return map;
     }
 
 
+    /**
+     * 姣旇緝涓や釜ServiceSubtaskVO鐨勬煡璇㈡潯浠舵槸鍚︿竴鑷�
+     * 浣跨敤鍙嶅皠姣旇緝鎵�鏈夊瓧娈碉紝鎺掗櫎鍒嗛〉鍙傛暟鍜屾棤鍏冲瓧娈�
+     */
+    private boolean isSameCondition(ServiceSubtaskEntity oldCondition, ServiceSubtaskEntity newCondition) {
+        // 浣跨敤ReflectUtils鐨勯�氱敤鏂规硶姣旇緝锛屾帓闄ゅ垎椤靛弬鏁扮瓑鏃犲叧瀛楁
+        return ReflectUtils.equalsAllFields(oldCondition, newCondition,
+                // 鎺掗櫎鐨勫瓧娈碉細鍒嗛〉鍙傛暟銆佸簭鍒楀寲ID銆佹椂闂存埑绛�
+                "pageNum", "pageSize", "serialVersionUID", "createBy", "createTime", "updateBy", "updateTime", "searchValue", "params");
+    }
+
+
+    @ApiOperation("鑾峰彇缁熻鏁�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/countByCondition")
+    public Map<String, Object>  countByCondition(@RequestBody ServiceSubtaskEntity condition) {
+        Map<String, Object> map = serviceSubtaskService.countByCondition(condition);
+        return map;
+    }
 }

--
Gitblit v1.9.3