代码更新
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
<bean id="signTaskHandleFailJob" class="com.seeyon.apps.src_signtask.job.SignTaskHandleFailJob"/>
|
<bean id="signTaskHandleFailJob" class="com.seeyon.apps.src_signtask.job.SignTaskHandleFailJob"/>
|
||||||
<bean id="fileHandlerService" class="com.seeyon.apps.src_signtask.service.FileHandlerService"/>
|
<bean id="fileHandlerService" class="com.seeyon.apps.src_signtask.service.FileHandlerService"/>
|
||||||
<bean id="esignCallbackFormBizService" class="com.seeyon.apps.src_signtask.callback.EsignCallbackFormBizService"/>
|
<bean id="esignCallbackFormBizService" class="com.seeyon.apps.src_signtask.callback.EsignCallbackFormBizService"/>
|
||||||
|
<bean id="signStatusQueryService" class="com.seeyon.apps.src_signtask.service.SignStatusQueryService"/>
|
||||||
<bean name="/signtaskcallback.do" class="com.seeyon.apps.src_signtask.controller.SignTaskCallBackController">
|
<bean name="/signtaskcallback.do" class="com.seeyon.apps.src_signtask.controller.SignTaskCallBackController">
|
||||||
</bean>
|
</bean>
|
||||||
</beans>
|
</beans>
|
||||||
@@ -49,9 +49,10 @@ public class EsignCallbackFormBizService implements EsignCallbackBizService {
|
|||||||
FormColumn formColumn = FormTableExecutor.queryOne(master, conditions, true);
|
FormColumn formColumn = FormTableExecutor.queryOne(master, conditions, true);
|
||||||
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
|
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
|
||||||
String callbackUrl = (String) fieldsMap.get("签署任务第三方系统回调地址");
|
String callbackUrl = (String) fieldsMap.get("签署任务第三方系统回调地址");
|
||||||
|
String taskId = (String) fieldsMap.get("签署任务编号");
|
||||||
List<Long> fileUrls = attachmentManager.getBySubReference(Long.parseLong(refId));
|
List<Long> fileUrls = attachmentManager.getBySubReference(Long.parseLong(refId));
|
||||||
String fileList = fileUrls.stream().map(f -> f + "").collect(Collectors.joining(","));
|
String fileList = fileUrls.stream().map(f -> f + "").collect(Collectors.joining(","));
|
||||||
String paramString = "?taskId=" + formId + "&task_finished=true" + "&signFiles=" + fileList;
|
String paramString = "?taskId=" + taskId + "&task_finished=true" + "&signFiles=" + fileList;
|
||||||
HttpClient.httpGet(callbackUrl + paramString,null,null);
|
HttpClient.httpGet(callbackUrl + paramString,null,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ public enum SignTaskConstants {
|
|||||||
SIGNTASK_FORMNO("","签署任务档案底表"),
|
SIGNTASK_FORMNO("","签署任务档案底表"),
|
||||||
LOGINNAME("",""),
|
LOGINNAME("",""),
|
||||||
updateAccountName("",""),
|
updateAccountName("",""),
|
||||||
|
DEAFULTTASKCREATOR("demo1","签署任务默认创建者"),
|
||||||
;
|
;
|
||||||
|
|
||||||
SignTaskConstants(String defaultValue, String description) {
|
SignTaskConstants(String defaultValue, String description) {
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public class SignTaskJob extends AbstractQuartzTask {
|
|||||||
TableContext tableContext = FormTableExecutor.master(signTaskConfigProvider.getBizConfigByKey(SignTaskConstants.SIGNTASK_FORMNO));
|
TableContext tableContext = FormTableExecutor.master(signTaskConfigProvider.getBizConfigByKey(SignTaskConstants.SIGNTASK_FORMNO));
|
||||||
List<FormWhereCondition> conditionList = new ArrayList<>();
|
List<FormWhereCondition> conditionList = new ArrayList<>();
|
||||||
conditionList.add(FormWhereCondition.build().display("签署状态").value(EnumMapUtils.getEnumItemValueByDisplayValue(tableContext.getTableBean(),"签署状态","未签署")));
|
conditionList.add(FormWhereCondition.build().display("签署状态").value(EnumMapUtils.getEnumItemValueByDisplayValue(tableContext.getTableBean(),"签署状态","未签署")));
|
||||||
|
conditionList.add(FormWhereCondition.build().display("签署失败原因").clauseFactor(ClauseFactor.NULL));
|
||||||
conditionList.add(FormWhereCondition.build().display("E签宝流程编号").clauseFactor(ClauseFactor.NULL).startWithBracket(true).concatFactor(ClauseFactor.OR));
|
conditionList.add(FormWhereCondition.build().display("E签宝流程编号").clauseFactor(ClauseFactor.NULL).startWithBracket(true).concatFactor(ClauseFactor.OR));
|
||||||
conditionList.add(FormWhereCondition.build().display("E签宝流程编号").value("0").endWithBracket(true));
|
conditionList.add(FormWhereCondition.build().display("E签宝流程编号").value("0").endWithBracket(true));
|
||||||
List<FormColumn> formColumns = FormTableExecutor.pageQuery(tableContext, null, conditionList, pageNum, pageSize, true);
|
List<FormColumn> formColumns = FormTableExecutor.pageQuery(tableContext, null, conditionList, pageNum, pageSize, true);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class FormCreateService {
|
|||||||
mainFormData.put("签署状态", EnumMapUtils.getEnumItemValueByDisplayValue(tableContext.getTableBean(),"签署状态","未签署"));
|
mainFormData.put("签署状态", EnumMapUtils.getEnumItemValueByDisplayValue(tableContext.getTableBean(),"签署状态","未签署"));
|
||||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||||
conditions.add(FormWhereCondition.build().value(taskId).display("签署任务编号"));
|
conditions.add(FormWhereCondition.build().value(taskId).display("签署任务编号"));
|
||||||
long count = FormTableExecutor.count(tableContext, new ArrayList<>(), conditions);
|
Long count = FormTableExecutor.count(tableContext, new ArrayList<>(), conditions);
|
||||||
if(count > 0) {
|
if(count > 0) {
|
||||||
throw new RuntimeException("该签署任务ID的签署任务已存在");
|
throw new RuntimeException("该签署任务ID的签署任务已存在");
|
||||||
}
|
}
|
||||||
@@ -62,40 +62,53 @@ public class FormCreateService {
|
|||||||
V3xOrgMember creator = orgManager.getMemberByLoginName(params.getString("taskCreator"));
|
V3xOrgMember creator = orgManager.getMemberByLoginName(params.getString("taskCreator"));
|
||||||
if(creator != null) {
|
if(creator != null) {
|
||||||
mainFormData.put("签署任务创建者", creator.getId());
|
mainFormData.put("签署任务创建者", creator.getId());
|
||||||
|
}else {
|
||||||
|
creator = orgManager.getMemberByLoginName(signTaskConfigProvider.getBizConfigByKey(SignTaskConstants.DEAFULTTASKCREATOR));
|
||||||
|
mainFormData.put("签署任务创建者", creator.getId());
|
||||||
}
|
}
|
||||||
|
String loginName = creator.getLoginName();
|
||||||
mainFormData.put("签署任务第三方系统回调地址", params.getString("callbackUrl"));
|
mainFormData.put("签署任务第三方系统回调地址", params.getString("callbackUrl"));
|
||||||
mainFormData.put("第三方系统唯一标识", params.getString("thirdSysFlag"));
|
mainFormData.put("第三方系统唯一标识", params.getString("thirdSysFlag"));
|
||||||
// 将 signers 转成 JSON 字符串存入
|
// 将 signers 转成 JSON 字符串存入
|
||||||
if (params.containsKey("signers")) {
|
if (params.containsKey("signers")) {
|
||||||
mainFormData.put("签署方配置", params.getJSONArray("signers").toString());
|
mainFormData.put("签署方配置", params.getJSONArray("signers").toString());
|
||||||
}
|
}
|
||||||
String loginName = creator.getLoginName();
|
|
||||||
// 导入业务表单
|
// 导入业务表单
|
||||||
FormSaveUtil.formSave(loginName,formNo,formFactory,mainFormData,null);
|
|
||||||
|
|
||||||
List<FormUpdateField> updateFields = new ArrayList<>();
|
List<FormUpdateField> updateFields = new ArrayList<>();
|
||||||
|
List<String> filePaths = null;
|
||||||
|
List<String> fileNames = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
if("LINK".equals(linkType)) {
|
||||||
|
for (int i = 0; i < urls.size(); i++) {
|
||||||
|
String savePath = TEMP_DIR + File.separator;
|
||||||
|
String fileName = HttpClient.httpDownloadFile((String)urls.get(i),null,savePath,"UTF-8");
|
||||||
|
fileNames.add(savePath + fileName);
|
||||||
|
}
|
||||||
|
}else if("REFID".equals(linkType)) {
|
||||||
|
FileUtil fileUtil = new FileUtil();
|
||||||
|
filePaths = fileUtil.fieldFileDownload(Long.parseLong((String) urls.get(0)), TEMP_DIR + File.separator);
|
||||||
|
}
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error(e.getMessage(),e);
|
||||||
|
throw new Exception("未获取到签署任务文件");
|
||||||
|
}
|
||||||
|
if(fileNames.size() == 0 && filePaths == null) {
|
||||||
|
throw new Exception("未获取到签署任务文件");
|
||||||
|
}
|
||||||
|
FormSaveUtil.formSave(loginName,formNo,formFactory,mainFormData,null);
|
||||||
FormColumn formColumn = FormTableExecutor.queryOne(tableContext, conditions, true);
|
FormColumn formColumn = FormTableExecutor.queryOne(tableContext, conditions, true);
|
||||||
if(formColumn == null) {
|
if(formColumn == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String formId = formColumn.getId();
|
String formId = formColumn.getId();
|
||||||
if("LINK".equals(linkType)) {
|
String refId = null;
|
||||||
List<String> fileNames = new ArrayList<>();
|
if(fileNames.size() > 0) {
|
||||||
for (int i = 0; i < urls.size(); i++) {
|
refId = uploadSignTaskFileToOA(fileNames, formId, loginName, updateAccountName);
|
||||||
String savePath = TEMP_DIR + File.separator + i +".pdf";
|
}else {
|
||||||
HttpClient.httpDownloadFile((String)urls.get(i),null,savePath,"UTF-8");
|
refId = uploadSignTaskFileToOA(filePaths, formId, loginName, updateAccountName);
|
||||||
fileNames.add(savePath);
|
}
|
||||||
}
|
if(refId != null) {
|
||||||
String refId = uploadSignTaskFileToOA(fileNames, formId, loginName, updateAccountName);
|
|
||||||
updateFields.add(FormUpdateField.build().display("签署任务文件").value(refId));
|
updateFields.add(FormUpdateField.build().display("签署任务文件").value(refId));
|
||||||
}else if("REFID".equals(linkType)) {
|
|
||||||
FileUtil fileUtil = new FileUtil();
|
|
||||||
for (int i = 0; i < urls.size(); i++) {
|
|
||||||
List<String> filePaths = fileUtil.fieldFileDownload(Long.parseLong((String) urls.get(i)), TEMP_DIR + File.separator);
|
|
||||||
String refId = uploadSignTaskFileToOA(filePaths, formId, loginName, updateAccountName);
|
|
||||||
updateFields.add(FormUpdateField.build().display("签署任务文件").value(refId));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(updateFields.size() > 0){
|
if(updateFields.size() > 0){
|
||||||
FormTableExecutor.update(tableContext,updateFields,conditions);
|
FormTableExecutor.update(tableContext,updateFields,conditions);
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package com.seeyon.apps.src_signtask.service;
|
||||||
|
|
||||||
|
import com.seeyon.apps.esign.service.EsignFlowQueryService;
|
||||||
|
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.FormColumn;
|
||||||
|
import com.seeyon.utils.form.FormTableExecutor;
|
||||||
|
import com.seeyon.utils.form.FormWhereCondition;
|
||||||
|
import com.seeyon.utils.form.TableContext;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class SignStatusQueryService {
|
||||||
|
|
||||||
|
private EsignFlowQueryService esignFlowQueryService = (EsignFlowQueryService) AppContext.getBean("esignFlowQueryService");
|
||||||
|
private SignTaskConfigProvider signTaskConfigProvider = (SignTaskConfigProvider) AppContext.getBean("signTaskConfigProvider");
|
||||||
|
|
||||||
|
public String querySignStatus(String taskId) throws BusinessException {
|
||||||
|
String formNo = signTaskConfigProvider.getBizConfigByKey(SignTaskConstants.SIGNTASK_FORMNO);
|
||||||
|
TableContext tableContext = FormTableExecutor.master(formNo);
|
||||||
|
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||||
|
conditions.add(FormWhereCondition.build().value(taskId).display("签署任务编号"));
|
||||||
|
FormColumn formColumn = FormTableExecutor.queryOne(tableContext, conditions, true);
|
||||||
|
if(formColumn == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
|
||||||
|
String eFlowId = (String)fieldsMap.get("E签宝流程编号");
|
||||||
|
Integer eFlowStatus = esignFlowQueryService.queryFlow(eFlowId);
|
||||||
|
//0 - 草稿 1 - 签署中 2 - 完成 3 - 撤销 5 - 过期(签署截至日期到期后触发)7 - 拒签
|
||||||
|
if(eFlowStatus == 0){
|
||||||
|
return "草稿";
|
||||||
|
}else if(1 == eFlowStatus) {
|
||||||
|
return "签署中";
|
||||||
|
}else if(2 == eFlowStatus) {
|
||||||
|
return "完成";
|
||||||
|
}else if(3 == eFlowStatus) {
|
||||||
|
return "撤销";
|
||||||
|
}else if(5 == eFlowStatus) {
|
||||||
|
return "过期";
|
||||||
|
} else if(7 == eFlowStatus) {
|
||||||
|
return "拒签";
|
||||||
|
}
|
||||||
|
return "查询错误";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
package com.seeyon.ctp.rest.resources;
|
|
||||||
|
|
||||||
import cn.hutool.log.Log;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.seeyon.apps.src_signtask.service.FormCreateService;
|
|
||||||
import com.seeyon.ctp.common.AppContext;
|
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
|
||||||
import javax.ws.rs.POST;
|
|
||||||
import javax.ws.rs.Path;
|
|
||||||
import javax.ws.rs.Produces;
|
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
|
|
||||||
@Path("/signtask")
|
|
||||||
@Produces({"application/json", "application/xml"})
|
|
||||||
public class SignTaskSaveResource extends BaseResource{
|
|
||||||
|
|
||||||
private static final Log log = Log.get(SignTaskSaveResource.class);
|
|
||||||
private FormCreateService formCreateService = (FormCreateService) AppContext.getBean("formCreateService");
|
|
||||||
|
|
||||||
@POST
|
|
||||||
@Path("/save")
|
|
||||||
@Produces({"application/json"})
|
|
||||||
@Consumes({"application/json"})
|
|
||||||
public Response saveSignTask(JSONObject params){
|
|
||||||
try {
|
|
||||||
formCreateService.formCreate(params);
|
|
||||||
return success("创建成功");
|
|
||||||
}catch (Exception e) {
|
|
||||||
log.error(e.getMessage(),e);
|
|
||||||
}
|
|
||||||
return fail("创建失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.seeyon.ctp.rest.resources;
|
package com.seeyon.ctp.rest.resources.signtask;
|
||||||
|
|
||||||
import cn.hutool.log.Log;
|
import cn.hutool.log.Log;
|
||||||
import com.seeyon.apps.src_signtask.service.FileHandlerService;
|
import com.seeyon.apps.src_signtask.service.FileHandlerService;
|
||||||
import com.seeyon.ctp.common.AppContext;
|
import com.seeyon.ctp.common.AppContext;
|
||||||
|
import com.seeyon.ctp.rest.resources.BaseResource;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package com.seeyon.ctp.rest.resources.signtask;
|
||||||
|
|
||||||
|
import cn.hutool.log.Log;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.seeyon.apps.src_signtask.service.FormCreateService;
|
||||||
|
import com.seeyon.apps.src_signtask.service.SignStatusQueryService;
|
||||||
|
import com.seeyon.ctp.common.AppContext;
|
||||||
|
import com.seeyon.ctp.rest.resources.BaseResource;
|
||||||
|
|
||||||
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
|
@Path("/signtask")
|
||||||
|
@Produces({"application/json", "application/xml"})
|
||||||
|
public class SignTaskResource extends BaseResource {
|
||||||
|
|
||||||
|
private static final Log log = Log.get(SignTaskResource.class);
|
||||||
|
private FormCreateService formCreateService = (FormCreateService) AppContext.getBean("formCreateService");
|
||||||
|
private SignStatusQueryService signStatusQueryService = (SignStatusQueryService) AppContext.getBean("signStatusQueryService");
|
||||||
|
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/save")
|
||||||
|
@Produces({"application/json"})
|
||||||
|
@Consumes({"application/json"})
|
||||||
|
public Response saveSignTask(JSONObject params){
|
||||||
|
try {
|
||||||
|
formCreateService.formCreate(params);
|
||||||
|
return success("创建成功");
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error(e.getMessage(),e);
|
||||||
|
return fail("创建失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/querySignStatus")
|
||||||
|
@Produces({"application/json"})
|
||||||
|
@Consumes({"application/json"})
|
||||||
|
public Response querySignStatus(JSONObject params){
|
||||||
|
try {
|
||||||
|
return success(signStatusQueryService.querySignStatus(params.getString("taskId")));
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error(e.getMessage(),e);
|
||||||
|
return fail("查询失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user