From 0c621621889c90a119e2ff9e41c4f5528f395f7e Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 16 五月 2025 16:04:18 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java |  200 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 191 insertions(+), 9 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 50cd264..29c84e4 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -1,21 +1,18 @@
 package com.smartor.service.impl;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysUserDept;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.smartor.domain.PatMedReq;
-import com.smartor.domain.PatMedRes;
-import com.smartor.mapper.SysUserDeptMapper;
+import com.ruoyi.common.utils.StringUtils;
+import com.smartor.domain.*;
+import com.smartor.mapper.*;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.PatMedOuthospMapper;
-import com.smartor.domain.PatMedOuthosp;
 import com.smartor.service.IPatMedOuthospService;
 import org.springframework.util.CollectionUtils;
 
@@ -25,6 +22,7 @@
  * @author smartor
  * @date 2023-03-04
  */
+@Slf4j
 @Service
 public class PatMedOuthospServiceImpl implements IPatMedOuthospService {
     @Autowired
@@ -32,6 +30,18 @@
 
     @Autowired
     private SysUserDeptMapper sysUserDeptMapper;
+
+    @Autowired
+    private ServiceSubtaskMapper serviceSubtaskMapper;
+
+    @Autowired
+    private ServiceTaskMapper serviceTaskMapper;
+
+    @Autowired
+    private ServiceTaskdiagMapper serviceTaskdiagMapper;
+
+    @Autowired
+    private PatArchiveMapper patArchiveMapper;
 
 
     /**
@@ -127,4 +137,176 @@
         }
         return patMedOuthosps.get(0);
     }
+
+    /**
+     * 闂ㄨ瘖鐥呬汉淇℃伅澶勭悊
+     *
+     * @return
+     */
+    @Override
+    public Integer dealOutpatientInfo() {
+        PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
+        patMedOuthosp.setDiagcheckFlag("0");
+        List<PatMedOuthosp> patMedOuthosps = selectPatMedOuthospList(patMedOuthosp);
+        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {
+            // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔�
+            ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
+            serviceTaskdiag.setLongtask(1L);
+            serviceTaskdiag.setIcd10code(patMedOuthosp1.getIcd10code());
+            List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);
+            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid());
+            //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
+            if (org.apache.commons.collections4.CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {
+                patMedOuthosp1.setDiagcheckFlag("2");
+                patMedOuthosp1.setRemark("閫氳繃icd10,娌℃湁鎵惧埌闅忚浠诲姟ID");
+                patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp1);
+            } else {
+                for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {
+                    writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedOuthosp1, patArchive);
+                }
+            }
+
+        }
+        return 1;
+    }
+
+    private void writeInSubTask(Long taskid, Boolean check, PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
+
+        ServiceTask st = new ServiceTask();
+        st.setTaskid(taskid);
+        st.setSendState(2L);
+        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(serviceTasks)) {
+            log.error("璇ユ偅鑰呯柧鐥呴殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
+            patMedOuthosp.setDiagcheckFlag("2");
+            patMedOuthosp.setRemark("璇ユ偅鑰呯柧鐥呴殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
+            patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp);
+            return;
+        }
+        ServiceTask serviceTask = serviceTasks.get(0);
+        //灏佽serviceSubtask
+        ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedOuthosp, patArchive);
+        Integer i = 0;
+        //鍏堝垽鏂竴涓嬶紝鏄惁闇�瑕佹牎楠�
+        if (check) {
+            //鍦ㄦ柊澧炰箣鍓嶏紝鍏堥�氳繃鎮h�匢D锛宻endstate=2鏌ヨ涓�涓嬶紝鍦ㄦ墍鏈夐暱鏈熶换鍔′腑锛屾槸涓嶆槸杩樻湁璇ユ偅鑰呭緟鎵ц鐨勪换鍔★紝鏈夌殑璇�,姣旇緝涔嬪墠鐨別ndtime鏄惁灏忎簬褰撳墠鐨別ndtaime,濡傛灉涔嬪墠鐨勫皬浜庣幇鍦ㄧ殑锛屽垯鐩存帴灏嗕箣鍓嶇殑鍋滄帀锛堝師鍥犲啀鍏ラ櫌锛�
+            ServiceSubtaskVO subtask = new ServiceSubtaskVO();
+            subtask.setPatid(patArchive.getId());
+            subtask.setSendstate(2L);
+            subtask.setTaskid(taskid);
+            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);
+            log.error("璇ユ偅鑰呭緟鎵ц鐨勪换鍔�:{}", selectServiceSubtaskList);
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) {
+                for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {
+                    if (Objects.isNull(serviceSubtask1.getLongSendTime())) {
+                        //涓嶆槸闀挎湡浠诲姟锛屼笉澶勭悊
+                        continue;
+                    }
+
+                    //灏嗕箣鍓嶇殑鍋滄帀
+                    serviceSubtask1.setSendstate(4L);
+                    serviceSubtask1.setRemark("鐤剧梾鎮h�呭啀鍏ラ櫌");
+                    serviceSubtask1.setResult("error");
+                    serviceSubtask1.setFinishtime(new Date());
+                    serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
+                    //閲嶆柊鏂板瀛愪换鍔�
+                    i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+
+                }
+            } else {
+                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
+                    serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
+                    serviceSubtask.setSendstate(4L);
+                    serviceSubtask.setResult("error");
+                    serviceSubtask.setFinishtime(new Date());
+                }
+                serviceSubtask.setCreateBy(serviceTask.getCreateBy());
+                serviceSubtask.setCreateTime(new Date());
+                i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+            }
+        } else {
+            if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
+                serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
+                serviceSubtask.setSendstate(4L);
+                serviceSubtask.setResult("error");
+                serviceSubtask.setFinishtime(new Date());
+
+            }
+            serviceSubtask.setCreateBy(serviceTask.getCreateBy());
+            serviceSubtask.setCreateTime(new Date());
+            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+        }
+        if (i == 1) {
+            //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛�
+            PatMedOuthosp patMedOuthosp1 = new PatMedOuthosp();
+            patMedOuthosp1.setId(patMedOuthosp.getId());
+            patMedOuthosp1.setDiagcheckFlag("1");
+            patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp1);
+        } else {
+            //鐢熸垚瀛愪换鍔″け璐ワ紝
+            log.error("鐢熸垚瀛愪换鍔″け璐erviceSubtask涓猴細{}", serviceSubtask);
+            PatMedOuthosp pmo = new PatMedOuthosp();
+            pmo.setId(patMedOuthosp.getId());
+            pmo.setDiagcheckFlag("2");
+            pmo.setRemark("鐢熸垚瀛愪换鍔″け璐�");
+            patMedOuthospMapper.updatePatMedOuthosp(pmo);
+        }
+    }
+
+    //灏佽serviceSubtask
+    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
+        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
+        serviceSubtask.setTaskid(serviceTask.getTaskid());
+        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
+            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
+        serviceSubtask.setDrcode(patMedOuthosp.getDrcode());
+        serviceSubtask.setDrname(patMedOuthosp.getDrname());
+        serviceSubtask.setDeptcode(patMedOuthosp.getDeptcode());
+        serviceSubtask.setDeptname(patMedOuthosp.getDeptname());
+        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
+        serviceSubtask.setTemplatename(serviceTask.getTemplatename());
+        serviceSubtask.setPatid(patArchive.getId());
+        serviceSubtask.setSendname(patArchive.getName());
+        serviceSubtask.setSfzh(patArchive.getIdcardno());
+        serviceSubtask.setLeavediagname(patMedOuthosp.getDiagname());
+        serviceSubtask.setLeaveicd10code(patMedOuthosp.getIcd10code());
+        serviceSubtask.setSfzh(patArchive.getIdcardno());
+        serviceSubtask.setPhone(patArchive.getTelcode());
+        if (StringUtils.isBlank(patArchive.getTelcode())) serviceSubtask.setPhone(patArchive.getRelativetelcode());
+        serviceSubtask.setSex(patArchive.getSex());
+        serviceSubtask.setAge(patArchive.getAge());
+        serviceSubtask.setSendstate(2L);
+        serviceSubtask.setServiceType(serviceTask.getServiceType());
+        serviceSubtask.setPreachform(serviceTask.getPreachform());
+        serviceSubtask.setHospType("1");
+        serviceSubtask.setCreateTime(new Date());
+        serviceSubtask.setUpdateTime(new Date());
+        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
+        serviceSubtask.setUpdateTime(new Date());
+        //璁剧疆鍙戦�佹椂闂�
+        if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);
+        Date newDate = addDays(patMedOuthosp.getAdmitdate(), serviceTask.getSendDay().intValue());
+        serviceSubtask.setLongSendTime(newDate);
+        //鎮h�呭彂閫佹椂闂�
+        if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
+            String remark = patArchive.getNotrequiredreason();
+            serviceSubtask.setRemark(remark);
+            serviceSubtask.setResult("error");
+            serviceSubtask.setFinishtime(new Date());
+            //涓嶆墽琛�
+            serviceSubtask.setSendstate(4L);
+        }
+        return serviceSubtask;
+    }
+
+    private Date addDays(Date date, Integer days) {
+        if (days == null) {
+            days = 1;
+        }
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, days);
+        return calendar.getTime();
+    }
 }

--
Gitblit v1.9.3