From 5595ea6a69345f135defbe5c75eb3a9cf957fa0d Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 03 十一月 2025 13:58:07 +0800
Subject: [PATCH] BUG修改

---
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java |  122 +++++++++++++++++++++++++++++++++-------
 1 files changed, 101 insertions(+), 21 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
index 4dc28ec..964e0b8 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -1,5 +1,8 @@
 package com.smartor.service.impl;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
@@ -14,6 +17,8 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -44,10 +49,11 @@
     @Autowired
     private ServiceSubtaskMapper serviceSubtaskMapper;
     @Autowired
-    private SysUserDeptMapper sysUserDeptMapper;
+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
 
-    @Value("${visitHosp}")
-    private Integer visitHosp;
+    @Value("${spring.profiles.active}")
+    private String active;
+
 
     /**
      * 鏌ヨ鎮h�呬綇闄㈣褰�
@@ -130,15 +136,16 @@
         PatMedRes patMedRes = null;
         // 鑾峰彇褰撳墠鐧婚檰浜虹殑閮ㄩ棬鏉冮檺
         if (org.springframework.util.CollectionUtils.isEmpty(patMedReq.getDeptcodeList())) {
-            Long userId = SecurityUtils.getUserId();
-            List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(userId);
-            List<String> deptCode = new ArrayList<>();
-            for (SysDept sysDept : sysDepts) {
-                deptCode.add(sysDept.getDeptId().toString());
-            }
-            patMedReq.setDeptcodeList(deptCode);
-            patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
+//            Long userId = SecurityUtils.getUserId();
+//            List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(userId);
+//            List<String> deptCode = new ArrayList<>();
+//            for (SysDept sysDept : sysDepts) {
+//                deptCode.add(sysDept.getDeptId().toString());
+//            }
+//            patMedReq.setDeptcodeList(deptCode);
+//            patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
         }
+        patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
         return patMedRes;
     }
 
@@ -254,8 +261,7 @@
         }
 
         //鏍规嵁鎮h�呮墍鍦ㄧ梾鍖猴紝鑾峰彇璇ョ梾鍖虹殑闀挎湡浠诲姟,鏂板崕鍖婚櫌鍙互鍏堜笉鐢ㄦ牴鎹梾鍖哄拰鐤剧梾鏉ュ仛
-        if (visitHosp != 1) {
-
+        if (active.equals("xh")) {
             PatMedInhosp pmbq = new PatMedInhosp();
             //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁
             pmbq.setWardcheckFlag("0");
@@ -537,14 +543,28 @@
         st.setTaskid(taskid);
         st.setSendState(2L);
         List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
-        if (CollectionUtils.isEmpty(serviceTasks)) {
+        if (CollectionUtils.isEmpty(serviceTasks) && type == 1) {
             log.info("璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
             patMedInhosp1.setDeptcheckFlag("2");
-            patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
+            patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯闄㈢瀹ら暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
+            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            return;
+        } else if (CollectionUtils.isEmpty(serviceTasks) && type == 2) {
+            patMedInhosp1.setWardcheckFlag("2");
+            patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯闄㈢梾鍖洪暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
+            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            return;
+        } else if (CollectionUtils.isEmpty(serviceTasks) && type == 3) {
+            patMedInhosp1.setDiagcheckFlag("2");
+            patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯柧鐥呴暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
             patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
             return;
         }
         ServiceTask serviceTask = serviceTasks.get(0);
+
+        if (Objects.isNull(patMedInhosp1.getEndtime())) {
+            return;
+        }
         //灏佽serviceSubtask
         ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp1, patArchive);
         if (type != 2) {
@@ -606,6 +626,8 @@
                         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
                         //閲嶆柊鏂板瀛愪换鍔�
                         i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+                        //杩欓噷闇�瑕佸叏澶辫触
+                        addServiceSubtaskPreachform(serviceSubtask, "5");
 
                     }
                 }
@@ -614,7 +636,6 @@
                     serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
                     serviceSubtask.setSendstate(4L);
                     serviceSubtask.setResult("error");
-//                    serviceSubtask.setFinishtime(new Date());
                 }
                 serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                 serviceSubtask.setCreateTime(new Date());
@@ -625,12 +646,11 @@
                 serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
                 serviceSubtask.setSendstate(4L);
                 serviceSubtask.setResult("error");
-//                serviceSubtask.setFinishtime(new Date());
-
             }
             serviceSubtask.setCreateBy(serviceTask.getCreateBy());
             serviceSubtask.setCreateTime(new Date());
             i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+            addServiceSubtaskPreachform(serviceSubtask, null);
         }
         if (i == 1) {
             //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛�
@@ -653,6 +673,36 @@
             patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
         }
     }
+
+    private Integer addServiceSubtaskPreachform(ServiceSubtask serviceSubtask, String sendstate) {
+        //灏唒reachform鐨刯son瀵硅薄锛屾斁鍒發ist闆嗗悎涓�
+        String preachform = serviceSubtask.getPreachform();
+        ObjectMapper objectMapper = new ObjectMapper();
+        if (org.apache.commons.lang3.StringUtils.isNotEmpty(preachform)) {
+            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = null;
+            try {
+                serviceSubtaskPreachformList = objectMapper.readValue(preachform, new TypeReference<List<ServiceSubtaskPreachform>>() {
+                });
+            } catch (JsonProcessingException e) {
+                log.error("preachform杞琇ist<ServiceSubtaskPreachform>鎶ラ敊浜嗭細{}", e.getMessage());
+            }
+            for (ServiceSubtaskPreachform serviceSubtaskPreachform : serviceSubtaskPreachformList) {
+                serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+                serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+                //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
+                serviceSubtaskPreachform.setSendstate("1");
+                if (StringUtils.isNotEmpty(sendstate)) serviceSubtaskPreachform.setSendstate(sendstate);
+
+                serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
+                return serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+
+            }
+
+        }
+
+        return 0;
+    }
+
 
     //灏佽serviceSubtask
     private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive) {
@@ -679,6 +729,8 @@
         serviceSubtask.setSex(patArchive.getSex());
         serviceSubtask.setAge(patArchive.getAge());
         serviceSubtask.setSendstate(2L);
+        serviceSubtask.setManagementDoctor(patMedInhosp1.getManagementDoctor());
+        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getManagementDoctorCode());
         serviceSubtask.setStarttime(patMedInhosp1.getStarttime());
         serviceSubtask.setEndtime(patMedInhosp1.getEndtime());
         serviceSubtask.setServiceType(serviceTask.getServiceType());
@@ -693,22 +745,50 @@
         serviceSubtask.setUpdateTime(new Date());
         //璁剧疆鍙戦�佹椂闂�
         if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);
-        Date newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());
+        Date newDate = null;
+        if (!Objects.isNull(patMedInhosp1.getEndtime())) {
+            newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());
+        } else {
+            //濡傛灉鍑洪櫌鏃堕棿涓虹┖锛屽垯杩斿洖涓�涓柊瀵硅薄
+            return new ServiceSubtask();
+        }
         serviceSubtask.setLongSendTime(newDate);
         serviceSubtask.setVisitTime(newDate);
+        //濡傛灉鏄�氱煡鐨勮瘽锛岄渶瑕佹彁鍓嶅嚑澶╁皢閫氳繃鐭俊鍙戝嚭鍘伙紙鍏蜂綋鍑犲ぉ锛岃繖涓彲浠ラ厤缃湪sys_conf琛ㄤ腑锛�
+        if ("3".equals(serviceTask.getType())) {
+            serviceSubtask.setVisitTime(minusDay(newDate, 2));
+        }
+
+
         //鎮h�呭彂閫佹椂闂�
         if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
-//            log.error("serviceSubtask99999999鐨勫�间负锛歿}",serviceSubtask);
             String remark = patArchive.getNotrequiredreason();
             serviceSubtask.setRemark(remark);
             serviceSubtask.setResult("error");
-//            serviceSubtask.setFinishtime(new Date());
             //涓嶆墽琛�
             serviceSubtask.setSendstate(4L);
         }
         return serviceSubtask;
     }
 
+    /**
+     * 鍑忓幓鐩稿簲澶╂暟
+     *
+     * @param originalDate
+     * @param day
+     * @return
+     */
+    public Date minusDay(Date originalDate, Integer day) {
+        // 1. 灏� Date 杞崲涓� Instant
+        Instant instant = originalDate.toInstant();
+
+        // 2. 鍦� Instant 涓婂噺鍘�2澶�
+        Instant twoDaysAgoInstant = instant.minus(2, ChronoUnit.DAYS);
+
+        // 3. 灏嗚绠楀悗鐨� Instant 杞洖 Date
+        return Date.from(twoDaysAgoInstant);
+    }
+
     //澶勭悊鍏ラ櫌淇℃伅
     private void dealInHospInfo(List<PatMedInhosp> patMedInhospList) {
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {

--
Gitblit v1.9.3