1. 电子公文报表系统优化
- 动态字段注入:在电子公文报表系统中实现“来文单位”字段的动态注入,通过扩展渲染逻辑调用底层查询接口,满足客户个性化导出需求,提升数据完整性。
批量查询优化
- 在DAO层实现批量数据导入和单条数据导入功能,优化文档来文单位查询性能。
- 设计批量查询机制提升系统吞吐量,封装
batchGenerateDocumentSourceUnit批量处理方法,通过一次 SQL 查询替代 N 次单条查询。 - 结合
Map<Long, String>缓存映射显著降低数据库 IO 次数。 - 引入索引映射(
indexToSummaryId)机制,精准关联原始数据与结果集,确保批量处理过程中数据顺序与上下文一致性。
2. 组织中心缓存模块优化
多级缓存设计
采用“主对象缓存+索引缓存”的两级结构:
- 主缓存(
OrgMemberCache):存储完整的V3xOrgMember对象,以 ID 为键,类比数据库主表。 - 索引缓存(
OrgAccountMemberCache/OrgTelnumMemberCache):存储 ID 列表,用于快速定位哪些 ID 属于某个账户或电话,类比数据库索引。
- 主缓存(
优势:
- 解耦数据与查询路径,查询效率从 O(n) 降到 O(1)+O(k)。
- 支持多维度快速检索(按账户、电话、单位等),按业务语义构建索引,提升查询性能。
缓存预热与刷新
- 抽离数据加载逻辑(如
loadOrgMembersIntoCache),实现refreshCache方法复用。 - 在系统启动时完成数据初始预热,解决冷启动性能问题。
- 在
refreshCache方法中加入缓存清除逻辑(orgUnitStatusCache.clean()),确保数据一致性。
- 抽离数据加载逻辑(如
接口开发
- 开发“获取指定账户下所有成员”接口,支持集团账户、外部互联账户及跨单位任职场景。
3. 单点登录(SSO)集成
- 实现目标:在第三方业务系统中实现与致远 OA 的单点登录集成,支持用户无需重复输入账号密码即可从本系统一键跳转并自动登录 OA 平台。
技术实现
- 针对不同类型的 ticket(如
v5ticket和传统 ticket),在接口层面进行兼容处理,通过优先级判断选择合适的 ticket。 - 调用 OA 提供的验证接口,确保 ticket 有效性,并从响应中提取
loginName和memberId。 - 对
loginName进行 AES 加密,保障数据传输安全性。 - 将加密后的 ticket 附加到重定向 URL 中,发送给目标系统。
- 目标系统通过
handshake方法解密并验证用户身份,完成自动登录。
- 针对不同类型的 ticket(如
具体工作
- 开发
preSso接口,接收 OA 传来的v5ticket,验证身份后生成加密 ticket。 - 实现
handshake方法(继承自SSOLoginHandshakeAbstract),负责解密 ticket 和查找用户信息。 - 支持用户从 OA 点击功能链接或待办消息时免密跳转,提升跨系统访问的安全性和用户体验。
- 开发
4. 公文 PDF 下载功能优化
性能瓶颈分析
- 通过日志耗时统计(
StopWatch)和 JVM 监控工具,发现下载流程主要耗时集中在文件生成与多次 I/O 读写环节。
- 通过日志耗时统计(
优化策略
- 将多阶段文件生成合并为单阶段流式输出,减少磁盘临时文件的生成。
- 对 Excel 样式、数据处理对象等进行缓存与复用,降低 GC 频率。
- 调整压缩与打包顺序,减少重复读取文件的次数。
具体优化
- 针对公文归档功能,将原本串行生成“文单 PDF”和“正文 PDF”改为双线程并行执行。
- 使用
ExecutorService并发执行 HTML→PDF 渲染任务,总时间从 3.2 秒降至 1.6 秒,性能提升 50%+。 - 引入异步临时文件清理机制,避免阻塞主流程。
- 封装模板缓存与资源拷贝逻辑,提升系统稳定性和可维护性。
亮点总结
性能优化
- 通过批量查询、多级缓存、并行处理等手段显著提升系统吞吐量和响应速度。
- 精准定位性能瓶颈(如 PDF 转换占 97%),针对性优化效果显著。
架构设计
- 主缓存+索引缓存的设计体现对业务场景的深入理解,空间换时间提升查询效率。
- SSO 集成的多重验证和加密机制保障了跨系统访问的安全性。
用户体验
- 动态字段注入、PDF 下载加速等功能直接提升用户操作效率。
- 单点登录实现无缝跳转,减少重复登录操作。
代码质量
- 封装复用逻辑(如缓存预热、模板缓存),提升代码可维护性。
- 引入监控工具(如
StopWatch)辅助性能分析和优化验证。
评论0
暂时没有评论