Files
tuanwei-java/src/main/java/com/gxwebsoft/gxmu/openplat/SyncBatchStatus.java
T
weicw1996 cd54039f28 接入医科大开放平台数据同步
新增 com.gxwebsoft.gxmu.openplat:开放平台客户端(oauth 鉴权、token 缓存与失效
重取、分页拉取)、部门/教师/班级/学生四段同步、异步编排与手动同步接口、学生认领、
学生名册查询与导出、每天 03:30 的定时任务、同步记录。

关键设计:
- 名册与登录账号分离,学生通过「认领」(手机号自动 / 学号姓名自助)关联 sys_user
- 组织数据以 sys_organization 为唯一载体,gxmu_college 废弃
- 平台无可用增量字段,只做全量拉取 + 幂等 upsert
- 上游消失只停用不删除,且只作用于同步来源的记录(避免误停用人工维护的研究生班)
- 平台权威字段按白名单覆盖,人工字段不触碰
- 码表可配置并保留原始码,码值实测存在两套编码混用,不做硬编码
- 手动同步为异步:提交返回批次号,前端轮询 /status 看分段进度

性能:
- 班级/部门由逐条 update 改为多行 upsert,班级 1584 条 41s -> 0.19s
- 码表解析加进程内缓存,学生同步由 >17 分钟不完成 -> 170 秒完成 98187 行

迁移脚本需手动执行(可重复执行):
  sql/20260912_create_openplat_sync_tables.sql
  sql/20260912_add_openplat_menu.sql

离线单测 43 个;另有联网集成测试 OpenPlatformClientIT(需 -Dopenplat.it=true)。
2026-09-15 15:54:49 +08:00

38 lines
758 B
Java

package com.gxwebsoft.gxmu.openplat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 同步批次进度,供前端轮询。
*
* @author Codex
* @since 2026-09-14
*/
@Data
public class SyncBatchStatus implements Serializable {
private static final long serialVersionUID = 1L;
/** 是否有同步任务在执行 */
private boolean running;
private String batchId;
private String triggerType;
private String triggerUser;
private LocalDateTime startTime;
/** 正在执行的段,未执行时为 null */
private String currentSection;
/** 本次批次包含的各段状态,按执行顺序 */
private List<SyncSectionStatus> sections;
}