diff --git a/WEB-INF/src_signtask/spring/spring.xml b/WEB-INF/src_signtask/spring/spring.xml index e1e5aa7..a5394d3 100644 --- a/WEB-INF/src_signtask/spring/spring.xml +++ b/WEB-INF/src_signtask/spring/spring.xml @@ -5,6 +5,7 @@ + diff --git a/src/main/java/com/seeyon/apps/src_signtask/callback/EsignCallbackFormBizService.java b/src/main/java/com/seeyon/apps/src_signtask/callback/EsignCallbackFormBizService.java index cce88c8..094bd94 100644 --- a/src/main/java/com/seeyon/apps/src_signtask/callback/EsignCallbackFormBizService.java +++ b/src/main/java/com/seeyon/apps/src_signtask/callback/EsignCallbackFormBizService.java @@ -39,6 +39,7 @@ public class EsignCallbackFormBizService implements EsignCallbackBizService { conditions.add(FormWhereCondition.build().value(formId).fieldName("ID")); FormTableExecutor.update(tablename,updateFields,conditions); //调用第三方回调接口 + handleThireePartyCallback(formId,refId); } private void handleThireePartyCallback(String formId,String refId) throws Exception { @@ -62,7 +63,9 @@ public class EsignCallbackFormBizService implements EsignCallbackBizService { List conditions = new ArrayList<>(); List updateFields = new ArrayList<>(); updateFields.add(FormUpdateField.build().fieldName(status).value(enumItemId)); - conditions.add(FormWhereCondition.build().value(formId).fieldName("签署任务编号")); + TableContext tableContext = FormTableExecutor.master(configProvider.getBizConfigByKey(SignTaskConstants.SIGNTASK_FORMNO)); + updateFields.add(FormUpdateField.build().fieldName(tableContext.getTableBean().getFieldBeanByDisplay("签署失败原因").getColumnName()).value(failMsg)); + conditions.add(FormWhereCondition.build().value(formId).fieldName("ID")); FormTableExecutor.update(tableName,updateFields,conditions); } diff --git a/src/main/java/com/seeyon/apps/src_signtask/controller/SignTaskCallBackController.java b/src/main/java/com/seeyon/apps/src_signtask/controller/SignTaskCallBackController.java index 9a9f793..38745b9 100644 --- a/src/main/java/com/seeyon/apps/src_signtask/controller/SignTaskCallBackController.java +++ b/src/main/java/com/seeyon/apps/src_signtask/controller/SignTaskCallBackController.java @@ -60,7 +60,6 @@ public class SignTaskCallBackController extends BaseController { } //signLinkService.del(flowId); response.setStatus(HttpServletResponse.SC_OK); - return; }else if(action.equals("SIGN_MISSON_COMPLETE") && callbackParams.getSignResult() == 2 && callbackParams.getSignOrder() == 2){ //发送消息 // MessageVo messageVo = new MessageVo(); diff --git a/src/main/java/com/seeyon/apps/src_signtask/job/SignTaskHandleFailJob.java b/src/main/java/com/seeyon/apps/src_signtask/job/SignTaskHandleFailJob.java new file mode 100644 index 0000000..78022d7 --- /dev/null +++ b/src/main/java/com/seeyon/apps/src_signtask/job/SignTaskHandleFailJob.java @@ -0,0 +1,68 @@ +package com.seeyon.apps.src_signtask.job; + + +import com.seeyon.apps.esign.po.param.JsonParamSource; +import com.seeyon.apps.esign.service.ContractCreateService; +import com.seeyon.apps.ext.quartz.AbstractQuartzTask; +import com.seeyon.apps.src_signtask.config.SignTaskConfigProvider; +import com.seeyon.apps.src_signtask.constants.SignTaskConstants; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.utils.form.*; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SignTaskHandleFailJob extends AbstractQuartzTask { + + private static final Log log = LogFactory.getLog(SignTaskHandleFailJob.class); + private SignTaskConfigProvider signTaskConfigProvider = (SignTaskConfigProvider) AppContext.getBean("signTaskConfigProvider"); + private ContractCreateService contractCreateService = (ContractCreateService) AppContext.getBean("contractCreateService"); + + @Override + public String taskRun(String s) throws Exception { + log.info("开始批量签署失败的任务"); + startHandleTask(); + log.info("批量签署失败的任务结束"); + return ""; + } + + private void startHandleTask() throws BusinessException { + Integer pageNum = 1; + Integer pageSize = 20; + Map dataMap = null; + TableContext tableContext = FormTableExecutor.master(signTaskConfigProvider.getBizConfigByKey(SignTaskConstants.SIGNTASK_FORMNO)); + List conditionList = new ArrayList<>(); + conditionList.add(FormWhereCondition.build().display("签署状态").value(EnumMapUtils.getEnumItemValueByDisplayValue(tableContext.getTableBean(),"签署状态","签署失败"))); + List formColumns = FormTableExecutor.pageQuery(tableContext, null, conditionList, pageNum, pageSize, true); + if(formColumns.size() <= 0) { + return; + } + do { + for (FormColumn formColumn : formColumns) { + try{ + List updateConditions = new ArrayList(); + updateConditions.add(FormWhereCondition.build().display("ID").value(formColumn.getId())); + List updateFields = new ArrayList<>(); + updateFields.add(FormUpdateField.build().display("E签宝流程编号").value("0")); + updateFields.add(FormUpdateField.build().display("签署状态").value(EnumMapUtils.getEnumItemValueByDisplayValue(tableContext.getTableBean(),"签署状态","未签署"))); + FormTableExecutor.update(tableContext,updateFields,updateConditions); + }catch (Exception e) { + log.error(e.getMessage(),e); + } + } + pageNum++; + formColumns = FormTableExecutor.pageQuery(tableContext, null, conditionList, pageNum, pageSize, true); + }while (formColumns.size() > 0 ); + + } + + @Override + public String getName() { + return "签署任务失败处理任务"; + } +} diff --git a/src/main/java/com/seeyon/apps/src_signtask/job/SignTaskJob.java b/src/main/java/com/seeyon/apps/src_signtask/job/SignTaskJob.java index 4c489f5..4d4f4db 100644 --- a/src/main/java/com/seeyon/apps/src_signtask/job/SignTaskJob.java +++ b/src/main/java/com/seeyon/apps/src_signtask/job/SignTaskJob.java @@ -38,6 +38,8 @@ public class SignTaskJob extends AbstractQuartzTask { TableContext tableContext = FormTableExecutor.master(signTaskConfigProvider.getBizConfigByKey(SignTaskConstants.SIGNTASK_FORMNO)); List conditionList = new ArrayList<>(); conditionList.add(FormWhereCondition.build().display("签署状态").value(EnumMapUtils.getEnumItemValueByDisplayValue(tableContext.getTableBean(),"签署状态","未签署"))); + conditionList.add(FormWhereCondition.build().display("E签宝流程编号").clauseFactor(ClauseFactor.NULL).startWithBracket(true).concatFactor(ClauseFactor.OR)); + conditionList.add(FormWhereCondition.build().display("E签宝流程编号").value("0").endWithBracket(true)); List formColumns = FormTableExecutor.pageQuery(tableContext, null, conditionList, pageNum, pageSize, true); if(formColumns.size() <= 0) { return; @@ -57,18 +59,24 @@ public class SignTaskJob extends AbstractQuartzTask { dataMap.put("signers",fieldsMap.get("签署方配置")); JsonParamSource jsonParamSource = new JsonParamSource(dataMap); jsonParamSource.setCallbackBaseUrl("/signtaskcallback.do?method=callback"); + List updateConditions = new ArrayList(); + List updateFields = new ArrayList<>(); + updateConditions.add(FormWhereCondition.build().display("ID").value(formColumn.getId())); try{ String flowId = contractCreateService.startSign(jsonParamSource); log.info("签署任务编号为"+fieldsMap.get("签署任务编号")+"的签署任务发起成功,流程编号为"+flowId); - List updateConditions = new ArrayList(); - updateConditions.add(FormWhereCondition.build().display("ID").value(formColumn.getId())); - List updateFields = new ArrayList<>(); updateFields.add(FormUpdateField.build().display("E签宝流程编号").value(flowId)); - FormTableExecutor.update(tableContext,updateFields,updateConditions); }catch (Exception e) { + updateFields.add(FormUpdateField.build().display("签署失败原因").value(e.getMessage())); log.error(e.getMessage(),e); log.error("签署任务编号为"+fieldsMap.get("签署任务编号")+"的签署任务发起失败"); } + try { + FormTableExecutor.update(tableContext,updateFields,updateConditions); + }catch (Exception e) { + log.error("更新签署任务档案底表失败:" + e.getMessage()); + log.error(e.getMessage(),e); + } } pageNum++; formColumns = FormTableExecutor.pageQuery(tableContext, null, conditionList, pageNum, pageSize, true);