From 919038323f4148c1bc5bf1962903e2f865dd90be Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 10 十一月 2026 11:17:38 +0800
Subject: [PATCH] 代码提交
---
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java | 1152 ++++++++++++++++++++++----------------------------------
1 files changed, 457 insertions(+), 695 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 e307373..6830191 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -1,17 +1,20 @@
package com.smartor.service.impl;
+import com.ruoyi.othervisit.api.OtherVisitFacade;
+import com.ruoyi.inhospvisit.api.InhospVisitFacade;
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.core.service.dto.PatMedReq;
+import com.ruoyi.common.core.service.dto.PatMedRes;
import com.ruoyi.common.core.service.IConfigService;
+import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
-import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
-import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.domain.*;
-import com.smartor.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.inhospvisit.domain.PatMedInhospDTO;
+import com.smartor.domain.DTO.ManualVisitDTO;
import com.smartor.mapper.*;
import com.smartor.service.IPatMedInhospService;
import lombok.extern.slf4j.Slf4j;
@@ -19,14 +22,41 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
-import java.io.IOException;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
-
+import com.ruoyi.othervisit.domain.PatMedOperationItem;
+import com.ruoyi.inhospvisit.domain.PatMedInhospVO;
+import com.ruoyi.inhospvisit.domain.PatMedInhosp;
+import com.ruoyi.common.core.domain.entity.PatArchive;
+import com.ruoyi.task.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.task.domain.ServiceSubtask;
+import com.ruoyi.task.domain.ServiceTask;
+import com.ruoyi.task.domain.ServiceTaskdept;
+import com.ruoyi.task.domain.ServiceTaskdiag;
+import com.ruoyi.task.domain.ServiceTaskoper;
+import com.ruoyi.task.domain.ServiceTaskRule;
+import com.ruoyi.task.domain.ServiceTaskSchedule;
+import com.ruoyi.task.domain.ServiceTaskScheduleDetail;
+import com.ruoyi.task.mapper.ServiceSubtaskMapper;
+import com.ruoyi.task.mapper.ServiceTaskdeptMapper;
+import com.ruoyi.task.mapper.ServiceTaskdiagMapper;
+import com.ruoyi.task.mapper.ServiceTaskMapper;
+import com.ruoyi.task.mapper.ServiceTaskoperMapper;
+import com.ruoyi.task.mapper.ServiceTaskRuleMapper;
+import com.ruoyi.task.mapper.ServiceTaskScheduleDetailMapper;
+import com.ruoyi.task.mapper.ServiceTaskScheduleMapper;
+import com.ruoyi.task.domain.ServiceSubtaskPreachform;
+import com.ruoyi.task.common.ScheduleSubtaskBuilder;
+import com.ruoyi.task.mapper.ServiceSubtaskPreachformMapper;
+import com.ruoyi.patarchive.domain.PatArchiveImport;
+import com.ruoyi.patarchive.mapper.PatArchiveImportMapper;
+import com.ruoyi.patarchive.mapper.PatArchiveMapper;
/**
* 鎮h�呬綇闄㈣褰昐ervice涓氬姟灞傚鐞�
*
@@ -36,8 +66,15 @@
@Slf4j
@Service
public class PatMedInhospServiceImpl implements IPatMedInhospService {
+
@Autowired
- private PatMedInhospMapper patMedInhospMapper;
+ private InhospVisitFacade inhospVisitFacade;
+
+ /**
+ * 鎵嬫湳鏁版嵁涓�寰嬬粡 ruoyi-othervisit 鐨勯棬闈㈠彇鐢紙璺ㄦā鍧楁暟鎹闂師鍒欙級銆�
+ */
+ @Autowired
+ private OtherVisitFacade otherVisitFacade;
@Autowired
private ServiceTaskdeptMapper serviceTaskdeptMapper;
@Autowired
@@ -55,16 +92,15 @@
@Autowired
private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
@Autowired
- private PatMedOperationMapper patMedOperationMapper;
- @Autowired
- private PatMedOperationItemMapper patMedOperationItemMapper;
- @Autowired
private ServiceTaskRuleMapper serviceTaskRuleMapper;
+ /**
+ * 鍙傛暟閰嶇疆锛堝疄鐜板湪 ruoyi-system锛夛紝浜哄伐闅忚 addManualVisit 闇�瑕佸湪鏈嶅姟灞傝鍙� visit.early.day銆�
+ */
+ @Autowired
+ private IConfigService iSysConfigService;
@Value("${spring.profiles.active}")
private String active;
- @Autowired
- private IConfigService iSysConfigService;
@Autowired
private ServiceTaskScheduleMapper serviceTaskScheduleMapper;
@@ -73,21 +109,9 @@
@Autowired
private ServiceTaskScheduleDetailMapper serviceTaskScheduleDetailMapper;
-
- /**
- * 鏌ヨ鎮h�呬綇闄㈣褰�
- *
- * @param inhospid 鎮h�呬綇闄㈣褰曚富閿�
- * @return 鎮h�呬綇闄㈣褰�
- */
- @Override
- public PatMedInhosp selectPatMedInhospByInhospid(Long inhospid) {
- return patMedInhospMapper.selectPatMedInhospByInhospid(inhospid);
- }
-
@Override
public List<PatMedInhosp> selectPatMedInhosp(PatMedInhosp patMedInhosp) {
- return patMedInhospMapper.selectPatMedInhosp(patMedInhosp);
+ return inhospVisitFacade.selectPatMedInhosp(patMedInhosp);
}
/**
@@ -98,6 +122,8 @@
*/
@Override
public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) {
+ //鍏ラ櫌搴婁綅鎺掑簭鍙湪銆屽湪闄€�嶆煡璇紙cry=0锛変笅鐢熸晥锛屽叾瀹冩煡璇竴寰嬪拷鐣ワ紝淇濊瘉鍘熸湁鎺掑簭涓嶅彉
+ patMedInhosp.setBedSort(normalizeBedSort(patMedInhosp.getCry(), patMedInhosp.getBedSort()));
if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 0) {
patMedInhosp.setDeptcodeList(patMedInhosp.getLeaveldeptcodes());
patMedInhosp.setHospitaldistrictcodeList(patMedInhosp.getLeavehospitaldistrictcodes());
@@ -112,25 +138,94 @@
patMedInhosp.setInhospstate("3");
}
- List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
- for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
- String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
- patMedInhosp1.setTagname(tagname);
- }
+ List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
+ fillTagname(patMedInhospList);
return patMedInhospList;
}
- @Override
- public Map<String, Integer> queryPersonCount(PatServiceCount patServiceCount) {
- if (patServiceCount.getInterval() == 1) {
- //鍛�
- } else if (patServiceCount.getInterval() == 2) {
- //鏈�
- } else if (patServiceCount.getInterval() == 3) {
- //骞�
+ /**
+ * 鎵归噺濉厖鎮h�呮爣绛�
+ * <p>
+ * 鍘熷疄鐜版槸姣忚璋冧竴娆� getTagnameBypatid锛孲QL 寰�杩旀鏁伴殢 pageSize 绾挎�у闀匡紱
+ * 杩欓噷鎸� patid 鍘婚噸鍚庡垎鎵逛竴娆℃煡鍥烇紝缁撴灉涓庨�愯鏌ヨ瀹屽叏涓�鑷达紙鎮h�呮棤鏍囩鏃朵粛涓� null锛夈��
+ *
+ * @param patMedInhospList 寰呭~鍏呯殑浣忛櫌璁板綍锛屽厑璁镐负绌�
+ */
+ private void fillTagname(List<PatMedInhosp> patMedInhospList) {
+ if (CollectionUtils.isEmpty(patMedInhospList)) {
+ return;
+ }
+ // LinkedHashSet 鍘婚噸鍚屾椂淇濇寔椤哄簭锛岄伩鍏� IN 鍒楄〃鍑虹幇閲嶅 patid
+ Set<Long> patids = new LinkedHashSet<>();
+ for (PatMedInhosp patMedInhosp : patMedInhospList) {
+ if (patMedInhosp.getPatid() != null) {
+ patids.add(patMedInhosp.getPatid());
+ }
+ }
+ if (patids.isEmpty()) {
+ return;
}
+ Map<Long, String> tagnameMap = new HashMap<>();
+ List<Long> patidList = new ArrayList<>(patids);
+ // 鍒嗙墖锛岄槻姝� IN 鍙傛暟杩囧
+ int batchSize = 1000;
+ for (int i = 0; i < patidList.size(); i += batchSize) {
+ List<Long> batch = patidList.subList(i, Math.min(i + batchSize, patidList.size()));
+ List<Map<String, Object>> rows = inhospVisitFacade.getTagnameByPatids(batch);
+ if (CollectionUtils.isEmpty(rows)) {
+ continue;
+ }
+ for (Map<String, Object> row : rows) {
+ Object patid = row.get("patid");
+ Object tagname = row.get("tagname");
+ if (patid != null) {
+ tagnameMap.put(((Number) patid).longValue(), tagname == null ? null : tagname.toString());
+ }
+ }
+ }
+
+ for (PatMedInhosp patMedInhosp : patMedInhospList) {
+ if (patMedInhosp.getPatid() != null) {
+ patMedInhosp.setTagname(tagnameMap.get(patMedInhosp.getPatid()));
+ }
+ }
+ }
+
+ /**
+ * 褰掍竴鍖栧叆闄㈠簥浣嶆帓搴忓弬鏁�
+ * <p>
+ * asc / 1 -> asc锛堝簥浣嶆搴忥級锛宒esc / 2 -> desc锛堝簥浣嶅�掑簭锛夛紝鍏朵綑锛堝惈涓嶄紶锛�-> null锛堜笉鎺掑簭锛夈��
+ * 鍙銆屽湪闄€�嶆偅鑰呮煡璇紙cry=0锛夌敓鏁堬紝鍑洪櫌/杞绛夋煡璇㈠拷鐣ヨ鍙傛暟銆�
+ *
+ * @param cry 鍑哄叆闄㈡爣璇嗭細0鍏ラ櫌 1鍑洪櫌 2杞 3棰勫叆闄�
+ * @param bedSort 鍓嶇浼犲叆鐨勫簥浣嶆帓搴忓��
+ * @return 褰掍竴鍖栧悗鐨勬帓搴忓�硷紙asc / desc / null锛�
+ */
+ private String normalizeBedSort(Integer cry, String bedSort) {
+ if (cry == null || cry != 0 || StringUtils.isEmpty(bedSort)) return null;
+ String value = bedSort.trim().toLowerCase();
+ if ("asc".equals(value) || "1".equals(value)) return "asc";
+ if ("desc".equals(value) || "2".equals(value)) return "desc";
return null;
+ }
+
+ @Override
+ public List<PatMedInhospDTO> selectPatMedInhospByApplication(PatMedInhosp patMedInhosp) {
+ List<PatMedInhosp> patMedInhosps = selectPatMedInhospList(patMedInhosp);
+ if (!org.springframework.util.CollectionUtils.isEmpty(patMedInhosps)) {
+ return null;
+ }
+ List<PatMedInhospDTO> patMedInhospDTOList = DtoConversionUtils.sourceToTarget(patMedInhosps, PatMedInhospDTO.class);
+ for (PatMedInhospDTO pmd : patMedInhospDTOList) {
+ ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
+ serviceSubtask.setServiceType("4");
+ serviceSubtask.setInhospid(pmd.getInhospid());
+ List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
+ if (CollectionUtils.isNotEmpty(serviceSubtasks)) pmd.setFinishFlag("1");
+ }
+
+ return patMedInhospDTOList;
}
/**
@@ -140,7 +235,7 @@
* @return
*/
public List<PatMedInhosp> selectPatMedInhospListByCondition(PatMedInhospVO patMedInhospVO) {
- return patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO);
+ return inhospVisitFacade.selectPatMedInhospListByCondition(patMedInhospVO);
}
@@ -164,20 +259,6 @@
}
/**
- * 鏌ヨ鍑哄叆闄汉娆�
- *
- * @param patMedReq
- * @return
- */
- @Override
- public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq) {
- PatMedRes patMedRes = null;
- // 鑾峰彇褰撳墠鐧婚檰浜虹殑閮ㄩ棬鏉冮檺
- patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
- return patMedRes;
- }
-
- /**
* 鏂板鎮h�呬綇闄㈣褰�
*
* @param patMedInhosp 鎮h�呬綇闄㈣褰�
@@ -187,7 +268,7 @@
public int insertPatMedInhosp(PatMedInhosp patMedInhosp) {
patMedInhosp.setCreateTime(DateUtils.getNowDate());
patMedInhosp.setUpdateTime(DateUtils.getNowDate());
- return patMedInhospMapper.insertPatMedInhosp(patMedInhosp);
+ return inhospVisitFacade.insertPatMedInhosp(patMedInhosp);
}
/**
@@ -199,296 +280,8 @@
@Override
public int updatePatMedInhosp(PatMedInhosp patMedInhosp) {
patMedInhosp.setUpdateTime(DateUtils.getNowDate());
- return patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+ return inhospVisitFacade.updatePatMedInhosp(patMedInhosp);
}
-
- /**
- * 鎵归噺鍒犻櫎鎮h�呬綇闄㈣褰�
- *
- * @param inhospids 闇�瑕佸垹闄ょ殑鎮h�呬綇闄㈣褰曚富閿�
- * @return 缁撴灉
- */
- @Override
- public int deletePatMedInhospByInhospids(Long[] inhospids) {
- return patMedInhospMapper.deletePatMedInhospByInhospids(inhospids);
- }
-
- /**
- * 鍒犻櫎鎮h�呬綇闄㈣褰曚俊鎭�
- *
- * @param inhospid 鎮h�呬綇闄㈣褰曚富閿�
- * @return 缁撴灉
- */
- @Override
- public int deletePatMedInhospByInhospid(Long inhospid) {
- return patMedInhospMapper.deletePatMedInhospByInhospid(inhospid);
- }
-
- /**
- * 鍒犻櫎鎮h�呬綇闄㈣褰曚俊鎭�
- *
- * @param inhospno 鎮h�呬綇闄㈢紪鐮�
- * @return 缁撴灉
- */
- @Override
- public int deletePatMedInhospByInhospno(String inhospno) {
- return patMedInhospMapper.deletePatMedInhospByInhospno(inhospno);
- }
-
- @Override
- public int dealOutHospInfo(String config) {
- //1.鍏ラ櫌瀹f暀
- String helibrarySwitch = iSysConfigService.selectConfigByKey("in.helibrary.switch");
- if (StringUtils.isNotEmpty(helibrarySwitch) && "2".equals(helibrarySwitch)) {
- PatMedInhosp inhosp = new PatMedInhosp();
- inhosp.setInDeptcheckFlag("0");
- inhosp.setInhospstate("0");
- inhosp.setFuflag("1");
- List<PatMedInhosp> inPatMedInhosps = patMedInhospMapper.selectPatMedInhospList(inhosp);
-
- //1.1 绉戝
- for (PatMedInhosp patMedInhosp1 : inPatMedInhosps) {
- //鑾峰彇鎮h�呬俊鎭�
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
- if (Objects.isNull(patArchive)) {
- patMedInhosp1.setInDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
- continue;
- }
- try {
- //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑鍏ラ櫌闀挎湡瀹f暀浠诲姟
- ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
- serviceTaskdept.setLongtask(1L);
- serviceTaskdept.setDeptCode(patMedInhosp1.getDeptcode());
- serviceTaskdept.setDeptType("1");
- serviceTaskdept.setServiceType("17");
- serviceTaskdept.setOrgid(patMedInhosp1.getOrgid());
- List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
- //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
- if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
- patMedInhosp1.setInDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + "璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆鍏ラ櫌闀挎湡瀹f暀浠诲姟;" : "璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆鍏ラ櫌闀挎湡瀹f暀浠诲姟;");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
- } else {
- for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {
- writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 4, config);
- }
- }
-
- } catch (Exception e) {
- log.error("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
- patMedInhosp1.setInDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡锛�" + e.getMessage());
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
- }
- }
-
-
- //1.2 鐥呭尯
- inhosp.setInDeptcheckFlag(null);
- inhosp.setInWardcheckFlag("0");
- List<PatMedInhosp> inPatMedInhospsWard = patMedInhospMapper.selectPatMedInhospList(inhosp);
- for (PatMedInhosp patMedInhosp1 : inPatMedInhospsWard) {
- //鑾峰彇鎮h�呬俊鎭�
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
- if (Objects.isNull(patArchive)) {
- patMedInhosp1.setInDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
- continue;
- }
- //鏍规嵁鎮h�呮墍鍦ㄧ梾鍖猴紝鑾峰彇璇ョ梾鍖虹殑鍏ラ櫌闀挎湡瀹f暀浠诲姟锛堜細鍑虹幇涓�涓棶棰橈紝绉戝鍜岀梾鍖哄彂鐨勫悓涓�涓ā鏉匡級
- ServiceTaskdept serviceTaskWard = new ServiceTaskdept();
- serviceTaskWard.setLongtask(1L);
- serviceTaskWard.setDeptCode(patMedInhosp1.getHospitaldistrictcode());
- serviceTaskWard.setDeptType("2");
- serviceTaskWard.setServiceType("17");
- serviceTaskWard.setOrgid(patMedInhosp1.getOrgid());
- List<ServiceTaskdept> serviceTaskWardList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskWard);
- //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
- if (CollectionUtils.isEmpty(serviceTaskWardList) || serviceTaskWardList.size() == 0) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
- patMedInhosp1.setInDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "璇ユ偅鑰呮墍鍦ㄧ梾鍖烘湭閰嶇疆鍏ラ櫌闀挎湡瀹f暀浠诲姟;");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
- } else {
- for (ServiceTaskdept serviceTaskdept1 : serviceTaskWardList) {
- writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 5, config);
- }
- }
- }
- }
-
- //2.鍑洪櫌闅忚 - 鍩轰簬瑙勫垯鐨勪换鍔$敓鎴�
- addSubTaskByRule(config);
- //鏍规嵁鎮h�呮墍鍦ㄧ梾鍖猴紝鑾峰彇璇ョ梾鍖虹殑闀挎湡浠诲姟,鏂板崕鍖婚櫌鍙互鍏堜笉鐢ㄦ牴鎹梾鍖哄拰鐤剧梾鏉ュ仛
- if (!active.equals("xh")) {
- addOperationSubTask(config);
- }
-
-
- //鑾峰彇鏈鐞嗗湪闄㈢殑鏁版嵁(濡傛灉鍒氬垰鍑洪櫌鐨勬偅鑰呮暟鎹殑鍑洪櫌鏃堕棿,鍦ㄤ笅闈㈡煡璇㈠嚭鐨勫叆闄㈡椂闂翠箣鍓�,閭d箣鍓嶇殑鍑洪櫌鎮h�呯殑鏁版嵁,涔熷緱鍋滄帀,鍥犱负鍙堝叆闄簡)
- PatMedInhosp patMedInhosp = new PatMedInhosp();
- patMedInhosp.setDeptcheckFlag("0");
- patMedInhosp.setInhospstate("0");
- List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
- if (CollectionUtils.isNotEmpty(patMedInhospList) && patMedInhospList.size() > 0) {
- dealInHospInfo(patMedInhospList);
- }
- return 1;
- }
-
- /**
- * 浠诲姟缁勯殢璁�
- *
- * @param config
- * @return
- */
- public int dealOutHospInfoBySchedule(String config) {
-
- ServiceTask serviceTaskVo = new ServiceTask();
- serviceTaskVo.setLongTask(1);
- serviceTaskVo.setAppltype("5");
- List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(serviceTaskVo);
-
- if (CollectionUtils.isNotEmpty(serviceTasks)) {
- for (ServiceTask serviceTask : serviceTasks) {
- if(!ObjectUtils.isEmpty(serviceTask.getTaskid())){
- ServiceTaskSchedule serviceTaskSchedule = new ServiceTaskSchedule();
- ServiceTaskSchedule taskSchedule = new ServiceTaskSchedule();
- taskSchedule.setTaskid(serviceTask.getTaskid());
- List<ServiceTaskSchedule> serviceTaskSchedules = serviceTaskScheduleMapper.selectServiceTaskScheduleList(taskSchedule);
- if(CollectionUtils.isNotEmpty(serviceTaskSchedules)){
- serviceTaskSchedule = serviceTaskSchedules.get(0);
- String deptCodes = serviceTaskSchedule.getDeptCodes();
- String wardCodes = serviceTaskSchedule.getWardCodes();
- String icd10Codes = serviceTaskSchedule.getIcd10Codes();
- String opLevelCodes = serviceTaskSchedule.getOplevelCodes();
-
- List<String> icd10CodeList = new ArrayList<>();
- List<String> opLevelCodeList = new ArrayList<>();
- List<String> deptCodeList = new ArrayList<>();
- List<String> wardCodeList = new ArrayList<>();
-
- /**
- * 闅忚绫诲瀷(1-绉戝锛�2-鐥呭尯锛�3-鐤剧梾 4-鍏ラ櫌绉戝 5-鍏ラ櫌鐥呭尯 6-鎵嬫湳)
- */
- Integer type = 1;
- if (StringUtils.isNotEmpty(deptCodes)) {
- type = 1;
- deptCodeList = Arrays.asList(deptCodes.split(","));
- }
- if(StringUtils.isNotEmpty(wardCodes)) {
- type = 2;
- wardCodeList = Arrays.asList(wardCodes.split(","));
- }
- if(StringUtils.isNotEmpty(icd10Codes)) {
- type = 3;
- icd10CodeList = Arrays.asList(icd10Codes.split(","));
- }
- if (StringUtils.isNotEmpty(opLevelCodes)) {
- type = 6;
- opLevelCodeList = Arrays.asList(opLevelCodes.split(","));
- }
- //闈炴墜鏈鐞嗘柟寮�
- if(type != 6){
- PatMedInhosp patMedInhospVo = new PatMedInhosp();
- patMedInhospVo.setScheduleCheckFlag("0");
- patMedInhospVo.setInhospstate("1");
- patMedInhospVo.setFuflag("1");
-// patMedInhospVo.setDeptcodeList(deptCodeList);
- patMedInhospVo.setLeaveldeptcodes(deptCodeList);
- patMedInhospVo.setLeavehospitaldistrictcodes(wardCodeList);
- patMedInhospVo.setIcd10codeList(icd10CodeList);
- List<PatMedInhosp> patList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo);
- log.info("dealOutHospInfoBySchedule 浠诲姟缁勯殢璁�, taskid = {}, 鎵弿鎮h�呬汉鏁� {}", serviceTask.getTaskid(), patList.size());
-
- for(PatMedInhosp patMedInhosp : patList){
- ServiceTaskScheduleDetail scheduleDetailVo = new ServiceTaskScheduleDetail();
- scheduleDetailVo.setTaskid(serviceTask.getTaskid());
- scheduleDetailVo.setScheduleid(serviceTaskSchedule.getId());
- List<ServiceTaskScheduleDetail> serviceTaskScheduleDetails = serviceTaskScheduleDetailMapper.selectServiceTaskScheduleDetailList(scheduleDetailVo);
-
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp.getPatid());
- if (Objects.isNull(patArchive)) {
- continue;
- }
- //灏佽serviceSubtask
-
- ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp, patArchive, config, type);
- List<Map<String, Object>> preachformList = new ArrayList<>();
- if(StringUtils.isNotEmpty(serviceTask.getPreachformDesc())){
- try {
- ObjectMapper objectMapper = new ObjectMapper();
- preachformList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
- }catch (Exception e){
- log.error("浠诲姟缁刾reachformDesc瑙f瀽澶辫触,taskid={},inhospid={}", serviceTask.getTaskid(), patMedInhosp.getInhospid());
- }
- }
- scheduleSubtaskBuilder.buildSubtasksForPatient(serviceTask, serviceTaskSchedule, serviceTaskScheduleDetails, serviceSubtask, preachformList);
- //缃杞撼鍏ユ爣璁帮紝閬垮厤涓嬫鎵弿閲嶅鐢熸垚锛堝悗缁疆娆$敱 rollTaskGroupCycle 璐熻矗锛�
- PatMedInhosp flagUpd = new PatMedInhosp();
- flagUpd.setInhospid(patMedInhosp.getInhospid());
- flagUpd.setScheduleCheckFlag("1");
- patMedInhospMapper.updatePatMedInhosp(flagUpd);
- }
- }else {
- //浠诲姟缁� - 鎵嬫湳闅忚
- if(CollectionUtils.isNotEmpty(opLevelCodeList)){
- PatMedOperationItem pmoi = new PatMedOperationItem();
- //鑾峰彇闇�瑕佸嚭闄㈢柧鐥呴殢璁匡紝鏈鐞嗙殑鏁版嵁
- pmoi.setOpercheckFlag("0");
- pmoi.setMainFlag("1");
- pmoi.setDeptCodes(deptCodeList);
- pmoi.setWardCodes(wardCodeList);
- pmoi.setOpLevelCodes(opLevelCodeList);
- List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi);
- for(PatMedOperationItem patMedOperationItem : patMedOperationItems){
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOperationItem.getPatid());
- if (Objects.isNull(patArchive)) {
- continue;
- }
- PatMedInhosp patMedInhospVo = new PatMedInhosp();
- patMedInhospVo.setPatid((patMedOperationItem.getPatid()));
- patMedInhospVo.setScheduleCheckFlag("0");
- patMedInhospVo.setInhospstate("1");
- patMedInhospVo.setFuflag("1");
- List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo);
- if(CollectionUtils.isNotEmpty(patMedInhospList)){
- ServiceTaskScheduleDetail scheduleDetailVo = new ServiceTaskScheduleDetail();
- scheduleDetailVo.setTaskid(serviceTask.getTaskid());
- scheduleDetailVo.setScheduleid(serviceTaskSchedule.getId());
- List<ServiceTaskScheduleDetail> serviceTaskScheduleDetails = serviceTaskScheduleDetailMapper.selectServiceTaskScheduleDetailList(scheduleDetailVo);
- //灏佽serviceSubtask
- ServiceSubtask serviceSubtask = boxedServiceSubtaskForOp(serviceTask, patMedInhospList.get(0), patMedOperationItem, patArchive, config);
- List<Map<String, Object>> preachformList = new ArrayList<>();
- if(StringUtils.isNotEmpty(serviceTask.getPreachformDesc())){
- try {
- ObjectMapper objectMapper = new ObjectMapper();
- preachformList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
- }catch (Exception e){
- log.error("浠诲姟缁�(鎵嬫湳)preachformDesc瑙f瀽澶辫触,taskid={}", serviceTask.getTaskid());
- }
- }
- scheduleSubtaskBuilder.buildSubtasksForPatient(serviceTask, serviceTaskSchedule, serviceTaskScheduleDetails, serviceSubtask, preachformList);
- //缃杞撼鍏ユ爣璁帮紝閬垮厤閲嶅鐢熸垚
- PatMedInhosp flagUpd = new PatMedInhosp();
- flagUpd.setInhospid(patMedInhospList.get(0).getInhospid());
- flagUpd.setScheduleCheckFlag("1");
- patMedInhospMapper.updatePatMedInhosp(flagUpd);
- }
- }
- }
- }
- }
- }
- }
- }
- return 1;
- }
-
/**
* 鑾峰彇鍑洪櫌锛屼綇闄紝闂ㄨ瘖鏈嶅姟浜烘
@@ -504,9 +297,9 @@
@Override
public List<PatMedInhosp> getDocAndPat(PatMedInhosp patMedInhosp) {
- List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+ List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
- String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+ String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
patMedInhosp1.setTagname(tagname);
}
if (StringUtils.isNotEmpty(patMedInhosp.getPatname()) || StringUtils.isNotEmpty(patMedInhosp.getNurseName()) || StringUtils.isNotEmpty(patMedInhosp.getDrname())) {
@@ -551,7 +344,7 @@
* @param check 鏄惁闇�瑕佹牎楠�
* @param patMedInhosp1 鐥呬汉鍑哄叆闄俊鎭�
* @param patArchive 鐥呬汉淇℃伅
- * @param type 闅忚绫诲瀷(1-绉戝锛�2-鐥呭尯锛�3-鐤剧梾 4-鍏ラ櫌绉戝 5-鍏ラ櫌鐥呭尯)
+ * @param type 闅忚绫诲瀷(0-瀹f暀锛�1-绉戝锛�2-鐥呭尯锛�3-鐤剧梾 4-鍏ラ櫌绉戝 5-鍏ラ櫌鐥呭尯)
* @param config 閰嶇疆淇℃伅 visit.early.day
*/
//灏嗘偅鑰呮斁鍒皊ubtask涓�
@@ -565,31 +358,38 @@
List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
ServiceTask serviceTask = null;
if (CollectionUtils.isEmpty(serviceTasks)) {
+ if (type == 0) {
+ log.info("璇ユ偅鑰呰嵂鍝佸鏁欓暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
+ patMedInhosp1.setMedcheckFlag("2");
+ patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呰嵂鍝佸鏁欓暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
+ return;
+ }
if (type == 1) {
log.info("璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
patMedInhosp1.setDeptcheckFlag("2");
patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯闄㈢瀹ら暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
return;
} else if (type == 2) {
patMedInhosp1.setWardcheckFlag("2");
patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯闄㈢梾鍖洪暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
return;
} else if (type == 3) {
patMedInhosp1.setDiagcheckFlag("2");
patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯柧鐥呴暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
return;
} else if (type == 4) {
patMedInhosp1.setInDeptcheckFlag("2");
patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呭叆闄㈢瀹ら暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
return;
} else if (type == 5) {
patMedInhosp1.setInWardcheckFlag("2");
patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呭叆闄㈢梾鍖洪暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
return;
}
} else {
@@ -623,6 +423,29 @@
//璁板綍insertServiceSubtask璇彞杩斿洖鐘舵��
Integer i = 0;
try {
+ // 鍏滃簳锛氫换鍔℃ā鏉夸慨鏀逛細閲嶇疆 pat_med_inhosp 鐨勫鐞嗘爣璁帮紝浣嗗凡瀹屾垚鐨勯璁夸笉浼氬垹闄ゃ��
+ // 鍚屼竴 inhospid + taskid 宸插瓨鍦ㄦ湭鍒犻櫎鐨勯娆¢殢璁匡紙upid 涓虹┖锛夋椂锛屼笉鍐嶆彃鍏ワ紝閬垮厤鍑虹幇涓ゆ潯棣栨闅忚銆�
+ if (check
+ && ("2".equals(serviceTask.getServiceType()) || "13".equals(serviceTask.getServiceType()))
+ && (type == 1 || type == 2 || type == 3)) {
+ ServiceSubtaskEntity firstQuery = new ServiceSubtaskEntity();
+ firstQuery.setInhospid(patMedInhosp1.getInhospid());
+ firstQuery.setTaskid(taskid);
+ List<ServiceSubtask> firstList = serviceSubtaskMapper.selectServiceSubtaskList(firstQuery);
+ boolean firstExists = CollectionUtils.isNotEmpty(firstList)
+ && firstList.stream().anyMatch(item -> item.getUpid() == null);
+ if (firstExists) {
+ log.info("鎮h�厈}宸插瓨鍦ㄩ娆¢殢璁夸换鍔★紝璺宠繃閲嶅鐢熸垚, taskid={}, type={}",
+ patMedInhosp1.getInhospid(), taskid, type);
+ PatMedInhosp flagUpdate = new PatMedInhosp();
+ flagUpdate.setInhospid(patMedInhosp1.getInhospid());
+ if (type == 1) flagUpdate.setDeptcheckFlag("1");
+ if (type == 2) flagUpdate.setWardcheckFlag("1");
+ if (type == 3) flagUpdate.setDiagcheckFlag("1");
+ inhospVisitFacade.updatePatMedInhosp(flagUpdate);
+ return;
+ }
+ }
//鍏堝垽鏂竴涓嬶紝鏄惁闇�瑕佹牎楠�
if (check && (Objects.isNull(serviceSubtask.getTaskSituation()) || serviceSubtask.getTaskSituation() != 6)) {
//鍦ㄦ柊澧炰箣鍓嶏紝鍏堥�氳繃鎮h�匢D锛宻endstate=2鏌ヨ涓�涓嬶紝鍦ㄦ墍鏈夐暱鏈熶换鍔′腑锛屾槸涓嶆槸杩樻湁璇ユ偅鑰呭緟鎵ц鐨勪换鍔★紝鏈夌殑璇�,姣旇緝涔嬪墠鐨別ndtime鏄惁灏忎簬褰撳墠鐨別ndtaime,濡傛灉涔嬪墠鐨勫皬浜庣幇鍦ㄧ殑锛屽垯鐩存帴灏嗕箣鍓嶇殑鍋滄帀锛堝師鍥犲啀鍏ラ櫌锛�
@@ -664,7 +487,7 @@
//鍐嶅叆闄㈤�昏緫
//鏅畞 鍑洪櫌棣栨锛�7澶╋級闅忚涓�瀹氳鍋�
boolean firstVisit = false;
- if (orgId.equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
+ if (orgId.equals("47255004333112711A1001")) {
firstVisit = true;
}
if (!firstVisit) {
@@ -743,7 +566,7 @@
addServiceSubtaskPreachform(serviceSubtask, null);
}
- //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛�
+ //灏� check_flag 鏀规垚 1锛堝凡澶勭悊锛�
if (i == 1) {
PatMedInhosp patMedInhosp2 = new PatMedInhosp();
patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());
@@ -752,7 +575,7 @@
if (type == 3) patMedInhosp2.setDiagcheckFlag("1");
if (type == 4) patMedInhosp2.setInDeptcheckFlag("1");
if (type == 5) patMedInhosp2.setInWardcheckFlag("1");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp2);
} else {
//鐢熸垚瀛愪换鍔″け璐ワ紝
log.info("鐢熸垚瀛愪换鍔″け璐erviceSubtask鐨則askid涓猴細{},patid涓猴細{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid());
@@ -764,7 +587,7 @@
if (type == 4) patMedInhosp2.setInDeptcheckFlag("2");
if (type == 5) patMedInhosp2.setInWardcheckFlag("2");
patMedInhosp2.setRemark("鐢熸垚瀛愪换鍔″け璐� " + type);
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp2);
}
} catch (Exception e) {
//鍑洪敊鍥炴粴浜嬪姟
@@ -774,8 +597,9 @@
if (type == 1) patMedInhosp2.setDeptcheckFlag("2");
if (type == 2) patMedInhosp2.setWardcheckFlag("2");
if (type == 3) patMedInhosp2.setDiagcheckFlag("2");
+ if (type == 0) patMedInhosp2.setMedcheckFlag("2");
patMedInhosp2.setRemark("鐢熸垚瀛愪换鍔℃姤閿欏洖婊� " + type);
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp2);
e.printStackTrace();
}
}
@@ -801,8 +625,8 @@
if (CollectionUtils.isEmpty(serviceTasks)) {
log.info("璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓猴細{}", taskid);
patMedOperationItem.setOpercheckFlag("2");
- patMedOperationItem.setLongTaskReason(longTaskReason + " & 璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓�:" + taskid);
- patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
+ patMedOperationItem.setLongTaskReason(" & 璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓�:" + taskid +";");
+ otherVisitFacade.updateOperationItem(patMedOperationItem);
return;
} else {
serviceTask = serviceTasks.get(0);
@@ -821,7 +645,11 @@
patMedInhosp.setPatid((patMedOperationItem.getPatid()));
patMedInhosp.setInhospstate("1");
patMedInhosp.setFuflag("1");
- List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+ //鎵嬫湳闅忚
+ if(!active.equals("hzszlyy")){
+ patMedInhosp.setSerialnum(patMedOperationItem.getSerialnum());
+ }
+ List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
if (CollectionUtils.isEmpty(patMedInhospList)) {
return;
@@ -829,15 +657,15 @@
//灏佽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.getDeptcode())){
- serviceSubtask.setVisitDeptCode(patMedOperationItem.getDeptcode());
- serviceSubtask.setVisitDeptName(patMedOperationItem.getDeptname());
- }else {
- serviceSubtask.setVisitDeptCode(patMedOperationItem.getHospitaldistrictcode());
- serviceSubtask.setVisitDeptName(patMedOperationItem.getHospitaldistrictname());
+ if (StringUtils.isNotEmpty(patMedOperationItem.getLeaveldeptcode())) {
+ serviceSubtask.setVisitDeptCode(patMedOperationItem.getLeaveldeptcode());
+ serviceSubtask.setVisitDeptName(patMedOperationItem.getLeaveldeptname());
+ } else {
+ serviceSubtask.setVisitDeptCode(patMedOperationItem.getLeavehospitaldistrictcode());
+ serviceSubtask.setVisitDeptName(patMedOperationItem.getLeavehospitaldistrictname());
}
//璁板綍insertServiceSubtask璇彞杩斿洖鐘舵��
Integer i = 0;
@@ -896,32 +724,40 @@
PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
patMedOperationItem2.setId(patMedOperationItem.getId());
patMedOperationItem2.setOpercheckFlag("1");
- patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
+ otherVisitFacade.updateOperationItem(patMedOperationItem2);
} else {
//鐢熸垚瀛愪换鍔″け璐ワ紝
log.info("鐢熸垚瀛愪换鍔″け璐erviceSubtask鐨則askid涓猴細{},patid涓猴細{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid());
PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
patMedOperationItem2.setId(patMedOperationItem.getId());
patMedOperationItem2.setOpercheckFlag("2");
- patMedOperationItem2.setRemark("鐢熸垚瀛愪换鍔″け璐� 4");
- patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
+ patMedOperationItem2.setLongTaskReason("鐢熸垚瀛愪换鍔″け璐� 4;");
+ patMedOperationItem2.setUpdateTime(new Date());
+ otherVisitFacade.updateOperationItem(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");
- patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
+ patMedOperationItem2.setUpdateTime(new Date());
+ patMedOperationItem2.setLongTaskReason("鐢熸垚瀛愪换鍔℃姤閿欏洖婊� 4;");
+ otherVisitFacade.updateOperationItem(patMedOperationItem2);
e.printStackTrace();
}
}
- private Integer addServiceSubtaskPreachform(ServiceSubtask serviceSubtask, String sendstate) {
+ @Override
+ public 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();
@@ -932,6 +768,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());
@@ -956,13 +797,16 @@
//灏佽serviceSubtask
- private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, Integer type) {
+ @Override
+ public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, Integer type) {
//澧炲姞serviceTask鍒ょ┖
// if(Objects.isNull(serviceTask)){
// return null;
// }
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
serviceSubtask.setTaskid(serviceTask.getTaskid());
+ serviceSubtask.setOrgid(serviceTask.getOrgid());
+ serviceSubtask.setCampusid(serviceTask.getCampusid());
if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
@@ -970,20 +814,23 @@
serviceSubtask.setInhospid(patMedInhosp1.getInhospid());
serviceSubtask.setDrcode(patMedInhosp1.getDrcode());
serviceSubtask.setDrname(patMedInhosp1.getDrname());
- serviceSubtask.setDeptcode(patMedInhosp1.getLeaveldeptcode());
- serviceSubtask.setDeptname(patMedInhosp1.getLeaveldeptname());
+ serviceSubtask.setLeaveldeptcode(patMedInhosp1.getLeaveldeptcode());
+ serviceSubtask.setLeaveldeptname(patMedInhosp1.getLeaveldeptname());
serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
if (type == 4 || type == 5) {
//璁剧疆鍏ラ櫌鐨�
- serviceSubtask.setDeptcode(patMedInhosp1.getDeptcode());
- serviceSubtask.setDeptname(patMedInhosp1.getDeptname());
+ serviceSubtask.setLeaveldeptcode(patMedInhosp1.getDeptcode());
+ serviceSubtask.setLeaveldeptname(patMedInhosp1.getDeptname());
serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getHospitaldistrictcode());
serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getHospitaldistrictname());
}
serviceSubtask.setLeaveicd10code(patMedInhosp1.getLeaveicd10code());
serviceSubtask.setLeavediagname(patMedInhosp1.getLeavediagname());
serviceSubtask.setDiagname(patMedInhosp1.getDiagname());
+ // 2026-11锛氶噸瑕佹�ф爣璁帮紙鍚�屾棩闂淬�嶏級闅忎换鍔¤蛋锛屼笌 ruoyi-inhospvisit 鐨勫彛寰勪竴鑷淬��
+ // 鏈潯閾捐矾鏄�屼汉宸ユ柊澧為殢璁� / 鐤剧梾缁村害銆嶄粛鍦ㄧ敤鐨勯仐鐣欏疄鐜般��
+ serviceSubtask.setImportanceFlagCode(patMedInhosp1.getImportanceFlagCode());
serviceSubtask.setTemplateid(serviceTask.getTemplateid());
serviceSubtask.setTemplatename(serviceTask.getTemplatename());
serviceSubtask.setPatid(patArchive.getId());
@@ -994,6 +841,7 @@
serviceSubtask.setSex(patArchive.getSex());
serviceSubtask.setAge(patArchive.getAge());
serviceSubtask.setSendstate(2L);
+ serviceSubtask.setCampusid(patMedInhosp1.getCampusid());
serviceSubtask.setManagementDoctor(patMedInhosp1.getManagementDoctor());
serviceSubtask.setManagementDoctorCode(patMedInhosp1.getManagementDoctorCode());
serviceSubtask.setStarttime(patMedInhosp1.getStarttime());
@@ -1021,7 +869,7 @@
if (type != 4 && type != 5) {
patMedInhosp1.setDeptcheckFlag("2");
patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 璇ユ偅鑰呯柧鐥呭嚭闄㈡椂闂翠负绌�,鍑洪櫌璁板綍ID涓�:" + patMedInhosp1.getInhospid());
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
//濡傛灉鍑洪櫌鏃堕棿涓虹┖锛屽垯杩斿洖涓�涓柊瀵硅薄
return new ServiceSubtask();
}
@@ -1073,15 +921,23 @@
private ServiceSubtask boxedServiceSubtaskForOp(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatMedOperationItem patMedOperationItem, PatArchive patArchive, String config) {
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
serviceSubtask.setTaskid(serviceTask.getTaskid());
+ serviceSubtask.setOrgid(serviceTask.getOrgid());
+ serviceSubtask.setCampusid(serviceTask.getCampusid());
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.setLeaveldeptcode(patMedInhosp1.getLeaveldeptcode());
+ serviceSubtask.setLeaveldeptname(patMedInhosp1.getLeaveldeptname());
+ serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
+ serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
+ serviceSubtask.setLeaveicd10code(patMedInhosp1.getLeaveicd10code());
+ serviceSubtask.setLeavediagname(patMedInhosp1.getLeavediagname());
+ // 2026-11锛氶噸瑕佹�ф爣璁帮紙鍚�屾棩闂淬�嶏級闅忎换鍔¤蛋锛堝彛寰勫悓涓婏級
+ serviceSubtask.setImportanceFlagCode(patMedInhosp1.getImportanceFlagCode());
serviceSubtask.setTemplateid(serviceTask.getTemplateid());
serviceSubtask.setTemplatename(serviceTask.getTemplatename());
@@ -1093,19 +949,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());
@@ -1116,11 +971,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() + ";");
+ otherVisitFacade.updateOperationItem(patMedOperationItem);
+// patMedInhosp1.setDeptcheckFlag("2");
+// patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鍑洪櫌璁板綍ID涓�:" + patMedInhosp1.getInhospid());
+// inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
//濡傛灉鍑洪櫌鏃堕棿涓虹┖锛屽垯杩斿洖涓�涓柊瀵硅薄
- return new ServiceSubtask();
+ return null;
}
serviceSubtask.setLongSendTime(newDate);
serviceSubtask.setVisitTime(newDate);
@@ -1177,7 +1035,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) {
@@ -1196,276 +1054,6 @@
}
} catch (Exception e) {
log.error("鍏ラ櫌鏁版嵁淇℃伅鍑哄紓甯镐簡锛歿},{}", patMedInhosp1, e.getMessage());
- }
- }
- }
-
- @Override
- public void addOperationSubTask(String config) {
- // 鎵嬫湳闅忚
- PatMedOperationItem pmoi = new PatMedOperationItem();
- //鑾峰彇闇�瑕佸嚭闄㈢柧鐥呴殢璁匡紝鏈鐞嗙殑鏁版嵁
- pmoi.setOpercheckFlag("0");
- pmoi.setMainFlag("1");
-
- List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi);
- log.info("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鎵嬫湳鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedOperationItems) ? patMedOperationItems.size() : null);
-
- for (PatMedOperationItem opItem : patMedOperationItems) {
-
- try {
- if (StringUtils.isEmpty(opItem.getOplevelcode())) {
- continue;
- }
- // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔�
- ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
- serviceTaskoper.setLongtask(1L);
- serviceTaskoper.setOrgid(opItem.getOrgid());
- serviceTaskoper.setOplevelcode(opItem.getOplevelcode());
-
- //鏍规嵁绉戝銆佺梾鍖鸿繃婊�
- serviceTaskoper.setDeptCode(opItem.getDeptcode());
- serviceTaskoper.setWardCode(opItem.getHospitaldistrictcode());
-
- List<ServiceTaskoper> serviceTaskopers = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper);
- //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
- if (CollectionUtils.isEmpty(serviceTaskopers) || serviceTaskopers.size() == 0) {
- PatMedOperationItem patMedOperationItem = patMedOperationItemMapper.selectPatMedOperationItemById(opItem.getId());
- patMedOperationItem.setOpercheckFlag("2");
- patMedOperationItem.setLongTaskReason(patMedOperationItem.getLongTaskReason() + "鎵�鎮g殑鎵嬫湳鏈厤缃暱鏈熶换鍔�;");
- patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
- } else {
- for (ServiceTaskoper serviceTaskoper1 : serviceTaskopers) {
- writeInSubTaskForOp(serviceTaskoper1.getTaskId(), true, opItem, config);
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- log.error("浜哄憳鎵嬫湳澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
- opItem.setOpercheckFlag("2");
- opItem.setLongTaskReason("浜哄憳鎵嬫湳澶勭悊寮傚父");
- patMedOperationItemMapper.updatePatMedOperationItem(opItem);
- }
- }
- }
-
- private void addIcd10SubTask(String config) {
- PatMedInhosp pmjb = new PatMedInhosp();
- //鑾峰彇闇�瑕佸嚭闄㈢柧鐥呴殢璁匡紝鏈鐞嗙殑鏁版嵁
- pmjb.setDiagcheckFlag("0");
- pmjb.setInhospstate("1");
- pmjb.setFuflag("1");
- List<PatMedInhosp> patMedInhospJBs = patMedInhospMapper.selectPatMedInhospList(pmjb);
- log.info("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鐤剧梾鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedInhospJBs) ? patMedInhospJBs.size() : null);
- for (PatMedInhosp patMedInhosp1 : patMedInhospJBs) {
- String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
- patMedInhosp1.setTagname(tagname);
- }
-
- for (PatMedInhosp pmiJB : patMedInhospJBs) {
- //鑾峰彇鎮h�呬俊鎭�
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(pmiJB.getPatid());
- if (Objects.isNull(patArchive)) {
- pmiJB.setDiagcheckFlag("2");
- pmiJB.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
- patMedInhospMapper.updatePatMedInhosp(pmiJB);
- continue;
- }
- try {
- String errorIcd = null;
- if (StringUtils.isEmpty(pmiJB.getLeaveicd10code())) {
- continue;
- }
- // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔�
- ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
- serviceTaskdiag.setLongtask(1L);
- serviceTaskdiag.setServiceType("2");
- if (active.equals("nhfy")) {
- //鍗楀崕闄勪竴鐨刬cd10code鏈夐噸澶嶏紝鎵�浠ョ敤涓昏瘖鏂悕绉板幓鏌ヨ
- serviceTaskdiag.setIcd10name(pmiJB.getLeavediagname());
- if (StringUtils.isEmpty(pmiJB.getLeavediagname())) {
- errorIcd = "璇ユ偅鑰呬富璇婃柇鍚嶇О涓虹┖;";
- }
- } else {
- serviceTaskdiag.setIcd10code(pmiJB.getLeaveicd10code());
- if (StringUtils.isEmpty(pmiJB.getLeaveicd10code())) {
- errorIcd = "璇ユ偅鑰呬富璇婃柇ICD10鐮佷负绌�;";
- }
- }
- serviceTaskdiag.setOrgid(pmiJB.getOrgid());
- List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagListByIcdName(serviceTaskdiag);
-
- //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
- if (StringUtils.isNotEmpty(errorIcd)) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());
- pmiJB.setDiagcheckFlag("2");
- pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd);
- patMedInhospMapper.updatePatMedInhosp(pmiJB);
- } else if (CollectionUtils.isEmpty(serviceTaskdiags)) {
- errorIcd = "璇ユ偅鑰呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟;";
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());
- pmiJB.setDiagcheckFlag("2");
- pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd);
- patMedInhospMapper.updatePatMedInhosp(pmiJB);
- } else {
- int flag = 0;
- for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {
- //蹇呴』绉戝鎴栫梾鍖鸿兘鍖归厤涓�,鎵嶅彲浠ョ敤杩欎釜鐤剧梾鍒涘缓瀛愪换鍔★紙涓昏澶勭悊涓�涓柧鐥呭湪澶氫釜鐥呭尯鎴栫瀹ゅ嚭鐜帮級
- if (StringUtils.isNotEmpty(serviceTaskdept1.getDeptCode()) && serviceTaskdept1.getDeptCode().equals(pmiJB.getLeaveldeptcode())) {
- writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiJB, patArchive, 3, config);
- flag = 1;
- } else if (StringUtils.isNotEmpty(serviceTaskdept1.getWardCode()) && serviceTaskdept1.getWardCode().equals(pmiJB.getLeavehospitaldistrictcode())) {
- writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiJB, patArchive, 3, config);
- flag = 1;
- }
- }
- if (flag == 0) {
- log.error("璇ョ瀹ゆ垨鐥呭尯瀵逛簬鎮h�呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟,鎮h�咃細{}", pmiJB.getInhospid());
- errorIcd = "璇ョ瀹ゆ垨鐥呭尯瀵逛簬鎮h�呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟;";
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());
- pmiJB.setDiagcheckFlag("2");
- pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd);
- patMedInhospMapper.updatePatMedInhosp(pmiJB);
- }
-
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- log.error("浜哄憳鐤剧梾澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
- pmiJB.setDiagcheckFlag("2");
- pmiJB.setLongTaskReason("浜哄憳鐤剧梾澶勭悊寮傚父");
- patMedInhospMapper.updatePatMedInhosp(pmiJB);
- }
- }
- }
-
- private void addWardSubTask(String config) {
- PatMedInhosp pmbq = new PatMedInhosp();
- //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁
- pmbq.setWardcheckFlag("0");
- pmbq.setInhospstate("1");
- pmbq.setFuflag("1");
- List<PatMedInhosp> patMedInhospBQs = patMedInhospMapper.selectPatMedInhospList(pmbq);
- log.info("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鐥呭尯鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedInhospBQs) ? patMedInhospBQs.size() : null);
- for (PatMedInhosp patMedInhosp1 : patMedInhospBQs) {
- String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
- patMedInhosp1.setTagname(tagname);
- }
-
- //鐥呭尯鏁版嵁澶勭悊
- for (PatMedInhosp pmiBQ1 : patMedInhospBQs) {
- if ("1".equals(pmiBQ1.getLeavehospitaldistrictcode()) && pmiBQ1.getDiagcheckFlag().equals("1")) {
- pmiBQ1.setWardcheckFlag("2");
- pmiBQ1.setLongTaskReason("鏍规嵁浜ゅ弶鐢熸垚闅忚浠诲姟瑙勫垯锛岀梾鍖轰换鍔″彲浠ヤ笉鐢ㄧ敓鎴�");
- patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
- continue;
- }
-
- //鑾峰彇鎮h�呬俊鎭�
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(pmiBQ1.getPatid());
- if (Objects.isNull(patArchive)) {
- pmiBQ1.setWardcheckFlag("2");
- pmiBQ1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
- patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
- continue;
- }
- try {
- String errorreason = null;
- List<ServiceTaskdept> serviceTaskdeptList = null;
- if (!StringUtils.isEmpty(pmiBQ1.getLeavehospitaldistrictcode())) {
- ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
- serviceTaskdept.setLongtask(1L);
- serviceTaskdept.setDeptCode(pmiBQ1.getLeavehospitaldistrictcode());
- serviceTaskdept.setDeptType("2");
- serviceTaskdept.setServiceType("2");
- serviceTaskdept.setOrgid(pmiBQ1.getOrgid());
- serviceTaskdeptList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
- if (CollectionUtils.isEmpty(serviceTaskdeptList)) {
- errorreason = "璇ユ偅鑰呮墍鍦ㄧ梾鍖烘湭閰嶇疆闀挎湡浠诲姟;";
- }
- } else {
- errorreason = "绂婚櫌鐥呭尯涓虹┖;";
- }
- //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
- if (StringUtils.isNotEmpty(errorreason)) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiBQ1.getInhospid());
- pmiBQ1.setWardcheckFlag("2");
- pmiBQ1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorreason : errorreason);
- patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
- } else {
- for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {
- writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiBQ1, patArchive, 2, config);
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- log.error("浜哄憳鐥呭尯澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
- pmiBQ1.setWardcheckFlag("2");
- pmiBQ1.setLongTaskReason("浜哄憳鐥呭尯澶勭悊寮傚父");
- patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
- }
- }
- }
-
- private void addDeptSubTask(String config) {
- //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁
- PatMedInhosp pmks = new PatMedInhosp();
- pmks.setDeptcheckFlag("0");
- pmks.setInhospstate("1");
- pmks.setFuflag("1");
- List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);
- log.info("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌閮ㄩ棬鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedInhosps) ? patMedInhosps.size() : null);
- for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
- String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
- patMedInhosp1.setTagname(tagname);
- }
-
- //绉戝
- for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
- if ("1".equals(patMedInhosp1.getLeavehospitaldistrictcode()) && patMedInhosp1.getDiagcheckFlag().equals("1")) {
- patMedInhosp1.setDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason("鏍规嵁浜ゅ弶鐢熸垚闅忚浠诲姟瑙勫垯锛岄儴闂ㄤ换鍔″彲浠ヤ笉鐢ㄧ敓鎴�");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
- continue;
- }
- //鑾峰彇鎮h�呬俊鎭�
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
- if (Objects.isNull(patArchive)) {
- patMedInhosp1.setDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
- continue;
- }
- try {
- //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑闀挎湡浠诲姟
- ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
- serviceTaskdept.setLongtask(1L);
- serviceTaskdept.setDeptCode(patMedInhosp1.getLeaveldeptcode());
- serviceTaskdept.setDeptType("1");
- serviceTaskdept.setServiceType("2");
- serviceTaskdept.setOrgid(patMedInhosp1.getOrgid());
- List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
- //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
- if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
- patMedInhosp1.setDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆绂婚櫌闀挎湡浠诲姟;");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
- } else {
- for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {
- writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1, config);
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- log.error("浜哄憳绉戝澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
- patMedInhosp1.setDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason("浜哄憳绉戝澶勭悊寮傚父");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
}
}
}
@@ -1501,7 +1089,7 @@
if (StringUtils.isNotEmpty(remark)) {
updateObj.setRemark(remark + " (type=" + type + ")");
}
- patMedInhospMapper.updatePatMedInhosp(updateObj);
+ inhospVisitFacade.updatePatMedInhosp(updateObj);
}
/**
@@ -1509,22 +1097,14 @@
* 鏍规嵁鎮h�呯闄㈢瀹ゆ垨鐥呭尯鏌ヨservice_task_rule锛岃幏鍙杁eptRule銆亀radRule銆乨iagRule
* 鏍规嵁瑙勫垯鍊煎喅瀹氳皟鐢ㄥ摢涓柟娉曠敓鎴愰殢璁夸换鍔�
*/
- private void addSubTaskByRule(String config) {
- // 鑾峰彇鎵�鏈夐渶瑕佸鐞嗙殑鍑洪櫌鎮h�咃紙绉戝缁村害鏈鐞嗭級
- PatMedInhosp pmks = new PatMedInhosp();
- pmks.setDeptcheckFlag("0");
- pmks.setInhospstate("1");
- pmks.setFuflag("1");
- List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);
- log.info("銆愬熀浜庤鍒欍�戦渶瑕佸鐞嗙殑鍑洪櫌鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedInhosps) ? patMedInhosps.size() : null);
-
+ private void addSubTaskByRule(String config, List<PatMedInhosp> patMedInhosps) {
for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
// 鑾峰彇鎮h�呭熀鏈俊鎭�
PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
if (Objects.isNull(patArchive)) {
patMedInhosp1.setDeptcheckFlag("2");
patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
continue;
}
@@ -1670,7 +1250,7 @@
log.error("銆愬熀浜庤鍒欍�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
patMedInhosp1.setDeptcheckFlag("2");
patMedInhosp1.setLongTaskReason("鍩轰簬瑙勫垯澶勭悊寮傚父");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
}
}
}
@@ -1693,12 +1273,12 @@
List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
if (CollectionUtils.isEmpty(serviceTaskdepts)) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+ PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
patMedInhosp1.setDeptcheckFlag("2");
patMedInhosp1.setWardcheckFlag(patMedInhosp.getWardcheckFlag());
patMedInhosp1.setDiagcheckFlag(patMedInhosp.getDiagcheckFlag());
patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆绂婚櫌闀挎湡浠诲姟;");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
} else {
for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {
writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1, config);
@@ -1710,7 +1290,7 @@
log.error("銆愮瀹や换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
patMedInhosp1.setDeptcheckFlag("2");
patMedInhosp1.setLongTaskReason("绉戝浠诲姟澶勭悊寮傚父");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
}
return generatedCount;
}
@@ -1741,12 +1321,12 @@
}
if (StringUtils.isNotEmpty(errorreason)) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+ PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
patMedInhosp1.setWardcheckFlag("2");
patMedInhosp1.setDeptcheckFlag(patMedInhosp.getDeptcheckFlag());
patMedInhosp1.setDiagcheckFlag(patMedInhosp.getDiagcheckFlag());
patMedInhosp1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorreason : errorreason);
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
} else {
for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {
writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 2, config);
@@ -1758,7 +1338,7 @@
log.error("銆愮梾鍖轰换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
patMedInhosp1.setWardcheckFlag("2");
patMedInhosp1.setLongTaskReason("鐥呭尯浠诲姟澶勭悊寮傚父");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
}
return generatedCount;
}
@@ -1777,14 +1357,14 @@
ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
serviceTaskdiag.setLongtask(1L);
- serviceTaskdiag.setServiceType("2");
+// serviceTaskdiag.setServiceType("2");
if (active.equals("nhfy")) {
serviceTaskdiag.setIcd10name(patMedInhosp1.getLeavediagname());
if (StringUtils.isEmpty(patMedInhosp1.getLeavediagname())) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+ PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
patMedInhosp1.setDiagcheckFlag("2");
patMedInhosp1.setLongTaskReason("璇ユ偅鑰呬富璇婃柇鍚嶇О涓虹┖;");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
return 0;
}
} else {
@@ -1794,10 +1374,10 @@
List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagListByIcdName(serviceTaskdiag);
if (CollectionUtils.isEmpty(serviceTaskdiags)) {
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+ PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
patMedInhosp.setDiagcheckFlag("2");
patMedInhosp.setLongTaskReason("璇ユ偅鑰呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟;");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp);
} else {
int flag = 0;
for (ServiceTaskdiag serviceTaskdiag1 : serviceTaskdiags) {
@@ -1813,10 +1393,10 @@
}
if (flag == 0) {
log.error("璇ョ瀹ゆ垨鐥呭尯瀵逛簬鎮h�呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟,鎮h�咃細{}", patMedInhosp1.getInhospid());
- PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+ PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
patMedInhosp.setDiagcheckFlag("2");
patMedInhosp.setLongTaskReason("璇ョ瀹ゆ垨鐥呭尯瀵逛簬鎮h�呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟;");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp);
}
}
} catch (Exception e) {
@@ -1824,10 +1404,192 @@
log.error("銆愮柧鐥呬换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
patMedInhosp1.setDiagcheckFlag("2");
patMedInhosp1.setLongTaskReason("鐤剧梾浠诲姟澶勭悊寮傚父");
- patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+ inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
}
return generatedCount;
}
+ @Override
+ public void dealIcd10Subtask(PatMedInhosp pmks, String config) {
+ pmks.setDiagcheckFlag("0");
+ pmks.setInhospstate("1");
+ pmks.setFuflag("1");
+ List<PatMedInhosp> patMedInhosps = inhospVisitFacade.selectPatMedInhospList(pmks);
+ log.info("dealIcd10Subtask 寰呭鐞嗗嚭闄㈢柧鐥呮偅鑰呮暟锛歿}", CollectionUtils.isEmpty(patMedInhosps) ? 0 : patMedInhosps.size());
+ if (CollectionUtils.isNotEmpty(patMedInhosps)) {
+ int matchedTaskCount = 0;
+ for (PatMedInhosp patMedInhosp : patMedInhosps) {
+ // 鑾峰彇鎮h�呭熀鏈俊鎭紝妗f涓嶅瓨鍦ㄦ椂鐩存帴鏍囪澶辫触锛岄伩鍏嶅悗缁┖鎸囬拡
+ PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp.getPatid());
+ if (Objects.isNull(patArchive)) {
+ PatMedInhosp updateObj = new PatMedInhosp();
+ updateObj.setInhospid(patMedInhosp.getInhospid());
+ updateObj.setDiagcheckFlag("2");
+ updateObj.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
+ inhospVisitFacade.updatePatMedInhosp(updateObj);
+ continue;
+ }
+ matchedTaskCount += addIcd10SubTaskForPatient(patMedInhosp, patArchive, config);
+ }
+ log.info("dealIcd10Subtask 澶勭悊瀹屾垚锛屽緟澶勭悊锛歿}锛屽尮閰嶇柧鐥呴暱鏈熶换鍔℃鏁帮細{}", patMedInhosps.size(), matchedTaskCount);
+ }
+ }
+ /**
+ * 浜哄伐闅忚锛氬垹闄ゆ偅鑰呭嚭闄㈣褰曞搴旂殑鏈畬鎴愰殢璁夸换鍔★紝骞舵寜鎸囧畾浠诲姟閲嶆柊鐢熸垚銆�
+ * 鍒犻櫎鏃т换鍔″彛寰勶細sendstate in (1,2,3,7)锛�
+ * 閲嶅浠诲姟鏍¢獙鍙e緞锛歴endstate in (1,2,3,5,7)锛屽凡鏈夌浉鍚� taskid 鏈畬鎴愪换鍔$殑鎮h�呰烦杩囥��
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+ public Map<String, Object> addManualVisit(ManualVisitDTO manualVisitDTO) {
+ if (manualVisitDTO == null) {
+ throw new BaseException("鍏ュ弬涓嶈兘涓虹┖");
+ }
+ if (CollectionUtils.isEmpty(manualVisitDTO.getPatids())) {
+ throw new BaseException("鎮h�卲atid闆嗗悎涓嶈兘涓虹┖");
+ }
+ if (manualVisitDTO.getTaskid() == null) {
+ throw new BaseException("浜哄伐闅忚浠诲姟taskid涓嶈兘涓虹┖");
+ }
+
+ ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(manualVisitDTO.getTaskid());
+ if (Objects.isNull(serviceTask)) {
+ throw new BaseException("浜哄伐闅忚浠诲姟涓嶅瓨鍦紝taskid锛�" + manualVisitDTO.getTaskid());
+ }
+
+ // 鍗囧簭澶勭悊锛岄厤鍚堟偅鑰呮。妗堣閿侊紝閬垮厤鎵归噺璇锋眰浜ゅ弶鍔犻攣浜х敓姝婚攣
+ List<Long> patids = manualVisitDTO.getPatids().stream()
+ .filter(Objects::nonNull)
+ .distinct()
+ .sorted()
+ .collect(Collectors.toList());
+ if (patids.isEmpty()) {
+ throw new BaseException("鎮h�卲atid闆嗗悎涓嶈兘涓虹┖");
+ }
+
+ String config = iSysConfigService.selectConfigByKey("visit.early.day");
+ List<Long> unfinishedSendstates = Arrays.asList(1L, 2L, 3L, 7L);
+ // 涓庡墠绔緟闅忚鍙e緞淇濇寔涓�鑷达紝鍙戦�佸け璐�(5)涔熻涓哄凡鏈夋湭瀹屾垚浠诲姟
+ List<Long> activeSendstates = Arrays.asList(1L, 2L, 3L, 5L, 7L);
+ int deletedCount = 0;
+ int generatedCount = 0;
+ List<Long> noDischargeRecordPatids = new ArrayList<>();
+ List<Long> noArchivePatids = new ArrayList<>();
+ List<Long> generateFailedPatids = new ArrayList<>();
+ List<Long> duplicatePatids = new ArrayList<>();
+ List<String> duplicatePatientNames = new ArrayList<>();
+
+ for (Long patid : patids) {
+ // 鏌ヨ鎮h�呭叏閮ㄥ嚭闄㈣褰曪紝SQL 鎸夊嚭闄㈡椂闂村�掑簭锛岀涓�鏉′綔涓烘湰娆$敓鎴愪换鍔$殑鍑洪櫌璁板綍
+ PatMedInhosp query = new PatMedInhosp();
+ query.setPatid(patid);
+ query.setCry(1);
+ if (StringUtils.isNotEmpty(serviceTask.getOrgid())) {
+ query.setOrgid(serviceTask.getOrgid());
+ }
+ List<PatMedInhosp> inhospList = inhospVisitFacade.selectPatMedInhospList(query);
+ if (CollectionUtils.isEmpty(inhospList)) {
+ noDischargeRecordPatids.add(patid);
+ continue;
+ }
+
+ PatMedInhosp latestInhosp = inhospList.get(0);
+ if (Objects.isNull(latestInhosp.getEndtime())) {
+ noDischargeRecordPatids.add(patid);
+ continue;
+ }
+
+ PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
+ if (Objects.isNull(patArchive)) {
+ noArchivePatids.add(patid);
+ continue;
+ }
+
+ // 閿佸畾鎮h�呮。妗堣锛屼覆琛屽寲鍚屼竴鎮h�呯殑骞跺彂鍒涘缓璇锋眰
+ Long lockedPatid = patArchiveMapper.lockPatArchiveByPatid(patid);
+ if (Objects.isNull(lockedPatid)) {
+ noArchivePatids.add(patid);
+ continue;
+ }
+
+ // 鍚屼竴鎮h�呭湪鍚屼竴 taskid 涓嬪凡鏈夋湭瀹屾垚闅忚浠诲姟鏃讹紝璺宠繃璇ユ偅鑰咃紝閬垮厤閲嶅鍒涘缓
+ int existingSubtaskCount = serviceSubtaskMapper.countUnfinishedServiceSubtaskByPatidAndTaskid(
+ patid, serviceTask.getTaskid(), activeSendstates);
+ if (existingSubtaskCount > 0) {
+ duplicatePatids.add(patid);
+ String patientName = StringUtils.isNotEmpty(patArchive.getName())
+ ? patArchive.getName() : String.valueOf(patid);
+ duplicatePatientNames.add(patientName + "(" + patid + ")");
+ log.info("addManualVisit 鎮h�呭凡鏈夌浉鍚屾湇鍔★紝璺宠繃鐢熸垚锛宲atid锛歿}锛宼askid锛歿}锛屽凡鏈変换鍔℃暟锛歿}",
+ patid, serviceTask.getTaskid(), existingSubtaskCount);
+ continue;
+ }
+
+ // 鍏堟瀯寤烘柊浠诲姟锛屾瀯寤哄け璐ユ椂涓嶅垹闄ゅ師浠诲姟锛岄伩鍏嶆偅鑰呬涪澶卞緟闅忚浠诲姟
+ ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, latestInhosp, patArchive, config, 1);
+ if (Objects.isNull(serviceSubtask) || Objects.isNull(serviceSubtask.getTaskid())) {
+ generateFailedPatids.add(patid);
+ continue;
+ }
+
+ List<Long> inhospids = inhospList.stream()
+ .map(PatMedInhosp::getInhospid)
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(inhospids)) {
+ deletedCount += serviceSubtaskMapper.deleteUnfinishedServiceSubtaskByInhospids(
+ patid, inhospids, unfinishedSendstates);
+ }
+
+ serviceSubtask.setId(null);
+ serviceSubtask.setUpid(null);
+ serviceSubtask.setVisitDeptCode(StringUtils.isNotEmpty(latestInhosp.getLeaveldeptcode())
+ ? latestInhosp.getLeaveldeptcode() : latestInhosp.getLeavehospitaldistrictcode());
+ serviceSubtask.setVisitDeptName(StringUtils.isNotEmpty(latestInhosp.getLeaveldeptname())
+ ? latestInhosp.getLeaveldeptname() : latestInhosp.getLeavehospitaldistrictname());
+ // 涓庡父瑙勭敓鎴愰�昏緫淇濇寔涓�鑷达細鎵嬫満鍙蜂负绌烘椂鐢熸垚浠诲姟浣嗕笉鎵ц
+ if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
+ serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark())
+ ? serviceSubtask.getRemark() + ",鎵嬫満鍙蜂负绌�" : "鎵嬫満鍙蜂负绌�");
+ serviceSubtask.setSendstate(4L);
+ serviceSubtask.setResult("error");
+ }
+
+ int inserted = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+ if (inserted != 1) {
+ throw new BaseException("鐢熸垚闅忚浠诲姟澶辫触锛宲atid锛�" + patid + "锛宼askid锛�" + serviceTask.getTaskid());
+ }
+ addServiceSubtaskPreachform(serviceSubtask, null);
+ generatedCount++;
+ log.info("addManualVisit 鐢熸垚闅忚浠诲姟鎴愬姛锛宲atid锛歿}锛宼askid锛歿}锛宻ubtaskId锛歿}",
+ patid, serviceTask.getTaskid(), serviceSubtask.getId());
+ }
+
+ String tipMessage = null;
+ if (CollectionUtils.isNotEmpty(duplicatePatids)) {
+ String taskName = StringUtils.isNotEmpty(serviceTask.getTaskName())
+ ? serviceTask.getTaskName() : String.valueOf(serviceTask.getTaskid());
+ tipMessage = "鎮h��" + String.join("銆�", duplicatePatientNames)
+ + "宸叉湁鐩稿悓鏈嶅姟銆�" + taskName + "銆戯紝宸茶烦杩�";
+ if (generatedCount > 0) {
+ tipMessage += "锛涘叾浣欐偅鑰呭凡澶勭悊";
+ }
+ }
+
+ Map<String, Object> result = new HashMap<>();
+ result.put("deletedCount", deletedCount);
+ result.put("generatedCount", generatedCount);
+ result.put("noDischargeRecordPatids", noDischargeRecordPatids);
+ result.put("noArchivePatids", noArchivePatids);
+ result.put("generateFailedPatids", generateFailedPatids);
+ result.put("duplicatePatids", duplicatePatids);
+ result.put("duplicatePatientNames", duplicatePatientNames);
+ result.put("hasDuplicate", CollectionUtils.isNotEmpty(duplicatePatids));
+ result.put("tipMessage", tipMessage);
+ log.info("addManualVisit 澶勭悊瀹屾垚锛宲atid鏁帮細{}锛宼askid锛歿}锛屽垹闄ゆ湭瀹屾垚浠诲姟鏁帮細{}锛岀敓鎴愪换鍔℃暟锛歿}锛岄噸澶嶈烦杩囨暟锛歿}",
+ patids.size(), serviceTask.getTaskid(), deletedCount, generatedCount, duplicatePatids.size());
+ return result;
+ }
}
--
Gitblit v1.9.3