commit
This commit is contained in:
@@ -48,6 +48,9 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
if (processTask == null || processTask.getId() == null) {
|
||||
throw new BaseException("学校OA待办同步失败:流程任务为空");
|
||||
}
|
||||
if (!isSchoolOaEnabled("创建待办", processTask.getId(), processTask.getProcessInstanceId())) {
|
||||
return;
|
||||
}
|
||||
if (Long.valueOf(0L).equals(processTask.getTaskParentId()) && "startTask".equals(processTask.getTaskName())) {
|
||||
return;
|
||||
}
|
||||
@@ -90,6 +93,9 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
if (processTask == null || processTask.getId() == null) {
|
||||
throw new BaseException("学校OA待办完成失败:流程任务为空");
|
||||
}
|
||||
if (!isSchoolOaEnabled("完成待办", processTask.getId(), processTask.getProcessInstanceId())) {
|
||||
return;
|
||||
}
|
||||
if (Long.valueOf(0L).equals(processTask.getTaskParentId()) && "startTask".equals(processTask.getTaskName())) {
|
||||
return;
|
||||
}
|
||||
@@ -110,6 +116,9 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
if (processTask == null || processTask.getId() == null) {
|
||||
throw new BaseException("学校OA待办删除失败:流程任务为空");
|
||||
}
|
||||
if (!isSchoolOaEnabled("删除待办", processTask.getId(), processTask.getProcessInstanceId())) {
|
||||
return;
|
||||
}
|
||||
if (Long.valueOf(0L).equals(processTask.getTaskParentId()) && "startTask".equals(processTask.getTaskName())) {
|
||||
return;
|
||||
}
|
||||
@@ -134,6 +143,9 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
if (flowId == null) {
|
||||
throw new BaseException("学校OA流程删除失败:流程实例ID为空");
|
||||
}
|
||||
if (!isSchoolOaEnabled("删除流程", null, flowId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
String deleteFlowUrl = requireConfig("school-oa.todo.delete-flow-url").replace("{flowId}", String.valueOf(flowId));
|
||||
sendTodoRequest(deleteFlowUrl, "学校OA流程删除失败", "学校OA流程删除异常");
|
||||
@@ -146,6 +158,9 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
if (processInstanceId == null) {
|
||||
throw new BaseException("学校OA待办修改失败:流程实例ID为空");
|
||||
}
|
||||
if (!isSchoolOaEnabled("修改完结待办", null, processInstanceId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ProcessInstance instance = dao.fetch(ProcessInstance.class, processInstanceId);
|
||||
if (instance == null) {
|
||||
@@ -212,20 +227,27 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
body.set("receiveTime", receiveTime);
|
||||
|
||||
String insertUrl = requireConfig("school-oa.todo.insert-url");
|
||||
String requestBody = JSONUtil.toJsonStr(body);
|
||||
log.info("学校OA待办创建请求,url={},taskId={},processInstanceId={},receiveCode={},body={}",
|
||||
insertUrl, task.getId(), instance.getId(), actor.getActorAccount(), requestBody);
|
||||
try {
|
||||
HttpRequest request = HttpUtil.createPost(insertUrl);
|
||||
setTodoRequestHeaders(request);
|
||||
request.body(JSONUtil.toJsonStr(body));
|
||||
request.body(requestBody);
|
||||
|
||||
String responseBody = request.execute().body();
|
||||
log.info("学校OA待办创建响应,taskId={},receiveCode={},response={}", task.getId(), actor.getActorAccount(), responseBody);
|
||||
JSONObject response = JSONUtil.parseObj(responseBody);
|
||||
if (response.getInt("state", 0) != 200) {
|
||||
log.warn("学校OA待办创建失败响应,taskId={},receiveCode={},response={}", task.getId(), actor.getActorAccount(), responseBody);
|
||||
throw new BaseException("学校OA待办创建失败:{}", response.getStr("message", responseBody));
|
||||
}
|
||||
log.info("学校OA待办创建成功,taskId={},receiveCode={},response={}", task.getId(), actor.getActorAccount(), responseBody);
|
||||
} catch (BaseException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.error("学校OA待办创建异常,url={},taskId={},processInstanceId={},receiveCode={},body={}",
|
||||
insertUrl, task.getId(), instance.getId(), actor.getActorAccount(), requestBody, e);
|
||||
throw new BaseException("学校OA待办创建异常:{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
@@ -346,6 +368,20 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断学校 OA 同步开关是否开启。
|
||||
* 参数 action 表示当前待执行的 OA 动作;taskId、processInstanceId 用于日志定位业务来源;
|
||||
* 返回值为 boolean,true 表示系统参数 AppSchoolOa 配置为 true,可继续请求 OA,false 表示跳过本次同步。
|
||||
*/
|
||||
private boolean isSchoolOaEnabled(String action, Long taskId, Long processInstanceId) {
|
||||
Boolean enabled = Globals.MyConfig.getBoolean("AppSchoolOa");
|
||||
if (!enabled) {
|
||||
log.info("学校OA同步未开启,跳过{},AppSchoolOa={},taskId={},processInstanceId={}",
|
||||
action, enabled, taskId, processInstanceId);
|
||||
}
|
||||
return enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一设置学校 OA 待办接口请求头。
|
||||
* 请求头参数包含 app-code、secret-key、domain-name 和可选 intercept-domain-name;
|
||||
@@ -367,22 +403,27 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
}
|
||||
|
||||
private String sendTodoRequest(String url, JSONObject body, String failMessage, String errorMessage) {
|
||||
String requestBody = body == null ? "" : JSONUtil.toJsonStr(body);
|
||||
log.info("学校OA请求开始,url={},body={}", url, requestBody);
|
||||
try {
|
||||
HttpRequest request = HttpUtil.createPost(url);
|
||||
setTodoRequestHeaders(request);
|
||||
if (body != null) {
|
||||
request.body(JSONUtil.toJsonStr(body));
|
||||
request.body(requestBody);
|
||||
}
|
||||
|
||||
String responseBody = request.execute().body();
|
||||
log.info("学校OA请求响应,url={},response={}", url, responseBody);
|
||||
JSONObject response = JSONUtil.parseObj(responseBody);
|
||||
if (response.getInt("state", 0) != 200) {
|
||||
log.warn("学校OA请求失败响应,url={},body={},response={}", url, requestBody, responseBody);
|
||||
throw new BaseException("{}:{}", failMessage, response.getStr("message", responseBody));
|
||||
}
|
||||
return responseBody;
|
||||
} catch (BaseException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.error("学校OA请求异常,url={},body={}", url, requestBody, e);
|
||||
throw new BaseException("{}:{}", errorMessage, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user