From 6659135780e718758417efde4c8c351c69e3755b Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 11 十二月 2025 15:52:19 +0800
Subject: [PATCH] 代码提交
---
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java | 339 +++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 271 insertions(+), 68 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
index 408e684..1d3a0a4 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -1,5 +1,7 @@
package com.smartor.service.impl;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.ruoyi.common.core.domain.entity.SysDept;
@@ -13,20 +15,21 @@
import com.smartor.service.IPatArchiveService;
import com.smartor.service.IPatMedInhospService;
import com.smartor.service.IServiceSLTDHealthcareRecordService;
-import com.sun.org.apache.bcel.internal.generic.NEW;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
-import java.lang.reflect.Array;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.concurrent.TimeUnit;
@Slf4j
@Service
@@ -56,6 +59,9 @@
@Autowired
private SysUserRole2Mapper sysUserRoleMapper;
+ @Autowired
+ private RedisTemplate<String, String> redisTemplate;
+
@Value("${sltd_pub_path}")
private String sltdPubPath;
@@ -65,15 +71,15 @@
@Override
public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
try {
- log.info("銆恞ueryHealthcareRecordList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}", reqVO);
Map<String, Object> requestParams = buildRequestParams(reqVO);
Map<String, String> headers = buildRequestHeaders();
-
String result = HttpUtils.sendPostByHeader(sltdPubPath + "osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", new Gson().toJson(requestParams), headers);
- log.info("銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
String cry = determineCry(reqVO);
- return parseResponseData(result, reqVO.getHealthcareRecordTypeList(), cry, reqVO.getCampusId());
+ log.info("cry鐨勫�间负锛歿}", cry);
+ List<ServiceSLTDInhospResDTO> serviceSLTDInhospResDTOS = parseResponseData(result, CollectionUtils.isNotEmpty(reqVO.getStatusList()) ? reqVO.getStatusList() : reqVO.getHealthcareRecordTypeList(), cry, reqVO.getCampusId() != null ? reqVO.getCampusId().toString() : null);
+ log.info("serviceSLTDInhospResDTOS鏄惁杩斿洖鐨勬湁鍊硷細{}", CollectionUtils.isNotEmpty(serviceSLTDInhospResDTOS) ? "鏈�" : "娌℃湁");
+ return serviceSLTDInhospResDTOS;
} catch (Exception e) {
log.error("銆恞ueryHealthcareRecordList銆戣皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
throw new RuntimeException("璋冪敤鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛澶辫触", e);
@@ -118,12 +124,13 @@
Map<String, String> headers = buildRequestHeaders();
String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/dept/queryDeptList", new Gson().toJson(params), headers);
- log.info("銆恞ueryDeptWardAreaInfoList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
+ log.info("銆恞ueryDeptWardAreaInfoList銆戞帴鍙e搷搴旂粨鏋滐細{}", StringUtils.isEmpty(result) ? "绌虹殑" : "涓嶇┖");
List<Map<String, Object>> dataList = getDataList(result);
log.info("-----------dataList鎺ュ彛鍝嶅簲缁撴灉锛歿}", dataList.size());
for (Map<String, Object> dataItem : dataList) {
SysDept sysDept = new SysDept();
- sysDept.setOrgid("" + serviceSLTDDeptReqVO.getCampusIds().get(0));
+ sysDept.setOrgid("" + getLongValue(dataItem, "orgId"));
+ sysDept.setCampusid("" + getLongValue(dataItem, "campusId"));
sysDept.setHisDeptId("" + getLongValue(dataItem, "deptId"));
sysDept.setHisParentId(getStringValue(dataItem, "parentDeptId"));
//閫氳繃his鐨勭埗绉戝ID鍘绘壘鍒扮瀹D,濉厖parentId
@@ -169,6 +176,20 @@
return true;
}
+ @Override
+ public void aa(Map<String, Object> map) {
+ List<String> types = new ArrayList<>();
+ types.add("FH0109.27");
+ ObjectMapper objectMapper = new ObjectMapper();
+ try {
+ String jsonString = objectMapper.writeValueAsString(map);
+ parseResponseData(jsonString, types, "1", "20001001");
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+
+ }
+
/**
* 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅
@@ -181,7 +202,7 @@
Map<String, Object> requestParams = buildRequestParams(reqVO);
Map<String, String> headers = buildRequestHeaders();
String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/staff/queryStaffList", new Gson().toJson(requestParams), headers);
- log.info("銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
+ log.info("銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滄槸鍚︽湁鍊硷細{}", StringUtils.isEmpty(result) ? "娌″��" : "鏈夊��");
List<Map<String, Object>> dataList = getDataList(result);
for (Map<String, Object> dataItem : dataList) {
SysUser sysUser = new SysUser();
@@ -222,27 +243,38 @@
sysUser.setUpdateBy("admin");
sysUser.setCreateBy("admin");
sysUser.setCreateBy("admin");
- sysUser.setOrgid(reqVO.getCampusId().toString());
+ sysUser.setOrgid("" + getLongValue(dataItem, "orgId"));
+// sysUser.setCampusid("" + getLongValue(dataItem, "cmpusId"));
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
sysUser.setPassword(passwordEncoder.encode(userPwd));
- sysUser2Mapper.insertUser(sysUser);
+ SysUser sysUser1 = sysUser2Mapper.selectUserByUserName(sysUser.getUserName());
+ if (ObjectUtils.isNotEmpty(sysUser1)) {
+ sysUser.setUserId(sysUser1.getUserId());
+ sysUser2Mapper.updateUser(sysUser);
+ } else {
+ sysUser2Mapper.insertUser(sysUser);
+ }
// 澶勭悊鐢ㄦ埛涓庨儴闂ㄧ殑鍏崇郴
- List personnelDepts = (List<?>) dataItem.get("personnelDepts");
- if (CollectionUtils.isEmpty(personnelDepts)) {
+ List businessDepts = (List<?>) dataItem.get("businessDepts");
+ if (CollectionUtils.isEmpty(businessDepts)) {
continue;
}
List<List<String>> deptInfoList = new ArrayList<>();
List<List<String>> hospInfoList = new ArrayList<>();
- for (Object personnelDept : personnelDepts) {
- if (personnelDept instanceof Map) {
- Map<String, Object> personnelDeptMap = (Map<String, Object>) personnelDept;
+ log.info("------businessDepts鏄惁鏈夊�硷細{}", businessDepts.size());
+ for (Object businessDept : businessDepts) {
+ if (businessDept instanceof Map) {
+ Map<String, Object> businessDeptMap = (Map<String, Object>) businessDept;
+ log.info("------businessDeptMap鏄惁鏈夊�硷細{}", businessDeptMap);
// Long hisDeptId = (Long) personnelDeptMap.get("deptId");
- String hisDeptId = getStringValue(personnelDeptMap, "deptId");
+ String hisDeptId = getStringValue(businessDeptMap, "deptId");
+ log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getOrgId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
//鍦ㄨ繖閲岋紝hisDeptId灏辨槸deptCode
- SysDept sysDept = sysDeptMapper.selectDeptByCode(hisDeptId, reqVO.getCampusId().toString());
+ SysDept sysDept = sysDeptMapper.selectDeptByCode(hisDeptId, reqVO.getOrgId());
+ log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getCampusId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
if (Objects.isNull(sysDept)) continue;
SysUserDept sysUserDept = new SysUserDept();
sysUserDept.setUserId(sysUser.getUserId());
@@ -253,7 +285,21 @@
sysUserDept.setOrgid(sysDept.getOrgid());
sysUserDept.setCreateTime(new Date());
sysUserDept.setDelFlag(0L);
- sysUserDeptMapper.insertSysUserDept(sysUserDept);
+
+ //鍒ゆ柇涓�涓嬫槸涓嶆槸宸茬粡瀛樺湪浜�
+ if (ObjectUtils.isNotEmpty(sysUser1) && ObjectUtils.isNotEmpty(sysDept)) {
+ SysUserDept sud = new SysUserDept();
+ sud.setUserId(sysUser1.getUserId());
+ sud.setDeptId(sysDept.getDeptId());
+ List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sud);
+ if (CollectionUtils.isNotEmpty(sysUserDepts)) {
+ sysUserDept.setId(sysUserDepts.get(0).getId());
+ sysUserDeptMapper.updateSysUserDept(sysUserDept);
+ }
+ } else {
+ //涓嶅瓨鍦紝鍒欐柊澧�
+ sysUserDeptMapper.insertSysUserDept(sysUserDept);
+ }
if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("1")) {
hospInfoList.add(Arrays.asList(sysDept.getDeptCode()));
} else if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("2")) {
@@ -273,21 +319,30 @@
sur.setUserId(sysUser.getUserId());
sur.setRoleId(3L);
sur.setOrgid(sysUser.getOrgid());
+
+ //鍏堟煡璇竴涓嬶紝鏄惁瀛樺湪
+ SysUserRole sysUserRole = sysUserRoleMapper.selectUserRoleByRoleIdAndUserId(sysUser.getUserId(), 3L);
+ if (ObjectUtils.isNotEmpty(sysUserRole)) continue;
+
userRoleList.add(sur);
sysUserRoleMapper.batchUserRole(userRoleList);
-
}
return true;
}
private String determineCry(ServiceSLTDInhospReqVO reqVO) {
- if (reqVO.getHealthcareRecordTypeList().contains("FH0108.02")) {
- if (reqVO.getStartHeadTime() != null && reqVO.getStartTailTime() != null) {
- return "0";
- } else if (StringUtils.isNotEmpty(reqVO.getPreOutHospitalHeadDate()) && StringUtils.isNotEmpty(reqVO.getPreOutHospitalTailDate())) {
- return "1";
- }
+ if (CollectionUtils.isEmpty(reqVO.getStatusList())) return null;
+
+ if (reqVO.getStatusList().contains("FH0109.26")) {
+ //鍏ラ櫌
+ return "0";
+ } else if (reqVO.getStatusList().contains("FH0109.27")) {
+ //鍑洪櫌
+ return "1";
+ } else if (reqVO.getStatusList().contains("FH0109.22") || reqVO.getStatusList().contains("FH0109.23") || reqVO.getStatusList().contains("FH0109.53")) {
+ //棰勫叆闄�
+ return "3";
}
return null;
}
@@ -321,6 +376,9 @@
if (reqVO.getHealthcareRecordTypeList() != null && !reqVO.getHealthcareRecordTypeList().isEmpty()) {
params.put("healthcareRecordTypeList", reqVO.getHealthcareRecordTypeList());
}
+ if (reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty()) {
+ params.put("statusList", reqVO.getStatusList());
+ }
params.put("subjectCode", reqVO.getPatientName());
params.put("healthcareRecordNo", reqVO.getHealthcareRecordNo());
params.put("orgSubjectCode", reqVO.getIdCardNo());
@@ -329,7 +387,8 @@
}
params.put("serviceScopes", null);
params.put("inpatientArea", null);
- params.put("status", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList().get(0) : null);
+// params.put("status", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList().get(0) : null);
+ params.put("status", null);
return params;
}
@@ -340,9 +399,8 @@
return headers;
}
- private List<ServiceSLTDInhospResDTO> parseResponseData(String result, List<String> types, String cry, Long orgid) {
+ private List<ServiceSLTDInhospResDTO> parseResponseData(String result, List<String> types, String cry, String campusId) {
try {
-
List<Map<String, Object>> dataList = getDataList(result);
List<ServiceSLTDInhospResDTO> resultList = new ArrayList<>();
for (Map<String, Object> dataItem : dataList) {
@@ -350,7 +408,7 @@
}
log.info("銆恜arseResponseData銆戞垚鍔熻В鏋恵}鏉″仴搴疯褰曟暟鎹�", resultList.size());
- processResultList(resultList, types, cry, orgid);
+ processResultList(resultList, types, cry, campusId);
return resultList;
} catch (Exception e) {
log.error("銆恜arseResponseData銆戣В鏋愬搷搴旀暟鎹紓甯革紝鍝嶅簲鍐呭锛歿}", result, e);
@@ -380,41 +438,83 @@
Type listType = new TypeToken<List<Map<String, Object>>>() {
}.getType();
List<Map<String, Object>> dataList = gson.fromJson(dataJson, listType);
+
+ // 浣跨敤 Set 鍘婚噸锛岀‘淇濇病鏈夐噸澶嶇殑鏁版嵁
+ Set<Map<String, Object>> uniqueDataSet = new HashSet<>(dataList);
+ dataList = new ArrayList<>(uniqueDataSet);
return dataList;
}
- private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, Long orgid) {
+ private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, String campusId) {
for (String type : types)
switch (type) {
case "FH0108.01":
log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
- outHospitalDate(resultList, orgid);
+ outHospitalDate(resultList);
break;
- case "FH0108.02":
+ case "FH0109.26":
log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
- inHospitalDate(resultList, cry, orgid);
+ inHospitalDate(resultList, cry);
break;
- case "FH0108.03":
- log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
- outHospitalDate(resultList, orgid);
+ case "FH0109.22":
+ log.info("銆恜arseResponseData銆戣В鏋愰浣忛櫌鏁版嵁");
+ inHospitalDate(resultList, cry);
break;
+ case "FH0109.23":
+ log.info("銆恜arseResponseData銆戣В鏋愰浣忛櫌锛堝緟瀹夊簥锛夋暟鎹�");
+ inHospitalDate(resultList, cry);
+ break;
+ case "FH0109.27":
+ log.info("銆恜arseResponseData銆戣В鏋愬嚭闄㈡暟鎹�");
+ inHospitalDate(resultList, cry);
+ break;
+ case "FH0109.53":
+ log.info("銆恜arseResponseData銆戣В鏋愰浣忛櫌锛堝叾浠栵級鏁版嵁");
+ inHospitalDate(resultList, cry);
+ break;
+// case "FH0108.03":
+// log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
+// outHospitalDate(resultList);
+// break;
default:
log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
break;
}
}
- private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList, Long orgid) {
+ private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
+ List<PatMedOuthosp> batchList = new ArrayList<>();
+
for (ServiceSLTDInhospResDTO dto : resultList) {
- if (Objects.isNull(dto)) continue;
- PatArchive patArchive = processPatientArchive(dto, orgid);
- PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive, orgid);
- patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);
+ if (Objects.isNull(dto)) {
+ continue;
+ }
+ PatArchive patArchive = processPatientArchive(dto);
+ PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive);
+ batchList.add(patMedOuthosp);
+ }
+
+ // 鎵归噺鎻掑叆锛岃嚜鍔ㄥ拷鐣ラ噸澶�
+ if (CollectionUtils.isNotEmpty(batchList)) {
+ try {
+ int insertCount = patMedOuthospMapper.batchInsertIgnore(batchList);
+ log.info("鎵归噺鎻掑叆闂ㄦ�ヨ瘖璁板綍锛屾�绘暟锛歿}, 瀹為檯鎻掑叆锛歿}", batchList.size(), insertCount);
+ } catch (Exception e) {
+ log.error("鎵归噺鎻掑叆闂ㄦ�ヨ瘖璁板綍澶辫触", e);
+ // 闄嶇骇涓洪�愭潯鎻掑叆
+ for (PatMedOuthosp patMedOuthosp : batchList) {
+ try {
+ patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);
+ } catch (Exception ex) {
+ log.warn("鍗曟潯鎻掑叆澶辫触锛歴erialnum={}", patMedOuthosp.getSerialnum());
+ }
+ }
+ }
}
return true;
}
- private PatMedOuthosp buildPatMedOuthosp(ServiceSLTDInhospResDTO dto, PatArchive patArchive, Long orgid) {
+ private PatMedOuthosp buildPatMedOuthosp(ServiceSLTDInhospResDTO dto, PatArchive patArchive) {
PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
patMedOuthosp.setOuthospno(dto.getHealthcareRecordNo());
patMedOuthosp.setSerialnum(dto.getHealthcareRecordNo());
@@ -432,7 +532,8 @@
patMedOuthosp.setMainsuit(dto.getDiagnosisName());
patMedOuthosp.setHpi(null);
patMedOuthosp.setCreateTime(new Date());
- patMedOuthosp.setOrgid("" + orgid);
+ patMedOuthosp.setOrgid(dto.getOrgId());
+ patMedOuthosp.setCampusid(dto.getCampusId());
return patMedOuthosp;
}
@@ -448,36 +549,134 @@
}
}
- private Boolean inHospitalDate(List<ServiceSLTDInhospResDTO> resultList, String cry, Long orgid) {
+ private Boolean inHospitalDate(List<ServiceSLTDInhospResDTO> resultList, String cry) {
for (ServiceSLTDInhospResDTO dto : resultList) {
if (Objects.isNull(dto)) continue;
- PatArchive patArchive = processPatientArchive(dto, orgid);
- processPatientInhospInfo(dto, patArchive, cry, orgid);
+ PatArchive patArchive = processPatientArchive(dto);
+ processPatientInhospInfo(dto, patArchive, cry);
}
return true;
}
- private void processPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry, Long orgid) {
- PatMedInhosp patMedInhosp = buildPatientInhospInfo(dto, patArchive, cry, orgid);
+ private void processPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {
+ PatMedInhosp patMedInhosp = buildPatientInhospInfo(dto, patArchive, cry);
PatMedInhosp queryInhosp = new PatMedInhosp();
- queryInhosp.setPatno(patArchive.getPatientno());
- queryInhosp.setSerialnum(patMedInhosp.getSerialnum());
- queryInhosp.setOrgid("" + orgid);
- log.info("----------------杩欓噷鐨勫叆鍙備负锛歿}", queryInhosp);
- List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhospList(queryInhosp);
+ queryInhosp.setPatno(StringUtils.trim(patArchive.getPatientno()));
+ queryInhosp.setSerialnum(StringUtils.trim(patMedInhosp.getSerialnum()));
+ queryInhosp.setOrgid(StringUtils.trim(dto.getOrgId()));
+ queryInhosp.setInhospstate(cry);
+ log.info("----------------杩欓噷鐨勫叆鍙備负锛歿},{}", queryInhosp.getPatno(), queryInhosp.getSerialnum());
+ List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
- log.info("----------------杩欓噷鐨勮繑鍙備负锛歿}", existingInhosps);
- if (CollectionUtils.isNotEmpty(existingInhosps)) {
- patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());
- patMedInhospService.updatePatMedInhosp(patMedInhosp);
- log.debug("銆恜rocessPatientInhospInfo銆戞洿鏂颁綇闄俊鎭紝鎮h�呯紪鍙凤細{}锛屾祦姘村彿锛歿}", patArchive.getPatientno(), patMedInhosp.getSerialnum());
- } else {
- patMedInhospService.insertPatMedInhosp(patMedInhosp);
- log.debug("銆恜rocessPatientInhospInfo銆戞柊澧炰綇闄俊鎭紝鎮h�呯紪鍙凤細{}锛屾祦姘村彿锛歿}", patArchive.getPatientno(), patMedInhosp.getSerialnum());
+ if (cry.equals("0")) {
+ //鍏ラ櫌鏁版嵁澶勭悊
+ if (CollectionUtils.isEmpty(existingInhosps)) {
+ //濡傛灉涓虹┖锛岃鍏堝垽鏂紝棰勫叆闄㈡槸鍚︽湁鍊硷紝鏈夊�肩殑璇濆垯鏇存柊
+ queryInhosp.setInhospstate("3");
+ List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
+ if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+ //濡傛灉棰勫叆闄笉涓虹┖锛屽垯杩涜淇敼
+ patMedInhospService.updatePatMedInhosp(patMedInhosp);
+ } else {
+ //濡傛灉鍑洪櫌涓嶄负绌猴紝鍒欎笉杩涜澶勭悊
+ queryInhosp.setInhospstate("1");
+ patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
+ if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+ return;
+ }
+ }
+
+ //濡傛灉閮戒负绌猴紝鍒欒繘琛屾柊澧�
+ if (CollectionUtils.isEmpty(patMedInhospList)) {
+ try {
+ patMedInhospService.insertPatMedInhosp(patMedInhosp);
+ } catch (org.springframework.dao.DuplicateKeyException e) {
+ log.warn("鍏ラ櫌璁板綍宸插瓨鍦紝璺宠繃锛歴erialnum={}, orgid={}, state={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), patMedInhosp.getInhospstate());
+ }
+ }
+ }
+
+ } else if (cry.equals("1")) {
+// 鍑洪櫌鏁版嵁澶勭悊
+ if (CollectionUtils.isEmpty(existingInhosps)) {
+ //濡傛灉涓虹┖锛岃鍏堝垽鏂紝棰勫叆闄㈡槸鍚︽湁鍊硷紝鏈夊�肩殑璇濆垯鏇存柊
+ queryInhosp.setInhospstate("3");
+ log.info("-----patMedInhospList杩涙潵浜嗕笉锛熷叆鍙備负锛歿}", queryInhosp);
+ List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
+ log.info("----patMedInhospList杩涙潵浜嗕笉锛熻繑鍙備负锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? null : patMedInhospList.get(0).getSerialnum());
+ if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+ //濡傛灉棰勫叆闄笉涓虹┖锛屽垯杩涜淇敼
+ patMedInhospService.updatePatMedInhosp(patMedInhosp);
+ } else {
+ //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
+ queryInhosp.setInhospstate("0");
+ patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
+ if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+ patMedInhospService.updatePatMedInhosp(patMedInhosp);
+ }
+ }
+
+ //濡傛灉閮戒负绌猴紝鍒欒繘琛屾柊澧�
+ if (CollectionUtils.isEmpty(patMedInhospList)) {
+ //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
+ queryInhosp.setInhospstate("0");
+ log.debug("鍑洪櫌queryInhosp鍏ュ弬涓猴細{}", queryInhosp);
+ List<PatMedInhosp> patMedInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
+ log.debug("鍑洪櫌patMedInhospList杩斿弬涓猴細{}", CollectionUtils.isEmpty(patMedInhosps) ? null : patMedInhosps.size());
+ if (CollectionUtils.isNotEmpty(patMedInhosps)) {
+ patMedInhospService.updatePatMedInhosp(patMedInhosp);
+ } else {
+ try {
+ patMedInhospService.insertPatMedInhosp(patMedInhosp);
+ } catch (org.springframework.dao.DuplicateKeyException e) {
+ log.warn("鍑洪櫌璁板綍宸插瓨鍦紝璺宠繃锛歴erialnum={}, orgid={}, state={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), patMedInhosp.getInhospstate());
+ }
+ }
+ }
+ }
+ } else if ("3".equals(cry)) {
+ //棰勫叆闄㈡暟鎹鐞嗭細浠讳竴鐘舵�佸瓨鍦ㄥ垯涓嶆柊澧烇紱閮戒笉瀛樺湪鎵嶆柊澧�
+ String serialnum = patMedInhosp.getSerialnum() == null ? "" : patMedInhosp.getSerialnum().trim();
+ String orgid = patMedInhosp.getOrgid() == null ? "" : patMedInhosp.getOrgid().trim();
+ String state = patMedInhosp.getInhospstate() == null ? "" : patMedInhosp.getInhospstate();
+ String lockKey = "inhosp:lock:" + serialnum + ":" + orgid + ":" + state;
+
+ Boolean locked = false;
+ try {
+ locked = redisTemplate.opsForValue().setIfAbsent(lockKey, "1", 10, TimeUnit.SECONDS);
+ } catch (Exception e) {
+ log.warn("Redis閿佽幏鍙栧け璐ワ紝闄嶇骇涓虹洿鎺ユ彃鍏ワ細{}", e.getMessage());
+ locked = null; // 鏍囪Redis涓嶅彲鐢�
+ }
+
+ if (locked == null || Boolean.TRUE.equals(locked)) {
+ try {
+ queryInhosp.setInhospstate(null);
+ List<PatMedInhosp> patMedInhospList3 = patMedInhospService.selectPatMedInhosp(queryInhosp);
+ if (CollectionUtils.isEmpty(patMedInhospList3)) {
+ try {
+ patMedInhospService.insertPatMedInhosp(patMedInhosp);
+ log.debug("鎴愬姛鎻掑叆棰勫叆闄㈣褰曪細serialnum={}", patMedInhosp.getSerialnum());
+ } catch (Exception e) {
+ log.warn("棰勫叆闄㈣褰曟彃鍏ュけ璐ワ紙鍙兘宸插瓨鍦級锛歴erialnum={}, orgid={}, state={}, 閿欒锛歿}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), patMedInhosp.getInhospstate(), e.getMessage());
+ }
+ }
+ } finally {
+ if (Boolean.TRUE.equals(locked)) {
+ try {
+ redisTemplate.delete(lockKey);
+ } catch (Exception e) {
+ log.warn("Redis閿侀噴鏀惧け璐ワ細{}", e.getMessage());
+ }
+ }
+ }
+ } else {
+ log.debug("棰勫叆闄㈣褰曟鍦ㄨ鍏朵粬绾跨▼澶勭悊锛岃烦杩囷細serialnum={}", patMedInhosp.getSerialnum());
+ }
}
}
- private PatMedInhosp buildPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry, Long orgid) {
+ private PatMedInhosp buildPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {
log.info("----------------buildPatientInhospInfo杩欓噷杩涙潵浜嗗悧锛焮}", cry);
PatMedInhosp patMedInhosp = new PatMedInhosp();
patMedInhosp.setPatid(patArchive.getId());
@@ -489,6 +688,7 @@
patMedInhosp.setFuflag("1");
if ("0".equals(cry)) patMedInhosp.setInhospstate("0");
if ("1".equals(cry)) patMedInhosp.setInhospstate("1");
+ if ("3".equals(cry)) patMedInhosp.setInhospstate("3");
patMedInhosp.setHospitalcode(dto.getOrgId());
patMedInhosp.setBedNo(dto.getBedNumber());
patMedInhosp.setStarttime(parseDate(dto.getStartTime()));
@@ -504,7 +704,8 @@
patMedInhosp.setDrcode("" + dto.getDoctorId());
patMedInhosp.setSchemestatus("0".equals(cry) ? 1L : 2L);
patMedInhosp.setDelFlag("0");
- patMedInhosp.setOrgid("" + orgid);
+ patMedInhosp.setOrgid(dto.getOrgId());
+ patMedInhosp.setCampusid(dto.getCampusId());
return patMedInhosp;
}
@@ -531,12 +732,12 @@
patMedInhosp.setHospitaldistrictname(dto.getAreaName());
}
- private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto, Long orgid) {
+ private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {
PatArchive queryArchive = new PatArchive();
queryArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive);
- PatArchive patArchive = buildPatientArchive(dto, orgid);
+ PatArchive patArchive = buildPatientArchive(dto);
if (CollectionUtils.isEmpty(existingArchives)) {
patArchiveService.insertPatArchive(patArchive);
@@ -550,7 +751,7 @@
return patArchive;
}
- private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto, Long orgid) {
+ private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto) {
PatArchive patArchive = new PatArchive();
patArchive.setPatientno("" + dto.getPatientId());
patArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
@@ -569,13 +770,15 @@
patArchive.setDelFlag("0");
patArchive.setCreateTime(new Date());
patArchive.setUpdateTime(new Date());
- patArchive.setOrgid("" + orgid);
+ patArchive.setOrgid("" + dto.getOrgId());
+ patArchive.setCampusid(dto.getCampusId());
return patArchive;
}
private ServiceSLTDInhospResDTO convertToDTO(Map<String, Object> dataItem) {
ServiceSLTDInhospResDTO dto = new ServiceSLTDInhospResDTO();
dto.setOrgId(getStringValue(dataItem, "orgId"));
+ dto.setCampusId(getStringValue(dataItem, "campusId"));
dto.setHealthcareRecordId(getLongValue(dataItem, "healthcareRecordId"));
dto.setHealthcareRecordNo(getStringValue(dataItem, "healthcareRecordNo"));
dto.setPatientId(getLongValue(dataItem, "patientId"));
--
Gitblit v1.9.3