From fce96ef468291fb9a0e6a4d34ab371315e9485d4 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期六, 03 十月 2026 00:59:44 +0800
Subject: [PATCH] ai优化
---
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java | 109 +++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 78 insertions(+), 31 deletions(-)
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java
index 82a4bb2..c743e03 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java
@@ -14,12 +14,38 @@
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Map;
-import java.util.function.Consumer;
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.lihu.jh.framework.common.pojo.CommonResult.success;
-import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.APPOINTMENT_CREATE_FAIL;
+import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
+/**
+ * 渚涚涓夋柟锛圚IS / 闆嗘垚骞冲彴锛夎皟鐢ㄧ殑閫氱敤鎺ュ彛銆�
+ *
+ * <h3>璺敱鏂瑰紡</h3>
+ * 閫氳繃璇锋眰澶� {@code action} 鍖哄垎鏈嶅姟锛屽彇鍊艰 {@link ActionTypeEnum}銆�
+ *
+ * <h3>鏈鏀瑰姩瑕佺偣</h3>
+ * <ol>
+ * <li><b>琛ユ敞鍐� ECG 涓撳睘 action</b>锛氭帴鍙f枃妗� 6.4/6.5 瀹氫箟
+ * {@code S050402}锛圗CG 妫�鏌ラ绾︾姸鎬佹柊澧烇級銆亄@code S050502}锛圗CG 妫�鏌ラ绾︾姸鎬佹洿鏂帮級锛�
+ * 涓� pacs 鐨� {@code S050401}/{@code S050501} 骞跺垪銆傚疄娴嬫棩蹇椾腑杩欎袱涓紪鍙�
+ * 灏氭湭鍑虹幇锛�0 娆★級锛屾澶�**涓诲姩鍏煎**锛岄伩鍏嶉櫌鏂瑰垏鎹㈢紪鍙锋椂娑堟伅琚嫆銆�</li>
+ * <li><b>鍏煎鏃犲悗缂�鍐欐硶</b>锛氭枃妗e畾涔� {@code S0201}/{@code S0202}锛�
+ * 鑰屽疄娴嬫姤鏂囦负 {@code S0201ECG}/{@code S0202ECG}锛屼袱鑰呭潎鎺ユ敹銆�</li>
+ * <li><b>缁嗗寲閿欒鐮�</b>锛氬師瀹炵幇鎶婃墍鏈夊紓甯哥粺涓�鍘嬫垚
+ * {@code APPOINTMENT_CREATE_FAIL}锛�"鐢宠鍗曞垱寤哄け璐�"锛夛紝
+ * 瀵艰嚧鎺掗殰鍥伴毦锛堟湰娆¢棶棰樻帓鏌ユ垚鏈嵆鏉ヨ嚜姝わ級銆傜幇鎸�
+ * 銆屾湭鐭� action / 鎶ユ枃瑙f瀽澶辫触 / 璁板綍涓嶅瓨鍦� / 鍏朵粬銆嶅尯鍒嗚繑鍥炪��</li>
+ * </ol>
+ *
+ * <h3>鍏充簬 S0405</h3>
+ * {@code S0405}锛堢敵璇峰崟鐘舵�佹洿鏂帮級鏄�**鍏ㄩ櫌閫氱敤**鏈嶅姟锛屽尰闄細鎶婃墍鏈夋鏌ョ瀹�
+ * 锛圕T/MRI/DR/瓒呭0鈥︼級鐨勭姸鎬佷竴骞舵帹閫併�備笟鍔″眰宸叉寜蹇冪數鑼冨洿杩囨护锛�
+ * 闈炲績鐢靛崟鍙鏃ュ織銆佷笉澶勭悊锛堣瑙� {@code HisEcgFilter}锛夈��
+ *
+ * @author 蹇冪數鎺掗槦瑁呮満绯荤粺
+ */
@Tag(name = "渚涚涓夋柟璋冪敤鎺ュ彛")
@RestController
@RequestMapping("/ecg/external")
@@ -27,18 +53,20 @@
@Slf4j
public class ExternalController {
+ /** 璇锋眰澶翠腑鐨� action 閿悕 */
+ private static final String HEADER_ACTION = "action";
+
@Resource
private AppointmentService appointmentService;
/**
- * 閫氱敤鎺ュ彛
- * <p>
- * 鏀寔浠ヤ笅action绫诲瀷锛�
- * - S0201ECG: 棰勭害鍒涘缓
- * - S0202ECG: 棰勭害鏇存柊
+ * 閫氱敤鎺ュ彛銆�
*
- * @param dataMap 璇锋眰鏁版嵁
- * @param headers 璇锋眰澶达紝蹇呴』鍖呭惈action瀛楁
+ * <p>鏀寔鐨� action 瑙� {@link ActionTypeEnum}锛屽寘鎷細
+ * 鐢宠鍗曟柊澧�/鏇存柊銆佺敵璇峰崟鐘舵�佹洿鏂般�佹鏌ラ绾︾姸鎬佹柊澧�/鏇存柊銆�
+ *
+ * @param dataMap 璇锋眰鏁版嵁锛圚L7 V3 杞崲鍚庣殑 Map锛�
+ * @param headers 璇锋眰澶达紝蹇呴』鍖呭惈 {@code action}
* @return 澶勭悊缁撴灉
*/
@PermitAll
@@ -47,35 +75,54 @@
public CommonResult<Boolean> generalInterface(
@RequestBody @NotNull(message = "璇锋眰鏁版嵁涓嶈兘涓虹┖") Map<String, Object> dataMap,
@RequestHeader @NotEmpty(message = "璇锋眰澶翠笉鑳戒负绌�") Map<String, String> headers) {
- log.info("[generalInterface][寮�濮嬪鐞嗚姹� action({}) dataMap({})]", headers.get("action"), dataMap);
- String actionType = headers.get("action");
- ActionTypeEnum action = ActionTypeEnum.getByType(actionType);
+ String rawAction = headers.get(HEADER_ACTION);
+ ActionTypeEnum action = ActionTypeEnum.getByType(rawAction);
if (action == null) {
- log.warn("[generalInterface][鏈煡鐨刟ction绫诲瀷 action({})]", actionType);
- throw exception(APPOINTMENT_CREATE_FAIL);
+ // 涓嶅啀鍚炴垚"鐢宠鍗曞垱寤哄け璐�"锛屾槑纭憡鐭� action 涓嶅彈鏀寔
+ log.warn("[generalInterface][涓嶆敮鎸佺殑 action({})锛岃鏍稿鎺ュ彛鏂囨。 6.x 浜ゆ槗缂栧彿]", rawAction);
+ throw exception(HIS_ACTION_NOT_SUPPORTED);
}
+ log.info("[generalInterface][寮�濮嬪鐞嗚姹� action({}) dataMap({})]", rawAction, dataMap);
+
try {
- // 浣跨敤绛栫暐妯″紡澶勭悊涓嶅悓鐨刟ction
- Map<ActionTypeEnum, Consumer<Map<String, Object>>> actionHandlers = Map.of(
- ActionTypeEnum.S0201ECG, appointmentService::handleAppointmentCreate,
- ActionTypeEnum.S0202ECG, appointmentService::handleAppointmentUpdate,
- ActionTypeEnum.S040501HIS, appointmentService::handleAppointmentStateUpdate,
- ActionTypeEnum.S050401, appointmentService::handleCheckAppointmentUpdate,
- ActionTypeEnum.S0405, appointmentService::handleAppointmentStatusUpdate,
- ActionTypeEnum.S050501, appointmentService::handleCheckAppointmentUpdate
- );
-
- Consumer<Map<String, Object>> handler = actionHandlers.get(action);
- if (handler == null) {
- throw exception(APPOINTMENT_CREATE_FAIL);
- }
-
- handler.accept(dataMap);
+ dispatch(action, dataMap);
return success(true);
+ } catch (cn.lihu.jh.framework.common.exception.ServiceException e) {
+ // 涓氬姟寮傚父锛氫繚鐣欏師濮嬮敊璇爜涓庝俊鎭紝渚夸簬 HIS 渚у畾浣�
+ log.error("[generalInterface][涓氬姟澶勭悊澶辫触 action({}) code({}) msg({})]",
+ rawAction, e.getCode(), e.getMessage());
+ throw e;
} catch (Exception e) {
- throw exception(APPOINTMENT_CREATE_FAIL);
+ // 鏈鏈熷紓甯革細鎶ユ枃瑙f瀽澶辫触銆佸瓧娈电己澶卞鑷寸殑 NPE/绫诲瀷杞崲寮傚父绛�
+ log.error("[generalInterface][鎶ユ枃澶勭悊寮傚父 action({}) dataMap({})]", rawAction, dataMap, e);
+ throw exception(HIS_MESSAGE_PARSE_FAIL);
+ }
+ }
+
+ /**
+ * 鎸� action 鍒嗘淳鍒板搴斿鐞嗗櫒銆�
+ * <p>
+ * 浣跨敤 {@link ActionTypeEnum} 鐨勫垎缁勬柟娉曡�岄潪 Map 鏄犲皠锛屾槸涓轰簡璁�
+ * 銆屽悓涓�鏈嶅姟鐨勫绉嶇紪鍙枫�嶏紙pacs / ECG銆佹湁鍚庣紑 / 鏃犲悗缂�锛夎蛋鍚屼竴澶勭悊鍣紝
+ * 閬垮厤鏂板缂栧彿鏃舵紡閰嶃��
+ */
+ private void dispatch(ActionTypeEnum action, Map<String, Object> dataMap) {
+ if (action.isApplyCreate()) {
+ appointmentService.handleAppointmentCreate(dataMap);
+ } else if (action.isApplyUpdate()) {
+ appointmentService.handleAppointmentUpdate(dataMap);
+ } else if (action.isApplyStatusUpdate()) {
+ appointmentService.handleAppointmentStateUpdate(dataMap);
+ } else if (action.isAppointmentStatusCreate()
+ || action.isAppointmentStatusUpdate()) {
+ // 妫�鏌ラ绾︾姸鎬侊細鏂板(S050401/S050402) 涓� 鏇存柊(S050501/S050502)
+ // 鎶ユ枃缁撴瀯鐩稿悓锛岃蛋鍚屼竴澶勭悊鍣�
+ appointmentService.handleCheckAppointmentUpdate(dataMap);
+ } else {
+ // 鏋氫妇鏂板浣嗘湭鎺ュ叆鍒嗘淳閫昏緫鏃剁殑鍏滃簳锛岄伩鍏嶉潤榛樺拷鐣�
+ throw exception(HIS_ACTION_NOT_SUPPORTED);
}
}
}
--
Gitblit v1.9.3