From 2f684b48175dbc97a8f6e311c8f42f0167747d23 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 09 六月 2026 17:37:23 +0800
Subject: [PATCH] 【市一】手术随访对接
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 163 insertions(+), 5 deletions(-)
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
index 3901ff4..d1e648a 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -9,6 +9,7 @@
import com.ruoyi.quartz.service.ICollectHISService;
import com.smartor.domain.*;
import com.smartor.mapper.*;
+import com.smartor.service.IPatMedOuthospService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
@@ -35,7 +36,7 @@
private SysUser2Mapper sysUser2Mapper;
@Autowired
- private SysUserRole2Mapper sysUserRoleMapper;
+ private IPatMedOuthospService patMedOuthospService;
@Autowired
private SysDept2Mapper sysDept2Mapper;
@@ -73,7 +74,11 @@
@Value("${spring.profiles.active}")
private String active;
+ @Autowired
+ private PatMedOperationMapper patMedOperationMapper;
+ @Autowired
+ private PatMedOperationItemMapper patMedOperationItemMapper;
@Override
public List<PatArchive> selectPatArchiveList(PatArchive patArchive) {
@@ -114,6 +119,7 @@
//鍚屾浣忛櫌鐥呬汉淇℃伅
List<Map<String, Object>> syncTemp = syncList.stream().filter(row -> row.get("syncName").equals("pat_med_inhosp")).collect(Collectors.toList());
if (syncTemp.size() > 0) {
+ log.info("startTime:" + syncTemp.get(0).get("startTime") + ", endTime: ", endTime);
count += syncMedInhosp(syncTemp.get(0).get("startTime") + "", endTime);
utilsMapper.updateSql("update sys_sync_time set startTime='" + endTime + "' where syncName='pat_med_inhosp' ");
}
@@ -125,6 +131,12 @@
utilsMapper.updateSql("update sys_sync_time set startTime='" + endTime + "' where syncName='pat_med_outhosp' ");
}
+ //鍚屾鎵嬫湳淇℃伅
+ syncTemp = syncList.stream().filter(row -> row.get("syncName").equals("pat_med_operation")).collect(Collectors.toList());
+ if (syncTemp.size() > 0) {
+ count += syncOper(syncTemp.get(0).get("startTime") + "", endTime);
+ utilsMapper.updateSql("update sys_sync_time set startTime='" + endTime + "' where syncName='pat_med_operation' ");
+ }
} else {
log.info("鍚屾浠诲姟鏃堕棿sys_sync_time琛ㄤ腑娌℃湁闇�瑕佸悓姝ョ殑浠诲姟");
@@ -173,7 +185,8 @@
* @param
* @return
*/
- private Integer syncMedInhosp(String startTime, String endTime) {
+ @Override
+ public Integer syncMedInhosp(String startTime, String endTime) {
Integer count = 0;
PatMedInhosp patMedInhosp = new PatMedInhosp();
patMedInhosp.setLastStartTime(startTime);
@@ -291,7 +304,7 @@
patMedOuthosp1.setCampusid(patMedOuthosp1.getOrgid());
patMedOuthosp1.setOrgid("1");
}
- count += patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp1);
+ count += patMedOuthospService.updatePatMedOuthosp(patMedOuthosp1);
} else {
patMedOuthosp1.setCreateTime(new Date());
//甯備竴 闄㈠尯id瀵瑰簲orgid锛屾満鏋刬d涓洪粯璁ょ殑1
@@ -299,13 +312,158 @@
patMedOuthosp1.setCampusid(patMedOuthosp1.getOrgid());
patMedOuthosp1.setOrgid("1");
}
- count += patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);
+ count += patMedOuthospService.insertPatMedOuthosp(patMedOuthosp1);
}
} catch (Exception ex) {
log.info("鍚屾鍑哄叆闄�:" + ex.getMessage());
}
}
return count;
+ }
+
+ /**
+ * 鍚屾鎵嬫湳淇℃伅
+ *
+ * @param
+ * @return
+ */
+ @Override
+ public Integer syncOper(String startTime, String endTime) {
+ Integer count = 0;
+ PatMedOperation patMedOperation = new PatMedOperation();
+ patMedOperation.setLastStartTime(startTime);
+ patMedOperation.setLastEndTime(endTime);
+ List<PatMedOperation> patMedOperations = chMapper.selectOperList(patMedOperation);
+ Map<String, Long> patIdHisMap = buildOperationPatIdHisMap(patMedOperations);
+
+ log.info("鍚屾鎵嬫湳淇℃伅鏁伴噺" + patMedOperations.size());
+ for (PatMedOperation operation : patMedOperations) {
+ try {
+ Long patId = patIdHisMap.get(operation.getPatidHis());
+ if (patId == null) {
+ patId = syncSinglePatient(operation.getPatidHis());
+ if (patId != null) {
+ patIdHisMap.put(operation.getPatidHis(), patId);
+ }
+ }
+
+ if (patId != null) {
+ operation.setPatid(patId);
+ }
+ PatMedOperation oper = new PatMedOperation();
+ oper.setOpid(operation.getOpid());
+ List<PatMedOperation> patMedOperations1 = patMedOperationMapper.selectPatMedOperationList(oper);
+ if (CollectionUtils.isNotEmpty(patMedOperations1)) {
+ operation.setId(patMedOperations1.get(0).getId());
+ operation.setUpdateTime(new Date());
+ count += patMedOperationMapper.updatePatMedOperation(patMedOperations1.get(0));
+ syncOperItem(operation);
+ } else {
+ operation.setCreateTime(new Date());
+ count += patMedOperationMapper.insertPatMedOperation(operation);
+ syncOperItem(operation);
+ }
+ } catch (Exception ex) {
+ log.info("鍚屾鎵嬫湳淇℃伅:" + ex.getMessage());
+ }
+ }
+ return count;
+ }
+
+ /**
+ * 鍚屾鎵嬫湳淇℃伅
+ *
+ * @param
+ * @return
+ */
+ private Integer syncOperItem(PatMedOperation operation) {
+ Integer count = 0;
+ PatMedOperationItem patMedOperationItem = new PatMedOperationItem();
+ patMedOperationItem.setOrgid(operation.getOrgid());
+ if(StringUtils.isNotEmpty(operation.getOpid())){
+ patMedOperationItem.setOpid(Long.valueOf(operation.getOpid()));
+ patMedOperationItem.setLastStartTime(operation.getLastStartTime());
+ patMedOperationItem.setLastEndTime(operation.getLastEndTime());
+ List<PatMedOperationItem> patMedOperationItems = chMapper.selectOperItemList(patMedOperationItem);
+ log.info("鍚屾鎵嬫湳璇︽儏淇℃伅鏁伴噺" + patMedOperationItems.size());
+ for (PatMedOperationItem operationItem : patMedOperationItems) {
+ try {
+ PatMedOperationItem operItem = new PatMedOperationItem();
+ operItem.setOpid(operationItem.getOpid());
+ operItem.setOperationid(operationItem.getOperationid());
+ List<PatMedOperationItem> patMedOperationItems1 = patMedOperationItemMapper.selectPatMedOperationItemList(operItem);
+ if (CollectionUtils.isNotEmpty(patMedOperationItems1)) {
+ operationItem.setId(patMedOperationItems1.get(0).getId());
+ operationItem.setUpdateTime(new Date());
+ count += patMedOperationItemMapper.updatePatMedOperationItem(operationItem);
+ } else {
+ operation.setCreateTime(new Date());
+ count += patMedOperationItemMapper.insertPatMedOperationItem(operationItem);
+ }
+ } catch (Exception ex) {
+ log.info("鍚屾鎵嬫湳璇︽儏淇℃伅:" + ex.getMessage());
+ }
+ }
+
+// try {
+// patMedOperationItemMapper.deleteHardPatMedOperationItemByOpId(operation.getOpid());
+// count += patMedOperationItemMapper.insertPatMedOperationItems(patMedOperationItems);
+// }catch (Exception ex) {
+// log.info("鍚屾鎵嬫湳璇︽儏淇℃伅:" + ex.getMessage());
+// }
+ }
+ return count;
+ }
+
+ private Map<String, Long> buildOperationPatIdHisMap(List<PatMedOperation> operations) {
+ List<String> patidHiss = operations.stream()
+ .map(PatMedOperation::getPatidHis)
+ .filter(StringUtils::isNotEmpty)
+ .distinct()
+ .collect(Collectors.toList());
+
+ if (CollectionUtils.isEmpty(patidHiss)) {
+ return new HashMap<>();
+ }
+
+ return patArchiveMapper.selectPatArchiveByPatidHiss(patidHiss).stream()
+ .filter(item -> StringUtils.isNotEmpty(item.getPatidHis()) && item.getId() !=
+ null)
+ .collect(Collectors.toMap(
+ PatArchive::getPatidHis,
+ PatArchive::getId,
+ (a, b) -> a
+ ));
+ }
+
+ private Long syncSinglePatient(String patidHis) {
+ if (StringUtils.isEmpty(patidHis)) {
+ return null;
+ }
+
+ PatArchive hisQuery = new PatArchive();
+ hisQuery.setPatidHis(patidHis);
+ hisQuery.setPageSize(5);
+ List<PatArchive> hisArchives = chMapper.selectPatArchiveList(hisQuery);
+ if (CollectionUtils.isEmpty(hisArchives)) {
+ return null;
+ }
+
+ PatArchive localQuery = new PatArchive();
+ localQuery.setPatidHis(patidHis);
+ List<PatArchive> localArchives = patArchiveMapper.selectPatArchiveList(localQuery);
+
+ PatArchive hisArchive = hisArchives.get(0);
+ if (CollectionUtils.isNotEmpty(localArchives)) {
+ hisArchive.setId(localArchives.get(0).getId());
+ hisArchive.setUpdateTime(new Date());
+ patArchiveMapper.updatePatArchive(hisArchive);
+ return localArchives.get(0).getId();
+ } else {
+ hisArchive.setCreateTime(new Date());
+ patArchiveMapper.insertPatArchiveSingle(hisArchive);
+ return hisArchive.getId();
+ }
}
@Override
@@ -413,7 +571,7 @@
patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));
patMedOuthosp1.setPatid(patArchives.get(0).getId());
}
- i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);
+ i = patMedOuthospService.insertPatMedOuthosp(patMedOuthosp1);
}
return i;
--
Gitblit v1.9.3