diff --git a/db/update/测试阶段.sql b/db/update/测试阶段.sql index 4a350126..43bc7777 100644 --- a/db/update/测试阶段.sql +++ b/db/update/测试阶段.sql @@ -534,4 +534,12 @@ ALTER TABLE laws_document_split ADD PRIMARY KEY (id); -- 2024-09-24 外来标准库增加 关联部门 字段长度 ALTER TABLE `laws_domestic_standard` - MODIFY COLUMN `associate_dept` text NULL COMMENT '关联部门'; \ No newline at end of file + MODIFY COLUMN `associate_dept` text NULL COMMENT '关联部门'; + +-- 2024-09-25 流程待办推送记录表 +ALTER TABLE `laws_unified_todo_log` + MODIFY COLUMN `json_str` longtext NULL COMMENT '推送内容'; +ALTER TABLE `laws_unified_todo_log` + MODIFY COLUMN `response_body` longtext NULL COMMENT '返回值'; +CREATE INDEX lutl_idx_state ON laws_unified_todo_log(`state`); +CREATE INDEX lutl_idx_message_type ON laws_unified_todo_log(`message_type`); diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/job/SyncOaSendDataJob.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/job/SyncOaSendDataJob.java new file mode 100644 index 00000000..a31317a7 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/job/SyncOaSendDataJob.java @@ -0,0 +1,68 @@ +package com.jero.modules.docking.hiwork.job; + +import cn.hutool.http.Header; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.jero.common.api.PushWorkflowIntegrationAPI; +import com.jero.common.api.dto.message.UnifiedTodoVO; +import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog; +import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * 每天全量推送失败的待办 + */ +@Slf4j +public class SyncOaSendDataJob implements Job { + + @Resource + private LawsUnifiedTodoLogService lawsUnifiedTodoLogService; + @Resource + private PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + LambdaQueryWrapper queryLawsUnifiedTodoLog = new LambdaQueryWrapper<>(); + queryLawsUnifiedTodoLog.eq(LawsUnifiedTodoLog::getState,"2"); + queryLawsUnifiedTodoLog.eq(LawsUnifiedTodoLog::getMessageType,"1"); + List listLawsUnifiedTodoLog = lawsUnifiedTodoLogService.list(queryLawsUnifiedTodoLog); + if(CollectionUtils.isEmpty(listLawsUnifiedTodoLog)){ + return; + } + for (LawsUnifiedTodoLog lawsUnifiedTodoLog : listLawsUnifiedTodoLog) { + if(StringUtils.isBlank(lawsUnifiedTodoLog.getJsonStr())){ + continue; + } + try { + List unifiedTodoVOList = JSON.parseObject(lawsUnifiedTodoLog.getJsonStr(), + new TypeReference>() {}); + try { + pushWorkflowIntegrationAPI.sendTodoTask(unifiedTodoVOList); + }catch (Exception e){ + log.error("OA推送待办异常" + e.getMessage()); + } + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(LawsUnifiedTodoLog::getId,lawsUnifiedTodoLog.getId()); + updateWrapper.set(LawsUnifiedTodoLog::getState,1); + updateWrapper.set(LawsUnifiedTodoLog::getCreateBy,"admin"); + updateWrapper.set(LawsUnifiedTodoLog::getUpdateTime,new Date()); + lawsUnifiedTodoLogService.update(updateWrapper); + }catch (Exception e){ + log.error("OA推送待办定时推送异常" + e.getMessage()); + } + } + } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/UnifiedTodoServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/UnifiedTodoServiceImpl.java index 3d86306d..2ae464b3 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/UnifiedTodoServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/UnifiedTodoServiceImpl.java @@ -143,40 +143,48 @@ public class UnifiedTodoServiceImpl implements PushWorkflowIntegrationAPI { while (retries < maxRetries) { log.info("==========OA调用"); // 远程调用 - HttpResponse execute = HttpRequest.post(url) - .header(Header.CONTENT_TYPE, "application/json;charset=UTF-8") - .body(jsonString)//表单内容 - .timeout(3000)//超时,毫秒 - .execute(); - if (execute.isOk()) { - String body = execute.body(); - List listJson = JSONArray.parseArray(body,JSONObject.class); - if(!CollectionUtils.isEmpty(listJson)) { - String operResult = String.valueOf(listJson.get(0).get("operResult")); + try { + HttpResponse execute = HttpRequest.post(url) + .header(Header.CONTENT_TYPE, "application/json;charset=UTF-8") + .body(jsonString)//表单内容 + .timeout(3000)//超时,毫秒 + .execute(); + log.info("==========OA调用成功"); + if (execute.isOk()) { + String body = execute.body(); + List listJson = JSONArray.parseArray(body,JSONObject.class); + if(!CollectionUtils.isEmpty(listJson)) { + String operResult = String.valueOf(listJson.get(0).get("operResult")); + lawsUnifiedTodoLog.setResponseBody(body); + if (Objects.equals(operResult, "1")) { + log.info("统一待办推送成功"); + lawsUnifiedTodoLog.setState(1); + break; + } + } + log.info("统一待办推送失败{}",body); + lawsUnifiedTodoLog.setState(2); + retries++; + }else { + String body = execute.body(); lawsUnifiedTodoLog.setResponseBody(body); - if (Objects.equals(operResult, "1")) { - log.info("统一待办推送成功"); - lawsUnifiedTodoLog.setState(1); - break; + List listJson = JSONArray.parseArray(body,JSONObject.class); + if(!CollectionUtils.isEmpty(listJson)){ + String operResult = String.valueOf(listJson.get(0).get("operResult")); + if (Objects.equals(operResult, "1")) { + log.info("统一待办推送成功"); + lawsUnifiedTodoLog.setState(1); + break; + } } + log.info("统一待办推送失败{}",body); + lawsUnifiedTodoLog.setState(2); + retries++; } - log.info("统一待办推送失败{}",body); - lawsUnifiedTodoLog.setState(2); - retries++; - }else { - String body = execute.body(); - lawsUnifiedTodoLog.setResponseBody(body); - List listJson = JSONArray.parseArray(body,JSONObject.class); - if(!CollectionUtils.isEmpty(listJson)){ - String operResult = String.valueOf(listJson.get(0).get("operResult")); - if (Objects.equals(operResult, "1")) { - log.info("统一待办推送成功"); - lawsUnifiedTodoLog.setState(1); - break; - } - } - log.info("统一待办推送失败{}",body); + }catch (Exception e){ + log.error("统一待办推送失败{}" + e.getMessage()); lawsUnifiedTodoLog.setState(2); + lawsUnifiedTodoLog.setResponseBody(e.getMessage()); retries++; } }