147 Commits
Author SHA1 Message Date
pengjie 245cffecb0 fix: 清除因PowerShell Set-Content引入的UTF-8 BOM字符 2026-08-10 10:21:23 +08:00
pengjie 1ad322c16a refactor: 缩短急救宣教相关表名 QH_EME_FIRST_AID_* -> QH_EME_FIR_AID_*,解决表名超长问题 2026-08-10 10:14:40 +08:00
lianlonggang d08d20f1ee style(all): 去客户化处理 2026-08-06 17:47:04 +08:00
pengjieandClaude 4a15ebe0d2 feat: 补充IM个人资料同步 + 群成员头像导入修复
1. 在8处头像/名称变更点补充imHelloApi.accountReg()调用,同步更新IM个人资料:
   - SysUserController.updateUserAvatar 用户换头像
   - SysUserController.appEdit 移动端编辑资料
   - SysUserController.edit 后台编辑用户
   - EmergencyProfessionUserServiceImpl.customEdit 应急人员编辑
   - EmergencyCenterAdminServiceImpl.updateAdmin 中心管理员编辑
   - HealthUserEmployeeExServiceImpl.updateUserInfo 员工编辑
   - ConDoctorApiController.update 专家端个人简介修改
   - AsyncExportService.importDoctor 批量导入医生
   所有syncImProfile方法内部try-catch兜底,失败不影响主流程。
2. AddGroupMemberDTO新增memberAvatar字段,TencentCloudImUtil.addGroupMember
   导入IM账号时传递FaceUrl,EmergencyApiServiceImpl.addGroupUser构建头像映射。
3. jeecg-system-biz/pom.xml新增health-im-api依赖。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-04 20:03:20 +08:00
pengjie 0ae963c4cf Revert "fix(im): 邀请入群时使用真实用户身份调用IM API,系统通知显示真实用户名而非administrator"
This reverts commit 07d6f21fed.
2026-08-04 19:33:13 +08:00
pengjieandClaude 07d6f21fed fix(im): 邀请入群时使用真实用户身份调用IM API,系统通知显示真实用户名而非administrator
- AddGroupMemberDTO 新增 fromAccount 内部字段
- TencentCloudImUtil 新增带 identifier 参数的 getHttpsUrl 重载
- addGroupMember 检测 fromAccount,有则用该用户 UserSig
- EmergencyApiServiceImpl.addGroupUser 传入当前登录用户ID

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-04 18:58:16 +08:00
pengjieandClaude 468314df64 refactor(emergency): searchExpert改为两表合集查询,同时搜索QH_EME_PROFESS_USER和qh_con_doctor
原来只查QH_EME_PROFESS_USER再补充qh_con_doctor字段,导致只在qh_con_doctor
中的专家搜不到。改为:
1. 分别查询两表(各自过滤name/排除已入群)
2. LinkedHashMap按userId去重合并
3. sys_user兜底填充realname/avatar/phone/deptName
4. 对profUsers单独补qh_con_doctor专家字段
5. 内存分页返回

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-04 11:42:47 +08:00
pengjie 3b7f260103 fix(emergency): myParticipatedOrders接口补充返回当前用户自己发起/被救助的应急工单 2026-08-04 11:41:47 +08:00
pengjie 693749fece Merge remote-tracking branch 'origin/xc' into xc 2026-08-04 11:08:52 +08:00
pengjieandClaude e9360d1ad9 feat(emergency): searchExpert接口返回ConDoctor专家数据 + 修复IM UserSig缓存key未区分secretKey的问题
1. searchExpert新增ConDoctor专家字段:
   - 新增ConDoctorMapper直接查询qh_con_doctor表(同库,避免跨模块依赖)
   - EmergencyProfessionUser新增17个@TableField(exist=false)字段承载专家数据
   - searchExpert方法中批量查询ConDoctor并逐字段填充
   - 用户非专家时ConDoctor字段为null
   - 更新API文档-移动端接口.md

2. IM签名缓存优化:
   - TencentCloudImUtil新增secretKey注入
   - Redis key从 silence:im_user_sig:{sdkAppId}:{id}
     改为 silence:im_user_sig:{hash(sdkAppId+secretKey)}:{id}
   - 解决secretKey变更时旧缓存签名仍被命中导致IM请求失败的问题

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-04 11:08:03 +08:00
wanghao 670d82c868 Merge remote-tracking branch 'origin/xc' into xc 2026-07-23 17:12:57 +08:00
pengjie c3afd0adfa feat(emergency): isLiaisonUser改为查EMP_CARE_EMP表FIRST_AIDER_INFO判断急救人员身份
原逻辑硬编码返回true,现查询AYGC_YWK.EMP_CARE_EMP表中FIRST_AIDER_INFO
JSON字段是否包含当前登录用户工号,有则判定为急救人员。
2026-07-23 17:12:41 +08:00
pengjieandClaude 44e8ac7da5 chore(emergency): 简化群成员上限提示文案
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-22 11:24:46 +08:00
pengjieandClaude 1167ac792e fix(emergency): getActualGroupMemberList兜底补拉关爱/急救人员 + addGroupUser加9人上限
- 调用getActualGroupMemberList时先执行addCareUsersToGroup重新查询安眼系统,兜底补拉发起应急时未注册的关爱联络员/急救人员
- addCareUsersToGroup改为public,暴露给EmergencyOrderApiService调用
- addGroupUser增加9人群成员上限校验

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-22 11:13:40 +08:00
pengjieandClaude df41e0c8ce feat(emergency): getActualGroupMemberList自动补拉预设成员 + addGroupUser加9人上限
- getActualGroupMemberList: 查询群成员时自动检查预设成员(被救助人、操作人员、专业人员、紧急联系人、健康联络员),不在群中则自动补拉
- addGroupUser: 邀请前校验群成员总数不超过9人,超限返回提示

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-22 11:01:23 +08:00
pengjieandClaude f6f70ebf32 fix(emergency): insertOrderForFirstAider中将initiatorType从4改为1
急救员场景工单发起类型与应急就医保持一致,统一使用1

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-22 08:56:38 +08:00
pengjie 661079dd3a chore(emergency): isLiaisonUser临时硬编码返回true
联调阶段先放行所有用户,后续切换为急救员判定时再恢复查关爱人员关系表。
2026-07-22 08:53:14 +08:00
pengjie 9111cb40c6 refactor(emergency): 一人一案接口筛选条件由身份证号改为工号
身份证号在 EMP_BASIC_INFO 中非唯一标识,改用工号(EMPLOYEE_NUM)
匹配当前登录用户档案,避免同号多档时取错记录。
2026-07-21 14:27:02 +08:00
pengjieandClaude b5c5251913 feat(IM): 添加群成员时同步导入成员名称
addGroupMember在导入账号后逐个调用accountImport导入成员Nick名称

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 16:59:44 +08:00
pengjieandClaude 38a0aa07dd feat: 合并急救员建群逻辑到createGroupMag,新增参与工单列表接口
1. createGroupMag增加addCareUsersToGroup调用,自动拉入关爱联络员+急救员
2. 废除createGroupMagFirstAider(标记@Deprecated)
3. 新增/myparticipatedOrders接口,app端查询当前登录人参与的应急工单列表

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 15:51:33 +08:00
pengjie 1a5a2dcb3f fix(emergency): 修复添加群成员错误提示、成员查询遗漏和日志缺少异常栈
- addGroupUser: IM添加失败时改用友好提示,内部错误记日志
- EmergencyOrderApiServiceImpl: 员工成员查询去掉operatorType过滤,补充兜底覆盖;userId去重
- EmergencyCloudManager: 微服务调用失败日志补充异常栈
2026-07-20 10:26:24 +08:00
pengjieandClaude 145cf89a89 fix(emergency): addCareUsersToGroup改为员工编号匹配,解决手机号不准的TODO
数据流: 安眼手机号 → AYGC_YWK.EMP_BASIC_INFO查EMPLOYEE_NUM → getUserListByWorkNoList → 本系统用户ID

变更:
- LargeScreenDataMapper: 新增selectEmployeeNumsByPhones,INSTR模糊匹配支持多手机号字段
- EmergencyApiServiceImpl: 替换getUserByPhoneList直接匹配,改为两步反查;order_operator匹配同步调整
- 移除旧TODO注释

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-16 09:43:34 +08:00
pengjie d4f1d1a7bd fix(emergency): 修复一人一案接口VARCHAR列映射Double报类型转换异常
达梦库 EMP_PERSON_FILE 表的 BMI/HEIGHT/WEIGHT/WEIGHT_TARGET 等
列为 VARCHAR 类型,MyBatis 映射到 Double 时报类型转换异常,
将对应 VO 字段改为 String,并在 getBmi() 中解析字符串做保留一位小数。
2026-07-14 16:36:55 +08:00
pengjie 2d5198ec3f feat(emergency): 新增大屏一人一案移动端接口
根据当前登录用户身份证号,从安眼库 EMP_PERSON_FILE 关联表
查询最新档案详情,供移动端展示一人一案健康数据。
2026-07-14 16:22:05 +08:00
pengjie e844fec480 feat(emergency): 新增大屏关爱联络员身份判断接口
按当前登录人工号查询关爱关系表是否存在记录,前端用于按联络员
身份差异化展示。原 isLiaisonUser 实现固定返回 false,本次接通
真实查询逻辑。
2026-07-08 17:48:03 +08:00
pengjie 194c3b2134 feat(emergency): 推送IM消息增加resourceId文章ID字段 2026-07-08 09:20:50 +08:00
pengjie a1e5625ca7 fix(emergency): 推送时封面图相对路径拼接jeecg.path.show前缀为全路径 2026-07-07 14:54:22 +08:00
pengjie e16c0c2536 feat(emergency): 推送消息增加封面图字段messageImageUrl,去掉businessId 2026-07-07 14:24:56 +08:00
pengjie 4898a63b4b feat(emergency): 宣教推送IM消息改为独立方法sendGroupMsgArticle,不影响已有业务
- 新增 TencentCloudImUtil.sendGroupMsgArticle: From_Account生效、不覆盖businessID、fromAdmin动态判断
- 新增 TXController.sendGroupMsgArticle / IMHelloApi.sendGroupMsgArticle
- FirstAidPushServiceImpl 推送人改为当前登录用户,调用新方法
2026-07-07 13:43:21 +08:00
pengjie 8efc5bbd56 feat(emergency): 移动端宣教详情接口增加阅读记录逻辑 2026-07-07 10:55:57 +08:00
pengjie 3c65f7eb24 fix(emergency): 宣教推送IM消息发送人改为当前登录用户,不再硬编码administrator 2026-07-07 10:39:36 +08:00
pengjieandClaude bb95f1d78f fix(emergency): add接口新增成功后返回主键ID
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-07 10:32:15 +08:00
pengjieandClaude 1484f621bd fix(emergency): addGroupUser 增加本人判断和IM群成员去重
- 过滤当前登录用户,不允许邀请自己入群
- 查询腾讯IM实际群成员,避免重复邀请已在群中的人
- IM查询失败时降级使用本地 order_operator 数据去重
- 去重来源:本地记录 + IM实际成员 取并集

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-07 10:05:04 +08:00
pengjieandClaude f10221e92c feat(emergency): push/send 接入IM消息推送,SendIm 新增 businessId 字段
- SendIm 新增 businessId 字段(String),用于区分业务来源,不影响已有调用
- FirstAidPushServiceImpl.send() 步骤5从日志占位改为实际发送IM群消息
- businessId 固定为 "article",前端可据此识别宣教推送消息
- 工单无 sessionId 时跳过IM发送并 log.warn 告警

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-07 09:48:37 +08:00
pengjie 945c0b46d7 @
feat(emergency): 新增腾讯IM验证的群成员列表接口,优化searchEmployee模糊搜索

- 新增 /order/getActualGroupMemberList 接口,先查本地参与人员再调腾讯IM验证,以交集为准
- 新增 GetGroupMemberInfoVO,封装腾讯IM get_group_member_info API响应
- TencentCloudImUtil 新增 getGroupMemberInfo 方法,TXController/IMHelloApi 新增对应端点
- GroupMemberVO 新增 isSelf 字段区分本人 (0/1),默认值 0
- searchEmployee 姓名/工号/手机号改为模糊搜索(* 包装实现)
- 修复 getActualGroupMemberList IM 调用失败时静默返回空列表的 bug,失败时降级使用本地成员
- 接口文档更新变更摘要,标明新接口替换原 /order/getGroupMemberList 地址

Co-Authored-By: Claude <noreply@anthropic.com>
@
2026-07-07 09:29:19 +08:00
pengjie fd7fd32c8d feat(emergency): 新增急救员建群接口,人员接口返回手机号
- 新增 GET /api/emergency/createGroupMagFirstAider(不发起通话,自动拉关爱/急救员)
- createGroupMag 原始逻辑不受影响,新方法独立实现
- OrderOperator.operatorType 注释同步数据库(新增3/4/5)
- EmergencyProfessionUser/GroupMemberVO 新增 phone 字段
- searchExpert/getGroupMemberList 填充手机号
- API文档-移动端接口.md 同步更新
2026-07-06 17:14:48 +08:00
pengjie 4cb3411eca feat(emergency): 新增移动端宣教详情接口,整理移动端API文档
- 新增 FirstAidResourceApiController,提供 GET /api/emergency/firstAid/resource/queryById
- RequestPrefix 新增 FIRST_AID_RESOURCE 路径常量
- API文档-应急群聊拉人.md 合并入新文档 API文档-移动端接口.md(含群聊拉人 + 宣教资源)
- API文档-急救宣教资源管理v3.md 保持管理后台接口
2026-07-06 15:45:55 +08:00
pengjieandClaude 3c5bfc8ad1 fix(emergency): 修复宣教模块3个状态机与兼容性缺陷
- auditStatus 新增 insertStrategy=IGNORED,修复新增/复制时存0而非NULL
- submitForReview 增加PENDING重复提交拦截
- recordRead/toggleFavorite 重复键异常catch兼容DM8数据库

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 15:09:22 +08:00
pengjieandClaude 5612fe0752 refactor(emergency): 宣教模块代码整理与问题修复
- 修复 GlobalUtils.getLoginUser() NPE 风险(send/approve/reject)
- 批量操作改为前置校验+全量执行(batchPublish/batchTakeDown/batchDeleteResources)
- 新增 deleteResource/batchDeleteResources,已发布资源不可删除
- 标签过滤 SQL 修复边界精确匹配(避免 id=2 误匹配 12/22)
- 收藏/阅读改用 DuplicateKeyException 消除并发竞态
- fillResourceExtras/queryResourceList 批量查询分类名称,避免 N+1
- 新增 validateResource 校验内容类型、分类、标签合法性
- copyResource 补全 effectiveTime/expiryTime、版本记录、校验
- 审核下发/下架/删除增加状态机保护
- send() 使用 REQUIRES_NEW 事务隔离,确保批量推送单条失败互不影响
- 版本历史上限控制 MAX_VERSIONS=20
- 分类/标签树形重构:分类不再嵌套子分类,统一为分类+标签两级
- 清理废弃方法(listCategories/listAllCategoriesAndTags 等)
- 批量删除分类/标签增加 @Transactional 事务保护

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 11:23:57 +08:00
pengjieandClaude 3d8b930d1a chore(emergency): 代码整理
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 17:37:17 +08:00
pengjie 8761a965aa feat(emergency): 急救宣教资源推送到应急群聊 2026-06-25 15:53:22 +08:00
pengjieandClaude 2cc0668391 feat(emergency): 急救宣教资源管理v3 - 审批上架分离、分类标签树形重构
- approve()不再自动发布,需单独调用publish()上架
- publish()增加auditStatus=11前置校验
- batchPublish()跳过未审核通过的资源
- 分类管理支持树形结构(listRoot/listChildren/listAll)
- listAll返回分类+tags嵌套树
- listChildren返回子分类+标签
- 标签parentId改为必填
- 分类删除校验标签存在
- 分页列表填充resourceCount
- 审核记录按审核时间排序

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 15:50:24 +08:00
pengjie 532041ff8d feat(emergency): 急救宣教资源管理模块多项优化
- 新增版本历史isCurrent标记,编辑/回滚时正确维护当前版本
- 审核记录独立表(QH_EME_FIRST_AID_RESOURCE_AUDIT),保留完整审核轨迹
- 审计表auditStatus沿用10/11/12,资源表保留冗余快照
- 标签挂载到分类下(parentId),同分类内名称唯一
- 分类/标签编辑时校验name唯一性
- 导出状态改用文本(statusText),审核通过+已下架正确显示
- 审核状态/驳回原因支持null更新(FieldStrategy.IGNORED)
- Controller POST接口统一使用@RequestBody接收参数
2026-06-24 17:36:44 +08:00
pengjie 6384021c4d feat(emergency): 急救宣教资源管理模块
新增急救宣教资源管理完整功能,包含6个子模块:

- 分类管理:树形结构,CRUD + 级联删除校验
- 标签管理:扁平结构,CRUD + 引用校验
- 资源管理:CRUD + 状态流转(草稿→审核→发布→下架) + 批量操作 + 阅读去重 + 复制
- 审核管理:待审核/已通过/已驳回列表 + 审核操作 + 审核记录
- 收藏管理:收藏/取消切换 + 状态查询 + 我的收藏列表
- 版本管理:编辑自动保存版本快照 + 回滚 + 差异对比

业务规则:
- 编辑/回滚后自动退回草稿,清除审核状态(方案A)
- 阅读去重:同用户重复阅读不增加计数
- 逻辑删除 + 租户隔离

Co-Authored-By: Claude <noreply@anthropic.com>
@
2026-06-23 17:40:30 +08:00
lianlonggang a7a037daf9 feat(consultation,emergency): 修复达梦数据库字段别名及资源等级查询问题
- ConResourceMapper.xml 查询中新增 RESOURCE_LEVEL 字段别名映射,解决达梦数据库大写字段名导致的 level 字段无法正确返回问题
- AedEquipmentMangerServiceImpl 相关逻辑优化
2026-04-01 14:43:03 +08:00
hejiayang a7cafe9d7f fix: 解决HTML转义安全问题
- 在多个DTO类中添加HtmlUtil导入并实现自动转义功能
- 为AccountDTO、ConDoctorDTO等类的set方法增加HTML转义处理
- 修复ConDoctorServiceImpl中的重复转义代码
- 为EmergencyProfessionUserController添加请求参数转义
- 修复OrderServiceImpl中的用户名称转义处理
- 为Watch相关服务增加数据绑定和查询时的转义处理
- 修复SysUser相关控制器和服务中的转义逻辑
2026-03-30 17:39:21 +08:00
hejiayang f1abb06ae8 fix(schedules): 解决重复排班数据问题
- 根据时间查询现有排班记录并删除重复数据
- 在保存新排班前清理已存在的相同时间段排班
- 同步删除关联的排班项目记录确保数据一致性
2026-03-30 09:52:55 +08:00
hejiayang 66795541c0 fix(aed): 维护映射中的状态字段引用错误(如果对应的数据库字段,双引号内大小写要与数据库一致)
- 移除AedEquipmentMaintainMapper.xml中status字段的双引号引用
- 移除WatchDataMapper.xml中type字段的双引号引用
- 确保数据库字段引用的一致性,避免SQL语法错误
2026-03-27 17:33:34 +08:00
hejiayang b7906db202 fix(emergency):
mapper.java注释中漏改表名
sql脚本备注
2026-03-19 09:53:57 +08:00
hejiayang 25643710e3 fix(sql):health-emergency和health-watch模块
部分sql别名双引号回退
2026-03-18 18:11:46 +08:00