package com.inspect.job.task;
|
|
|
|
import com.inspect.base.core.constant.SecurityConstants;
|
|
import com.inspect.base.core.web.domain.AjaxResult;
|
|
import com.inspect.job.client.ExtOrgSyncClient;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.function.Function;
|
|
|
|
/**
|
|
* 外部平台(盐源智慧感知平台)部门 / 用户同步定时任务。
|
|
* <p>
|
|
* 在“定时任务”中配置调用:
|
|
* <ul>
|
|
* <li>{@code extOrgSyncTask.syncAll()}:部门 + 用户全量同步(建议每日凌晨);</li>
|
|
* <li>{@code extOrgSyncTask.syncUser()}:部门 + 用户同步;</li>
|
|
* <li>{@code extOrgSyncTask.syncDept()}:仅部门同步。</li>
|
|
* </ul>
|
|
* 角色同步暂缓。调用失败直接抛出异常,由 sys_job_log 记录失败原因。
|
|
*/
|
|
@Slf4j
|
|
@Component("extOrgSyncTask")
|
|
public class ExtOrgSyncTask {
|
|
|
|
private final ExtOrgSyncClient extOrgSyncClient;
|
|
|
|
public ExtOrgSyncTask(ExtOrgSyncClient extOrgSyncClient) {
|
|
this.extOrgSyncClient = extOrgSyncClient;
|
|
}
|
|
|
|
public void syncAll() {
|
|
invoke("外部组织全量同步", extOrgSyncClient::syncAll);
|
|
}
|
|
|
|
public void syncDept() {
|
|
invoke("外部部门同步", extOrgSyncClient::syncDept);
|
|
}
|
|
|
|
public void syncUser() {
|
|
invoke("外部用户同步", extOrgSyncClient::syncUser);
|
|
}
|
|
|
|
private void invoke(String action, Function<String, AjaxResult> call) {
|
|
long start = System.currentTimeMillis();
|
|
log.info("[EXT-SYNC] {} 开始", action);
|
|
AjaxResult result;
|
|
try {
|
|
result = call.apply(SecurityConstants.INNER);
|
|
} catch (Exception e) {
|
|
log.error("[EXT-SYNC] {} 调用异常", action, e);
|
|
throw new RuntimeException(action + "调用异常: " + e.getMessage(), e);
|
|
}
|
|
Object code = result == null ? null : result.get(AjaxResult.CODE_TAG);
|
|
Object msg = result == null ? null : result.get(AjaxResult.MSG_TAG);
|
|
long elapsed = System.currentTimeMillis() - start;
|
|
if (result == null || !(code instanceof Number) || ((Number) code).intValue() != 200) {
|
|
log.error("[EXT-SYNC] {} 失败, code={}, msg={}, 耗时={}ms", action, code, msg, elapsed);
|
|
throw new RuntimeException(action + "失败: " + (msg == null ? "无响应" : msg));
|
|
}
|
|
log.info("[EXT-SYNC] {} 完成, msg={}, 耗时={}ms", action, msg, elapsed);
|
|
}
|
|
}
|