diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java index 980e97ba7..cb9e21c56 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java @@ -1165,18 +1165,35 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { = activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList()); // ============ 前置校验 ============ - // 1. 护士站校验:查询药品发放记录,确认护士站是否已执行停止核对(发药) + // 1. 护士站校验:确认医嘱请求仍处于"停止"状态,未被护士核对处理 + // 修正:不再基于 MedicationDispense 历史状态校验(历史发放记录如 EXECUTED/COMPLETED + // 会被误判为护士已核对),改为直接检查 MedicationRequest/ServiceRequest 的当前状态 + if (!medicineRequestIds.isEmpty()) { + List medicineRequestList = iMedicationRequestService.list( + new LambdaQueryWrapper() + .select(MedicationRequest::getId, MedicationRequest::getStatusEnum) + .in(MedicationRequest::getId, medicineRequestIds)); + for (MedicationRequest mr : medicineRequestList) { + if (!RequestStatus.STOPPED.getValue().equals(mr.getStatusEnum())) { + throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!"); + } + } + } + if (!activityRequestIds.isEmpty()) { + List activityRequestList = iServiceRequestService.list( + new LambdaQueryWrapper() + .select(ServiceRequest::getId, ServiceRequest::getStatusEnum) + .in(ServiceRequest::getId, activityRequestIds)); + for (ServiceRequest sr : activityRequestList) { + if (!RequestStatus.STOPPED.getValue().equals(sr.getStatusEnum())) { + throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!"); + } + } + } + // 2. 药房端校验:如果已有退药/退费记录,说明药房已处理 if (!medicineRequestIds.isEmpty()) { List dispenseList = iMedicationDispenseService.selectByRequestIdList(medicineRequestIds); for (MedicationDispense dispense : dispenseList) { - // 如果发放状态 >= COMPLETED(4),说明护士站已发药/已确认停止 - if (dispense.getStatusEnum() != null && dispense.getStatusEnum() >= DispenseStatus.COMPLETED.getValue() - && !DispenseStatus.ON_HOLD.getValue().equals(dispense.getStatusEnum()) - && !DispenseStatus.STOPPED.getValue().equals(dispense.getStatusEnum()) - && !DispenseStatus.CANCELLED.getValue().equals(dispense.getStatusEnum())) { - throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!"); - } - // 2. 药房端校验:如果已有退药/退费记录,说明药房已处理 if (DispenseStatus.RETURNED.getValue().equals(dispense.getStatusEnum()) || DispenseStatus.REFUNDED.getValue().equals(dispense.getStatusEnum()) || DispenseStatus.PART_REFUND.getValue().equals(dispense.getStatusEnum())) { diff --git a/healthlink-his-ui/eslint.config.js b/healthlink-his-ui/eslint.config.js index ae05be5af..1361781dd 100755 --- a/healthlink-his-ui/eslint.config.js +++ b/healthlink-his-ui/eslint.config.js @@ -1,8 +1,12 @@ /* eslint-env node */ +import path from "node:path"; +import { fileURLToPath } from "node:url"; import globals from "globals"; import pluginVue from "eslint-plugin-vue"; import parserVue from "vue-eslint-parser"; -import importPlugin from "eslint-plugin-import"; +import importPlugin, { createNodeResolver } from "eslint-plugin-import-x"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default [ { @@ -29,31 +33,31 @@ export default [ }, plugins: { - import: importPlugin, + "import-x": importPlugin, }, rules: { // 确保导入的模块实际存在(核心规则,防止构建失败) - "import/no-unresolved": "error", + "import-x/no-unresolved": "error", // 确保导入的命名导出实际存在 - "import/named": "error", + "import-x/named": "error", // 确保默认导出存在 - "import/default": "error", + "import-x/default": "error", // 确保命名空间导出存在 - "import/namespace": "error", + "import-x/namespace": "error", // Vue 相关规则 "vue/multi-word-component-names": "off", }, settings: { - "import/resolver": { - alias: { - map: [ - ["@", "./src"], - ], - extensions: [".js", ".jsx", ".vue"], - }, - }, + "import-x/resolver-next": [ + createNodeResolver({ + alias: { + "@": [path.join(__dirname, "src")], + }, + extensions: [".mjs", ".cjs", ".js", ".jsx", ".vue", ".json", ".node"], + }), + ], }, }, ]; diff --git a/healthlink-his-ui/package.json b/healthlink-his-ui/package.json index 52c86ee83..898f40b85 100755 --- a/healthlink-his-ui/package.json +++ b/healthlink-his-ui/package.json @@ -74,8 +74,7 @@ "@vitejs/plugin-vue": "^5.2.4", "@vue/test-utils": "^2.4.6", "eslint": "^10.4.1", - "eslint-import-resolver-alias": "^1.1.2", - "eslint-plugin-import": "^2.32.0", + "eslint-plugin-import-x": "^4.16.1", "eslint-plugin-vue": "^10.9.1", "globals": "^17.5.0", "happy-dom": "^20.8.3", diff --git a/node_modules/.vite/deps/_metadata.json b/node_modules/.vite/deps/_metadata.json deleted file mode 100644 index 47e90d4a4..000000000 --- a/node_modules/.vite/deps/_metadata.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "hash": "5905b5e1", - "configHash": "4d078017", - "lockfileHash": "9e11ee45", - "browserHash": "09dcaa6f", - "optimized": {}, - "chunks": {} -} \ No newline at end of file diff --git a/node_modules/.vite/deps/package.json b/node_modules/.vite/deps/package.json deleted file mode 100644 index 3dbc1ca59..000000000 --- a/node_modules/.vite/deps/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -}