From 60b7a9849e957872203ef78b99e7a0ee8e533e94 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 13 十月 2026 17:53:13 +0800
Subject: [PATCH] 【丽水】专科档案生成配置
---
smartor/src/main/resources/mapper/smartor/PatChildArchiveDetailMapper.xml | 1
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java | 110 +++++++++++++++++++++++++++
smartor/src/main/java/com/smartor/service/impl/PatMaternityArchiveServiceImpl.java | 65 +++++++++++++++
smartor/src/main/resources/mapper/smartor/PatChildArchiveMapper.xml | 1
smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java | 48 ++++++++++-
smartor/src/main/resources/mapper/smartor/PatMaternityArchiveDetailMapper.xml | 1
smartor/src/main/resources/mapper/smartor/PatMaternityArchiveMapper.xml | 1
7 files changed, 218 insertions(+), 9 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
index 04aef2b..4dd9148 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
@@ -88,14 +88,50 @@
log.error("insertOrUpdateChildArchive鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
throw new BaseException("鍎跨妗f鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
}
+ if (StringUtils.isEmpty(patChildArchiveDetail.getOuthospno())) {
+ throw new BaseException("鍎跨妗f鍏ュ弬闂ㄨ瘖缂栧彿outhospno涓虹┖锛岃妫�鏌ュ叆鍙傞棬璇婄紪鍙�");
+ }
+ if (StringUtils.isEmpty(patChildArchiveDetail.getArchiveType())) {
+ throw new BaseException("鍎跨妗f鍏ュ弬妗f绫诲瀷archiveType涓虹┖锛岃妫�鏌ュ叆鍙傛。妗堢被鍨�");
+ }
- // 鍙紶浜嗚鎯卛d鏃讹紝鍙嶆煡鍑哄搴旂殑妗f涓婚敭id锛屼繚璇佸悗缁兘姝g‘鏇存柊涓昏〃
- if (patChildArchiveDetail.getId() != null && patChildArchiveDetail.getArchiveid() == null) {
- PatChildArchiveDetail existDetail = patChildArchiveDetailService.selectPatChildArchiveDetailById(patChildArchiveDetail.getId());
- if (existDetail != null) {
- patChildArchiveDetail.setArchiveid(existDetail.getArchiveid());
+ // 鎸変笟鍔¢敭鏌ヨ鎯�
+ PatChildArchiveDetail key = new PatChildArchiveDetail();
+ key.setOrgid(patChildArchiveDetail.getOrgid());
+ key.setPatid(patChildArchiveDetail.getPatid());
+ key.setOuthospno(patChildArchiveDetail.getOuthospno());
+ key.setArchiveType(patChildArchiveDetail.getArchiveType());
+ List<PatChildArchiveDetail> olds =
+ patChildArchiveDetailService.selectPatChildArchiveDetailList(key);
+
+ Long existArchiveId = null;
+ Long existDetailId = null;
+ if (CollectionUtils.isNotEmpty(olds)) {
+ existArchiveId = olds.get(0).getArchiveid();
+ existDetailId = olds.get(0).getId();
+ }
+
+ // 璇︽儏娌℃煡鍒帮紝鍐嶅厹搴曟寜鍚屾牱閿煡涓昏〃锛岄伩鍏嶄富琛ㄩ噸澶�
+ if (existArchiveId == null) {
+ PatChildArchive mainKey = new PatChildArchive();
+ mainKey.setOrgid(patChildArchiveDetail.getOrgid());
+ mainKey.setPatid(patChildArchiveDetail.getPatid());
+ mainKey.setOuthospno(patChildArchiveDetail.getOuthospno());
+ mainKey.setArchiveType(patChildArchiveDetail.getArchiveType());
+ List<PatChildArchive> mainOlds =
+ patChildArchiveMapper.selectPatChildArchiveList(mainKey);
+ if (CollectionUtils.isNotEmpty(mainOlds)) {
+ existArchiveId = mainOlds.get(0).getId();
}
}
+ patChildArchiveDetail.setArchiveid(existArchiveId);
+
+ // 鍚庨潰鏇存柊璇︽儏鏃讹紝浼樺厛鐢ㄤ笟鍔¢敭鍖归厤鍒扮殑 detail id
+ Long detailId = patChildArchiveDetail.getId();
+ if (detailId == null) {
+ detailId = existDetailId;
+ }
+
// 灏嗚鎯呬腑鐨勫叕鍏卞瓧娈靛鍒跺埌涓昏〃瀵硅薄
PatChildArchive patChildArchive = DtoConversionUtils.sourceToTarget(patChildArchiveDetail, PatChildArchive.class);
@@ -121,7 +157,7 @@
// 鍥炲~涓昏〃id鍒拌鎯咃紝鍚屾鐢熸垚/鏇存柊璇︽儏琛�
patChildArchiveDetail.setArchiveid(patChildArchive.getId());
- Long detailId = patChildArchiveDetail.getId();
+// Long detailId = patChildArchiveDetail.getId();
if (detailId == null && patChildArchiveDetail.getArchiveid() != null) {
PatChildArchiveDetail query = new PatChildArchiveDetail();
query.setArchiveid(patChildArchiveDetail.getArchiveid());
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMaternityArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMaternityArchiveServiceImpl.java
index f5706f4..cea1042 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMaternityArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMaternityArchiveServiceImpl.java
@@ -4,8 +4,11 @@
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.StringUtils;
+import com.smartor.domain.PatChildArchive;
+import com.smartor.domain.PatChildArchiveDetail;
import com.smartor.domain.PatMaternityArchive;
import com.smartor.domain.PatMaternityArchiveDetail;
+import com.smartor.mapper.PatMaternityArchiveDetailMapper;
import com.smartor.mapper.PatMaternityArchiveMapper;
import com.smartor.service.IPatMaternityArchiveDetailService;
import com.smartor.service.IPatMaternityArchiveService;
@@ -32,6 +35,8 @@
@Autowired
private IPatMaternityArchiveDetailService patMaternityArchiveDetailService;
+ @Autowired
+ private PatMaternityArchiveDetailMapper patMaternityArchiveDetailMapper;
@Override
public PatMaternityArchive selectPatMaternityArchiveById(Long id)
@@ -89,9 +94,63 @@
throw new BaseException("濡囩妗f鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
}
+ //淇濊瘉鍚屼竴灏辫瘖璁板綍鍚屼竴妗f绫诲瀷鍙兘鐢熸垚涓�鏉�
+ PatMaternityArchiveDetail patMaternityArchiveDetailVo = new PatMaternityArchiveDetail();
+ patMaternityArchiveDetailVo.setOrgid(patMaternityArchiveDetail.getOrgid());
+ patMaternityArchiveDetailVo.setPatid(patMaternityArchiveDetail.getPatid());
+ patMaternityArchiveDetailVo.setOuthospno(patMaternityArchiveDetail.getOuthospno());
+ patMaternityArchiveDetailVo.setArchiveType(patMaternityArchiveDetail.getArchiveType());
+ List<PatMaternityArchiveDetail> patMaternityArchiveDetailOlds
+ = patMaternityArchiveDetailService.selectPatMaternityArchiveDetailList(patMaternityArchiveDetailVo);
+
+
+ if (StringUtils.isEmpty(patMaternityArchiveDetail.getOuthospno())) {
+ throw new BaseException("濡囩妗f鍏ュ弬闂ㄨ瘖缂栧彿outhospno涓虹┖锛岃妫�鏌ュ叆鍙傞棬璇婄紪鍙�");
+ }
+ if (StringUtils.isEmpty(patMaternityArchiveDetail.getArchiveType())) {
+ throw new BaseException("濡囩妗f鍏ュ弬妗f绫诲瀷archiveType涓虹┖锛岃妫�鏌ュ叆鍙傛。妗堢被鍨�");
+ }
+
+ // 鎸変笟鍔¢敭鏌ヨ鎯�
+ PatMaternityArchiveDetail key = new PatMaternityArchiveDetail();
+ key.setOrgid(patMaternityArchiveDetail.getOrgid());
+ key.setPatid(patMaternityArchiveDetail.getPatid());
+ key.setOuthospno(patMaternityArchiveDetail.getOuthospno());
+ key.setArchiveType(patMaternityArchiveDetail.getArchiveType());
+ List<PatMaternityArchiveDetail> olds =
+ patMaternityArchiveDetailService.selectPatMaternityArchiveDetailList(key);
+
+ Long existArchiveId = null;
+ Long existDetailId = null;
+ if (CollectionUtils.isNotEmpty(olds)) {
+ existArchiveId = olds.get(0).getArchiveid();
+ existDetailId = olds.get(0).getId();
+ }
+
+ // 璇︽儏娌℃煡鍒帮紝鍐嶅厹搴曟寜鍚屾牱閿煡涓昏〃锛岄伩鍏嶄富琛ㄩ噸澶�
+ if (existArchiveId == null) {
+ PatMaternityArchive mainKey = new PatMaternityArchive();
+ mainKey.setOrgid(patMaternityArchiveDetail.getOrgid());
+ mainKey.setPatid(patMaternityArchiveDetail.getPatid());
+ mainKey.setOuthospno(patMaternityArchiveDetail.getOuthospno());
+ mainKey.setArchiveType(patMaternityArchiveDetail.getArchiveType());
+ List<PatMaternityArchive> mainOlds =
+ patMaternityArchiveMapper.selectPatMaternityArchiveList(mainKey);
+ if (CollectionUtils.isNotEmpty(mainOlds)) {
+ existArchiveId = mainOlds.get(0).getId();
+ }
+ }
+ patMaternityArchiveDetail.setArchiveid(existArchiveId);
+
+ // 鍚庨潰鏇存柊璇︽儏鏃讹紝浼樺厛鐢ㄤ笟鍔¢敭鍖归厤鍒扮殑 detail id
+ Long detailId = patMaternityArchiveDetail.getId();
+ if (detailId == null) {
+ detailId = existDetailId;
+ }
+
// 鍙紶浜嗚鎯卛d鏃讹紝鍙嶆煡鍑哄搴旂殑妗f涓婚敭id锛屼繚璇佸悗缁兘姝g‘鏇存柊涓昏〃
- if (patMaternityArchiveDetail.getId() != null && patMaternityArchiveDetail.getArchiveid() == null) {
- PatMaternityArchiveDetail existDetail = patMaternityArchiveDetailService.selectPatMaternityArchiveDetailById(patMaternityArchiveDetail.getId());
+ if (CollectionUtils.isNotEmpty(patMaternityArchiveDetailOlds)) {
+ PatMaternityArchiveDetail existDetail = patMaternityArchiveDetailOlds.get(0);
if (existDetail != null) {
patMaternityArchiveDetail.setArchiveid(existDetail.getArchiveid());
}
@@ -121,7 +180,7 @@
// 鍥炲~涓昏〃id鍒拌鎯咃紝鍚屾鐢熸垚/鏇存柊璇︽儏琛�
patMaternityArchiveDetail.setArchiveid(patMaternityArchive.getId());
- Long detailId = patMaternityArchiveDetail.getId();
+// Long detailId = patMaternityArchiveDetail.getId();
if (detailId == null && patMaternityArchiveDetail.getArchiveid() != null) {
PatMaternityArchiveDetail query = new PatMaternityArchiveDetail();
query.setArchiveid(patMaternityArchiveDetail.getArchiveid());
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
index 31a679c..f672d26 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -1,6 +1,9 @@
package com.smartor.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.ruoyi.common.core.domain.entity.SysDept;
@@ -11,9 +14,12 @@
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.system.service.ISysConfigService;
import com.smartor.domain.*;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
+import com.smartor.service.IPatChildArchiveService;
+import com.smartor.service.IPatMaternityArchiveService;
import com.smartor.service.IPatMedOuthospService;
import com.smartor.service.IServiceExternalService;
import lombok.extern.slf4j.Slf4j;
@@ -70,6 +76,12 @@
private Icd10Mapper icd10Mapper;
@Autowired
private IPatMedOuthospService patMedOuthospService;
+ @Autowired
+ private ISysConfigService configService;
+ @Autowired
+ private IPatMaternityArchiveService patMaternityArchiveService;
+ @Autowired
+ private IPatChildArchiveService patChildArchiveService;
@Autowired
private PatMedOuthospMapper patMedOuthospMapper;
@Autowired
@@ -1312,6 +1324,8 @@
patMedOuthospService.dealPatMedOuthosp(patMedOuthosp, visitTimeNum);
}
+ genePatSpecificArchive(patMedOuthosp, patArchive);
+
if (i > 0) {
return true;
}
@@ -2327,4 +2341,100 @@
}
return 1;
}
+
+ //鏂板鎮h�呬笓绉戞。妗堝熀鏈俊鎭�
+ private void genePatSpecificArchive(PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
+ String deptCategory = judgeDeptCategory(patMedOuthosp.getDeptcode(), patMedOuthosp.getOrgid());
+
+ boolean isGynecology = "1".equals(deptCategory); // 鏄惁濡囩
+ boolean isPediatrics = "2".equals(deptCategory); // 鏄惁鍎跨
+
+ if (isGynecology) {
+ // 璧板绉戞。妗堢敓鎴愰�昏緫
+ PatMaternityArchiveDetail patMaternityArchiveDetail
+ = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatMaternityArchiveDetail.class);
+ patMaternityArchiveDetail.setSourceType("1");
+ patMaternityArchiveDetail.setPhone(patArchive.getTelcode());
+ patMaternityArchiveDetail.setPatid(patArchive.getId());
+ patMaternityArchiveDetail.setPatname(patArchive.getName());
+ patMaternityArchiveDetail.setBirthdate(patArchive.getBirthdate());
+ patMaternityArchiveDetail.setSex(patArchive.getSex());
+ patMaternityArchiveDetail.setAddress(patArchive.getPlaceOfResidence());
+ patMaternityArchiveDetail.setOuthospno(patMedOuthosp.getOuthospno());
+ patMaternityArchiveDetail.setSerialnum(patMedOuthosp.getSerialnum());
+ patMaternityArchiveDetail.setIcd10code(patMedOuthosp.getIcd10code());
+ patMaternityArchiveDetail.setDeptcode(patMedOuthosp.getDeptcode());
+ patMaternityArchiveDetail.setDeptname(patMedOuthosp.getDeptname());
+ patMaternityArchiveDetail.setDoctorName(patMedOuthosp.getDrname());
+ patMaternityArchiveDetail.setDoctorCode(patMedOuthosp.getDrcode());
+ patMaternityArchiveDetail.setManagementDoctorName(patMedOuthosp.getDrname());
+ patMaternityArchiveDetail.setManagementDoctorCode(patMedOuthosp.getDrcode());
+ patMaternityArchiveDetail.setOrgid(patMedOuthosp.getOrgid());
+ patMaternityArchiveDetail.setCampusid(patMedOuthosp.getCampusid());
+ patMaternityArchiveService.insertOrUpdateMaternityArchive(patMaternityArchiveDetail);
+ } else if (isPediatrics) {
+ // 璧板効绉戞。妗堢敓鎴愰�昏緫
+ PatChildArchiveDetail patChildArchiveDetail
+ = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatChildArchiveDetail.class);
+ patChildArchiveDetail.setSourceType("1");
+ patChildArchiveDetail.setPhone(patArchive.getTelcode());
+ patChildArchiveDetail.setPatid(patArchive.getId());
+ patChildArchiveDetail.setPatname(patArchive.getName());
+ patChildArchiveDetail.setBirthdate(patArchive.getBirthdate());
+ patChildArchiveDetail.setSex(patArchive.getSex());
+// patChildArchiveDetail.setAddress(patArchive.getPlaceOfResidence());
+ patChildArchiveDetail.setOuthospno(patMedOuthosp.getOuthospno());
+ patChildArchiveDetail.setSerialnum(patMedOuthosp.getSerialnum());
+ patChildArchiveDetail.setIcd10code(patMedOuthosp.getIcd10code());
+ patChildArchiveDetail.setDeptcode(patMedOuthosp.getDeptcode());
+ patChildArchiveDetail.setDeptname(patMedOuthosp.getDeptname());
+ patChildArchiveDetail.setDoctorName(patMedOuthosp.getDrname());
+ patChildArchiveDetail.setDoctorCode(patMedOuthosp.getDrcode());
+ patChildArchiveDetail.setManagementDoctorName(patMedOuthosp.getDrname());
+ patChildArchiveDetail.setManagementDoctorCode(patMedOuthosp.getDrcode());
+ patChildArchiveDetail.setOrgid(patMedOuthosp.getOrgid());
+ patChildArchiveDetail.setCampusid(patMedOuthosp.getCampusid());
+ patChildArchiveService.insertOrUpdateChildArchive(patChildArchiveDetail);
+ } else {
+ // 鏈懡涓厤缃紝涓嶇敓鎴愭。妗�
+ }
+ }
+
+ /**
+ * 鍒ゆ柇褰撳墠绉戝灞炰簬濡囩杩樻槸鍎跨
+ *
+ * @param deptCode 褰撳墠绉戝/鐥呭尯 Code锛屽 "D004"
+ * @param orgid 鍖婚櫌鏈烘瀯ID
+ * @return deptCategory锛�1-濡囩 2-鍎跨锛沶ull-鏈厤缃垨鏈懡涓�
+ */
+ public String judgeDeptCategory(String deptCode, String orgid) {
+ if (StringUtils.isEmpty(deptCode)) {
+ return null;
+ }
+
+ // 浼樺厛鍙栨満鏋勭骇閰嶇疆锛屽彇涓嶅埌鍐嶅彇鍏ㄥ眬閰嶇疆
+ String configValue = configService.selectConfigByKey("sys.dept.category",
+ orgid);
+ if (StringUtils.isEmpty(configValue)) {
+ configValue = configService.selectConfigByKey("sys.dept.category");
+ }
+ if (StringUtils.isEmpty(configValue)) {
+ return null;
+ }
+
+ JSONArray configs = JSON.parseArray(configValue);
+ if (configs == null || configs.isEmpty()) {
+ return null;
+ }
+
+ for (int i = 0; i < configs.size(); i++) {
+ JSONObject cfg = configs.getJSONObject(i);
+ JSONArray deptCodes = cfg.getJSONArray("deptCodes");
+ if (deptCodes != null && deptCodes.contains(deptCode)) {
+ return cfg.getString("deptCategory");
+ }
+ }
+ return null;
+ }
+
}
diff --git a/smartor/src/main/resources/mapper/smartor/PatChildArchiveDetailMapper.xml b/smartor/src/main/resources/mapper/smartor/PatChildArchiveDetailMapper.xml
index db6384c..d17a477 100644
--- a/smartor/src/main/resources/mapper/smartor/PatChildArchiveDetailMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatChildArchiveDetailMapper.xml
@@ -174,6 +174,7 @@
<select id="selectPatChildArchiveDetailById" parameterType="Long" resultMap="PatChildArchiveDetailResult">
<include refid="selectPatChildArchiveDetailVo"/>
where id = #{id}
+ and del_flag = '0'
</select>
<insert id="insertPatChildArchiveDetail" parameterType="com.smartor.domain.PatChildArchiveDetail"
diff --git a/smartor/src/main/resources/mapper/smartor/PatChildArchiveMapper.xml b/smartor/src/main/resources/mapper/smartor/PatChildArchiveMapper.xml
index 7e6ee5e..95fb901 100644
--- a/smartor/src/main/resources/mapper/smartor/PatChildArchiveMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatChildArchiveMapper.xml
@@ -144,6 +144,7 @@
<select id="selectPatChildArchiveById" parameterType="Long" resultMap="PatChildArchiveResult">
<include refid="selectPatChildArchiveVo"/>
where id = #{id}
+ and del_flag = '0'
</select>
<insert id="insertPatChildArchive" parameterType="com.smartor.domain.PatChildArchive"
diff --git a/smartor/src/main/resources/mapper/smartor/PatMaternityArchiveDetailMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMaternityArchiveDetailMapper.xml
index 1675900..fb2fef3 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMaternityArchiveDetailMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMaternityArchiveDetailMapper.xml
@@ -164,6 +164,7 @@
<select id="selectPatMaternityArchiveDetailById" parameterType="Long" resultMap="PatMaternityArchiveDetailResult">
<include refid="selectPatMaternityArchiveDetailVo"/>
where id = #{id}
+ and del_flag = '0'
</select>
<insert id="insertPatMaternityArchiveDetail" parameterType="com.smartor.domain.PatMaternityArchiveDetail"
diff --git a/smartor/src/main/resources/mapper/smartor/PatMaternityArchiveMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMaternityArchiveMapper.xml
index dac32bf..194b85f 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMaternityArchiveMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMaternityArchiveMapper.xml
@@ -130,6 +130,7 @@
<select id="selectPatMaternityArchiveById" parameterType="Long" resultMap="PatMaternityArchiveResult">
<include refid="selectPatMaternityArchiveVo"/>
where id = #{id}
+ and del_flag = '0'
</select>
<insert id="insertPatMaternityArchive" parameterType="com.smartor.domain.PatMaternityArchive"
--
Gitblit v1.9.3