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

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java |   89 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 89 insertions(+), 0 deletions(-)

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 d6e0ef9..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
@@ -1555,6 +1555,27 @@
         }
     }
 
+    public void collectHISDaysBefore(Long daysBefore) {
+        try {
+            // 鑾峰彇daysBefore 0鐐瑰埌daysBefore-1 0鐐圭殑鏃堕棿鑼冨洿
+            LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN);
+            LocalDateTime daysBeforeZeroStart = todayZero.minusDays(daysBefore);
+            LocalDateTime daysBeforeZeroEnd = todayZero.minusDays(daysBefore-1L);
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            String startTime = daysBeforeZeroStart.format(formatter);
+            String endTime = daysBeforeZeroEnd.format(formatter);
+            // HIS鏁版嵁閲囬泦
+            log.info("銆恈ollectHISDaysBefore銆慔IS寮�濮嬮噰闆嗘暟鎹�: startTime:{}, endtime:{}",startTime, endTime);
+            // 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
+            CompletableFuture.runAsync(() -> {
+                ichService.syncMedInhosp(startTime, endTime);
+            });
+            log.info("銆恈ollectHISDaysBefore銆慔IS缁撴潫閲囬泦鏁版嵁: startTime:{}, endtime:{}",startTime, endTime);
+        } catch (Exception e) {
+            log.error("銆恈ollectHISDaysBefore銆慔IS鏁版嵁閲囬泦寮傚父", e);
+        }
+    }
+
     public Boolean setSuccessPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
         if (preachform.equals("-1")) {
             //璇存槑閮戒笉闇�瑕佹墽琛屼簡
@@ -1745,4 +1766,72 @@
         // 鍑洪櫌(鍙戦��)鏃堕棿 + 鏈琛ュ伩鏃堕棿 灏忎簬褰撳墠鏃堕棿 -> 瓒呮椂
         return deadline.getTime() < new Date().getTime();
     }
+
+    /**
+     * 澶勭悊瓒呮椂闅忚浠诲姟
+     * @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;
+
+                //鏂板鍐嶆闅忚浠诲姟
+                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);
+                }
+            }
+        }
+    }
+
 }

--
Gitblit v1.9.3