From 7a5ef401fdbe6f67dd96255a47874f7a3656253b Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期四, 03 九月 2026 18:26:29 +0800
Subject: [PATCH] 【丽水】处理超时随访任务

---
 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml                         |    1 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                             |   99 ++++++++++++++++++++++++++++---------------------
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |    7 +++
 3 files changed, 65 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 0eeea26..2d51004 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
@@ -999,4 +999,11 @@
         });
         return AjaxResult.success("鍚屾浠诲姟宸插惎鍔紝璇风◢鍚庢煡鐪嬬粨鏋�");
     }
+
+    @PostMapping("/dealSubtaskDeadline")
+    public AjaxResult dealSubtaskDeadline(@RequestParam("orgid") String orgid, @RequestParam("day") Integer day) {
+        // 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
+        ryTask.dealSubtaskDeadline(orgid, day);
+        return AjaxResult.success("銆恉ealSubtaskDeadline銆戝悓姝ヤ换鍔″凡鍚姩锛屽ぉ鏁颁负" + day + "澶╋紝璇风◢鍚庢煡鐪嬬粨鏋�");
+    }
 }
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index 927bbdd..805cca7 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1772,49 +1772,64 @@
      * @return
      */
     public void dealSubtaskDeadline(String orgid, Integer deadlineDay){
+        //鑾峰彇浠诲姟淇℃伅
+        ServiceTask st = new ServiceTask();
+        st.setDelFlag("0");
+        st.setLongTask(1);
+        st.setNexttaskflag("1");
+        st.setOrgid(orgid);
+        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
+        for (ServiceTask serviceTask : serviceTasks) {
+            deadlineDay = -deadlineDay;
+            Date deadline = DateUtils.addDays(new Date(), deadlineDay);
+            //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+            serviceSubtaskVO.setOrgid(orgid);
+            serviceSubtaskVO.setSendstate(7L);
+            //鍙壂鎻忛娆¢殢璁跨殑
+            serviceSubtaskVO.setVisitCount(1);
+            serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
+            serviceSubtaskVO.setEndOutHospTime(deadline);
+            List<ServiceSubtask> serviceSubtaskList
+                    = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+            log.info("銆恉ealSubtaskDeadline銆戣幏鍙栧埌{}涓秴鏃朵换鍔�, taskid={}", serviceSubtaskList.size(), serviceTask.getTaskid());
+            for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+                PatMedInhosp patMedInhospVo = new PatMedInhosp();
+                patMedInhospVo.setOrgid(serviceSubtask.getOrgid());
+                patMedInhospVo.setInhospid(serviceSubtask.getInhospid());
+                List<PatMedInhosp> patMedInhospList = iPatMedInhospService.selectPatMedInhospList(patMedInhospVo);
+                PatMedInhosp patMedInhosp = new PatMedInhosp();
+                if (!patMedInhospList.isEmpty()) {
+                    patMedInhosp = patMedInhospList.get(0);
+                }else {
+                    continue;
+                }
+                if(ObjectUtils.isEmpty(serviceTask.getNexttaskid())){
+                    continue;
+                }
+                ServiceTask nextServiceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceTask.getNexttaskid());
+                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
+                String config = configService.selectConfigByKey("visit.early.day");
+                Integer type = 1;
 
-        Date deadline = DateUtils.addDays(new Date(), deadlineDay);
-        //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
-        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
-        serviceSubtaskVO.setOrgid(orgid);
-        serviceSubtaskVO.setSendstate(7L);
-        //鍙壂鎻忛娆¢殢璁跨殑
-        serviceSubtaskVO.setVisitCount(1);
-        serviceSubtaskVO.setEndOutHospTime(deadline);
-        List<ServiceSubtask> serviceSubtaskList
-                = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-        log.info("銆恉ealSubtaskDeadline銆戣幏鍙栧埌{}涓秴鏃朵换鍔�", serviceSubtaskList.size());
-        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-            PatMedInhosp patMedInhosp = new PatMedInhosp();
-            patMedInhosp.setInhospid(serviceSubtask.getInhospid());
-            List<PatMedInhosp> patMedInhospList = iPatMedInhospService.selectPatMedInhospList(patMedInhosp);
-
-            if (patMedInhospList.size() > 0) {
-                serviceSubtask.setIsVisitAgain(2);
-                serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";鎮h�呭啀鍏ラ櫌浜�" : "鎮h�呭啀鍏ラ櫌浜�");
-                serviceSubtask.setSendstate(4L);
-                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                //return "鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜�";
-            }else {
-                continue;
-            }
-            //鏂板鍐嶆闅忚浠诲姟
-            ServiceSubtask serviceSubtaskAgain = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtask.class);
-            serviceSubtaskAgain.setId(null);
-            serviceSubtaskAgain.setUpid(serviceSubtask.getId().intValue());
-            serviceSubtaskAgain.setVisitCount(serviceSubtask.getVisitCount() + 1);
-            serviceSubtaskAgain.setSendstate(2L);
-            serviceSubtaskAgain.setCreateTime(new Date());
-            serviceSubtaskAgain.setUpdateTime(new Date());
-            serviceSubtaskAgain.setVisitType(serviceSubtask.getVisitType());
-            serviceSubtaskAgain.setVisitDeptCode(serviceSubtask.getVisitDeptCode());
-            serviceSubtaskAgain.setVisitDeptName(serviceSubtask.getVisitDeptName());
-            int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtaskAgain);
-            if (i == 1) {
-                //鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛鍚庯紝鍘熶换鍔℃敼涓哄け璐ョ姸鎬�
-                serviceSubtask.setIsVisitAgain(2);
-                serviceSubtask.setSendstate(5L);
-                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                //鏂板鍐嶆闅忚浠诲姟
+                ServiceSubtask serviceSubtaskAgain = iPatMedInhospService.boxedServiceSubtask(nextServiceTask,
+                        patMedInhosp, patArchive, config, type);
+                serviceSubtaskAgain.setId(null);
+                serviceSubtaskAgain.setUpid(serviceSubtask.getId().intValue());
+                serviceSubtaskAgain.setVisitCount(serviceSubtask.getVisitCount() + 1);
+                serviceSubtaskAgain.setSendstate(2L);
+                serviceSubtaskAgain.setCreateTime(new Date());
+                serviceSubtaskAgain.setUpdateTime(new Date());
+                serviceSubtaskAgain.setVisitType(serviceSubtask.getVisitType());
+                serviceSubtaskAgain.setVisitDeptCode(serviceSubtask.getVisitDeptCode());
+                serviceSubtaskAgain.setVisitDeptName(serviceSubtask.getVisitDeptName());
+                int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtaskAgain);
+                if (i == 1) {
+                    //鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛鍚庯紝鍘熶换鍔℃敼涓哄け璐ョ姸鎬�
+                    serviceSubtask.setSendstate(5L);
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                }
             }
         }
     }
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index 5f9666b..8344a5f 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -246,6 +246,7 @@
         AND a.del_flag = 0
         AND b.del_flag = 0
         AND a.idcardno IS NOT NULL
+        <if test="inhospid != null">and b.inhospid = #{inhospid}</if>
         <if test="startOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &gt;=
             date_format(#{startOutHospTime},'%y%m%d')
         </if>

--
Gitblit v1.9.3