fix(login): 修复登录用户选项值获取问题

- 替换LoginUser中的getOptionJson().path()调用为新的getOptionJsonValue()方法
- 为LoginUser类添加安全的选项JSON值访问方法getOptionJsonValue()
- 修复LoginUser类中乱码注释并优化代码结构
- 更新SysLoginService类中乱码注释为中文描述
This commit is contained in:
2026-06-10 17:01:52 +08:00
parent a963ad8fdc
commit 20af7351a0
31 changed files with 1111 additions and 707 deletions

View File

@@ -1,29 +1,438 @@
# HealthLink-HIS 后端开发规范
# HealthLink-HIS — AI 开发规范
> 🤖 本文件供 AI 工具自动读取。完整规范见 **[../../RULES.md](../../RULES.md)**
> 🤖 本文件供所有 AI 编码工具自动读取。进入本项目后必须遵守以下规范。
>
> **模型决定上限Harness 决定底线。**
## 铁律速查
---
1. **修改完必须测试**`mvn clean compile -DskipTests`
2. **Flyway 迁移** — 新建表/字段必须走 Flyway
3. **测试通过才提交** — 编译+测试全通过才能 commit
4. **API路径对齐**`/healthlink-his/api/v1/`
5. **先分解再行动** — 非平凡任务先出计划
6. **文档在 MD 目录** — 大写下划线命名
7. **铁律18: 禁止破坏原有功能** — 完善功能时不能破坏已有功能
## 一、项目概览
## 快速命令
| 属性 | 值 |
|------|------|
| 项目名 | HealthLink-HIS医院信息系统 |
| 后端路径 | `healthlink-his-server/` |
| 前端路径 | `healthlink-his-ui/` |
| 文档路径 | `MD/` |
| JDK | 25 (OpenJDK) |
| Spring Boot | 4.0.6 |
| MyBatis-Plus | 3.5.16 |
| Vue | 3.x + Vite + Element Plus |
| 数据库 | PostgreSQL 15+ |
| 包名 | `com.healthlink.his` |
| 后端端口 | 18082 |
| 前端端口 | 81 |
---
## 二、铁律(必须遵守,违反即失败)
### 🔴 P0 铁律 — 不可违反
**铁律1: 修改完必须测试**
```
后端: mvn clean compile -DskipTests → mvn install -DskipTests → mvn test
前端: npm run build:dev → npm run lint
```
- 白盒:编译通过,无 ERROR
- 黑盒:关键接口返回 `{code:200, data:...}`,验证业务逻辑
- 冒烟:应用正常启动,核心流程通畅
**铁律2: Flyway 数据库迁移**
- 凡是新建表、新增字段,必须创建 Flyway 迁移脚本
- 路径:`healthlink-his-domain/src/main/resources/db/migration/`
- 命名:`V{版本号}__{描述}.sql`(双下划线)
**铁律3: 测试通过后才提交**
- 编译 + 测试全部通过后才能 git commit
- 不提交未完成的功能、调试代码、临时文件
**铁律4: 前后端API路径对齐**
- 后端前缀:`/healthlink-his/api/v1/`
- 前端 `request.js` 的 baseURL 必须与后端匹配
**铁律5: 状态值一致性Bug #574 教训)**
- 修改任何状态值前,必须先列出完整的状态流转链路
- 检查项:枚举定义 → Service 设置 → 查询映射 → 前端 STATUS_CLASS_MAP → 前端 v-if → 统计SQL
- 禁止:只改一端不检查其他端
**铁律6: 禁止删除源文件Bug #574 教训)**
- 绝对禁止删除项目中已有的 Java/Vue/SQL 源文件
- 编译错误 → 修复错误;重复文件 → 重构合并
- AI 幻觉文件 → 检查 `git ls-tree baseline -- <file>` 确认后再删除
- 唯一例外:明确由人类确认删除的文件
**铁律7: 禁止修改已有公开方法签名**
- 不能删除/重命名已有的 public 方法,不能修改参数列表
- 需要新功能 → 添加重载方法;需要改行为 → 修改内部实现
**铁律8: 验证后才宣称完成Verification Before Completion**
- **没有跑过验证命令,就不能说"完成了""通过了""没问题"**
- 禁止使用"应该可以""大概没问题""看起来正确"
- 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称
- 这是诚实原则,不是效率问题
**铁律9: 开发前必须审核原有代码P0 — 铁律)**
- **任何新功能开发前,必须先搜索项目中是否已有相关代码**
- 搜索路径Controller / AppService / Service / Mapper / Entity / 前端页面 / API接口
- 如果已有部分功能 → 在原有代码基础上**升级优化完善**,禁止另起炉灶
- 如果已有接口但前端缺失 → 只补前端,不重复建后端
- 如果已有前端但后端缺失 → 只补后端,不重写前端
- 搜索命令:`rg -l "关键词" healthlink-his-server/ healthlink-his-ui/src/`
- 禁止:不看代码就新建模块、重复实现已有功能、废弃原有代码另写一套
**铁律10: 状态变更影响面分析Bug #574→575 教训)**
- 改任何状态枚举值前,**必须**执行影响面分析
- `rg "原状态枚举名" --type java` 列出所有引用文件
- 逐个检查:设置值?查询过滤?显示映射?统计聚合?
- 检查逆向流程:退号、取消、停诊是否兼容新状态
- 检查 XML mapper 中所有查询过滤条件
- 检查前端所有 v-if/v-for/disabled 条件
- **禁止**:只改正向流程不验逆向流程
**铁律11: 逆向流程验证Bug #575 教训)**
- 涉及状态流转的 Bug验证时**必须**覆盖:
- 正向:预约→签到→就诊→完成
- 逆向:退号、取消预约、停诊、退费
- 边界:并发操作、重复操作、异常中断
- **禁止**:只测正向流程就标记"修复完成"
**铁律12: 全链路 6 环分析**
- 涉及数据库字段的 Bug/需求 必须走完整链路
```
前端/页面 → Controller → Service → Mapper → DB/SQL → 关联模块
①录入 ②验证 ③业务 ④持久化 ⑤存储 ⑥联动
```
- ①录入:前端有无输入入口(弹窗、表格行编辑、表单)
- ②验证Controller 参数校验、@Valid、权限控制
- ③业务Service 业务逻辑、事务边界、多个 Service 实现类入口
- ④持久化Mapper XML、DTO 字段映射、类型转换
- ⑤存储数据库表结构、索引、NOT NULL 约束
- ⑥联动:上游(医嘱→护士站)、下游(打印、计费、报表)是否同步
**铁律13: 全链路验证(状态流转 Bug 必做)**
- 修复后按以下顺序验证,**编译通过不等于修复完成**
```
① 数据库SELECT status FROM table WHERE id = ? → 确认写入正确
② 后端接口:检查所有 if/switch 分支 → 确认映射正确
③ 前端显示:检查 STATUS_CLASS_MAP → 确认文本正确
④ 前端交互:检查 v-if/v-for/disabled → 确认按钮状态正确
⑤ 统计数据:检查聚合 SQL → 确认统计包含新状态
```
**铁律14: 池/统计表同步Bug #574 教训)**
- **任何状态变更必须同步更新关联统计表**
- 检查清单:
1. 状态变更后,哪些统计字段需要更新?
2. 是原子递增/递减,还是全量重算?
3. 并发安全:用 `SET field = field + 1` 还是先查后改?
4. 逆向操作(退号/取消)是否正确回滚统计?
- **禁止**:只改状态不改统计,或只改统计不改状态
**铁律15: 统计变更必须验证实际值Bug #575 教训)**
- 修改统计逻辑后,**必须查数据库验证实际值**
- 对比操作前后的值,确认统计正确
- **禁止**:改了统计逻辑不查数据库验证
**铁律16: 搜索所有相关代码路径**
- 修复前必须用 `rg` 搜索所有引用
```
rg "状态枚举名|相关方法名|相关字段名" --type java --type vue
```
- 确保不遗漏任何引用路径
**铁律17: 数据库铁律**
- **修前必须查询真实数据库** — 确认表结构、字段约束、索引
- **禁止凭猜测写 SQL** — 先查看表结构
- **修改 SQL 后必须验证** — `EXPLAIN` 或实际查询验证语法
- **NOT NULL 约束必须检查** — INSERT/UPDATE 前先查 `is_nullable`
- **关联表必须查完整** — 涉及 JOIN 查所有关联表结构和外键
**铁律18: 禁止破坏原有功能P0绝对铁律**
- **完善增加功能和流程时,绝对不能破坏或者让原有功能不能用**
- 修改已有实体前必须对比原始文件(`git show HEAD~N:./file.java`),保留所有原有字段和方法
- 新增字段只能追加,不能删除或重命名已有字段
- SQL迁移只允许 `ALTER TABLE ADD COLUMN`,不允许 `DROP COLUMN``RENAME COLUMN`
- Controller新端点不能修改已有端点的路径或参数
- 前端新页面不能修改已有页面的组件结构
- 每次修改后必须 `mvn clean compile -DskipTests` 验证
**铁律19: 编译错误不区分来源Bug #698 教训)**
- `mvn compile``vite build``vue-tsc` 等构建命令报错 = 不过关,**不管是自己引入的还是历史遗留的**
- 禁止说"这是预存问题""不是我改的""原有bug"——构建通不过就不能宣称完成
- 正确做法:定位错误 → 修复 → 重新构建确认通过 → 然后才能继续
**铁律20: 数据来源必须验证Bug #698 教训)**
- 涉及数据查询/提取时,必须先确认数据实际存储位置,不能假设
- 修复前必须:打印/检查原始数据结构 → 确认字段存在 → 再写提取逻辑
- 禁止:凭代码推断数据位置、假设"应该在这里"
**铁律21: 外部配置值必须实测验证Bug #698 教训)**
- 使用外部服务API、模型、数据库的配置值必须实际调用验证
- 配置变更后必须:发起一次真实请求 → 确认返回 200 → 再宣称配置正确
- 禁止:改完配置不测试、假设"应该能用"
**铁律22: 端到端验证必须有实际输出证据Bug #698 教训)**
- 声称功能生效前,必须有实际的端到端输出证据
- 验证方式:运行命令 → 检查输出中包含预期关键词
- 禁止:只检查代码路径可达就算"验证通过"
**铁律23: 文件读写强制 UTF-8 编码(必遵守)**
- **禁止**使用 PowerShell Get-Content -Raw不带 -Encoding UTF8读取源文件
- **禁止**使用 Out-File -Encoding utf8会写 BOM
- **正确写法**
- 读取:`[System.IO.File]::ReadAllText($path, [System.Text.Encoding]::UTF8)`
- 写入:`[System.IO.File]::WriteAllText($path, $content, [System.Text.UTF8Encoding]::new(False))`
- **原因**Windows PowerShell 5.1 默认用系统 localeGBK/CP936读写会把 UTF-8 中文变成乱码
**铁律24: 禁止硬编码业务默认值Bug #617 教训)**
- **禁止**在提交参数中硬编码业务默认值(如 `contractNo: '0000'`
- 必须使用用户在表单中选择的值,硬编码值仅作为 fallback
- 检查清单:
1. 表单字段是否有 `v-model` 绑定?
2. 构建提交参数时是否使用了绑定值?
3. 提交后是否覆盖了用户选择?
---
### 🟡 P1 铁律 — 强烈建议
**铁律25: 先分解再行动**
- 修改超过3个文件、涉及多模块、数据库变更必须先制定计划
**铁律26: 验证后信**
- 每次修改后必须验证编译通过,不信记忆
**铁律27: 文档统一管理**
- 所有文档存储在 `MD/` 目录
- 文件名:大写英文+下划线(如 `BACKEND_CHECKLIST.md`
- 文档头部必须包含元数据块(文档类型、版本、日期)
**铁律28: 设计文档必须包含UI设计和调用流程**
- 所有新模块/页面的设计文档必须包含UI布局描述、交互效果清单、前后端调用流程
- 没有明确UI设计的模块禁止直接编码
- 设计文档必须写清楚:系统调用关系、方法函数调用关系、完整业务流程
- 设计文档中每个用户操作必须对应:前端事件 → API调用 → 后端处理链路 → 返回数据 → UI渲染
**铁律29: 设计文档确认后自主开发(铁律)**
- 设计文档一旦确认,后续开发**必须按文档自主执行**
- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进
- 每完成一个 Sprint自动提交推送然后立即开始下一个 Sprint
- 只在遇到**无法解决的阻塞**时才暂停询问
**铁律30: 前端验证铁律**
- **提交前必须编译前端** — `npm run build:dev``npx vite build` 通过才算完成
- **禁止只改 .vue 文件不验证编译** — 改完必须跑一次编译确认无报错
- **SCSS 括号闭合必须检查** — `<style lang="scss" scoped>` 内的所有 `{}` 必须成对闭合
- **编译报错必须当场修复** — 看到 error 立即修,不要留到下一步
**铁律31: 提交前验证铁律**
- **后端**: `mvn compile` 通过 + 无新增 warning
- **前端**: `npm run build:dev` 通过 + 无 SCSS 错误
- **禁止跳过编译直接提交** — 编译失败的代码不允许进仓库
- **提交信息格式**: `type(scope): description`(如 `fix(registration): 修复退号金额计算`
**铁律32: 修复流程**
- **一次只修一个 Bug**,不扩大范围
- **修前必须完整获取 Bug 全部信息** — 描述、复现步骤、所有截图/附件、所有备注历史。禁止只看标题就写代码
- **修复前必须读 AGENTS.md**
- **修复后必须验证编译** — `mvn compile` / `vue-tsc --noEmit` 0 error
- **commit 前必须验证** — 编译通过 + 无新增 lint 警告
**铁律33: Bug 状态管理**
- **已关闭/已解决的 Bug 禁止处理** — 处理前检查状态resolved/closed 直接跳过
- **人类提的 Bug 只加备注不改状态** — 不改 status、不改 assignedTo
- **智能体提的 Bug 可改分配和加备注** — 状态变更等测试通过后由华佗确认
- **每个修复必须有 git commit** — 格式: `fix(#bug_id): 简要描述`
**铁律34: 质量门禁**
- L1: 编译通过
- L2: 测试通过
- L3: DB审查通过
- L4: 验收通过
- L5: 归档完成
---
## 三、Karpathy 编码准则
> 减少 LLM 常见编码错误。偏向谨慎而非速度。
### 3.1 先想再写
- 明确陈述假设,不确定就问
- 多种解读时都列出来,不要默默选一种
- 有更简单的方案就说出来,该推回就推回
- 不清楚的地方停下来,说清楚哪里不清楚
### 3.2 简洁优先
- 不做没要求的功能,不做一次性代码的抽象
- 不加没要求的"灵活性"和"可配置性"
- 200 行能 50 行搞定就重写
- 自问:"高级工程师会不会觉得这过度设计?"
### 3.3 精准修改
- 只改必须改的,不"顺手改进"相邻代码
- 匹配现有代码风格,即使你有不同的偏好
- 每行改动都能追溯到用户的请求
- 只清理你自己改动产生的无用代码
### 3.4 目标驱动
- 把任务转化为可验证目标
- 多步任务声明计划:`[步骤] → 验证: [检查]`
- 强验收标准让 Agent 能独立循环,弱标准需要持续澄清
---
## 四、系统化调试Systematic Debugging
> **铁律:没有根因调查,不能提出修复方案。**
### 四阶段流程
**阶段1根因调查**(修复前必须完成)
1. 仔细阅读错误信息(堆栈、行号、错误码)
2. 稳定复现(能否可靠触发?步骤?每次?)
3. 检查最近变更git diff、新依赖、配置变更
4. 多组件系统:在每个组件边界加诊断日志,定位哪一层断裂
5. 追踪数据流:坏值从哪里来?谁调用的?一直追溯到源头
**阶段2模式分析**
- 找到同代码库中类似的正常工作代码
- 逐项对比差异
- 理解依赖关系
**阶段3假设与测试**
- 形成单一假设:"我认为X是根因因为Y"
- 做最小改动测试
- 有效 → 阶段4无效 → 新假设
**阶段4实施**
- 创建失败测试用例
- 修复根因(不是症状)
- 验证修复
---
## 五、后端开发规范
### 分层架构
```
Controller → AppService → Service → Mapper → Entity
```
### 命名规范
| 类型 | 规则 | 示例 |
|------|------|------|
| Controller | `XxxController` | `RegistrationController` |
| AppService | `IXxxAppService` / `XxxAppServiceImpl` | `IRegistrationAppService` |
| Service | `IXxxService` / `XxxServiceImpl` | `IRegistrationService` |
| Mapper | `XxxMapper` | `RegistrationMapper` |
| Entity | `Xxx` | `Registration` |
| DTO | `XxxDto` / `XxxQueryDto` | `RegistrationDto` |
### 包结构
```
com.healthlink.his.web.{module}.controller
com.healthlink.his.web.{module}.appservice
com.healthlink.his.web.{module}.service
com.healthlink.his.web.{module}.mapper
com.healthlink.his.web.{module}.dto
com.healthlink.his.domain.{module}
com.healthlink.his.common.enums
```
### 关键约束
- 所有查询使用 `LambdaQueryWrapper`,禁止字符串拼接 SQL
- `@Transactional(rollbackFor = Exception.class)` 管理事务
- 所有接口标注 `@PreAuthorize` 权限控制
- 患者敏感信息在日志中脱敏
- **扩展功能不修改原有函数签名**
- **DTO 字段类型防御**:前端传入的 Boolean 字段 → 改用 String + 业务层转换Jackson 对 Boolean 严格校验);所有接受前端输入的 DTO 加 `@JsonIgnoreProperties(ignoreUnknown = true)`
---
## 六、前端开发规范
### 技术栈
- Vue 3 + Vite + Element Plus + Pinia + Axios基于 RuoYi-Vue3
### 目录结构
```
src/api/{module}/ # API接口
src/views/{module}/ # 页面组件
src/store/modules/ # Pinia状态管理
src/components/ # 公共组件
```
### 关键约束
- API前缀`/healthlink-his/api/v1/`
- 路由懒加载:`() => import('@/views/xxx/index.vue')`
- 页面使用 `<script setup>` 语法
- 按钮权限使用 `v-hasPermi` 指令
- `onMounted` 中注册的事件在 `onUnmounted` 中移除
---
## 七、Agent 体系
### 角色与路由
| 代号 | 名称 | 角色 | 路由关键词 |
|------|------|------|-----------|
| liubei | 刘备 | 项目经理 | 协调、分派、异常升级 |
| zhugeliang | 诸葛亮 | 架构师 | 分析、路由、设计 |
| guanyu | 关羽 | 后端开发 | java, api, spring, service, controller |
| zhaoyun | 赵云 | 前端开发 | vue, 界面, 显示, 弹窗, 按钮 |
| xunyu | 荀彧 | DBA | 数据库, sql, 迁移, mapper xml |
| zhangfei | 张飞 | 测试 | 测试, QA, 回归 |
| huatuo | 华佗 | 验收 | 需求验收、质量确认 |
| chenlin | 陈琳 | 文档 | 文档、归档、Git提交 |
### 协作流水线
```
刘备(协调) → 诸葛亮(分析路由) → {关羽|赵云}(修复) → 荀彧(DB审查) → 张飞(测试) → 华佗(验收) → 陈琳(归档)
```
---
## 八、快速参考命令
```bash
# === 后端 ===
export JAVA_HOME=/opt/jdk-25
mvn clean compile -DskipTests # 编译
mvn install -DskipTests # 构建
mvn test -pl healthlink-his-application -Dtest="XxxTest" -Dsurefire.failIfNoSpecifiedTests=false
# === 前端 ===
cd healthlink-his-ui
npm run dev && npm run build:dev && npm run lint && npm run test:run
# === Git ===
git status && git add -A && git commit -m "feat(module): desc" && git push origin develop
```
## 详细规范
---
→ 完整铁律: `MD/specs/IRON_RULES.md`
→ 后端规范: `MD/specs/BACKEND_DEVELOPMENT_STANDARD.md`
→ 后端清单: `MD/specs/BACKEND_CHECKLIST.md`
→ 根目录完整规范: `RULES.md`
## 九、过往教训
| Bug | 教训 | 根因 |
|---|---|---|
| #574 | 状态值 BOOKED(1)→应为 CHECKED_IN(3),前端映射缺失 | 没走完整状态链路 |
| #574 | AI 看到编译错误直接删文件 | 没检查 git baseline |
| #574 | 多次 fallback 修错文件 | 没用 rg 搜索所有引用 |
| #574 | 签到后 booked_num 未累加 | 只改状态没改统计 |
| #575 | 改了签到状态没检查退号流程 | 只验正向不验逆向 |
| #575 | booked_num 应在预约时累加而非签到时 | 统计变更未验证实际值 |
| #617 | 费用性质硬编码为 '0000'(自费),用户选医保无效 | 构建参数时写死默认值 |
| #632 | Boolean DTO 接收字符串 "肝功能12项" 导致反序列化失败 | DTO 字段类型未做防御 |
| #698 | 模型名拼写错误 mino→mimo 导致 400 | 外部配置值未实测验证 |
| — | 修复完成未提交到 develop | 框架未强制验证提交 |
| — | 退号流程只检查 BOOKED(1) 不兼容 CHECKED_IN(3) | 状态变更影响面分析缺失 |
---
> ⚠️ 本文件是 AI 开发规范的唯一信源。
>
> 📅 最后更新: 2026-06-10 | 来源: AgentForge Harness Iron Laws (39条)

View File

@@ -35,7 +35,7 @@ public class TenantOptionUtil {
// TODO:2025/10/17 李永兴提出的sys_option切换TenantOption临时防止报错方案最晚2025年11月底删除
String newValue = loginUser.getOptionMap().get(optionDict.getCode());
String oldValue = loginUser.getOptionJson().path(optionDict.getCode()).asText();
String oldValue = loginUser.getOptionJsonValue(optionDict.getCode());
return StringUtils.isEmpty(newValue) ? oldValue : newValue;
}

View File

@@ -1,7 +1,5 @@
package com.core.common.core.domain.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.core.common.core.domain.entity.SysRole;
import com.core.common.core.domain.entity.SysUser;
import lombok.Data;
@@ -14,7 +12,7 @@ import java.util.Map;
import java.util.Set;
/**
* 登录用户身份权限
* 登录用户身份权限
*
* @author system
*/
@@ -23,77 +21,77 @@ public class LoginUser implements UserDetails {
private static final long serialVersionUID = 1L;
/**
* 用户ID
* 用户ID
*/
private Long userId;
/**
* 部门ID
* 部门ID
*/
private Long deptId;
/**
* 用户唯一标识
* 用户唯一标识
*/
private String token;
/**
* 登录时间
* 登录时间
*/
private Long loginTime;
/**
* 过期时间
* 过期时间
*/
private Long expireTime;
/**
* ÃÆÃ†â€™Ãƒâ€šÃ§ÃÆÃ¢Ã¢â‚¬Å¾Ã‚Ã¢ÃÆÃ¢â¬Å¡Ãƒâ€šÃ»ÃÆÃ†â€™Ãƒâ€šÃ¥ÃÆÃ¢â¬Å¡Ãƒâ€šÃ½ÃÆÃ¢Ã¢ââ¬Å¡Ã¬Ã‚âIPÃÆÃ†â€™Ãƒâ€šÃ¥ÃÆÃ¢â¬Â¦ÃƒÂ¢Ã¢â€šÂ¬Ã…“̢̮â¬Å¡Ãƒâ€šÃ°ÃÆÃ†â€™Ãƒâ€šÃ¥ÃÆÃ¢â¬Å¡Ãƒâ€šÃÃÆÃ¢Ã¢â‚¬Å¡Ã‚ì
* 登录IP地址
*/
private String ipaddr;
/**
* 登录地点
* 登录地点
*/
private String loginLocation;
/**
* 浏览器类型
* 浏览器类型
*/
private String browser;
/**
* 操作系统
* 操作系统
*/
private String os;
/**
* 权限列表
* 权限列表
*/
private Set<String> permissions;
/** 租户ID */
/** 租户ID */
private Integer tenantId;
/**
* 机构/科室id
* 机构/科室id
*/
private Long orgId;
/**
* 所属医院id
* 所属医院id
*/
private Long hospitalId;
/**
* 参与者id
* 参与者id
*/
private Long practitionerId;
/**
* option JSON串
* option JSON
*/
private tools.jackson.databind.node.ObjectNode optionJson;
private Object optionJson;
/**
* option Map
@@ -101,12 +99,12 @@ public class LoginUser implements UserDetails {
private Map<String, String> optionMap;
/**
* 当前登录账号角色集合
* 当前登录账号角色集合
*/
private List<SysRole> roleList;
/**
* 用户信息
* 用户信息
*/
private SysUser user;
@@ -146,10 +144,7 @@ public class LoginUser implements UserDetails {
public void setToken(String token) {
this.token = token;
}
@JsonProperty(access = com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY)
@Override
} @Override
public String getPassword() {
return user.getPassword();
}
@@ -160,43 +155,35 @@ public class LoginUser implements UserDetails {
}
/**
* 账户是否未过期,过期无法验证
*/
@JsonProperty(access = com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY)
@Override
* 账户是否未过期,过期无法验证
*/ @Override
public boolean isAccountNonExpired() {
return true;
}
/**
* 指定用户是否解锁,锁定的用户无法进行身份验证
* 指定用户是否解锁,锁定的用户无法进行身份验证
*
* @return
*/
@JsonProperty(access = com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY)
@Override
*/ @Override
public boolean isAccountNonLocked() {
return true;
}
/**
* 指示是否已过期的用户的凭据(密码),过期的凭据防止认证
* 指示是否已过期的用户的凭据(密码),过期的凭据防止认证
*
* @return
*/
@JsonProperty(access = com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY)
@Override
*/ @Override
public boolean isCredentialsNonExpired() {
return true;
}
/**
* 是否可用 ,禁用的用户不能身份验证
* 是否可用 ,禁用的用户不能身份验证
*
* @return
*/
@JsonProperty(access = com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY)
@Override
*/ @Override
public boolean isEnabled() {
return true;
}
@@ -265,6 +252,15 @@ public class LoginUser implements UserDetails {
this.user = user;
}
/** Safe accessor for option values from optionJson (Map) */
@SuppressWarnings("unchecked")
public String getOptionJsonValue(String key) {
if (optionJson instanceof Map<?, ?> map) {
Object val = map.get(key);
return val != null ? val.toString() : "";
}
return "";
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return java.util.Collections.emptyList();

View File

@@ -1,7 +1,5 @@
package com.core.framework.web.service;
import tools.jackson.databind.node.ObjectNode;
import tools.jackson.databind.json.JsonMapper;
import com.core.common.constant.CacheConstants;
import com.core.common.constant.Constants;
@@ -41,7 +39,7 @@ import java.util.Map;
import java.util.Optional;
/**
* 登录校验方法
* 登录校验方法
*
* @author system
*/
@@ -69,33 +67,33 @@ public class SysLoginService {
private ISysTenantOptionService sysTenantOptionService;
/**
* 登录验证
* 登录验证
*
* @param username 用户名
* @param password 密码
* @param code 验证码
* @param uuid 唯一标识
* @param tenantId 租户ID
* @return 结果
* @param username 用户名
* @param password 密码
* @param code 验证码
* @param uuid 唯一标识
* @param tenantId 租户ID
* @return 结果
*/
public String login(String username, String password, String code, String uuid, Integer tenantId) {
// 验证码校验
// 验证码校验
// validateCaptcha(username, code, uuid);
// 租户校验
// 租户校验
validateTenant(username, tenantId);
// 保存本次勾选租户
// 保存本次勾选租户
redisCache.setCacheObject(CacheConstants.LOGIN_SELECTED_TENANT + username, tenantId);
// 登录前置校验
// 登录前置校验
loginPreCheck(username, password);
// 用户验证
// 用户验证
Authentication authentication = null;
try {
UsernamePasswordAuthenticationToken authenticationToken =
new UsernamePasswordAuthenticationToken(username, password);
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);
} catch (Exception e) {
if (e instanceof BadCredentialsException ex) {
@@ -113,80 +111,80 @@ public class SysLoginService {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS,
MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser)authentication.getPrincipal();
// 设置登录用户信息
// 设置登录用户信息
this.setLoginUserInfo(loginUser, tenantId);
// 生成token
// 生成token
return tokenService.createToken(loginUser);
}
/**
* 设置登录用户信息
* 设置登录用户信息
*
* @param loginUser 登录用户
* @param tenantId 租户ID
* @param loginUser 登录用户
* @param tenantId 租户ID
*/
public void setLoginUserInfo(LoginUser loginUser, Integer tenantId) {
// // ç™Ã»Ã¥Ã½ââ¬Â¢ÃƒÂ¦Ã¢â¬â€Ã¶setççŸæÆ÷id
// // 登录时set租户id
// Integer tenantId = 0;
// ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
// if (attributes != null) {
// HttpServletRequest request = attributes.getRequest();
// // äûŽèï÷æñââ¬Å¡ÃƒÂ¥Ã¤Ã´Ã¨Å½Ã·Ã¥Ãââ¬â€œÃƒÂ§Ã§Å¸Ã¦Ã†Ã·IDïüŒåÁââ¬Â¡ÃƒÂ¨Ã®Ã¾headeråÐÍççðäøú"X-Tenant-ID" ; ç™Ã»Ã¥Ã½ââ¬Â¢ÃƒÂ¦Ã…½Ã¥Ã¥ÃÃ£Ã¥ââ¬Â°ÃÃ§Ã«Ã¯Ã¦Å Å Ã§Ã§Å¸Ã¦Ã†Ã·idæââ¬ÂÃ¾Ã¥Ã†Ã°Ã¨Ã¯Ã·Ã¦Ã±ââ¬Å¡ÃƒÂ¥Ã¤Ã´Ã©ââ¬Â¡Ã…’
// // 从请求头获取租户ID假设header名称为"X-Tenant-ID" ; 登录接口前端把租户id放到请求头里
// String tenantIdHeader = request.getHeader("X-Tenant-ID");
// if (tenantIdHeader != null && !tenantIdHeader.isEmpty()) {
// tenantId = Integer.parseInt(tenantIdHeader);
// }
// }
// // 设置租户id
// // 设置租户id
// loginUser.setTenantId(tenantId);
// 记录登录信息
// 记录登录信息
recordLoginInfo(loginUser.getUserId());
// 设置登录用户的信息
// 设置登录用户的信息
LoginUserExtend loginUserExtend = userService.getLoginUserExtend(loginUser.getUserId());
if (loginUserExtend != null) {
loginUser.setOrgId(loginUserExtend.getOrgId()); // 科室id
loginUser.setPractitionerId(loginUserExtend.getPractitionerId()); // 参与者id
loginUser.setHospitalId(userService.getHospitalIdByOrgId(loginUserExtend.getOrgId())); // 所属医院id
loginUser.setOrgId(loginUserExtend.getOrgId()); // 科室id
loginUser.setPractitionerId(loginUserExtend.getPractitionerId()); // 参与者id
loginUser.setHospitalId(userService.getHospitalIdByOrgId(loginUserExtend.getOrgId())); // 所属医院id
// user
loginUser.getUser().setOrgId(loginUserExtend.getOrgId()); // 科室id
loginUser.getUser().setOrgName(loginUserExtend.getOrgName()); // 科室名称
loginUser.getUser().setOrgId(loginUserExtend.getOrgId()); // 科室id
loginUser.getUser().setOrgName(loginUserExtend.getOrgName()); // 科室名称
}
List<SysRole> roleList = userService.getRoleList(loginUser.getUserId());
if (!roleList.isEmpty()) {
loginUser.setRoleList(roleList);
}
// 设置租户ID
// 设置租户ID
loginUser.getUser().setTenantId(tenantId);
loginUser.setTenantId(tenantId);
// option集合
// option集合
List<Map<String, String>> optionList = userService.getOptionList(tenantId);
if (optionList.isEmpty()) {
throw new IllegalArgumentException("æœÃªÃ¥Å’ùéââ¬Â¦ÃÃ¥Ã†Ã°optionäÿáæÁï");
throw new IllegalArgumentException("未匹配到option信息");
}
ObjectNode optionJson = JsonMapper.builder().build().createObjectNode();
Map<String, String> optionJsonMap = new java.util.HashMap<>();
for (Map<String, String> map : optionList) {
String key = map.get("optionkey");
String value = map.get("optionvalue");
optionJson.put(key, value);
optionJsonMap.put(key, value);
}
loginUser.setOptionJson(optionJson);
loginUser.setOptionJson(optionJsonMap);
// TODO:äøââ¬Â¹ÃƒÂ©ÃÃ¢Ã§Å¡ââ¬Å¾ÃƒÂ©Ã¢â¬Â¦ÃÃ§Ã½Ã®Ã©Ã¡Ã¹Ã¥ÃÃ¯Ã§ââ¬ÂÃ¨Ã¥ÃÅ½Ã¯Ã¼Å’äøŠéÝâoptionéââ¬ÂºÃ¢â¬Â ÃƒÂ¥ÃÃ†Ã¥Ã¤ââ¬Å¾ÃƒÂ§Ãââ¬Â ÃƒÂ¦Ã³Ã¨Ã©ââ¬Â¡Ã… Ã¦Å½ââ¬Â°
// TODO:下面的配置项启用后上面option集合处理注释掉
// 全部租户配置项
// 全部租户配置项
Map<String, String> optionMap = sysTenantOptionService.getAllTenantOption(tenantId);
loginUser.setOptionMap(optionMap);
}
/**
* 校验验证码
* 校验验证码
*
* @param username 用户名
* @param code 验证码
* @param uuid 唯一标识
* @return 结果
* @param username 用户名
* @param code 验证码
* @param uuid 唯一标识
* @return 结果
*/
public void validateCaptcha(String username, String code, String uuid) {
boolean captchaEnabled = configService.selectCaptchaEnabled();
@@ -208,33 +206,33 @@ public class SysLoginService {
}
/**
* 登录前置校验
* 登录前置校验
*
* @param username 用户名
* @param password 用户密码
* @param username 用户名
* @param password 用户密码
*/
public void loginPreCheck(String username, String password) {
// 用户名或密码为空 错误
// 用户名或密码为空 错误
if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
AsyncManager.me().execute(
AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
throw new UserNotExistsException();
}
// 密码如果不在指定范围内 错误
// 密码如果不在指定范围内 错误
if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH) {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL,
MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
}
// 用户名不在指定范围内 错误
// 用户名不在指定范围内 错误
if (username.length() < UserConstants.USERNAME_MIN_LENGTH
|| username.length() > UserConstants.USERNAME_MAX_LENGTH) {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL,
MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
}
// IP黑名单校验
// IP黑名单校验
String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) {
AsyncManager.me().execute(
@@ -244,9 +242,9 @@ public class SysLoginService {
}
/**
* 记录登录信息
* 记录登录信息
*
* @param userId 用户ID
* @param userId 用户ID
*/
public void recordLoginInfo(Long userId) {
SysUser sysUser = new SysUser();
@@ -257,32 +255,32 @@ public class SysLoginService {
}
/**
* 校验租户
* 校验租户
*
* @param username 用户名
* @param tenantId 租户ID
* @param username 用户名
* @param tenantId 租户ID
*/
private void validateTenant(String username, Integer tenantId) {
// 租户非空校验
// 租户非空校验
if (tenantId == null) {
throw new ServiceException("请指定所属医院");
throw new ServiceException("请指定所属医院");
}
// 查询用户绑定的租户列表
// 查询用户绑定的租户列表
R<List<SysTenant>> bindTenantList = sysTenantService.getUserBindTenantList(username);
// 租户合法性校验
// 租户合法性校验
Optional<SysTenant> currentTenantOptional =
bindTenantList.getData().stream().filter(e -> tenantId.equals(e.getId())).findFirst();
if (currentTenantOptional.isEmpty()) {
throw new ServiceException("所属医院无权限");
throw new ServiceException("所属医院无权限");
}
// 租户状态校验
// 租户状态校验
SysTenant currentTenant = currentTenantOptional.get();
if (TenantStatus.DISABLE.getCode().equals(currentTenant.getStatus())) {
throw new ServiceException("所属医院停用");
throw new ServiceException("所属医院停用");
}
// 租户删除状态校验
// 租户删除状态校验
if (DelFlag.YES.getCode().equals(currentTenant.getDeleteFlag())) {
throw new ServiceException("所属医院不存在");
throw new ServiceException("所属医院不存在");
}
}

View File

@@ -101,7 +101,7 @@ public class HealthcareServiceController {
boolean res = iChargeItemDefinitionService.addChargeItemDefinitionByHealthcareService(healthcareServiceAfterAdd,
chargeItemDefinition);
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
// 医保开关打开并且,页面传了医保编码
String ybNo = healthcareServiceFormData.getYbNo();
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(ybNo)) {
@@ -186,7 +186,7 @@ public class HealthcareServiceController {
HealthcareService healthcareService = new HealthcareService();
BeanUtils.copyProperties(healthcareServiceFormData, healthcareService);
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
// 医保开关打开并且,页面传了医保编码
String ybNo = healthcareServiceFormData.getYbNo();
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(ybNo)) {

View File

@@ -581,7 +581,7 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
}
}
String fixmedinsCode =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_CODE).asText();
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
if (!HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
if (!devReqIdList.isEmpty()) {
List<DeviceRequest> deviceRequestList = deviceRequestService

View File

@@ -317,9 +317,9 @@ public class OutpatientRegistrationAppServiceImpl implements IOutpatientRegistra
CancelPaymentDto cancelPaymentDto = new CancelPaymentDto();
BeanUtils.copyProperties(cancelRegPaymentDto, cancelPaymentDto);
//LoginUser loginUser = SecurityUtils.getLoginUser();
//String string1 = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
//String string1 = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
// 开通医保的处理
if ("1".equals(SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText())
if ("1".equals(SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH))
&& account != null && !CommonConstants.BusinessName.DEFAULT_CONTRACT_NO.equals(account.getContractNo())) {
CancelRegPaymentModel model = new CancelRegPaymentModel();
BeanUtils.copyProperties(cancelRegPaymentDto, model);

View File

@@ -211,7 +211,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
if (deviceDefinitionService.updateById(deviceDefinition)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(deviceDefinition.getYbNo())) {
R<?> r
= ybService.directoryCheck(CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition.getId());
@@ -336,7 +336,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
deviceDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
if (deviceDefinitionService.addDevice(deviceDefinition)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(deviceDefinition.getYbNo())) {
R<?> r
= ybService.directoryCheck(CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition.getId());

View File

@@ -378,7 +378,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
// 更新诊疗信息
if (activityDefinitionService.updateById(activityDefinition)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(activityDefinition.getYbNo())) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION,
activityDefinition.getId());
@@ -547,7 +547,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
if (activityDefinitionService.addDiagnosisTreatment(activityDefinition)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(activityDefinition.getYbNo())) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION,
activityDefinition.getId());

View File

@@ -278,7 +278,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
if (updateMedicationDefinition) {
// 调用医保目录对照接口
String ybSwitch
= SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
= SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(medicationDefinition.getYbNo())) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.MED_MEDICATION_DEFINITION,
medicationDefinition.getId());
@@ -410,7 +410,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
// 新增主表外来药品目录
if (medicationDefinitionService.addMedication(medicationDetail)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(medicationDetail.getYbNo())) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.MED_MEDICATION_DEFINITION,
medicationDetail.getId());

View File

@@ -187,7 +187,7 @@ public class DepartmentReceiptApprovalServiceImpl implements IDepartmentReceiptA
SupplyType.PURCHASE_STOCKIN.getValue());
// 调用医保商品采购接口 todo 科室材料相关医保接口未对应
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.PURCHASE_IN, false, true, false, now);
@@ -274,7 +274,7 @@ public class DepartmentReceiptApprovalServiceImpl implements IDepartmentReceiptA
SupplyType.PURCHASE_RETURN.getValue());
// 调用医保采购退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.RETURN_OUT, false, false, true, now);
@@ -425,7 +425,7 @@ public class DepartmentReceiptApprovalServiceImpl implements IDepartmentReceiptA
}
// 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = this.ybInventoryIntegrated(supplyItemDetailList,
YbInvChgType.DESTRUCTION, false, false, false, now);
@@ -522,7 +522,7 @@ public class DepartmentReceiptApprovalServiceImpl implements IDepartmentReceiptA
}
String ybSwitch =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
// 如果首次盘点信息不为空
if (!firstSupplyItemDetailList.isEmpty()) {

View File

@@ -366,7 +366,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
}
// 调用医保商品采购接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList
= this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.PURCHASE_IN, now, false);
@@ -454,7 +454,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 处理盘点追溯码
traceNoAppService.updateTraceNoList(supplyItemDetailList, SupplyType.PRODUCT_STOCKTAKING.getValue());
// 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedGainList = null;
List<String> uploadFailedLossList = null;
@@ -677,7 +677,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
traceNoAppService.addTraceNoManage(supplyItemDetailList, TraceNoStatus.OUT.getValue(),
SupplyType.PRODUCT_RETURN.getValue());
// 调用医保采购退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList
= this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.RETURN_OUT, now, false);
@@ -769,7 +769,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
SupplyType.LOSS_REPORT_FORM.getValue());
// 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList
= this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.DESTRUCTION, now, false);
@@ -866,7 +866,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 返回信息
String returnMsg = null;
// 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList
= this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.OTHER_OUT, now, false);
@@ -962,7 +962,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 返回信息
String returnMsg = null;
// 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList
= this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.OTHER_IN, now, false);

View File

@@ -201,7 +201,7 @@ public class MaterialReceiptApprovalServiceImpl implements IMaterialReceiptAppro
SupplyType.MATERIAL_STOCKIN.getValue());
// 调用医保商品采购接口 todo 相关医保接口未对应
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.PURCHASE_IN, false, true, false, now);
@@ -304,7 +304,7 @@ public class MaterialReceiptApprovalServiceImpl implements IMaterialReceiptAppro
SupplyType.MATERIAL_RETURN.getValue());
// 调用医保采购退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.RETURN_OUT, false, false, true, now);
@@ -532,7 +532,7 @@ public class MaterialReceiptApprovalServiceImpl implements IMaterialReceiptAppro
}
// 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = this.ybInventoryIntegrated(supplyItemDetailList,
YbInvChgType.DESTRUCTION, false, false, false, now);
@@ -627,7 +627,7 @@ public class MaterialReceiptApprovalServiceImpl implements IMaterialReceiptAppro
}
String ybSwitch =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
// 如果首次盘点信息不为空
if (!firstSupplyItemDetailList.isEmpty()) {

View File

@@ -142,8 +142,8 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
message.put("createTime", "20251101143028");
message.put("billQRCode", "QR_DATA_SCARLET");
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
String baseUrl = optionJson.path(CommonConstants.Option.URL).asText();
var loginUser = SecurityUtils.getLoginUser();
String baseUrl = loginUser.getOptionJsonValue(CommonConstants.Option.URL);
message.put("pictureUrl", baseUrl + "/invoice/view?busNo=scarlet");
message.put("pictureNetUrl", baseUrl + "/invoice/view?busNo=scarlet");
@@ -155,8 +155,8 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
private JsonNode createInternalSuccessResponse(JsonNode bill, String prefix) {
String busNo = bill.path("busNo").asText();
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
String baseUrl = optionJson.path(CommonConstants.Option.URL).asText();
var loginUser = SecurityUtils.getLoginUser();
String baseUrl = loginUser.getOptionJsonValue(CommonConstants.Option.URL);
ObjectNode message = new com.fasterxml.jackson.databind.ObjectMapper().createObjectNode();
message.put("billBatchCode", prefix + "BC" + System.currentTimeMillis());
@@ -495,7 +495,7 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
logger.info("挂号请求参数:" + JsonUtils.toJson(bill));
logger.info("———————————————————————————————————————————————————————————————————————————————————————");
JsonNode resobj;
if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().path("forwardSwitch").asText())) {
if ("0".equals(SecurityUtils.getLoginUser().getOptionJsonValue("forwardSwitch"))) {
resobj = PreInvoicePostForward(bill, "api/medical/invEBillRegistration");
} else {
resobj = PreInvoicePost(bill, "api/medical/invEBillRegistration");
@@ -805,7 +805,7 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
logger.info("************************************** 分 割 线 ***************************************");
logger.info("门诊信息入参:" + JsonUtils.toJson(bill));
logger.info("———————————————————————————————————————————————————————————————————————————————————————");
if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().path("forwardSwitch").asText())) {
if ("0".equals(SecurityUtils.getLoginUser().getOptionJsonValue("forwardSwitch"))) {
resobj = PreInvoicePostForward(bill, "api/medical/invoiceEBillOutpatient");
} else {
resobj = PreInvoicePost(bill, "api/medical/invoiceEBillOutpatient");
@@ -1118,7 +1118,7 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
logger.info("************************************** 分 割 线 ***************************************");
logger.info("住院信息入参:" + JsonUtils.toJson(bill));
logger.info("———————————————————————————————————————————————————————————————————————————————————————");
if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().path("forwardSwitch").asText())) {
if ("0".equals(SecurityUtils.getLoginUser().getOptionJsonValue("forwardSwitch"))) {
resobj = PreInvoicePostForward(bill, "api/medical/invEBillHospitalized");
} else {
resobj = PreInvoicePost(bill, "api/medical/invEBillHospitalized");
@@ -1205,7 +1205,7 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
LoginUser loginUser = SecurityUtils.getLoginUser();
Practitioner user = practitionerService.getPractitionerByUserId(loginUser.getUserId());
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
ObjectNode bill = new com.fasterxml.jackson.databind.ObjectMapper().createObjectNode();
@@ -1248,7 +1248,7 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
// ------就诊信息------
// medicalInstitution 医疗机构类型 String 30 是 按照《医疗机构管理条例实施细则》和《卫生部关于修订<医疗机构管理条例实施细则>第三条有关内容的通知》确定的医疗卫生机构类别
String medicalInstitution;
switch (optionJson.path("hospital_lv").asText()) {
switch (loginUser.getOptionJsonValue("hospital_lv")) {
case "01":
medicalInstitution = "三级特等";
break;
@@ -1285,7 +1285,7 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
}
bill.put("medicalInstitution", medicalInstitution);
// medCareInstitution 医保机构编码 String 60 否 医保机构的唯一编码
bill.put("medCareInstitution", optionJson.path(CommonConstants.Option.HOSPITAL_CODE).asText());
bill.put("medCareInstitution", loginUser.getOptionJsonValue(CommonConstants.Option.HOSPITAL_CODE));
// 410 长期照护保险 //310 职工基本医疗保险
// 320 公务员医疗补助 //330 大额医疗费用补助
@@ -1572,7 +1572,7 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
logger.info("************************************** 分 割 线 ***************************************");
logger.info("冲红信息入参:" + JsonUtils.toJson(bill));
logger.info("———————————————————————————————————————————————————————————————————————————————————————");
if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().path("forwardSwitch").asText())) {
if ("0".equals(SecurityUtils.getLoginUser().getOptionJsonValue("forwardSwitch"))) {
resobj = PreInvoicePostForward(bill, "api/medical/writeOffEBill");
} else {
resobj = PreInvoicePost(bill, "api/medical/writeOffEBill");

View File

@@ -449,10 +449,10 @@ public class IChargeBillServiceImpl implements IChargeBillService {
map.put("REGISTRATION_FEE", sum13);// 挂号费
map.put("OTHER_FEE", sum14);// 其他费用
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
String fixmedinsName = optionJson.path(CommonConstants.Option.FIXMEDINS_NAME).asText();
String fixmedinsCode = optionJson.path(CommonConstants.Option.FIXMEDINS_CODE).asText();
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
var loginUser = SecurityUtils.getLoginUser();
String fixmedinsName = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME);
String fixmedinsCode = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
map.put("fixmedinsName", fixmedinsName);// 医院名称
map.put("fixmedinsCode", fixmedinsCode);// 医院编号
@@ -819,10 +819,10 @@ public class IChargeBillServiceImpl implements IChargeBillService {
.add(sum11).add(sum12).add(sum13).add(sum14);
map.put("SUM", sum15);// 合计费用
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
String fixmedinsName = optionJson.path(CommonConstants.Option.FIXMEDINS_NAME).asText();
String fixmedinsCode = optionJson.path(CommonConstants.Option.FIXMEDINS_CODE).asText();
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
var loginUser = SecurityUtils.getLoginUser();
String fixmedinsName = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME);
String fixmedinsCode = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
map.put("fixmedinsName", fixmedinsName);
map.put("fixmedinsCode", fixmedinsCode);
@@ -1383,10 +1383,10 @@ public class IChargeBillServiceImpl implements IChargeBillService {
.add(sum11).add(sum12).add(sum13).add(sum14);
map.put("SUM", sum15);// 合计费用
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
String fixmedinsName = optionJson.path(CommonConstants.Option.FIXMEDINS_NAME).asText();
String fixmedinsCode = optionJson.path(CommonConstants.Option.FIXMEDINS_CODE).asText();
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
var loginUser = SecurityUtils.getLoginUser();
String fixmedinsName = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME);
String fixmedinsCode = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
map.put("fixmedinsName", fixmedinsName);
map.put("fixmedinsCode", fixmedinsCode);
@@ -2183,9 +2183,9 @@ public class IChargeBillServiceImpl implements IChargeBillService {
private Map getMap(Map<String, Object> map) {
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
String fixmedinsName = optionJson.path(CommonConstants.Option.FIXMEDINS_NAME).asText();
String fixmedinsCode = optionJson.path(CommonConstants.Option.FIXMEDINS_CODE).asText();
var loginUser = SecurityUtils.getLoginUser();
String fixmedinsName = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME);
String fixmedinsCode = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
map.put("fixmedinsName", fixmedinsName);
map.put("fixmedinsCode", fixmedinsCode);
@@ -2484,9 +2484,9 @@ public class IChargeBillServiceImpl implements IChargeBillService {
}
}
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
String fixmedinsName = optionJson.path(CommonConstants.Option.FIXMEDINS_NAME).asText();
String fixmedinsCode = optionJson.path(CommonConstants.Option.FIXMEDINS_CODE).asText();
var loginUser = SecurityUtils.getLoginUser();
String fixmedinsName = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME);
String fixmedinsCode = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
map.put("fixmedinsName", fixmedinsName);// 医院名称
map.put("fixmedinsCode", fixmedinsCode);// 医院编号
@@ -2710,7 +2710,7 @@ public class IChargeBillServiceImpl implements IChargeBillService {
Catalogue1312QueryParam catalogue1312QueryParam = new Catalogue1312QueryParam();
catalogue1312QueryParam.setHilistCode(activityDefinition.getYbNo());
catalogue1312QueryParam.setInsuplcAdmdvs(
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.INSUPLC_ADMDVS).asText());
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.INSUPLC_ADMDVS));
// 直接解析(默认 ISO 格式)
LocalDate localDate = LocalDate.parse("2025-01-01");
// 转换为 Date

View File

@@ -357,7 +357,7 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (StringUtils.isEmpty(chargeItem.getChildrenJson())
|| CommonConstants.BusinessName.DEFAULT_CONTRACT_NO.equals(account.getContractNo())
|| "0".equals(
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText())) {
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH))) {
PaymentedItemModel piModel = ConverterToPaymenItemModel(diagList, chargeItem);
prePaymentedItems.add(piModel);
} else {
@@ -1863,8 +1863,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
}
Clinic2206OrderOutput clinic2206OrderResult;
String string = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
if ("1".equals(SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText())
String string = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
if ("1".equals(SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH))
&& !(CommonConstants.BusinessName.DEFAULT_CONTRACT_NO
.equals(outpatientRegistrationAddParam.getAccountFormData().getContractNo())
|| CommonConstants.BusinessName.DEFAULT_STUDENT_CONTRACT_NO
@@ -1959,7 +1959,7 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
throw new ServiceException("请选择合适的费用性质");
}
com.healthlink.his.financial.model.PaymentResult paymentResult;
if ("1".equals(SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText())
if ("1".equals(SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH))
&& !CommonConstants.BusinessName.DEFAULT_CONTRACT_NO
.equals(outpatientRegistrationAddParam.getAccountFormData().getContractNo())
&& contract.getYbFlag() == 1) {

View File

@@ -189,7 +189,7 @@ public class PharmacyDispensaryReceiptApprovalServiceImpl implements IPharmacyDi
SupplyType.PURCHASE_STOCKIN.getValue());
// 调用医保商品采购接口 todo 药房相关医保接口未对应
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.PURCHASE_IN, false, true, false, now);
@@ -276,7 +276,7 @@ public class PharmacyDispensaryReceiptApprovalServiceImpl implements IPharmacyDi
SupplyType.PURCHASE_RETURN.getValue());
// 调用医保采购退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.RETURN_OUT, false, false, true, now);
@@ -427,7 +427,7 @@ public class PharmacyDispensaryReceiptApprovalServiceImpl implements IPharmacyDi
}
// 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = this.ybInventoryIntegrated(supplyItemDetailList,
YbInvChgType.DESTRUCTION, false, false, false, now);
@@ -524,7 +524,7 @@ public class PharmacyDispensaryReceiptApprovalServiceImpl implements IPharmacyDi
}
String ybSwitch =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
// 如果首次盘点信息不为空
if (!firstSupplyItemDetailList.isEmpty()) {

View File

@@ -213,7 +213,7 @@ public class PharmacyWarehouseReceiptApprovalServiceImpl implements IPharmacyWar
SupplyType.CABINET_STOCKIN.getValue());
// 调用医保商品采购接口 todo 药库相关医保接口未对应
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.PURCHASE_IN, false, true, false, now);
@@ -316,7 +316,7 @@ public class PharmacyWarehouseReceiptApprovalServiceImpl implements IPharmacyWar
SupplyType.CABINET_RETURN.getValue());
// 调用医保采购退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.RETURN_OUT, false, false, true, now);
@@ -545,7 +545,7 @@ public class PharmacyWarehouseReceiptApprovalServiceImpl implements IPharmacyWar
}
// 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = this.ybInventoryIntegrated(supplyItemDetailList,
YbInvChgType.DESTRUCTION, false, false, false, now);
@@ -640,7 +640,7 @@ public class PharmacyWarehouseReceiptApprovalServiceImpl implements IPharmacyWar
}
String ybSwitch =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
// 如果首次盘点信息不为空
if (!firstSupplyItemDetailList.isEmpty()) {

View File

@@ -450,7 +450,7 @@ public class InHospitalReturnMedicineAppServiceImpl implements IInHospitalReturn
String returnMsg = null;
List<String> uploadFailedNoList;
// 调用医保商品销售退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<DeviceDefinition> deviceDefinitions = new ArrayList<>();
List<MedicationDefinition> medicationDefinitions = new ArrayList<>();
@@ -647,7 +647,7 @@ public class InHospitalReturnMedicineAppServiceImpl implements IInHospitalReturn
.setDrugtracinfo(medicalTraceNo).setCertno(dispenseInventoryDto.getIdCard());
// 查看所属医院
String fixmedinsCode =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_CODE).asText();
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
medical3506Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName);
} else {
@@ -677,7 +677,7 @@ public class InHospitalReturnMedicineAppServiceImpl implements IInHospitalReturn
MedicalInventory3511Param medicalInventory3511Param = new MedicalInventory3511Param();
String fixmedinsCode =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_CODE).asText();
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
// TODO
medicalInventory3511Param.setFixmedinsCode(fixmedinsCode).setMedinsListCodg(dispenseInventoryDto.getYbNo())
.setFixmedinsBchno(dispenseInventoryDto.getLotNumber()).setBegndate(dispenseInventoryDto.getDispenseTime())

View File

@@ -347,7 +347,7 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
// String returnMsg = null;
// List<String> uploadFailedNoList;
// // 调用医保商品销售接口
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
// // 医保开关
// if (Whether.YES.getCode().equals(ybSwitch)) {
// // 设置进销存参数
@@ -388,7 +388,7 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
public R<?> dispenseMedicalConsumables(List<Long> chargeItemIds) {
// 查看所属医院
String fixmedinsCode
= SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_CODE).asText();
= SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
if (!HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
return R.ok();
}
@@ -498,7 +498,7 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
// // 返回信息
// String returnMsg = null;
// // 调用医保商品销售接口
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
// String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
// List<String> uploadFailedNoList = new ArrayList<>();
// // 医保开关
// if (Whether.YES.getCode().equals(ybSwitch)) {

View File

@@ -443,7 +443,7 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
String returnMsg = null;
List<String> uploadFailedNoList;
// 调用医保商品销售退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<DeviceDefinition> deviceDefinitions = new ArrayList<>();
List<MedicationDefinition> medicationDefinitions = new ArrayList<>();
@@ -641,7 +641,7 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
.setDrugtracinfo(medicalTraceNo).setCertno(dispenseInventoryDto.getIdCard());
// 查看所属医院
String fixmedinsCode
= SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_CODE).asText();
= SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
medical3506Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName);
} else {
@@ -671,7 +671,7 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
MedicalInventory3511Param medicalInventory3511Param = new MedicalInventory3511Param();
String fixmedinsCode
= SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_CODE).asText();
= SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
// TODO
medicalInventory3511Param.setFixmedinsCode(fixmedinsCode).setMedinsListCodg(dispenseInventoryDto.getYbNo())
.setFixmedinsBchno(dispenseInventoryDto.getLotNumber()).setBegndate(dispenseInventoryDto.getDispenseTime())

View File

@@ -269,7 +269,7 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
String returnMsg = null;
List<String> uploadFailedNoList;
// 调用医保商品销售接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
// 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
// 设置进销存参数

View File

@@ -495,7 +495,7 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
String returnMsg = null;
List<String> uploadFailedNoList;
// 调用医保商品销售接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText(); // 医保开关
String ybSwitch = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
// 设置进销存参数
List<MedicationDefinition> medicationDefinitions = medicationDefinitionService.listByIds(
@@ -707,7 +707,7 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
}
// 查看所属医院
String fixmedinsCode
= SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_CODE).asText();
= SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
medical3505Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName);
} else {

View File

@@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.JsonNode;
import com.core.common.core.domain.R;
import com.core.common.core.domain.model.LoginUser;
import com.core.common.utils.AgeCalculatorUtil;
import com.core.common.utils.SecurityUtils;
import com.healthlink.his.administration.service.IEncounterService;
@@ -82,11 +83,11 @@ public class InpatientMedicalRecordHomePageCollectionAppServiceImpl implements I
df10_2.setMaximumFractionDigits(2);
// // 获取当前登陆用户信息
// LoginUser loginUser = SecurityUtils.getLoginUser();
LoginUser loginUser = SecurityUtils.getLoginUser();
// Practitioner user = practitionerService.getPractitionerByUserId(loginUser.getUserId());
// 获取系统信息
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
// 住院病案csvåæ•°
InpatientMedicalRecordHomePageCollectionDto medicalRecordHomePage =
@@ -98,9 +99,9 @@ public class InpatientMedicalRecordHomePageCollectionAppServiceImpl implements I
for (InpatientMedicalRecordHomePageMakeDto item : medicalRecordHomePageMakeList) {
// 组织机构代码 字符 30 必填
medicalRecordHomePage.setA01(optionJson.path(CommonConstants.Option.FIXMEDINS_CODE).asText());
medicalRecordHomePage.setA01(loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE));
// 医疗机构名称 A02 字符 80 必填
medicalRecordHomePage.setA02(optionJson.path(CommonConstants.Option.FIXMEDINS_NAME).asText());
medicalRecordHomePage.setA02(loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME));
// 病案号 A48 字符 50 必填
medicalRecordHomePage.setA48(item.getA48());
// 住院次数 A49 数字 4 必填

View File

@@ -192,11 +192,11 @@ public class ReportAppServiceImpl implements IReportAppService {
*/
private String[] getOrgInfo() {
// 获取系统信息
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
var loginUser = SecurityUtils.getLoginUser();
// 医疗机构代码
String fixmedinsCode = optionJson.path(CommonConstants.Option.FIXMEDINS_CODE).asText();
String fixmedinsCode = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
// 组织机构名称
String fixmedinsName = optionJson.path(CommonConstants.Option.FIXMEDINS_NAME).asText();
String fixmedinsName = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME);
return new String[]{fixmedinsCode, fixmedinsName};
}

View File

@@ -293,7 +293,7 @@ public class YbController {
.setFundPaySumamt(financialHand3203WebParam.getFundAppySum().doubleValue())
.setAcctPay(financialHand3203WebParam.getAcctPay().doubleValue())
.setFixmedinsSetlCnt(Integer.parseInt(financialHand3203WebParam.getSetlCnt()))
.setInsuplcAdmdvs(SecurityUtils.getLoginUser().getOptionJson().path("admvs").asText());
.setInsuplcAdmdvs(SecurityUtils.getLoginUser().getOptionJsonValue("admvs"));
Result result = ybHttpUtils.reconcileGeneralLedger(financial3201Param);
if (result.getCode().equals(CommonConstant.SC_OK_200)) {
@@ -336,7 +336,7 @@ public class YbController {
HttpServletResponse response) throws IOException {
List<Financial3202FileParam> financial3202FileParams
= ybDao.paymentCompareYbSettle(financial3202WebParam.getSettlementIdList());
// String filePath = SecurityUtils.getLoginUser().getOptionJson().path("filePath").asText()+new
// String filePath = SecurityUtils.getLoginUser().getOptionJsonValue("filePath")+new
// Date().getTime()+".txt";
// String filePath = "C:\\Users\\bjbUser\\Desktop\\"+new Date().getTime()+".txt";
// try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
@@ -407,7 +407,7 @@ public class YbController {
public R<?> reconcileGeneral(List<String> settlementIdList, String filePath, String fileQuryNo, String setlOptins,
String clrType) {
// todo:这里需要考虑3302接口的参数是后台合计还是由前台传入因为这个参数还要和txt文件对应既需要txt中的数据还需要db表中的一些数据
// String filePath = SecurityUtils.getLoginUser().getOptionJson().path("filePath").asText()+new
// String filePath = SecurityUtils.getLoginUser().getOptionJsonValue("filePath")+new
// Date().getTime()+".txt";
List<Financial3202FileParam> financial3202FileParamList = new ArrayList<>();
Resource resource = resourceLoader.getResource(filePath); // 或使用 "file:" 读取绝对路径
@@ -783,7 +783,7 @@ public class YbController {
Catalogue1312QueryParam catalogue1312QueryParam = new Catalogue1312QueryParam();
catalogue1312QueryParam.setHilistCode(hilistCode);
catalogue1312QueryParam.setInsuplcAdmdvs(
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.INSUPLC_ADMDVS).asText());
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.INSUPLC_ADMDVS));
// 直接解析(默认 ISO 格式)
LocalDate localDate = LocalDate.parse(dateStr);
// 转换为 Date

View File

@@ -54,7 +54,7 @@ public class YbEleHttpServiceImpl implements IYbEleHttpService {
ElepVeriPrescriptionOutput pcpResult = new ElepVeriPrescriptionOutput();
BaseInfo baseInfo = ybParamBuilderUtil.getBaseInfo(medType, dutyDoctorName);
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("eleUrl").asText() + "/preCheckPrescription",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("eleUrl") + "/preCheckPrescription",
pcp, baseInfo);
// 参数处理
ObjectMapper mapper = new ObjectMapper();
@@ -83,7 +83,7 @@ public class YbEleHttpServiceImpl implements IYbEleHttpService {
ElepSignatureOutput esResult = new ElepSignatureOutput();
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("eleUrl").asText() + "/signature", eleSign,
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("eleUrl") + "/signature", eleSign,
ybParamBuilderUtil.getBaseInfo("", ""));
// 参数处理
ObjectMapper mapper = new ObjectMapper();
@@ -112,7 +112,7 @@ public class YbEleHttpServiceImpl implements IYbEleHttpService {
ElepUploadOutput euResult = new ElepUploadOutput();
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("eleUrl").asText() + "/upload",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("eleUrl") + "/upload",
eleUploadInput, ybParamBuilderUtil.getBaseInfo("", ""));
// 参数处理
ObjectMapper mapper = new ObjectMapper();
@@ -141,7 +141,7 @@ public class YbEleHttpServiceImpl implements IYbEleHttpService {
ElepRevokeOutput ereResult = new ElepRevokeOutput();
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("eleUrl").asText() + "/revoke",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("eleUrl") + "/revoke",
eleRevokeInput, ybParamBuilderUtil.getBaseInfo("", ""));
// 参数处理
ObjectMapper mapper = new ObjectMapper();
@@ -173,7 +173,7 @@ public class YbEleHttpServiceImpl implements IYbEleHttpService {
// baseParam.setBaseInfo(ybParamBuilderUtil.getBaseInfo()).setData(o);
QueryPrescription emrResult = new QueryPrescription();
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("eleUrl").asText() + "/querPrescription",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("eleUrl") + "/querPrescription",
eleQueryPreInput, ybParamBuilderUtil.getBaseInfo("", ""));
// 参数处理
ObjectMapper mapper = new ObjectMapper();
@@ -201,7 +201,7 @@ public class YbEleHttpServiceImpl implements IYbEleHttpService {
MedicationResultInquiry medResult = new MedicationResultInquiry();
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("eleUrl").asText() + "/medresult",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("eleUrl") + "/medresult",
eleMedInput, ybParamBuilderUtil.getBaseInfo("", ""));
// 参数处理
ObjectMapper mapper = new ObjectMapper();

View File

@@ -331,9 +331,9 @@ public class YbEleParamBuilderUtil {
}
String fixmedinsCode =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_CODE).asText();
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
String fixmedinsName =
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.FIXMEDINS_NAME).asText();
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME);
// 1-输入-就诊信息
ElepVeriVisitInfo eleInfo = new ElepVeriVisitInfo();
@@ -424,10 +424,10 @@ public class YbEleParamBuilderUtil {
SimpleDateFormat targetFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String targetDateStr = targetFormat.format(checkDate);
var optionJson = SecurityUtils.getLoginUser().getOptionJson();
String outputPath = optionJson.path(CommonConstants.Option.OUTPUT_PATH).asText();
String fixmedinsCode = optionJson.path(CommonConstants.Option.FIXMEDINS_CODE).asText();
String fixmedinsName = optionJson.path(CommonConstants.Option.FIXMEDINS_NAME).asText();
var loginUser = SecurityUtils.getLoginUser();
String outputPath = loginUser.getOptionJsonValue(CommonConstants.Option.OUTPUT_PATH);
String fixmedinsCode = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_CODE);
String fixmedinsName = loginUser.getOptionJsonValue(CommonConstants.Option.FIXMEDINS_NAME);
// 审方药师信息
Practitioner practitioner = practitionerService.getOne(new LambdaQueryWrapper<Practitioner>()

View File

@@ -153,7 +153,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
List<PaymentedItemModel> paymentedItemList) {
PrePaymentResult prePaymentResult = null;
String ybSwitchFlag = SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText();
String ybSwitchFlag = SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH);
if (ybSwitchFlag.equals("0")) {
contractBusNo = CommonConstants.BusinessName.DEFAULT_CONTRACT_NO;
}
@@ -186,7 +186,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
Clinic2206OrderOutput clinic2206OrderOutput = null;
ClinicReg2201Output reg2201Output = null;
if (!medTypeKV.getKey().equals(YbMedType.GENERAL_OUTPATIENT.getValue()) && "1".equals(
SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText())) {
SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH))) {
// 不是普通门诊就诊类型,补充挂号信息
reg2201Output = ybManager.createRegWithMedType(contract, ybMdtrtCertType, busiCardInfo,
medTypeKV.getValue().get(0).getEncounterId(),
@@ -605,7 +605,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
Clinic2206OrderOutput clinic2206OrderOutput = null;
ClinicReg2201Output reg2201Output = null;
if (!medTypeKV.getKey().equals(YbMedType.GENERAL_OUTPATIENT.getValue()) && "1"
.equals(SecurityUtils.getLoginUser().getOptionJson().path(CommonConstants.Option.YB_SWITCH).asText())) {
.equals(SecurityUtils.getLoginUser().getOptionJsonValue(CommonConstants.Option.YB_SWITCH))) {
// 不是普通门诊就诊类型,补充挂号信息
reg2201Output = ybManager.createRegWithMedType(contract, ybMdtrtCertType, busiCardInfo,
medTypeKV.getValue().get(0).getEncounterId(),

View File

@@ -77,7 +77,7 @@ public class YbHttpUtils {
Info1101Output perinfo = null;
// 发送请求
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/getPatinfo", readcard, null);
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/getPatinfo", readcard, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -108,7 +108,7 @@ public class YbHttpUtils {
Result result = null;
ClinicReg2201Output clinicReg2201Output = new ClinicReg2201Output();
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/reg", reg, contract);
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/reg", reg, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -138,7 +138,7 @@ public class YbHttpUtils {
ClinicReg2201Output clinicReg2201Output = new ClinicReg2201Output();
// 发送请求
String s
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/cancelReg", reg, contract);
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/cancelReg", reg, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -167,7 +167,7 @@ public class YbHttpUtils {
// 声名参数
Result result = null;
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/upload2204-record",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/upload2204-record",
clinic2204OrderParam, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -201,7 +201,7 @@ public class YbHttpUtils {
// 声名参数
Result result = null;
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/preSetl",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/preSetl",
clinic2206OrderParam, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -234,7 +234,7 @@ public class YbHttpUtils {
// 声名参数
Result result = null;
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/setl", clinicOrder2207,
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/setl", clinicOrder2207,
contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -264,7 +264,7 @@ public class YbHttpUtils {
public Sign9001Result sign(Sign signParam, Contract contract) {
Sign9001Result sign = null;
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/signIn", signParam, contract);
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/signIn", signParam, contract);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -296,7 +296,7 @@ public class YbHttpUtils {
// 声名参数
Result result = null;
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/unPreSettle",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/unPreSettle",
clinic2205OrderParam, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -326,7 +326,7 @@ public class YbHttpUtils {
// 声名参数
Result result = null;
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/cancelSetl",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/cancelSetl",
clinicOrder2208, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -357,7 +357,7 @@ public class YbHttpUtils {
Clinic2208UnSetlInfoResult clinicOrder2206Result = new Clinic2208UnSetlInfoResult();
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/directoryCheck",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/directoryCheck",
medicalDirectory3301ListParam, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -377,7 +377,7 @@ public class YbHttpUtils {
public Result directoryUnCheck(MedicalDirectory3302Param medicalDirectory3302Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/directoryUnCheck",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/directoryUnCheck",
medicalDirectory3302Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -403,7 +403,7 @@ public class YbHttpUtils {
throw new ServiceException("未查询到合同信息");
}
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/reconcile",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/reconcile",
financial3201Param, contract);
// 赋值上述回填的两个参数医保不要为了避免麻烦在发送http后进行回填
@@ -429,7 +429,7 @@ public class YbHttpUtils {
public FinancialSettlement3202Result reconcileGeneralLedgerDetail(FinancialSettlement3202Param financial3202Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/reconcile-detail",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/reconcile-detail",
financial3202Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -450,7 +450,7 @@ public class YbHttpUtils {
public List<FinancialSettlement3209AResult>
threePartSearch(FinancialSettlement3209AParam financialSettlement3209AParam) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/three-part-search-err",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/three-part-search-err",
financialSettlement3209AParam, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -470,7 +470,7 @@ public class YbHttpUtils {
public String applyFinancialClearing(Financial3203AParam financial3203AParam) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/apply-clearing",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/apply-clearing",
financial3203AParam, iContractService.getContract(financial3203AParam.getClrOptins()));
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -481,7 +481,7 @@ public class YbHttpUtils {
public Result cancelFinancialClearing(Financial3204Param financial3204Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/cancel-clearing",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/cancel-clearing",
financial3204Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -499,7 +499,7 @@ public class YbHttpUtils {
public Clearing3205AResult getFinancialClearingStatus(Clearing3205AParma clearing3205AParma) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/get-clearing-status",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/get-clearing-status",
clearing3205AParma, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -517,7 +517,7 @@ public class YbHttpUtils {
public Result uploadInventoryCount(MedicalInventory3501Param medicalInventory3501Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/upload-inventory-count",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/upload-inventory-count",
medicalInventory3501Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -535,7 +535,7 @@ public class YbHttpUtils {
public Result updateInventoryCount(MedicalInventory3502Param medicalInventory3502Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/update-inventory",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/update-inventory",
medicalInventory3502Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -553,7 +553,7 @@ public class YbHttpUtils {
public Result procurement(Medical3503Param medical3503Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/procurement",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/procurement",
medical3503Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -571,7 +571,7 @@ public class YbHttpUtils {
public Result cancelProcurement(MedicalPurchase3504Param medicalPurchase3504Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/procurement-cancel",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/procurement-cancel",
medicalPurchase3504Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -589,7 +589,7 @@ public class YbHttpUtils {
public Result merchandise(Medical3505Param medical3505Param, Contract contract) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/merchandise",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/merchandise",
medical3505Param, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -607,7 +607,7 @@ public class YbHttpUtils {
public Result cancelMerchandise(Medical3506Param medical3506Param, Contract contract) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/cancel-merchandise",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/cancel-merchandise",
medical3506Param, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -625,7 +625,7 @@ public class YbHttpUtils {
public Result deleteGoodsInfo(Medical3507Param medical3507Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/del-goods",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/del-goods",
medical3507Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -643,7 +643,7 @@ public class YbHttpUtils {
public MedicalInventory3511Output querySalesInfo(MedicalInventory3511Param medicalInventory3511Param) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/query-3511-info",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/query-3511-info",
medicalInventory3511Param, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -672,7 +672,7 @@ public class YbHttpUtils {
public Result getClrOptins(Clearing3206AParam clearing3206AParam) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/getclroptins",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/getclroptins",
clearing3206AParam, null);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -690,7 +690,7 @@ public class YbHttpUtils {
public Result upload2203Record(Clinic2203MedicalParam medical2203Param, Contract contract) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/upload2203-record",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/upload2203-record",
medical2203Param, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -708,7 +708,7 @@ public class YbHttpUtils {
public Result query3512(MedicalInventory3512Param inventory3512Param, Contract contract) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/query-3512-info",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/query-3512-info",
inventory3512Param, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -726,7 +726,7 @@ public class YbHttpUtils {
public Result query3513(MedicalInventory3513Param inventory3513Param, Contract contract) {
// 发送请求
String s = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/query-3513-info",
String s = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/query-3513-info",
inventory3513Param, contract);
if (StringUtils.isEmpty(s)) {
throw new ServiceException("未接收到医保返回参数");
@@ -791,7 +791,7 @@ public class YbHttpUtils {
try {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/queryYbCatalogue",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/queryYbCatalogue",
catalogue1312QueryParam, null);
// logger.info("--------1312resultString-------------" + resultString);
// 1. 解析外层 JSON
@@ -843,7 +843,7 @@ public class YbHttpUtils {
// 3. 转发并删除临时文件
RestTemplate restTemplate = new RestTemplate();
response = restTemplate.postForEntity(
SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/file-up2",
SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/file-up2",
new HttpEntity<>(body, headers), String.class);
logger.info(JsonUtils.toJson(response));
// 清理临时文件
@@ -871,11 +871,11 @@ public class YbHttpUtils {
// RestTemplate restTemplate = new RestTemplate();
// HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
// ResponseEntity<String> response =
// restTemplate.postForEntity(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/file-up2",
// restTemplate.postForEntity(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/file-up2",
// requestEntity, String.class);
// try {
// String resultString = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/file-up2",
// String resultString = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/file-up2",
// file9101Param,null);
// // logger.info("--------1312resultString-------------" + resultString);
// // 1. 解析外层 JSON
@@ -911,7 +911,7 @@ public class YbHttpUtils {
*/
public Yb3101OutputResult yb3101PreMidAnalysis(Yb3101InputData data) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/pre-mid-analysis", data, null);
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/pre-mid-analysis", data, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -941,7 +941,7 @@ public class YbHttpUtils {
*/
public void yb3103PreMidFeedback(Yb3103InputData data) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/pre-mid-feedback", data, null);
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/pre-mid-feedback", data, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -965,7 +965,7 @@ public class YbHttpUtils {
public List<Yb2301OutputResult> upload2301FeeDetail(Yb2301InputFeeDetailModel yb2301InputFeeDetailModel) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/upload-2301-fee-detail",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/upload-2301-fee-detail",
yb2301InputFeeDetailModel, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -997,7 +997,7 @@ public class YbHttpUtils {
public Yb2303OutputSetInfo inpatientPreSettle(Yb2303InputInpatient yb2303InputInpatient) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/inpa-pre-setl",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/inpa-pre-setl",
yb2303InputInpatient, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1022,7 +1022,7 @@ public class YbHttpUtils {
}
public Yb2304OutputSetlInfo inpatientSettle(Contract contract, Yb2304InputInpatient yb2304InpatientParam) {
String resultString = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/inpa-setl",
String resultString = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/inpa-setl",
yb2304InpatientParam, contract);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1055,7 +1055,7 @@ public class YbHttpUtils {
*/
public Yb2305OutputSetlInfo inpatientUnSettle(Contract contract, Yb2305InputInpatient yb2305InpatientParam) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/inpa-un-setl",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/inpa-un-setl",
yb2305InpatientParam, contract);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1088,7 +1088,7 @@ public class YbHttpUtils {
public List<Yb5205OutputSpecialDisease>
yb5205SpecialDiseaseDrugRecordSearch(Yb5205InputSpecialDisease yb5205InputSpecialDisease) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/spe-disease-record-search",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/spe-disease-record-search",
yb5205InputSpecialDisease, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1121,7 +1121,7 @@ public class YbHttpUtils {
*/
public FileResult queryCatalog(CatalogFileInput catalogFileInput) {
String resultString = httpPost(
SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/query-catalog", catalogFileInput, null);
SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/query-catalog", catalogFileInput, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -1153,7 +1153,7 @@ public class YbHttpUtils {
*/
public String downLoadFile(FileResult fileResult) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/download", fileResult, null);
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/download", fileResult, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -1185,7 +1185,7 @@ public class YbHttpUtils {
*/
public InpatientReg inpatientReg(JsonNode jsonObject, String contractNo) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/inpatient-reg", jsonObject,
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/inpatient-reg", jsonObject,
contractServiceImpl.getContract(contractNo));
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1218,7 +1218,7 @@ public class YbHttpUtils {
*/
public void cancelInpatientReg(Yb2404InputInpatient yb2404InputInpatient, String contractNo) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/cancel-inpatient-reg",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/cancel-inpatient-reg",
yb2404InputInpatient, contractServiceImpl.getContract(contractNo));
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1251,7 +1251,7 @@ public class YbHttpUtils {
*/
public Yb2402InputParam inpatientCheckOut(Yb2402InputParam yb2402InputInpatientDscgInfo, String contractNo) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/discharge-patient",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/discharge-patient",
yb2402InputInpatientDscgInfo, iContractService.getContract(contractNo));
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1284,7 +1284,7 @@ public class YbHttpUtils {
*/
public void cancelInpatientCheckOut(Yb2405InputInpatient yb2405InputInpatient, String contractNo) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/cancel-discharge-patient",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/cancel-discharge-patient",
yb2405InputInpatient, contractServiceImpl.getContract(contractNo));
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1316,7 +1316,7 @@ public class YbHttpUtils {
*/
public void updateInpatientInfo(Yb2403InputParam yb2403InputInpatient, String contractNo) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/change-inpatient-info",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/change-inpatient-info",
yb2403InputInpatient, iContractService.getContract(contractNo));
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1343,7 +1343,7 @@ public class YbHttpUtils {
public void emrUp(Yb4401InputDto yb4401InputDto) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/emr-up", yb4401InputDto, null);
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/emr-up", yb4401InputDto, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
}
@@ -1374,7 +1374,7 @@ public class YbHttpUtils {
* @param contract 省市医保
*/
public void ybToReverse(Yb2601InputParam toReverse, Contract contract) {
String resultString = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/to-reverse",
String resultString = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/to-reverse",
toReverse, contract);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1401,7 +1401,7 @@ public class YbHttpUtils {
public void yb4101Up(Yb4101AInputData yb4101AInputData, Contract contract) {
String resultString = httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/setl-up",
String resultString = httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/setl-up",
yb4101AInputData, contract);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1428,7 +1428,7 @@ public class YbHttpUtils {
public void yb4102Up(Yb4102InputStastInfo yb4102InputStastInfo) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/setl-status-up",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/setl-status-up",
yb4102InputStastInfo, null);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");
@@ -1456,7 +1456,7 @@ public class YbHttpUtils {
public void cancel2302FeeDetailUp(Yb2302InpatientParam yb2302InpatientParam, Contract contract) {
String resultString
= httpPost(SecurityUtils.getLoginUser().getOptionJson().path("ybUrl").asText() + "/cancel-2302-fee-detail",
= httpPost(SecurityUtils.getLoginUser().getOptionJsonValue("ybUrl") + "/cancel-2302-fee-detail",
yb2302InpatientParam, contract);
if (StringUtils.isEmpty(resultString)) {
throw new ServiceException("未接收到医保返回参数");