From 1ecb6109954d22e9be03518d64cdcfd89b599091 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 02 六月 2026 18:20:11 +0800
Subject: [PATCH] 1.处理修改service_task时,子任务删除,未将出院数据还原的问题; 2.新增省立同德满意度接口 3.处理患者基本信息并发新增的问题

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |  140 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 118 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 a8e2f3c..9382fd6 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
@@ -13,6 +13,7 @@
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.enums.PreachFormEnum;
+import com.ruoyi.common.enums.SendStateEnum;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
@@ -20,9 +21,12 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.utils.reflect.ReflectUtils;
+import com.ruoyi.quartz.service.ICollectHISService;
+import com.ruoyi.quartz.task.RyTask;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserDeptService;
 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.entity.ServiceSubtaskEntity;
@@ -37,6 +41,7 @@
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -56,6 +61,11 @@
 @RestController
 @RequestMapping("/smartor/serviceSubtask")
 public class ServiceSubtaskController extends BaseController {
+    @InitBinder
+    public void initBinder(WebDataBinder binder) {
+        binder.setAutoGrowCollectionLimit(1024); // 鎴� 2048銆�4096 绛�
+    }
+
     @Autowired
     private IServiceSubtaskService serviceSubtaskService;
 
@@ -70,6 +80,12 @@
 
     @Autowired
     private ISysConfigService configService;
+
+    @Autowired
+    private RyTask ryTask;
+
+    @Autowired
+    private ICollectHISService collectHISService;
 
     @Value("${spring.profiles.active}")
     private String active;
@@ -113,16 +129,6 @@
         // 鐩存帴浠庡凡鏈夎仛鍚堢粨鏋滄帹绠梩otal锛岄伩鍏嶅幓鎺夊垎椤靛悗鍐嶅叏閲忔煡涓�閬嶅ぇ琛�
         long total = 0L;
         try {
-//                 * wzx: 鏈墽琛屾暟閲�
-//                    * ysf: 宸查殢璁挎暟閲�
-//                    * fssb: 鍙戦�佸け璐ユ暟閲�
-//                    * yfs: 宸插彂閫佹暟閲�
-//                    * dsf: 寰呴殢璁挎暟閲�
-
-//            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 fssb = map.get("fssb") != null ? ((Number) map.get("fssb")).longValue() : 0L;
             total = map.get("total") != null ? ((Number) map.get("total")).longValue() : 0L;
 
         } catch (Exception e) {
@@ -179,7 +185,7 @@
                 if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
                     redisFlag = true;
                     map = redisMap;
-                    redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
+                    redisCache.setCacheObject(userId + "patItemCount", map, 60, TimeUnit.MINUTES);
                 }
             }
             if (!redisFlag) {
@@ -211,7 +217,7 @@
     //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "鍗曚竴浠诲姟锛堥殢璁垮鏁欙級", businessType = BusinessType.EXPORT)
     @PostMapping("/patItemExport")
-    public void patItemExport(HttpServletResponse response, @RequestBody ServiceSubtaskEntity serviceSubtaskVO) {
+    public void patItemExport(HttpServletResponse response, ServiceSubtaskEntity serviceSubtaskVO) {
         LoginUser loginUser = getLoginUser();
         SysUser user = loginUser.getUser();
         serviceSubtaskVO.setOrgid(user.getOrgid());
@@ -225,6 +231,10 @@
             for (ServiceSubtaskExport serviceSubtaskExport : serviceSubtaskExports) {
                 String pf = PreachFormEnum.getDescByCode(serviceSubtaskExport.getPreachform());
                 serviceSubtaskExport.setPreachform(pf);
+                if(serviceSubtaskExport.getSendstate() != null) {
+                    String stName = SendStateEnum.getDescByCode("" + serviceSubtaskExport.getSendstate());
+                    serviceSubtaskExport.setStName(stName);
+                }
 
                 //璁$畻鍑洪櫌澶╂暟
                 if (!Objects.isNull(serviceSubtaskExport.getEndtime())) {
@@ -246,13 +256,12 @@
     //@PreAuthorize("@ss.hasPermi('system:taskcall:list')")
     @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/patItemByCondition")
-    public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
+    public Map<String, Object> patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
         List<ServiceSubtask> serviceSubtaskList = null;
         ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
         serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
         if (serviceSubtaskEntity != null) {
-            PageUtils.startPageByPost(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize());
-
+            serviceSubtaskEntity.setPageNum(PageUtils.getOffset(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize()));
             serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskEntity);
         }
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
@@ -277,7 +286,7 @@
                 serviceSubtaskService.patItem2(serviceSubtaskEntity);
             }
         });
-        return getDataTable2(total, list);
+        return getDataTable3(total, list);
     }
 
     /**
@@ -397,6 +406,7 @@
         ivrTaskVO.setCreateBy(user.getNickName());
         ivrTaskVO.setUpdateBy(user.getNickName());
         ivrTaskVO.setOrgid(user.getOrgid());
+        ivrTaskVO.setCampusid(user.getCampusid());
         return success(serviceSubtaskService.insertOrUpdateTask(ivrTaskVO));
     }
 
@@ -408,12 +418,21 @@
         return toAjax(serviceSubtaskService.updateServiceSubtask(serviceSubtask));
     }
 
+    @ApiOperation("淇敼瀛愪换鍔℃ā鏉�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/updateTemplate")
+    public AjaxResult updateTemplate(@RequestBody ServiceSubtaskTemplateVO serviceSubtaskTemplateVO) {
+        serviceSubtaskTemplateVO.setUpdateBy(getLoginUser().getUser().getNickName());
+        return toAjax(serviceSubtaskService.updateTemplate(serviceSubtaskTemplateVO));
+    }
+
     @ApiOperation("鏂板瀛愪换鍔�")
     @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/addSubTask")
     public AjaxResult addSubTask(@RequestBody ServiceSubtask serviceSubtask) {
         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));
     }
 
@@ -423,6 +442,7 @@
     public AjaxResult addSubTaskAgain(@RequestBody ServiceSubtask serviceSubtask) {
         SysUser user = getLoginUser().getUser();
         if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid());
+        if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setCampusid(user.getCampusid());
         return success(serviceSubtaskService.addSubTaskAgain(serviceSubtask));
     }
 
@@ -519,17 +539,23 @@
     @ApiOperation("鑾峰彇闅忚缁熻姣斾緥")
     @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/getSfStatistics")
-    public AjaxResult getSfStatistics(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+    public Map<String, Object> getSfStatistics(@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");
         }
-        return success(serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq));
+        serviceSubtaskCountReq.setPageNum(null);
+        serviceSubtaskCountReq.setPageSize(null);
+        List<ServiceSubtaskStatistic> sfStatistics = serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq);
+        return getDataTable4(CollectionUtils.isEmpty(sfStatistics) ? sfStatistics.size() : 0, serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq));
     }
 
     /**
@@ -592,7 +618,63 @@
         return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));
     }
 
+    /**
+     * 鑾峰彇闅忚缁熻瓒呴摼鎺�
+     * dischargeCountInfo
+     * followUpNeededAllInfo - sendstate != 4 (1,2,3,5,6,7)
+     * nonFollowUpInfo - sendstate = 4
+     * needFollowUpInfo - visitCount = 1 && sendstate != 4
+     * pendingFollowUpInfo - visitCount = 1 && sendstate = 2
+     * followUpSuccessInfo - visitCount = 1 && sendstate = 6
+     * followUpFailInfo - visitCount = 1 && (sendstate = 5 || sendstate = 7)
+     * manualInfo - visitCount = 1 && currentPreachForm = "1"
+     * voiceInfo - visitCount = 1 && currentPreachForm = "3"
+     * smsInfo - visitCount = 1 && currentPreachForm = "4"
+     * wechatInfo - visitCount = 1 && currentPreachForm = "5"
+     * abnormalInfo - visitCount = 1 && excep = "1"
+     * needFollowUpAgainInfo - visitCount > 1 && sendstate != 4
+     * pendingFollowUpAgainInfo -  visitCount > 1 && sendstate = 2
+     * followUpSuccessAgainInfo - visitCount > 1 && sendstate =6
+     * followUpFailAgainInfo - visitCount > 1 && (sendstate = 5 || sendstate = 7)
+     * manualAgainInfo - visitCount > 1 && currentPreachForm = "1"
+     * voiceAgainInfo - visitCount > 1 && currentPreachForm = "3"
+     * smsAgainInfo - visitCount > 1 && currentPreachForm = "4"
+     * wechatAgainInfo -  visitCount > 1 && currentPreachForm = "5"
+     * abnormalAgainInfo- visitCount > 1 && excep = "1"
+     * taskSituation1Info - taskSituation = 1
+     * taskSituation2Info - taskSituation = 2
+     * taskSituation3Info - taskSituation = 3
+     * taskSituation4Info - taskSituation = 4
+     * taskSituation5Info - taskSituation = 5
+     * taskSituation6Info - taskSituation = 7
+     * filterCountList - taskSituation = 6 && sendstate = 4
+     *
+     */
+    @ApiOperation("鑾峰彇闅忚缁熻瓒呴摼鎺�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/getSfStatisticsHyperlink")
+    public AjaxResult getSfStatisticsHyperlink(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        LoginUser loginUser = getLoginUser();
+        String orgid = loginUser.getUser().getOrgid();
+        String configKey = serviceSubtaskCountReq.getConfigKey();
+        if (StringUtils.isNotEmpty(configKey)) {
+            String configValue = configService.selectConfigByKey(configKey, orgid);
+            serviceSubtaskCountReq.setConfigValue(configValue);
+            if (StringUtils.isEmpty(configValue)) {
+                String logInfo = "getSfStatisticsCount-鍙傛暟 " + configKey + " 鏈厤缃�, 璇烽厤缃ソ鍚庨噸璇�";
+                log.error(logInfo);
+                return error(logInfo);
+            }
+        }
 
+        String followUpCountStyle = configService.selectConfigByKey("followUpCountStyle", orgid);
+        if (ObjectUtils.isNotEmpty(followUpCountStyle)) {
+            serviceSubtaskCountReq.setFollowUpCountStyle(followUpCountStyle);
+        } else {
+            serviceSubtaskCountReq.setFollowUpCountStyle("1");
+        }
+        return success(serviceSubtaskService.getSfStatisticsHyperlink(serviceSubtaskCountReq));
+    }
 
     /**
      * 寤剁画鎶ょ悊缁熻
@@ -611,9 +693,6 @@
         }
         return success(serviceSubtaskService.getContinueNurseCount(serviceSubtaskCotinueCountVO));
     }
-
-
-
 
 
     /**
@@ -640,7 +719,8 @@
             log.error(logInfo);
             return error(logInfo);
         }
-        return success(serviceSubtaskService.getSfStatisticsScript(serviceSubtaskCountReq));
+        List<ServiceSubtaskStatistic> serviceSubtaskStatistics = serviceSubtaskService.getSfStatisticsScript(serviceSubtaskCountReq);
+        return success(serviceSubtaskStatistics);
     }
 
     @ApiOperation("鑾峰彇闅忚鍒嗙被缁熻鏄庣粏璇︽儏")
@@ -732,5 +812,21 @@
         return map;
     }
 
+    @ApiOperation("鑾峰彇褰撳墠鐢ㄦ埛瀹f暀鏁伴噺缁熻")
+    @PostMapping("/gethelibraryCount")
+    public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO) {
+        log.info("鑾峰彇褰撳墠鐢ㄦ埛瀹f暀鏁伴噺缁熻鐨勫叆鍙備负锛歿}", heLibraryCountVO);
+        return serviceSubtaskService.getHeLibraryCount(heLibraryCountVO);
+    }
 
+
+    @PostMapping("/test")
+    public void test() {
+        ryTask.dealOutHospInfo();
+    }
+
+    @PostMapping("/syncMedInhospForShiyi")
+    public void syncMedInhospForShiyi(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
+        collectHISService.syncMedInhosp(startTime, endTime);
+    }
 }

--
Gitblit v1.9.3