From 85e694b83492fa8c44a2256e9b4a97dbf0e20a0d Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 14 九月 2026 10:48:05 +0800
Subject: [PATCH] 【丽水】报错处理

---
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java |  110 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 70 insertions(+), 40 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 dc25230..7de4f20 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -300,7 +300,7 @@
                 } catch (Exception e) {
                     log.error("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                     patMedInhosp1.setInDeptcheckFlag("2");
-                    patMedInhosp1.setLongTaskReason("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡锛�" + e.getMessage());
+                    patMedInhosp1.setLongTaskReason("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡");
                     patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                 }
             }
@@ -727,7 +727,7 @@
                             //鍐嶅叆闄㈤�昏緫
                             //鏅畞 鍑洪櫌棣栨锛�7澶╋級闅忚涓�瀹氳鍋�
                             boolean firstVisit = false;
-                            if (orgId.equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
+                            if (orgId.equals("47255004333112711A1001")) {
                                 firstVisit = true;
                             }
                             if (!firstVisit) {
@@ -865,8 +865,8 @@
         if (CollectionUtils.isEmpty(serviceTasks)) {
             log.info("璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓猴細{}", taskid);
             patMedOperationItem.setOpercheckFlag("2");
-            patMedOperationItem.setLongTaskReason(longTaskReason + " & 璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓�:" + taskid);
-            patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
+            patMedOperationItem.setLongTaskReason(" & 璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓�:" + taskid +";");
+            patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
             return;
         } else {
             serviceTask = serviceTasks.get(0);
@@ -897,7 +897,7 @@
 
         //灏佽serviceSubtask
         ServiceSubtask serviceSubtask = boxedServiceSubtaskForOp(serviceTask, patMedInhospList.get(0), patMedOperationItem, patArchive, config);
-        if (ObjectUtils.isEmpty(serviceSubtask)) {
+        if (ObjectUtils.isEmpty(serviceSubtask) || Objects.isNull(serviceSubtask.getTaskid())) {
             return;
         }
         if (StringUtils.isNotEmpty(patMedOperationItem.getLeaveldeptcode())) {
@@ -971,17 +971,20 @@
                 PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
                 patMedOperationItem2.setId(patMedOperationItem.getId());
                 patMedOperationItem2.setOpercheckFlag("2");
-                patMedOperationItem2.setRemark("鐢熸垚瀛愪换鍔″け璐� 4");
+                patMedOperationItem2.setLongTaskReason("鐢熸垚瀛愪换鍔″け璐� 4;");
+                patMedOperationItem2.setUpdateTime(new Date());
                 patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
             }
         } catch (Exception e) {
             //鍑洪敊鍥炴粴浜嬪姟
 
-            log.info("鐢熸垚瀛愪换鍔℃姤閿欏洖婊歴serviceSubtask鐨則askid涓猴細{},patid涓猴細{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid());
+            log.error("鐢熸垚瀛愪换鍔℃姤閿欏洖婊歴serviceSubtask鐨則askid涓猴細{},patid涓猴細{},鎵嬫湳璇︽儏ID涓猴細{}",
+                    serviceSubtask.getTaskid(), serviceSubtask.getPatid(), patMedOperationItem.getId(), e);
             PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
             patMedOperationItem2.setId(patMedOperationItem.getId());
             patMedOperationItem2.setOpercheckFlag("2");
-            patMedOperationItem2.setRemark("鐢熸垚瀛愪换鍔℃姤閿欏洖婊� 4");
+            patMedOperationItem2.setUpdateTime(new Date());
+            patMedOperationItem2.setLongTaskReason("鐢熸垚瀛愪换鍔℃姤閿欏洖婊� 4;");
             patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
             e.printStackTrace();
         }
@@ -990,6 +993,10 @@
     private Integer addServiceSubtaskPreachform(ServiceSubtask serviceSubtask, String sendstate) {
         //灏唒reachformDesc鐨刯son瀵硅薄锛屾斁鍒發ist闆嗗悎涓�
         ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+        if (Objects.isNull(serviceTask)) {
+            log.error("addServiceSubtaskPreachform taskid={} 鏌ヤ笉鍒颁换鍔★紝璺宠繃preachform瀛愯〃鐢熸垚", serviceSubtask.getTaskid());
+            return 0;
+        }
         String preachformDesc = serviceTask.getPreachformDesc();
 
         ObjectMapper objectMapper = new ObjectMapper();
@@ -1000,6 +1007,11 @@
                 });
             } catch (JsonProcessingException e) {
                 log.error("preachform杞琇ist<ServiceSubtaskPreachform>鎶ラ敊浜嗭細{}", e.getMessage());
+            }
+            if (CollectionUtils.isEmpty(serviceSubtaskPreachformList)) {
+                log.error("preachformDesc瑙f瀽鍚庝负绌猴紝璺宠繃preachform瀛愯〃鐢熸垚锛宼askid涓猴細{}锛宲reachformDesc涓猴細{}",
+                        serviceSubtask.getTaskid(), preachformDesc);
+                return 0;
             }
             for (ServiceSubtaskPreachform serviceSubtaskPreachform : serviceSubtaskPreachformList) {
                 serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
@@ -1145,13 +1157,15 @@
         serviceSubtask.setTaskid(serviceTask.getTaskid());
         if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
             serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
-        serviceSubtask.setNurseId(patMedOperationItem.getNurseId());
-        serviceSubtask.setNurseName(patMedOperationItem.getNurseName());
-//        serviceSubtask.setInhospid(patMedInhosp.getInhospid());
-        serviceSubtask.setDrcode(patMedOperationItem.getDrcode());
-        serviceSubtask.setDrname(patMedOperationItem.getDrname());
-        serviceSubtask.setDeptcode(patMedOperationItem.getDeptcode());
-        serviceSubtask.setDeptname(patMedOperationItem.getDeptname());
+        serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
+        serviceSubtask.setNurseName(patMedInhosp1.getNurseName());
+        serviceSubtask.setInhospid(patMedInhosp1.getInhospid());
+        serviceSubtask.setDrcode(patMedInhosp1.getDrcode());
+        serviceSubtask.setDrname(patMedInhosp1.getDrname());
+        serviceSubtask.setDeptcode(patMedInhosp1.getLeaveldeptcode());
+        serviceSubtask.setDeptname(patMedInhosp1.getLeaveldeptname());
+        serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
+        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
 
         serviceSubtask.setTemplateid(serviceTask.getTemplateid());
         serviceSubtask.setTemplatename(serviceTask.getTemplatename());
@@ -1163,19 +1177,18 @@
         serviceSubtask.setSex(patArchive.getSex());
         serviceSubtask.setAge(patArchive.getAge());
         serviceSubtask.setSendstate(2L);
-        serviceSubtask.setManagementDoctor(patMedOperationItem.getDrname());
-        serviceSubtask.setManagementDoctorCode(patMedOperationItem.getDrcode());
-//        serviceSubtask.setStarttime(patMedInhosp.getStarttime());
-//        serviceSubtask.setEndtime(patMedInhosp.getEndtime());
+        serviceSubtask.setManagementDoctor(patMedInhosp1.getDrname());
+        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getDrcode());
+
+        serviceSubtask.setStarttime(patMedInhosp1.getStarttime());
+        serviceSubtask.setEndtime(patMedInhosp1.getEndtime());
 
         serviceSubtask.setServiceType(serviceTask.getServiceType());
         serviceSubtask.setPreachform(serviceTask.getPreachform());
         serviceSubtask.setHospType("2");
         serviceSubtask.setCreateTime(new Date());
         serviceSubtask.setUpdateTime(new Date());
-        serviceSubtask.setCreateBy(patMedOperationItem.getNurseName());
-//        serviceSubtask.setLeavehospitaldistrictcode(patArchive.getLeavehospitaldistrictcode());
-//        serviceSubtask.setLeavehospitaldistrictname(patArchive.getLeavehospitaldistrictname());
+        serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());
         serviceSubtask.setOperationItemId(patMedOperationItem.getId());
         serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
         serviceSubtask.setUpdateTime(new Date());
@@ -1186,11 +1199,14 @@
         if (!Objects.isNull(patMedInhosp1.getEndtime())) {
             newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());
         } else {
-            patMedInhosp1.setDeptcheckFlag("2");
-            patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鍑洪櫌璁板綍ID涓�:" + patMedInhosp1.getInhospid());
-            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            patMedOperationItem.setOpercheckFlag("2");
+            patMedOperationItem.setLongTaskReason("璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鎵嬫湳璇︽儏ID涓�:" + patMedOperationItem.getId() + ";");
+            patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
+//            patMedInhosp1.setDeptcheckFlag("2");
+//            patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鍑洪櫌璁板綍ID涓�:" + patMedInhosp1.getInhospid());
+//            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
             //濡傛灉鍑洪櫌鏃堕棿涓虹┖锛屽垯杩斿洖涓�涓柊瀵硅薄
-            return new ServiceSubtask();
+            return null;
         }
         serviceSubtask.setLongSendTime(newDate);
         serviceSubtask.setVisitTime(newDate);
@@ -1247,7 +1263,7 @@
                         }
                         //鏅畞 鍑洪櫌棣栨锛�7澶╋級闅忚涓�瀹氳鍋�
                         boolean firstVisit = false;
-                        if (serviceSubtask1.getOrgid().equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
+                        if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")) {
                             firstVisit = true;
                         }
                         if (!firstVisit) {
@@ -1291,34 +1307,48 @@
                     continue;
                 }
                 // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔�
-                ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
-                serviceTaskoper.setLongtask(1L);
-                serviceTaskoper.setOrgid(opItem.getOrgid());
-                serviceTaskoper.setOplevelcode(opItem.getOplevelcode());
-
-                //鏍规嵁绉戝銆佺梾鍖鸿繃婊�
+                List<ServiceTaskoper> serviceTaskopersDept = new ArrayList<>();
                 if(StringUtils.isNotEmpty(opItem.getLeaveldeptcode())){
-                    serviceTaskoper.setDeptCode(opItem.getLeaveldeptcode());
-                }else {
-                    serviceTaskoper.setWardCode(opItem.getLeavehospitaldistrictcode());
+                    ServiceTaskoper serviceTaskoper1 = new ServiceTaskoper();
+                    serviceTaskoper1.setLongtask(1L);
+                    serviceTaskoper1.setOrgid(opItem.getOrgid());
+                    serviceTaskoper1.setOplevelcode(opItem.getOplevelcode());
+                    serviceTaskoper1.setDeptCode(opItem.getLeaveldeptcode());
+                    serviceTaskopersDept = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper1);
                 }
 
-                List<ServiceTaskoper> serviceTaskopers = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper);
+
+                List<ServiceTaskoper> serviceTaskopersWard = new ArrayList<>();
+                if(StringUtils.isNotEmpty(opItem.getLeavehospitaldistrictcode())){
+                    ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();
+                    serviceTaskoper2.setLongtask(1L);
+                    serviceTaskoper2.setOrgid(opItem.getOrgid());
+                    serviceTaskoper2.setOplevelcode(opItem.getOplevelcode());
+                    serviceTaskoper2.setWardCode(opItem.getLeavehospitaldistrictcode());
+                    serviceTaskopersWard = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper2);
+                }
+
+
+                List<ServiceTaskoper> serviceTaskopers = new ArrayList<>();
+                serviceTaskopers.addAll(serviceTaskopersDept);
+                serviceTaskopers.addAll(serviceTaskopersWard);
                 //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
                 if (CollectionUtils.isEmpty(serviceTaskopers) || serviceTaskopers.size() == 0) {
                     PatMedOperationItem patMedOperationItem = patMedOperationItemMapper.selectPatMedOperationItemById(opItem.getId());
                     patMedOperationItem.setOpercheckFlag("2");
-                    patMedOperationItem.setLongTaskReason(patMedOperationItem.getLongTaskReason() + "鎵�鎮g殑鎵嬫湳鏈厤缃暱鏈熶换鍔�;");
+                    patMedOperationItem.setLongTaskReason("鎵�鎮g殑鎵嬫湳鏈厤缃暱鏈熶换鍔�;");
+                    patMedOperationItem.setUpdateTime(new Date());
                     patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
                 } else {
-                    for (ServiceTaskoper serviceTaskoper1 : serviceTaskopers) {
-                        writeInSubTaskForOp(serviceTaskoper1.getTaskId(), true, opItem, config);
+                    for (ServiceTaskoper serviceTaskoper : serviceTaskopers) {
+                        writeInSubTaskForOp(serviceTaskoper.getTaskId(), true, opItem, config);
                     }
                 }
 
             } catch (Exception e) {
                 e.printStackTrace();
                 log.error("浜哄憳鎵嬫湳澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
+                opItem.setUpdateTime(new Date());
                 opItem.setOpercheckFlag("2");
                 opItem.setLongTaskReason("浜哄憳鎵嬫湳澶勭悊寮傚父");
                 patMedOperationItemMapper.updatePatMedOperationItem(opItem);

--
Gitblit v1.9.3