From 3d047130b059efd46f56be37465a751ab16ee8cb Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 11 十一月 2026 14:06:56 +0800
Subject: [PATCH] Merge branch 'smartor_ls_merge' into 20261111-妇幼档案随访
---
ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java | 19 ++
.gitignore | 47 +++++
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | 4
ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitInhospRow.java | 9 +
ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java | 4
ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java | 96 ++++++++++-
ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java | 8
ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml | 66 ++++++++
ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java | 21 ++
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml | 39 +++-
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java | 5
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 45 ++++-
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 40 ++++
ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java | 25 +++
ruoyi-inhospvisit/src/main/resources/mapper/inhospvisit/VisitInhospMapper.xml | 4
ruoyi-task/src/main/java/com/ruoyi/task/api/contract/OperationSubtaskWriter.java | 4
ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java | 11 +
ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java | 8 +
18 files changed, 404 insertions(+), 51 deletions(-)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bdbc2a9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,47 @@
+# ==================== 鏋勫缓浜х墿 ====================
+target/
+out/
+*.class
+
+# ==================== IDE / 缂栬緫鍣� ====================
+.idea/
+*.iml
+*.ipr
+*.iws
+.vscode/
+.settings/
+.project
+.classpath
+
+# ==================== 涓存椂鐩綍 ====================
+tmp/
+.tmp/
+_backups/
+recovered/
+__pycache__/
+*.pyc
+
+# ==================== 澶囦唤涓庝复鏃舵枃浠� ====================
+*.bak
+*.bak[0-9]
+*.bak-*
+*.bak[0-9]-*
+*.orig
+*.rej
+*~
+
+# ==================== 涓�娆℃�ф帓鏌ヨ剼鏈� / 鎺㈤拡 / 鏃ュ織锛堜笉鍏ュ簱锛� ====================
+# sql/ 涓嬬殑涓�娆℃�т慨澶嶃�佹帓鏌ャ�佸紑鍏抽厤缃剼鏈粎鏈湴鐣欏瓨锛屼笉鍏ュ簱锛�
+# 浠呬繚鐣欏寘鍐呭熀绾胯剼鏈笌鏂板簱鍒濆鍖栬剼鏈��
+/sql/*.sql
+!/sql/quartz.sql
+!/sql/ry_20220822.sql
+!/sql/pat_specific_archive_generate_config_lishui_mch_20261104.sql
+sql/_probe/
+*.log
+_dbcheck.txt
+package-lock.json
+
+# ==================== 鏈湴涓存椂閰嶇疆 ====================
+ruoyi-admin/src/main/resources/tempfile_*.yml
+ruoyi-admin/src/main/resources/logback-backup.xml
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index dfa1ef9..3ea1069 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -63,6 +63,12 @@
@Value("${spring.profiles.active}")
private String active;
+ /**
+ * 绠$悊鍛樼敤鎴稩D鍒楄〃锛堥厤缃」 isAdmin锛夈�傜鐞嗗憳涓嶅彈銆岀敤鎴�-閮ㄩ棬鍏崇郴琛ㄣ�嶉檺鍒讹紝鐩存帴鐪嬫湰鏈烘瀯鍏ㄩ儴绉戝/鐥呭尯銆�
+ */
+ @Value("${isAdmin:1}")
+ private List<Long> isAdmin;
+
// @Value("${wx_appid}")
// private String wxAppid;
//
@@ -240,23 +246,43 @@
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
- List<SysDept> sysDeptKSs = null;
- List<SysDept> sysDeptBQs = null;
+ // 绉戝/鐥呭尯涓嬫媺鐨勬暟鎹簮锛�
+ // 路 绠$悊鍛橈紙璐﹀彿 admin锛屾垨鍛戒腑閰嶇疆 isAdmin 鐨勭敤鎴稩D锛夛細鐩存帴鏌� sys_dept 鍙栨湰鏈烘瀯鍏ㄩ儴绉戝/鐥呭尯锛�
+ // 涓嶅啀鍏宠仈 sys_user_dept锛屼篃涓嶆寜闄㈠尯杩囨护鈥斺�旂鐞嗗憳澶╃劧鎷ユ湁鍏ㄩ儴绉戝鏉冮檺锛�
+ // 路 鏅�氱敤鎴凤細浠嶇劧鎸夈�岀敤鎴�-閮ㄩ棬鍏崇郴琛ㄣ�嶅彧杩斿洖鑷繁鍚嶄笅鐨勭瀹�/鐥呭尯锛堜繚鎸佸師閫昏緫锛夈��
SysUserDept sysUserDept = new SysUserDept();
- sysUserDept.setUserId(user.getUserId());
- sysUserDept.setDeptType("1");
sysUserDept.setOrgid(user.getOrgid());
- sysUserDept.setCampusid(user.getCampusid());
- sysDeptKSs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept);
+ if (!isAdminUser(user)) {
+ sysUserDept.setUserId(user.getUserId());
+ sysUserDept.setCampusid(user.getCampusid());
+ }
+ sysUserDept.setDeptType("1");
+ List<SysDept> sysDeptKSs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept);
ajax.put("belongDepts", sysDeptKSs);
sysUserDept.setDeptType("2");
- sysDeptBQs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept);
+ List<SysDept> sysDeptBQs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept);
ajax.put("belongWards", sysDeptBQs);
return ajax;
}
/**
+ * 鏄惁绠$悊鍛橈細璐﹀彿鍚嶄负 admin锛屾垨鐢ㄦ埛ID鍛戒腑閰嶇疆椤� isAdmin銆�
+ * <p>
+ * 绠$悊鍛樺彇绉戝/鐥呭尯鏃朵笉璧� sys_user_dept锛圚IS 閲囬泦鏄庣‘鎺掗櫎 admin锛岃琛ㄩ噷绠$悊鍛樻病鏈夋暟鎹級锛�
+ * 鍚﹀垯浼氬嚭鐜般�岀櫥褰曟垚鍔熶絾绉戝/鐥呭尯涓嬫媺涓虹┖銆嶃��
+ */
+ private boolean isAdminUser(SysUser user) {
+ if (user == null) {
+ return false;
+ }
+ if ("admin".equalsIgnoreCase(user.getUserName())) {
+ return true;
+ }
+ return user.getUserId() != null && isAdmin != null && isAdmin.contains(user.getUserId());
+ }
+
+ /**
* 鑾峰彇璺敱淇℃伅
*
* @return 璺敱淇℃伅
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java
index 42b9ee3..652fd54 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java
@@ -112,6 +112,19 @@
/** 璇婃柇鍚嶇О */
private String diagname;
+ /**
+ * 閲嶈鎬ф爣璁扮紪鐮侊紙2026-11 鏂板锛夛細鏉ユ簮 {@code pat_med_inhosp.importance_flag_code}锛�
+ * 钀藉簱鍒� {@code service_subtask.importance_flag_code}銆�
+ * <p>
+ * 鍒ゆ柇銆屾棩闂淬�嶅氨鐪嬭繖涓瓧娈碉紙{@code ImportFlagEnum} 鐨� {@code FH0165.01} 鏃ラ棿鎵嬫湳 /
+ * {@code FH0165.02} 鏃ラ棿璇婄枟锛涚幇鍦哄簱瀛樼殑鏄腑鏂囨弿杩般�屾棩闂存墜鏈�嶃�屾棩闂磋瘖鐤椼�嶏紝鍙兘澶氬�硷級銆�
+ * <p>
+ * 鈿狅笍 涓� {@code deptcode}/{@code leaveldeptcode} 閭f壒涓嶅悓锛�<b>涓嶅仛缁村害鏀瑰啓</b>
+ * 锛堝叆闄㈠鏁� type=4/5 涔熺収鏍峰甫鍘熷�硷級锛屽畠鎻忚堪鐨勬槸銆岃繖娆′綇闄㈢殑閲嶈鎬�/鏃ラ棿灞炴�с�嶏紝涓庣瀹ゆ棤鍏炽��
+ * 闂ㄨ瘖閾捐矾锛坽@link OuthospSubtaskDraft}锛夋病鏈夎繖涓潵婧愶紝鎭掍负 {@code null}銆�
+ */
+ private String importanceFlagCode;
+
// ==================== 妯℃澘锛堝師 serviceTask锛� ====================
/** 闂嵎妯℃澘ID */
private Long templateid;
@@ -517,6 +530,14 @@
this.diagname = diagname;
}
+ public String getImportanceFlagCode() {
+ return importanceFlagCode;
+ }
+
+ public void setImportanceFlagCode(String importanceFlagCode) {
+ this.importanceFlagCode = importanceFlagCode;
+ }
+
public Long getTemplateid() {
return templateid;
}
diff --git a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitInhospRow.java b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitInhospRow.java
index dad720e..fb4b77a 100644
--- a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitInhospRow.java
+++ b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitInhospRow.java
@@ -545,7 +545,14 @@
private String outWayName;
/** 杩囨护锛氬氨璇婃潵婧怚D */
private String encounterSourceId;
- /** 杩囨护锛氶噸瑕佺▼搴︿唬鐮� */
+ /**
+ * 閲嶈鎬ф爣璁帮紙2026-11 璧�<b>涓嶅啀鍙槸杩囨护鏉′欢</b>锛歿@code selectForScan} / {@code selectByInhospid}
+ * 宸茬粡鎶� {@code b.importance_flag_code} 鏌ュ嚭鏉ワ紝寤哄瓙浠诲姟鏃跺師鏍峰甫缁� {@code service_subtask}锛夈��
+ * <p>
+ * 鍙栧�硷細鐜板満搴撳瓨涓枃鎻忚堪锛堛�屾棩闂存墜鏈�嶃�屾棩闂磋瘖鐤椼�嶃�屾棤銆嶃�岀壒绾︿汉鍛樸�嶃�岀浼戜汉鍛樸�嶏紝鍙兘閫楀彿澶氬�硷級锛�
+ * 涔熸湁搴撴寜 {@code ImportFlagEnum} 瀛� {@code FH0165.01} / {@code FH0165.02} 绛夌紪鐮併��
+ * 鍒ゆ柇銆屾棩闂淬�嶅氨鍒ゆ柇瀹� 鈥斺�� 鏈被鍙礋璐f惉杩愶紝涓嶅仛鍊煎煙褰掍竴銆�
+ */
private String importanceFlagCode;
/** 杩囨护锛氭�ヨ瘖鍒嗙骇浠g爜 */
private String emergencyLevelCode;
diff --git a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java
index a130624..e1f5e22 100644
--- a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java
+++ b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java
@@ -146,6 +146,12 @@
d.setDeptname(inhosp.getDeptname());
d.setHospitaldistrictcode(inhosp.getHospitaldistrictcode());
d.setHospitaldistrictname(inhosp.getHospitaldistrictname());
+ // ---- 2026-11 鏂板锛氶噸瑕佹�ф爣璁帮紙鍚�屾棩闂淬�嶏級鍘熸牱甯﹁蛋 ----
+ // 鑳屾櫙锛氬垽鏂棩闂村氨鐪� pat_med_inhosp.importance_flag_code锛堢幇鍦哄簱瀛樹腑鏂囨弿杩�
+ // 銆屾棩闂存墜鏈�嶃�屾棩闂磋瘖鐤椼�嶏紝涔熸湁搴撴寜 ImportFlagEnum 瀛� FH0165.01/02锛夈��
+ // 瀛愪换鍔¤惤涓�浠斤紝闅忚鍒楄〃灏辫兘鐩存帴鎸夈�屾棩闂淬�嶇瓫锛屼笉鐢ㄦ瘡琛屽洖鏌ヤ綇闄㈢櫥璁拌〃銆�
+ // 鍙e緞锛氬師鏍锋嫹璐濄�佷笉鍋氬�煎煙褰掍竴锛涗笉闅� type 4/5 鏀瑰啓锛堜笌绉戝/鐥呭尯缁村害鏃犲叧锛夈��
+ d.setImportanceFlagCode(inhosp.getImportanceFlagCode());
// ---- 鍘� L1128-1134锛歵ype 4/5 鏀圭敤鍏ラ櫌缁村害 ----
if (type != null && (type == 4 || type == 5)) {
d.setLeaveldeptcode(inhosp.getDeptcode());
@@ -308,6 +314,8 @@
d.setHospitaldistrictname(inhosp.getHospitaldistrictname());
d.setLeavehospitaldistrictcode(inhosp.getLeavehospitaldistrictcode());
d.setLeavehospitaldistrictname(inhosp.getLeavehospitaldistrictname());
+ // 2026-11锛氶噸瑕佹�ф爣璁帮紙鍚�屾棩闂淬�嶏級鍘熸牱甯﹁蛋锛堝彛寰勫悓 boxedServiceSubtask锛�
+ d.setImportanceFlagCode(inhosp.getImportanceFlagCode());
// ---- 鍘� L1242-1251 ----
d.setTemplateid(serviceTask.getTemplateid());
d.setTemplatename(serviceTask.getTemplatename());
diff --git a/ruoyi-inhospvisit/src/main/resources/mapper/inhospvisit/VisitInhospMapper.xml b/ruoyi-inhospvisit/src/main/resources/mapper/inhospvisit/VisitInhospMapper.xml
index 501942c..d68321d 100644
--- a/ruoyi-inhospvisit/src/main/resources/mapper/inhospvisit/VisitInhospMapper.xml
+++ b/ruoyi-inhospvisit/src/main/resources/mapper/inhospvisit/VisitInhospMapper.xml
@@ -74,6 +74,8 @@
<result property="longTaskReason" column="long_task_reason"/>
<result property="remark" column="remark"/>
<result property="medicalCode" column="medical_code"/>
+ <!-- 2026-11锛氶噸瑕佹�ф爣璁扮紪鐮侊紙鏃ラ棿鎵嬫湳/鏃ラ棿璇婄枟/鏃犫�︼級锛屽缓瀛愪换鍔℃椂鍘熸牱甯︾粰 service_subtask -->
+ <result property="importanceFlagCode" column="importance_flag_code"/>
</resultMap>
<!--
@@ -125,6 +127,7 @@
b.fuflag,
b.fudate,
b.remark,
+ b.importance_flag_code,
b.medical_code
FROM
pat_med_inhosp b
@@ -337,6 +340,7 @@
leaveldeptname,
leavehospitaldistrictcode,
leavehospitaldistrictname,
+ importance_flag_code,
campusid
from pat_med_inhosp
where inhospid = #{inhospid}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
index 213b376..60a6159 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -334,6 +334,10 @@
public List<SysDept> selectLeafSysDeptListBySysUserDept(SysUserDept sysUserDept){
List<SysDept> list = deptMapper.selectSysDeptListBySysUserDept(sysUserDept);
+ // userId 涓虹┖ = 绠$悊鍛樺彇鏈満鏋勫叏閲忕瀹�/鐥呭尯锛氳銆屽叏閮ㄣ�嶏紝涓嶈兘鍐嶆寜鍙跺瓙鑺傜偣杩囨护鎺夌埗绾ч儴闂�
+ if (sysUserDept != null && sysUserDept.getUserId() == null) {
+ return list == null ? new ArrayList<>() : list;
+ }
if(CollectionUtils.isNotEmpty(list)){
list = TreeUtils.getLeafDepts(list);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 29b434b..f8a826b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -146,7 +146,10 @@
deptIds.add(sysDept.getDeptId());
}
SysUserDept sysUserDept = new SysUserDept();
- sysUserDept.setUserId(sysUser.getUserId());
+ // 绠$悊鍛橈細涓嶆寜鐢ㄦ埛杩囨护锛坰ys_user_dept 閲屾病鏈� admin 鐨勬暟鎹級锛岀洿鎺ュ彇鏈満鏋勫叏閮ㄧ瀹�/鐥呭尯
+ if (!isAdminUser(sysUser)) {
+ sysUserDept.setUserId(sysUser.getUserId());
+ }
sysUserDept.setDeptType(sysUser.getSearchscope());
sysUserDept.setOrgid(sysUser.getOrgid());
List<SysUserDept> sysUserDeptKSs = null;
@@ -201,7 +204,7 @@
if (sysUser.getUserType().equals("鎮h��") && StringUtils.isNotEmpty(split[3]) && !split[3].equals("null") && !sysUser.getUserType().equals(split[3].trim()))
throw new BaseException("褰撳墠鐢ㄦ埛绫诲瀷涓庣櫥褰曠敤鎴风被鍨嬩笉涓�鑷�");
- boolean isAdmin = StringUtils.isNotEmpty(split[0]) && "admin".equals(split[0]);
+ boolean isAdmin = isAdminUser(sysUser);
IUserExtInfoService userExtInfoService = SpringUtils.getBean(IUserExtInfoService.class);
Executor executor = SpringUtils.getBean("threadPoolTaskExecutor");
@@ -220,7 +223,7 @@
// 绛夊緟鏈烘瀯淇℃伅
Map<String, String> userOrgInfo = new HashMap<>();
try {
- userOrgInfo = orgInfoFuture.get(5, TimeUnit.SECONDS);
+ userOrgInfo = orgInfoFuture.get(50, TimeUnit.SECONDS);
} catch (Exception e) {
log.warn("鑾峰彇鐢ㄦ埛鏈烘瀯淇℃伅瓒呮椂鎴栧紓甯�", e);
}
@@ -258,8 +261,8 @@
CompletableFuture<List<SysDept>> ksFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptForAdmin(deptKS), executor);
CompletableFuture<List<SysDept>> bqFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptForAdmin(deptBQ), executor);
try {
- sysUserDeptKSs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(ksFuture.get(5, TimeUnit.SECONDS), SysUserDept.class));
- sysUserDeptBQs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(bqFuture.get(5, TimeUnit.SECONDS), SysUserDept.class));
+ sysUserDeptKSs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(ksFuture.get(50, TimeUnit.SECONDS), SysUserDept.class));
+ sysUserDeptBQs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(bqFuture.get(50, TimeUnit.SECONDS), SysUserDept.class));
} catch (Exception e) {
log.warn("鑾峰彇admin绉戝/鐥呭尯淇℃伅瓒呮椂鎴栧紓甯�", e);
}
@@ -358,6 +361,23 @@
log.warn("鑾峰彇婊℃剰搴﹀垎绫诲け璐ワ紝宸查檷绾т负绌虹粨鏋滐紙涓嶅奖鍝嶇櫥褰曪級銆俹rgid={}", orgid, e);
return Collections.emptyMap();
}
+ }
+
+ /**
+ * 鏄惁绠$悊鍛橈細璐﹀彿鍚嶄负 admin锛屾垨鐢ㄦ埛ID鍛戒腑閰嶇疆椤� isAdmin銆�
+ * <p>
+ * 绠$悊鍛樺彇绉戝/鐥呭尯鏃朵笉鎸� sys_user_dept 杩囨护鈥斺�擧IS 閲囬泦鍐欒琛ㄦ椂鏄庣‘鎺掗櫎浜� admin
+ * 锛圕ollectHISMapper 鐨� yhyksxx/yhybfxx 閮芥湁 {@code ud.user_id != 'admin'}锛夛紝
+ * 璧板叧鑱旀煡璇細寰楀埌绌哄垪琛紝琛ㄧ幇涓恒�岀櫥褰曟垚鍔熶絾鍒涘缓浠诲姟鏃堕�変笉鍒扮瀹ょ梾鍖恒�嶃��
+ */
+ private boolean isAdminUser(SysUser sysUser) {
+ if (sysUser == null) {
+ return false;
+ }
+ if ("admin".equalsIgnoreCase(sysUser.getUserName())) {
+ return true;
+ }
+ return sysUser.getUserId() != null && isAdmin != null && isAdmin.contains(sysUser.getUserId());
}
/**
@@ -1022,8 +1042,11 @@
public List<SysUserDept> selectLeafSysDeptList(SysUserDept sysUserDept){
List<SysDept> list = sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept);
- if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
- list = TreeUtils.getLeafDepts(list);
+ // userId 涓虹┖ = 绠$悊鍛樺彇鏈満鏋勫叏閲忥細瑕併�屾墍鏈夌瀹ょ梾鍖恒�嶏紝涓嶈兘鍐嶆寜鍙跺瓙鑺傜偣杩囨护
+ if (sysUserDept == null || sysUserDept.getUserId() != null) {
+ if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
+ list = TreeUtils.getLeafDepts(list);
+ }
}
List<SysUserDept> list1 = DtoConversionUtils.sourceToTarget(list, SysUserDept.class);
return list1;
@@ -1031,11 +1054,9 @@
public List<SysDept> selectLeafSysDeptForAdmin(SysDept sysDept){
SysUserDept sysUserDept = DtoConversionUtils.sourceToTarget(sysDept, SysUserDept.class);
- List<SysDept> list = sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept);
- if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
- list = TreeUtils.getLeafDepts(list);
- }
- return list;
+ // 绠$悊鍛樺垎鏀細sysUserDept 涓嶅甫 userId锛宮apper 浼氱洿鎺ユ煡 sys_dept锛堜笉鍏宠仈 sys_user_dept锛夛紝
+ // 杩斿洖鏈満鏋勫叏閮ㄧ瀹�/鐥呭尯锛涜繖閲屼笉鍐嶅仛鍙跺瓙杩囨护锛屽惁鍒欍�屾墍鏈夌瀹ょ梾鍖恒�嶄細琚爫鎺夌埗绾ч儴闂ㄣ��
+ return sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept);
}
/**
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 225eac3..cf4e077 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -283,17 +283,36 @@
where dept_id = #{deptId}
</delete>
+ <!--
+ 鏌ヨ绉戝/鐥呭尯锛�
+ 路 userId 鏈夊�硷紙鏅�氱敤鎴� / 鐢ㄦ埛缂栬緫椤碉細鏌ユ煇涓敤鎴峰悕涓嬬殑閮ㄩ棬锛夆啋 鍏宠仈 sys_user_dept锛�
+ 路 userId 涓虹┖锛堢鐞嗗憳锛氱湅鏈満鏋勫叏閮ㄧ瀹�/鐥呭尯锛夆啋 鍙煡 sys_dept锛屼笉鍏宠仈鍏崇郴琛ㄣ��
+ 涓轰粈涔堣鍒嗘敮锛欻IS 閲囬泦鍐� sys_user_dept 鏃舵槑纭帓闄や簡 admin锛圕ollectHISMapper 鐨�
+ yhyksxx/yhybfxx 閮芥湁 ud.user_id != 'admin'锛夛紝绠$悊鍛樺湪鍏崇郴琛ㄩ噷娌℃湁鏁版嵁锛岃蛋 inner join
+ 浼氬緱鍒扮┖鍒楄〃锛岃〃鐜板氨鏄�岀櫥褰曟垚鍔熶絾鍒涘缓浠诲姟鏃堕�変笉鍒扮瀹ょ梾鍖恒�嶃��
+ 鍙﹀涓嶅仛闄㈠尯杩囨护锛堢鐞嗗憳璺ㄩ櫌鍖猴級锛岄櫌鍖洪殧绂诲彧瀵规櫘閫氱敤鎴风敓鏁堛��
+ -->
<select id="selectSysDeptListBySysUserDept" parameterType="com.ruoyi.common.core.domain.entity.SysUserDept"
resultMap="SysDeptResult">
- <include refid="selectDeptVo"/>
- inner join sys_user_dept ud
- on d.dept_code = ud.dept_code
- where 1=1
- and d.del_flag = 0
- and ud.del_flag = 0
- <if test="orgid != null">and d.orgid = #{orgid} and ud.orgid = #{orgid}</if>
- <if test="campusid != null">and d.campusid = #{campusid}</if>
- <if test="userId != null">and ud.user_id = #{userId}</if>
- <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if>
+ <choose>
+ <when test="userId != null">
+ <include refid="selectDeptVo"/>
+ inner join sys_user_dept ud
+ on d.dept_code = ud.dept_code
+ where 1=1
+ and d.del_flag = 0
+ and ud.del_flag = 0
+ <if test="orgid != null">and d.orgid = #{orgid} and ud.orgid = #{orgid}</if>
+ <if test="campusid != null">and d.campusid = #{campusid}</if>
+ <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if>
+ and ud.user_id = #{userId}
+ </when>
+ <otherwise>
+ <include refid="selectDeptVo"/>
+ where d.del_flag = 0
+ <if test="orgid != null">and d.orgid = #{orgid}</if>
+ <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if>
+ </otherwise>
+ </choose>
</select>
</mapper>
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/OperationSubtaskWriter.java b/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/OperationSubtaskWriter.java
index bb0f11a..a302570 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/OperationSubtaskWriter.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/OperationSubtaskWriter.java
@@ -485,6 +485,8 @@
serviceSubtask.setLeaveldeptname(patMedInhosp1.getLeaveldeptname());
serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
+ // 2026-11锛氶噸瑕佹�ф爣璁帮紙鍚�屾棩闂淬�嶏級闅忎换鍔¤蛋锛屼究浜庡瓙浠诲姟鍒楄〃鐩存帴鎸夋棩闂寸瓫閫�
+ serviceSubtask.setImportanceFlagCode(patMedInhosp1.getImportanceFlagCode());
serviceSubtask.setTemplateid(serviceTask.getTemplateid());
serviceSubtask.setTemplatename(serviceTask.getTemplatename());
@@ -620,6 +622,8 @@
serviceSubtask.setLeaveicd10code(patMedInhosp1.getLeaveicd10code());
serviceSubtask.setLeavediagname(patMedInhosp1.getLeavediagname());
serviceSubtask.setDiagname(patMedInhosp1.getDiagname());
+ // 2026-11锛氶噸瑕佹�ф爣璁帮紙鍚�屾棩闂淬�嶏級闅忎换鍔¤蛋锛堝彛寰勫悓涓婏級
+ serviceSubtask.setImportanceFlagCode(patMedInhosp1.getImportanceFlagCode());
serviceSubtask.setTemplateid(serviceTask.getTemplateid());
serviceSubtask.setTemplatename(serviceTask.getTemplatename());
serviceSubtask.setPatid(patArchive.getId());
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java b/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java
index 07bebac..470867b 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java
@@ -285,6 +285,10 @@
e.setLeaveicd10code(d.getLeaveicd10code());
e.setLeavediagname(d.getLeavediagname());
e.setDiagname(d.getDiagname());
+ // 2026-11锛氶噸瑕佹�ф爣璁扮紪鐮侊紙鏃ラ棿鎵嬫湳/鏃ラ棿璇婄枟/鏃犫�︼級锛屾潵鑷� pat_med_inhosp.importance_flag_code銆�
+ // 鍙湁銆屽嚭鍏ラ櫌闅忚銆嶉摼璺細濉�硷紙VisitSubtaskFactory锛夛紱闂ㄨ瘖/鎵嬫湳绛夎崏绋块噷涓� null 鈫�
+ // insert 鐨勬潯浠跺垪鐩存帴璺宠繃锛屼笌鏀归�犲墠杩欎簺鍒椾笉鍐欑殑鏁堟灉涓�鑷淬��
+ e.setImportanceFlagCode(d.getImportanceFlagCode());
e.setTemplateid(d.getTemplateid());
e.setTemplatename(d.getTemplatename());
e.setLibtemplateid(d.getLibtemplateid());
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java
index 5847cf4..9cf60da 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java
@@ -708,6 +708,25 @@
private String diagType;
/**
+ * 閲嶈鎬ф爣璁扮紪鐮侊紙2026-11 鏂板锛�<b>寤轰换鍔℃椂浠� {@code pat_med_inhosp.importance_flag_code} 鍚屾</b>锛夈��
+ * <p>
+ * 涓轰粈涔堝悓姝ワ細鍒ゆ柇銆屾棩闂淬�嶅氨鐪嬭繖涓瓧娈碉紝鑰� service_subtask 涓婂彧鏈� {@code inhospid}锛�
+ * 涓嶈惤涓�浠界殑璇濇寜銆屾棩闂淬�嶇瓫瀛愪换鍔℃瘡琛岄兘瑕佸洖鏌ヤ綇闄㈢櫥璁拌〃锛圝OIN / 瀛愭煡璇級锛屽垪琛ㄤ笌缁熻閮藉彉鎱€��
+ * <p>
+ * 鍙栧�兼槸<b>鍘熸牱鎷疯礉</b>锛屼笉鍦ㄦ湰琛ㄥ仛褰掍竴锛�
+ * <ul>
+ * <li>鏋氫妇缂栫爜鍙e緞锛坽@code ImportFlagEnum}锛夛細{@code FH0165.01} 鏃ラ棿鎵嬫湳銆亄@code FH0165.02} 鏃ラ棿璇婄枟銆�
+ * {@code FH0165.03} 鏃犮�亄@code FH0165.98} 鐗圭害浜哄憳銆亄@code FH0165.99} 绂讳紤浜哄憳锛�</li>
+ * <li>鐜板満涔熸湁瀛�<b>涓枃鎻忚堪</b>鐨勫簱锛堛�屾棩闂存墜鏈�嶃�屾棩闂磋瘖鐤椼�嶁�︼級锛岃繕瀛樺湪閫楀彿澶氬�硷紙濡� {@code 鏃�,鏃ラ棿鎵嬫湳}锛夈��</li>
+ * </ul>
+ * 鎵�浠ユ煡璇晶鎻愪緵銆岀簿纭�笺�嶅拰銆岄泦鍚� IN銆嶄袱绉嶆潯浠讹紝瑙� {@code serviceSubtaskWhere}銆�
+ * <p>
+ * 鈿狅笍 杩欐槸<b>寤轰换鍔¢偅涓�鍒荤殑蹇収</b>锛氫箣鍚庝綇闄㈣褰曟敼浜嗘爣璁帮紝涓嶄細鑷姩鍥炲啓宸叉湁瀛愪换鍔°��
+ */
+ @ApiModelProperty(value = "閲嶈鎬ф爣璁扮紪鐮侊紙鏃ラ棿鎵嬫湳/鏃ラ棿璇婄枟/鏃�/鐗圭害浜哄憳/绂讳紤浜哄憳锛屾垨 FH0165.xx锛�")
+ private String importanceFlagCode;
+
+ /**
* 寮�濮嬪嚭闄㈡棩鏈�
*/
@JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java
index f11c202..0e0cf34 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java
@@ -243,6 +243,17 @@
private String deptname;
/**
+ * 閲嶈鎬ф爣璁扮紪鐮侊紙2026-11 鏂板锛夛細寤轰换鍔℃椂浠� {@code pat_med_inhosp.importance_flag_code} 鍚屾锛�
+ * 鍒楄〃鎺ュ彛鍘熸牱杩斿洖銆�
+ * <p>
+ * 鍒ゆ柇銆屾棩闂淬�嶇湅杩欓噷锛歿@code ImportFlagEnum} 鐨� {@code FH0165.01}锛堟棩闂存墜鏈級/
+ * {@code FH0165.02}锛堟棩闂磋瘖鐤楋級锛涚幇鍦哄簱瀛樼殑鏄腑鏂囨弿杩般�屾棩闂存墜鏈�嶃�屾棩闂磋瘖鐤椼�嶏紝
+ * 杩樺彲鑳藉嚭鐜� {@code 鏃�,鏃ラ棿鎵嬫湳} 杩欑被澶氬�� 鈥斺�� 鎵�浠ュ墠绔埆鐢ㄧ瓑鍊煎垽鏂紝鎸夈�屽寘鍚�嶅尮閰嶃��
+ */
+ @ApiModelProperty(value = "閲嶈鎬ф爣璁扮紪鐮侊紙鏃ラ棿鎵嬫湳/鏃ラ棿璇婄枟/鏃�/鐗圭害浜哄憳/绂讳紤浜哄憳锛�")
+ private String importanceFlagCode;
+
+ /**
* 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒�
*/
@Excel(name = " 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� ")
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java
index b2a7d01..01da61f 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java
@@ -70,9 +70,9 @@
private List<String> leavehospitaldistrictcodes;
/**
- * 鍑洪櫌鐥呭尯缂栧彿
+ * 鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎锛堢偣浣嶇紪鍙凤級
*/
- @ApiModelProperty(value = "鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎")
+ @ApiModelProperty(value = "鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎锛堢偣浣嶇紪鍙凤級")
private List<String> leaveldeptcodes;
/**
@@ -468,8 +468,8 @@
/**
* 閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁�
*/
- @ApiModelProperty("閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁� 6.鎸夎嵂鍝佺紪鐮�")
- @Excel(name = "閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁� 6.鎸夎嵂鍝佺紪鐮�" )
+ @ApiModelProperty("閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁� 6.鎸夎嵂鍝佺紪鐮� 7.鎸夌偣浣嶏紙鍚屽痉闇�姹傦級")
+ @Excel(name = "閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁� 6.鎸夎嵂鍝佺紪鐮� 7.鎸夌偣浣嶏紙鍚屽痉闇�姹傦級" )
private String appltype;
@ApiModelProperty(value = "闅忚閮ㄩ棬缂栫爜")
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java
index a71dadc..ad6ad32 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java
@@ -732,6 +732,31 @@
private String managementDoctor;
/**
+ * 閲嶈鎬ф爣璁扮紪鐮侊紙2026-11 鏂板锛�<b>鏌ヨ鏉′欢</b>锛夛細绮剧‘鍖归厤銆�
+ * <p>
+ * 瀵瑰簲 {@code service_subtask.importance_flag_code}锛氬缓浠诲姟鏃朵粠
+ * {@code pat_med_inhosp.importance_flag_code} 鍘熸牱鍚屾銆�
+ * 鏋氫妇瑙� {@code com.ruoyi.common.enums.ImportFlagEnum}
+ * 锛坽@code FH0165.01} 鏃ラ棿鎵嬫湳銆亄@code FH0165.02} 鏃ラ棿璇婄枟鈥︼級锛�
+ * 鐜板満搴撲篃鍙兘瀛樹腑鏂囨弿杩般��
+ */
+ @ApiModelProperty(value = "閲嶈鎬ф爣璁扮紪鐮侊紙绮剧‘鍖归厤锛屽 FH0165.01 / 鏃ラ棿鎵嬫湳锛�")
+ private String importanceFlagCode;
+
+ /**
+ * 閲嶈鎬ф爣璁扮紪鐮侀泦鍚堬紙鏌ヨ鏉′欢锛夛細{@code IN} 鍖归厤锛岀敤浜庛�屾棩闂淬�嶈繖绫�
+ * 銆岃鍚屾椂鍛戒腑澶氫釜鍙栧�笺�嶇殑鍦烘櫙銆�
+ * <p>
+ * 渚嬶細鍙湅鏃ラ棿 鈫� {@code ["鏃ラ棿鎵嬫湳","鏃ラ棿璇婄枟"]}锛堜腑鏂囨弿杩板彛寰勶級鎴�
+ * {@code ["FH0165.01","FH0165.02"]}锛堟灇涓剧紪鐮佸彛寰勶級銆�
+ * <p>
+ * 鈿狅笍 绛夊��/IN 閮藉尮閰嶄笉鍒伴�楀彿澶氬�硷紙濡� {@code 鏃�,鏃ラ棿鎵嬫湳}锛夛紱杩欑被鏁版嵁鏋佸皯锛�
+ * 闇�瑕佹椂璇风敤 {@code find_in_set} 鍗曠嫭鍐� SQL锛屽埆鎶婅涔夊杩涜繖涓瓧娈点��
+ */
+ @ApiModelProperty(value = "閲嶈鎬ф爣璁扮紪鐮侀泦鍚堬紙IN 鍖归厤锛岀敤浜庝竴娆$瓫澶氫釜鏍囪锛�")
+ private List<String> importanceFlagCodes;
+
+ /**
* 寮�濮嬪嚭闄㈡棩鏈�
*/
@JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java b/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
index 3ed3fd6..15440e7 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
@@ -1608,6 +1608,61 @@
}
/**
+ * 鍙栭�楀彿涓查噷鐨勭涓�涓�硷紙浠诲姟涓婄瀹�/鐥呭尯鏄閫夛紝鑰� {@code service_subtask} 涓婇兘鏄崟鍊煎垪锛夈��
+ */
+ private String firstValue(String value) {
+ if (StringUtils.isEmpty(value)) {
+ return null;
+ }
+ for (String item : value.split(",")) {
+ if (StringUtils.isNotEmpty(item.trim())) {
+ return item.trim();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 浠诲姟閰嶇疆锛坽@link ServiceTaskVO}锛夆啋 瀛愪换鍔★紙{@link ServiceSubtask}锛夌殑瀛楁鎼繍銆�
+ * <p>
+ * <b>涓轰粈涔堜笉鑳界洿鎺� {@code DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class)}锛�</b>
+ * 瀹冩槸绾悓鍚嶆嫹璐濓紝鑰屼袱杈瑰悓鍚嶇殑 {@code deptcode / deptname} <b>璇箟涓嶅悓</b>锛�
+ * <ul>
+ * <li>{@code ServiceTaskVO.deptcode / deptname} = 浠诲姟鐨勩�岄�傜敤绉戝銆嶏紝
+ * 鍑洪櫌闅忚锛坰erviceType=2锛�/ 鍑洪櫌瀹f暀锛�4锛�/ 闂ㄨ瘖闅忚锛�3锛夌瓑鍦烘櫙涓嬪氨鏄�<b>绂婚櫌绉戝</b>锛�</li>
+ * <li>{@code ServiceSubtask.deptcode / deptname} = <b>鍦ㄩ櫌绉戝</b>
+ * 锛�2026-11 鐢卞師 sendlimitpbegin/pend 澶嶇敤鑰屾潵锛岃 {@code ServiceSubtask} 瀛楁娉ㄩ噴锛夈��</li>
+ * </ul>
+ * 浜庢槸绾悓鍚嶆嫹璐濅細鎶娿�岀闄㈢瀹ゃ�嶅啓杩涖�屽湪闄㈢瀹ゃ�嶅垪锛屽悗鏋滄湁涓や釜锛�
+ * <ol>
+ * <li>鎸夊湪闄㈢淮搴︾瓫锛坽@code deptcodes} 鈫� {@code service_subtask.deptcode}锛変細璇懡涓繖浜涘瓙浠诲姟锛�</li>
+ * <li>鎸夌闄㈢淮搴︾瓫锛坽@code leaveldeptcodes} 鈫� {@code service_subtask.leaveldeptcode}锛夋椂锛�
+ * 鎮h�呰嚜宸辨病甯︾瀹ょ殑閭d簺锛堝墠绔墜鍔ㄥ嬀閫夋偅鑰呭緢甯歌锛変細鍥犱负 {@code leaveldeptcode} 涓虹┖鑰屾煡涓嶅埌銆�</li>
+ * </ol>
+ * 鍥犳杩欓噷鎸夐」鐩棦瀹氬彛寰勶紙{@code doc/service_subtask_瀛楁鏀瑰悕_鏀瑰姩娓呭崟.md} 搂8锛氳繖鍑犳潯
+ * 銆岄暱鏈熶换鍔� / 浠诲姟缁� / 鎵嬪姩寤轰换鍔°�嶈矾寰�<b>涓嶅~鍦ㄩ櫌缁村害</b>锛夌粺涓�澶勭悊锛�
+ * <b>鍦ㄩ櫌缁村害 4 鍒楁竻绌�</b>锛堝湪闄㈢瀹�/鍦ㄩ櫌鐥呭尯鍙湁 HIS 閾捐矾鑳戒粠 {@code pat_med_inhosp} 鎷垮埌锛夛紝
+ * <b>绉戝 / 鐥呭尯涓�寰嬭惤绂婚櫌缁村害</b>锛坽@code leaveldeptcode/name}銆亄@code leavehospitaldistrictcode/name}锛夈��
+ *
+ * @param serviceTaskVO 寤轰换鍔″叆鍙�
+ * @return 宸叉寜绂婚櫌缁村害褰掍綅鐨勫瓙浠诲姟瀵硅薄锛堝湪闄㈢淮搴︿负绌猴級
+ */
+ private ServiceSubtask toSubtaskFromTaskVO(ServiceTaskVO serviceTaskVO) {
+ ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
+ // 鈶� 鍦ㄩ櫌缁村害蹇呴』娓呯┖锛氫换鍔¢厤缃殑绉戝涓嶆槸鎮h�呮湰浜虹殑鍦ㄩ櫌绉戝
+ serviceSubtask.setDeptcode(null);
+ serviceSubtask.setDeptname(null);
+ serviceSubtask.setHospitaldistrictcode(null);
+ serviceSubtask.setHospitaldistrictname(null);
+ // 鈶� 绉戝 / 鐥呭尯 鈫� 绂婚櫌缁村害锛堝閫変覆鍙栫涓�涓紝瀛愪换鍔℃槸鍗曞�煎垪锛�
+ serviceSubtask.setLeaveldeptcode(firstValue(serviceTaskVO.getDeptcode()));
+ serviceSubtask.setLeaveldeptname(firstValue(serviceTaskVO.getDeptname()));
+ serviceSubtask.setLeavehospitaldistrictcode(firstValue(serviceTaskVO.getLeavehospitaldistrictcode()));
+ serviceSubtask.setLeavehospitaldistrictname(firstValue(serviceTaskVO.getLeavehospitaldistrictname()));
+ return serviceSubtask;
+ }
+
+ /**
* 鍗曚竴浠诲姟
*
* @return 缁撴灉
@@ -1834,7 +1889,8 @@
// }
//灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
- ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
+ // 绉戝/鐥呭尯鎸夈�岀闄㈢淮搴︺�嶅綊浣嶏紙鍑洪櫌闅忚鐨勭瀹ょ梾鍖哄氨鏄闄㈢瀹�/鐥呭尯锛夛紝瑙� toSubtaskFromTaskVO
+ ServiceSubtask serviceSubtask = toSubtaskFromTaskVO(serviceTaskVO);
serviceSubtask.setTaskid(serviceTask.getTaskid().longValue());
serviceSubtask.setTemplatename(ObjectUtils.isNotEmpty(tempid) ? tempName : serviceTask.getTemplatename());
serviceSubtask.setTemplateid(ObjectUtils.isNotEmpty(tempid) ? tempid : serviceTask.getTemplateid());
@@ -1855,15 +1911,18 @@
serviceSubtask.setInhospid(patTaskRelevance.getHospid());
//鏂板缓瀹屾垚灏辨槸寰呭彂閫佺姸鎬�
serviceSubtask.setSendstate(2L);
- String subtaskDeptCode = patTaskRelevance.getDeptcode();
- if (StringUtils.isEmpty(subtaskDeptCode) && StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
- // service_subtask.leaveldeptcode 涓哄崟鍊煎瓧娈碉紝涓嶈兘鍐欏叆浠诲姟鐨勫绉戝鎷兼帴涓诧紝鍙栫涓�涓瀹ゅ厹搴�
- subtaskDeptCode = serviceTaskVO.getDeptcode().split(",")[0].trim();
- }
- serviceSubtask.setLeaveldeptcode(subtaskDeptCode);
- serviceSubtask.setLeaveldeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname());
- serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
- serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
+ // 绂婚櫌缁村害锛堝嚭闄㈤殢璁� = 鍑洪櫌绉戝 / 鍑洪櫌鐥呭尯锛夛細
+ // 鎮h�呰嚜甯︾殑鍑洪櫌绉戝/鐥呭尯浼樺厛锛屾偅鑰呬晶娌″甫锛堝墠绔墜鍔ㄥ嬀閫夊緢甯歌锛夋椂鍥為��鍒颁换鍔¢厤缃紝
+ // 涓嶈兘鏃犳潯浠惰鐩� 鈥斺�� 鍚﹀垯浼氭妸 toSubtaskFromTaskVO 鎸変换鍔¢厤缃厹濂界殑绂婚櫌缁村害鎶规垚 null锛�
+ // 缁撴灉銆屼换鍔¢厤浜嗙瀹ょ梾鍖恒�佺敓鎴愬嚭鏉ョ殑瀛愪换鍔$闄㈢瀹�/鐥呭尯鍗存槸绌恒�嶃��
+ serviceSubtask.setLeaveldeptcode(firstNonBlank(patTaskRelevance.getDeptcode(),
+ firstValue(serviceTaskVO.getDeptcode())));
+ serviceSubtask.setLeaveldeptname(firstNonBlank(patTaskRelevance.getDeptName(),
+ firstValue(serviceTaskVO.getDeptname())));
+ serviceSubtask.setLeavehospitaldistrictcode(firstNonBlank(patTaskRelevance.getLeavehospitaldistrictcode(),
+ firstValue(serviceTaskVO.getLeavehospitaldistrictcode())));
+ serviceSubtask.setLeavehospitaldistrictname(firstNonBlank(patTaskRelevance.getLeavehospitaldistrictname(),
+ firstValue(serviceTaskVO.getLeavehospitaldistrictname())));
serviceSubtask.setType(serviceTaskVO.getType());
serviceSubtask.setHospType(patTaskRelevance.getHospType());
serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
@@ -2221,7 +2280,8 @@
}
if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
- ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
+ // 绉戝/鐥呭尯鎸夈�岀闄㈢淮搴︺�嶅綊浣嶏紙鍑洪櫌闅忚鐨勭瀹ょ梾鍖哄氨鏄闄㈢瀹�/鐥呭尯锛夛紝瑙� toSubtaskFromTaskVO
+ ServiceSubtask serviceSubtask = toSubtaskFromTaskVO(serviceTaskVO);
serviceSubtask.setLibtemplateid(ObjectUtils.isEmpty(serviceTaskVO.getLibtemplateid()) ? null : Long.valueOf(serviceTaskVO.getLibtemplateid()));
serviceSubtask.setLibtemplatename(serviceTaskVO.getLibtemplatename());
serviceSubtask.setTemplateid(serviceTask.getTemplateid());
@@ -2233,10 +2293,16 @@
serviceSubtask.setAddr(patTaskRelevance.getAddr());
serviceSubtask.setPatid(patTaskRelevance.getPatid());
serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
- serviceSubtask.setLeaveldeptcode(patTaskRelevance.getDeptcode());
- serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
- serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
- serviceSubtask.setLeaveldeptname(patTaskRelevance.getDeptName());
+ // 绂婚櫌缁村害锛氭偅鑰呰嚜甯︾殑鍑洪櫌绉戝/鐥呭尯浼樺厛锛屾病甯︽椂鍥為��鍒颁换鍔¢厤缃紙鍚﹀垯浼氭妸
+ // toSubtaskFromTaskVO 鎸変换鍔¢厤缃厹濂界殑鍊兼姽鎴� null锛屽嚭闄㈤殢璁垮氨鎴愩�岀闄㈢瀹�/鐥呭尯涓虹┖銆嶏級
+ serviceSubtask.setLeaveldeptcode(firstNonBlank(patTaskRelevance.getDeptcode(),
+ firstValue(serviceTaskVO.getDeptcode())));
+ serviceSubtask.setLeaveldeptname(firstNonBlank(patTaskRelevance.getDeptName(),
+ firstValue(serviceTaskVO.getDeptname())));
+ serviceSubtask.setLeavehospitaldistrictcode(firstNonBlank(patTaskRelevance.getLeavehospitaldistrictcode(),
+ firstValue(serviceTaskVO.getLeavehospitaldistrictcode())));
+ serviceSubtask.setLeavehospitaldistrictname(firstNonBlank(patTaskRelevance.getLeavehospitaldistrictname(),
+ firstValue(serviceTaskVO.getLeavehospitaldistrictname())));
serviceSubtask.setType(serviceTaskVO.getType());
serviceSubtask.setCreateTime(DateUtils.getNowDate());
serviceSubtask.setDrname(patTaskRelevance.getDrname());
diff --git a/ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml b/ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
index f7c7bfb..3d91a94 100644
--- a/ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
+++ b/ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
@@ -109,6 +109,8 @@
<result property="isManuallyCalled" column="is_manually_called"/>
<result property="campusid" column="campusid"/>
<result property="diagType" column="diag_type"/>
+ <!-- 2026-11锛氶噸瑕佹�ф爣璁扮紪鐮侊紙鏃ラ棿鎵嬫湳/鏃ラ棿璇婄枟/鏃犫�︼級锛屽缓浠诲姟鏃跺彇鑷� pat_med_inhosp -->
+ <result property="importanceFlagCode" column="importance_flag_code"/>
</resultMap>
<resultMap type="com.ruoyi.task.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
@@ -244,6 +246,7 @@
hospitaldistrictname,
deptcode,
deptname,
+ importance_flag_code,
stop_state,
leavehospitaldistrictcode,
leavehospitaldistrictname,
@@ -384,16 +387,34 @@
<sql id="filterLeaveDimAnd">
/* f-v3 */
<if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
- AND leavehospitaldistrictcode IN
+ AND (
+ leavehospitaldistrictcode IN
<foreach collection="leavehospitaldistrictcodes" item="lvWardCodeItem" open="(" separator="," close=")">
#{lvWardCodeItem}
</foreach>
+ <!-- 寤剁画鎶ょ悊浠诲姟锛坰ervice_type='99'锛夊彲浠ュ湪鎮h�呰繕娌″嚭闄㈡椂鐢熸垚锛�
+ 杩欑被璁板綍鍙湁銆屽湪闄㈢淮搴︺�嶏紙hospitaldistrictcode / deptcode锛夛紝鍑洪櫌缁村害鏄� NULL銆�
+ NULL 涓嶅尮閰嶄换浣� IN锛屼换鍔′細銆屾彁绀虹敓鎴愭垚鍔熴�佸垪琛ㄩ噷鍗存煡涓嶅埌銆嶏紝
+ 鎵�浠ュ嚭闄㈢淮搴︿负绌烘椂鐢ㄥ悓涓�濂楃紪鐮佷綋绯荤殑鍦ㄩ櫌缁村害鍏滃簳銆� -->
+ OR (service_type = '99' AND (leavehospitaldistrictcode IS NULL OR leavehospitaldistrictcode = '')
+ AND hospitaldistrictcode IN
+ <foreach collection="leavehospitaldistrictcodes" item="lvWardCodeItem" open="(" separator="," close=")">
+ #{lvWardCodeItem}
+ </foreach>)
+ )
</if>
<if test="leaveldeptcodes != null and leaveldeptcodes.size() > 0">
- AND leaveldeptcode IN
+ AND (
+ leaveldeptcode IN
<foreach collection="leaveldeptcodes" item="lvDeptCodeItem" open="(" separator="," close=")">
#{lvDeptCodeItem}
</foreach>
+ OR (service_type = '99' AND (leaveldeptcode IS NULL OR leaveldeptcode = '')
+ AND deptcode IN
+ <foreach collection="leaveldeptcodes" item="lvDeptCodeItem" open="(" separator="," close=")">
+ #{lvDeptCodeItem}
+ </foreach>)
+ )
</if>
</sql>
@@ -434,20 +455,38 @@
or (leaveldeptcodes != null and leaveldeptcodes.size() > 0)">
AND (
<if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+ (
leavehospitaldistrictcode IN
<foreach collection="leavehospitaldistrictcodes" item="lvWardCodeItem" open="(" separator="," close=")">
#{lvWardCodeItem}
</foreach>
+ <!-- 寤剁画鎶ょ悊浠诲姟锛坰ervice_type='99'锛夊彲浠ュ湪鎮h�呰繕娌″嚭闄㈡椂鐢熸垚锛�
+ 杩欑被璁板綍鍙湁銆屽湪闄㈢淮搴︺�嶏紙hospitaldistrictcode / deptcode锛夛紝鍑洪櫌缁村害鏄� NULL銆�
+ NULL 涓嶅尮閰嶄换浣� IN锛屼换鍔′細銆屾彁绀虹敓鎴愭垚鍔熴�佸垪琛ㄩ噷鍗存煡涓嶅埌銆嶏紝
+ 鎵�浠ュ嚭闄㈢淮搴︿负绌烘椂鐢ㄥ悓涓�濂楃紪鐮佷綋绯荤殑鍦ㄩ櫌缁村害鍏滃簳銆� -->
+ OR (service_type = '99' AND (leavehospitaldistrictcode IS NULL OR leavehospitaldistrictcode = '')
+ AND hospitaldistrictcode IN
+ <foreach collection="leavehospitaldistrictcodes" item="lvWardCodeItem" open="(" separator="," close=")">
+ #{lvWardCodeItem}
+ </foreach>)
+ )
</if>
<if test="(leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0)
and (leaveldeptcodes != null and leaveldeptcodes.size() > 0)">
OR
</if>
<if test="leaveldeptcodes != null and leaveldeptcodes.size() > 0">
+ (
leaveldeptcode IN
<foreach collection="leaveldeptcodes" item="lvDeptCodeItem" open="(" separator="," close=")">
#{lvDeptCodeItem}
</foreach>
+ OR (service_type = '99' AND (leaveldeptcode IS NULL OR leaveldeptcode = '')
+ AND deptcode IN
+ <foreach collection="leaveldeptcodes" item="lvDeptCodeItem" open="(" separator="," close=")">
+ #{lvDeptCodeItem}
+ </foreach>)
+ )
</if>
)
</if>
@@ -684,6 +723,26 @@
<if test="operatorNo != null and operatorNo != ''">and operator_no = #{operatorNo}</if>
<if test="wechat != null and wechat != ''">and wechat = #{wechat}</if>
<if test="hospType != null and hospType != ''">and hosp_type = #{hospType}</if>
+ <!--
+ 2026-11锛氶噸瑕佹�ф爣璁扮瓫閫夛紙瀵瑰簲 service_subtask.importance_flag_code锛屽缓浠诲姟鏃跺彇鑷�
+ pat_med_inhosp.importance_flag_code锛夈�備袱绉嶅啓娉曪細
+ 鈶� 绮剧‘鍗曞�� importanceFlagCode = 'FH0165.01'锛堟垨鎻忚堪鍙e緞 '鏃ラ棿鎵嬫湳'锛�
+ 鈶� 绮剧‘澶氬�� importanceFlagCodes = ['FH0165.01','FH0165.02']
+ 璇ュ垪閲囬泦鏃跺氨琚嫾鎴�**鎻忚堪涓�**锛圛mportFlagEnum 鐨� desc锛夛紝澶氬�肩敤鑻辨枃閫楀彿鎷兼帴锛�
+ 濡� '鏃�,鏃ラ棿鎵嬫湳'锛堣 ServiceSLTDHealthcareRecordServiceImpl#hospitalizedApply锛夆�斺��
+ 绛夊��/IN 鍙懡涓崟鍊艰锛涘鍊艰锛堢幇鍦轰粎 7 鏉★紝閮藉湪鍑洪櫌璁板綍涓婏級瑕佺瓫鍏ㄩ渶鑷鍐�
+ find_in_set銆備袱绉嶅彛寰勫苟瀛橈紙鏈夊簱瀛樻灇涓剧紪鐮併�佹湁搴撳瓨涓枃鎻忚堪锛夛紝浼犱粈涔堟寜浠�涔堢簿纭瘮锛�
+ 涓嶅仛鍊煎煙褰掍竴銆�
+ -->
+ <if test="importanceFlagCode != null and importanceFlagCode != ''">
+ and importance_flag_code = #{importanceFlagCode}
+ </if>
+ <if test="importanceFlagCodes != null and importanceFlagCodes.size() > 0">
+ AND importance_flag_code IN
+ <foreach collection="importanceFlagCodes" item="impFlagItem" open="(" separator="," close=")">
+ #{impFlagItem}
+ </foreach>
+ </if>
<if test="libtemplateid != null ">and libtemplateid = #{libtemplateid}</if>
<if test="libtemplatename != null ">and libtemplatename = #{libtemplatename}</if>
<if test="openid != null ">and openid = #{openid}</if>
@@ -1172,6 +1231,8 @@
<if test="hospitaldistrictname != null and hospitaldistrictname != ''">hospitaldistrictname,</if>
<if test="deptcode != null and deptcode != ''">deptcode,</if>
<if test="deptname != null and deptname != ''">deptname,</if>
+ <!-- 2026-11锛氶噸瑕佹�ф爣璁扮紪鐮侊紙鏃ラ棿鎵嬫湳/鏃ラ棿璇婄枟鈥︼級锛屽缓浠诲姟鏃朵粠 pat_med_inhosp 鍚屾 -->
+ <if test="importanceFlagCode != null and importanceFlagCode != ''">importance_flag_code,</if>
<if test="labelstatus != null">labelstatus,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
@@ -1281,6 +1342,7 @@
<if test="hospitaldistrictname != null and hospitaldistrictname != ''">#{hospitaldistrictname},</if>
<if test="deptcode != null and deptcode != ''">#{deptcode},</if>
<if test="deptname != null and deptname != ''">#{deptname},</if>
+ <if test="importanceFlagCode != null and importanceFlagCode != ''">#{importanceFlagCode},</if>
<if test="labelstatus != null">#{labelstatus},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
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 eeb85f1..6830191 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -828,6 +828,9 @@
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());
@@ -933,6 +936,8 @@
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());
--
Gitblit v1.9.3