From e98752fd82d699c3b53f1f4e9e9e10281172d3f3 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期四, 03 九月 2026 11:42:28 +0800
Subject: [PATCH] 【丽水】手术撤销

---
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java |  148 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 144 insertions(+), 4 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
index bf908b7..226d9b9 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -51,6 +51,8 @@
 
     @Autowired
     private PatArchiveMapper patArchiveMapper;
+    @Autowired
+    private ServiceTaskmedicalMapper serviceTaskmedicalMapper;
 
 
     /**
@@ -76,8 +78,8 @@
         PatMedOuthospQueryReq patMedOuthospQueryReq = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatMedOuthospQueryReq.class);
         patMedOuthospQueryReq.setBeginAdmitdate(patMedOuthosp.getBeginTime());
         patMedOuthospQueryReq.setEndAdmitdate(patMedOuthosp.getEndTime());
-        if(!CollectionUtils.isEmpty(patMedOuthosp.getDeptcodes())) {
-            String result = String.join(",",   patMedOuthosp.getDeptcodes());
+        if (!CollectionUtils.isEmpty(patMedOuthosp.getDeptcodes())) {
+            String result = String.join(",", patMedOuthosp.getDeptcodes());
             patMedOuthospQueryReq.setDeptcode(result);
         }
 
@@ -85,7 +87,7 @@
         if (patMedOuthosp.getPageNum() != null) {
             for (PatMedOuthosp patMedOuthosp1 : patMedOuthospQueryResps) {
                 PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid());
-                if (patArchive.getBirthdate() != null) {
+                if (ObjectUtils.isNotEmpty(patArchive) && patArchive.getBirthdate() != null) {
                     Map<String, String> map = calculateAge(patArchive.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
                     patArchive.setAge(ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
                     patArchive.setAgeUnit(map.get("ageUnit"));
@@ -309,7 +311,7 @@
         PatMedOuthospQueryReq req = new PatMedOuthospQueryReq();
         String deptcodes = CollectionUtils.isEmpty(patMedReq.getDeptcodeList()) ? null : String.join(",", patMedReq.getDeptcodeList());
         req.setBeginAdmitdate(patMedReq.getStartDate());
-        req.setEndAdmitdate(DateUtils.addDays(patMedReq.getEndDate(),1));
+        req.setEndAdmitdate(DateUtils.addDays(patMedReq.getEndDate(), 1));
         req.setDeptcode(deptcodes);
         req.setOrgid(patMedReq.getOrgid());
 //        req.setCampusid(patMedReq.getCampusid());
@@ -510,6 +512,7 @@
         serviceSubtask.setVisitDeptCode(patMedOuthosp.getDeptcode());
         serviceSubtask.setVisitDeptName(patMedOuthosp.getDeptname());
         serviceSubtask.setUpdateTime(new Date());
+        serviceSubtask.setAdmindate(patMedOuthosp.getAdmitdate());
         //璁剧疆鍙戦�佹椂闂�
         if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);
         Date newDate = addDays(patMedOuthosp.getAdmitdate(), serviceTask.getSendDay().intValue());
@@ -531,6 +534,143 @@
         return serviceSubtask;
     }
 
+    /**
+     *
+     * @param patMedOuthosp
+     * @param visitTimeNum
+     * @return
+     */
+    @Override
+    public Integer dealPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum){
+        Integer num = 0;
+        ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
+        serviceSubtask.setInhospid(patMedOuthosp.getId());
+        serviceSubtask.setServiceType("3");
+        serviceSubtask.setVisitCount(1);
+        List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
+        if(CollectionUtils.isEmpty(serviceSubtasks)){
+            num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum);
+        }else {
+            num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum);
+        }
+        return num;
+    }
+
+    /**
+     * 闂ㄨ瘖棣栨闅忚
+     * @param patMedOuthosp
+     * @return
+     */
+    @Override
+    public Integer followUpByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum) {
+//        if(ObjectUtils.isEmpty(patMedOuthosp.getFudate())){
+            Date adminDate = patMedOuthosp.getAdmitdate();
+            Date fuDate = addDays(adminDate, visitTimeNum);
+            patMedOuthosp.setFudate(fuDate);
+//        }
+
+        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp.getPatid());
+
+        //鏍规嵁鎮h�呯瀹わ紝鑾峰彇璇ョ柧鐥呯殑闀挎湡浠诲姟
+        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+        serviceTaskdept.setLongtask(1L);
+        serviceTaskdept.setDeptCode(patMedOuthosp.getDeptcode());
+        serviceTaskdept.setServiceType("3");
+        List<ServiceTaskdept> serviceTaskdeptList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
+        if (CollectionUtils.isEmpty(serviceTaskdeptList) || serviceTaskdeptList.size() == 0) {
+            patMedOuthosp.setDeptcheckFlag("2");
+            patMedOuthosp.setRemark("閫氳繃閮ㄩ棬,娌℃湁鎵惧埌闂ㄨ瘖闅忚浠诲姟ID");
+            updatePatMedOuthosp(patMedOuthosp);
+        } else {
+            for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {
+                writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedOuthosp, patArchive, 1);
+            }
+        }
+
+        // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔�
+//        ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
+//        serviceTaskdiag.setLongtask(1L);
+//        serviceTaskdiag.setIcd10code(patMedOuthosp.getIcd10code());
+//        List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);
+//        //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
+//        if (org.apache.commons.collections4.CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {
+//            patMedOuthosp.setDiagcheckFlag("2");
+//            patMedOuthosp.setRemark("閫氳繃icd10,娌℃湁鎵惧埌闂ㄨ瘖闅忚浠诲姟ID");
+//            updatePatMedOuthosp(patMedOuthosp);
+//        } else {
+//            for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {
+//                writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedOuthosp, patArchive, 2);
+//            }
+//        }
+        return 1;
+    }
+    /**
+     * 闂ㄨ瘖鍐嶆闅忚
+     * @param patMedOuthosp
+     * @return
+     */
+    @Override
+    public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum) {
+        Date adminDate = patMedOuthosp.getAdmitdate();
+        Date newDate = addDays(adminDate, visitTimeNum);
+
+        Integer i = 0;
+        String deptcode = patMedOuthosp.getDeptcode();
+        Long patid = patMedOuthosp.getPatid();
+        //鏌ョ湅鏈夋棤杩涜涓殑浠诲姟
+        ServiceSubtaskEntity serviceSubtaskEntity0 = new ServiceSubtaskEntity();
+        serviceSubtaskEntity0.setOrgid(patMedOuthosp.getOrgid());
+        serviceSubtaskEntity0.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 7L)));
+        serviceSubtaskEntity0.setPatid(patid);
+        serviceSubtaskEntity0.setDeptcode(deptcode);
+        serviceSubtaskEntity0.setSort(0);
+        List<ServiceSubtask> serviceSubtaskList0 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity0);
+        if (!CollectionUtils.isEmpty(serviceSubtaskList0)) {
+            ServiceSubtask serviceSubtask0 = serviceSubtaskList0.get(0);
+            serviceSubtask0.setSendstate(6L);
+            serviceSubtask0.setUpdateTime(new Date());
+            serviceSubtask0.setFinishtime(adminDate);
+            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask0);
+
+            ServiceSubtask serviceSubtask1 = DtoConversionUtils.sourceToTarget(serviceSubtask0, ServiceSubtask.class);
+            serviceSubtask1.setId(null);
+            serviceSubtask1.setSendstate(2L);
+            serviceSubtask1.setUpid(serviceSubtask0.getId().intValue());
+            serviceSubtask1.setVisitCount(serviceSubtask0.getVisitCount() + 1);
+            serviceSubtask1.setVisitType(serviceSubtask0.getVisitType());
+            serviceSubtask1.setVisitDeptCode(serviceSubtask0.getVisitDeptCode());
+            serviceSubtask1.setVisitDeptName(serviceSubtask0.getVisitDeptName());
+            serviceSubtask1.setCreateTime(new Date());
+            serviceSubtask1.setUpdateTime(new Date());
+            serviceSubtask1.setFinishtime(null);
+            serviceSubtask1.setAdmindate(adminDate);
+
+            serviceSubtask1.setVisitTime(newDate);
+            serviceSubtask1.setLongSendTime(newDate);
+            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask1);
+        } else {
+            //鏌ョ湅宸插畬鎴愮殑浠诲姟
+//            ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
+//            serviceSubtaskEntity0.setOrgid(patMedOuthosp.getOrgid());
+//            serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
+//            serviceSubtaskEntity.setPatid(patid);
+//            serviceSubtaskEntity.setDeptcode(deptcode);
+//            serviceSubtaskEntity.setSort(0);
+//            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity);
+//            if(!CollectionUtils.isEmpty(serviceSubtaskList)){
+//                ServiceSubtask serviceSubtask = serviceSubtaskList.get(0);
+//                serviceSubtask.setSendstate(2L);
+//                serviceSubtask.setCreateTime(new Date());
+//                serviceSubtask.setUpdateTime(new Date());
+//
+//                serviceSubtask.setVisitTime(newDate);
+//                serviceSubtask.setLongSendTime(newDate);
+//                i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+//            }
+        }
+        return i;
+    }
+
     private Date addDays(Date date, Integer days) {
         if (days == null) {
             days = 1;

--
Gitblit v1.9.3