This commit is contained in:
2025-09-17 16:44:41 +08:00
parent 3aeee69f41
commit 55e163792c
3 changed files with 62 additions and 23 deletions

View File

@@ -141,6 +141,7 @@ public class EsignMultipleSignerNode extends ACommonSuperNode {
} }
Map<String, Object> docMap = new HashMap<>(); Map<String, Object> docMap = new HashMap<>();
docMap.put("fileId", fileId); docMap.put("fileId", fileId);
Thread.sleep(1000);
List<Object> docs = new ArrayList<>(); List<Object> docs = new ArrayList<>();
docs.add(docMap); docs.add(docMap);
Map<String, Object> signFlowConfig = buildSignFlowConfig(formDataVo, formDataMasterBean); Map<String, Object> signFlowConfig = buildSignFlowConfig(formDataVo, formDataMasterBean);

View File

@@ -14,10 +14,12 @@ import com.seeyon.apps.ext.workflow.vo.FieldDataVo;
import com.seeyon.apps.ext.workflow.vo.FormDataVo; import com.seeyon.apps.ext.workflow.vo.FormDataVo;
import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; import com.seeyon.apps.ext.workflow.vo.SuperNodeContext;
import com.seeyon.cap4.form.bean.FormDataMasterBean; import com.seeyon.cap4.form.bean.FormDataMasterBean;
import com.seeyon.cap4.form.bean.FormDataSubBean;
import com.seeyon.cap4.form.bean.FormFieldBean; import com.seeyon.cap4.form.bean.FormFieldBean;
import com.seeyon.cap4.form.service.CAP4FormManager; import com.seeyon.cap4.form.service.CAP4FormManager;
import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.exceptions.BusinessException; import com.seeyon.ctp.common.exceptions.BusinessException;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -99,15 +101,31 @@ public class EsignOneSignerNode extends ACommonSuperNode {
String psnName = getStringField(formDataVo,"甲方签署经办人"); String psnName = getStringField(formDataVo,"甲方签署经办人");
String psnMobile = getStringField(formDataVo,"甲方签署经办人联系方式"); String psnMobile = getStringField(formDataVo,"甲方签署经办人联系方式");
String orgName = configProvider.getBizConfigByKey(EsignConfigConstants.UNITNAME); String orgName = configProvider.getBizConfigByKey(EsignConfigConstants.UNITNAME);
List<SignFieldPosition> pos = new ArrayList<>();
Map<String, List<FormDataVo>> subFormMap = formDataVo.getSubFormMap();
List<FormDataVo> subDataVos = subFormMap.get("甲方签署位置");
Boolean autoSign = true;
if(subDataVos!= null && subDataVos.size() > 0 && !subDataVos.get(0).isEmpty()){
for (FormDataVo subDataVo : subDataVos) {
Map<String, FieldDataVo> fieldDataVoMap = subDataVo.getFieldDataVoMap();
String pageNo = fieldDataVoMap.get("页码").getStringValue();
String positionX = fieldDataVoMap.get("X坐标").getStringValue();
String positionY = fieldDataVoMap.get("Y坐标").getStringValue();
SignFieldPosition position = new SignFieldPosition();
position.setPositionPage(pageNo);
position.setPositionX(Float.parseFloat(positionX));
position.setPositionY(Float.parseFloat(positionY));
pos.add(position);
}
pos.add(aQiFengposition);
}else {
autoSign = false;
}
Signer aSigner = createOrgSigner( Signer aSigner = createOrgSigner(
fileId,orgName, null, 1, null, null, null, psnMobile, psnName, null,false fileId,orgName, pos, 1, null, null, null, psnMobile, psnName, null,autoSign
,sealId); ,sealId);
Signer a2Signer = createOrgQiFengSigner(
fileId,orgName, aQiFengposition, 2, null, null, null, psnMobile, psnName, null,false
,sealId);
List<Signer> signers = new ArrayList<>(); List<Signer> signers = new ArrayList<>();
signers.add(aSigner); signers.add(aSigner);
signers.add(a2Signer);
return signers; return signers;
} }
@@ -120,6 +138,7 @@ public class EsignOneSignerNode extends ACommonSuperNode {
fileId = uploadFileService.uploadFileToEsign(attachmentId); fileId = uploadFileService.uploadFileToEsign(attachmentId);
} }
Map<String, Object> docMap = new HashMap<>(); Map<String, Object> docMap = new HashMap<>();
Thread.sleep(1000);
docMap.put("fileId", fileId); docMap.put("fileId", fileId);
List<Object> docs = new ArrayList<>(); List<Object> docs = new ArrayList<>();
docs.add(docMap); docs.add(docMap);
@@ -201,12 +220,14 @@ public class EsignOneSignerNode extends ACommonSuperNode {
return signer; return signer;
} }
private Signer createOrgSigner(String fileId ,String orgName, SignFieldPosition po, int order, private Signer createOrgSigner(String fileId ,String orgName, List<SignFieldPosition> pos, int order,
String legalName, String legalId, String orgCode, String legalName, String legalId, String orgCode,
String transPhone, String psnName, String psnId,Boolean autoSign,String sealId) { String transPhone, String psnName, String psnId,Boolean autoSign,String sealId) {
Signer signer = new Signer(); Signer signer = new Signer();
signer.setSignerType(1); signer.setSignerType(1);
signer.setSignConfig(mapOf("signOrder", order)); signer.setSignConfig(mapOf("signOrder", order));
List<SignField> signFields = new ArrayList<>();
signer.setSignFields(signFields);
if(Boolean.FALSE.equals(autoSign)){ if(Boolean.FALSE.equals(autoSign)){
signer.setNoticeConfig(mapOf("noticeTypes", "1")); signer.setNoticeConfig(mapOf("noticeTypes", "1"));
@@ -218,23 +239,40 @@ public class EsignOneSignerNode extends ACommonSuperNode {
) )
) )
); );
signer.setOrgSignerInfo(orgInfo); signer.setOrgSignerInfo(orgInfo);
NormalSignFieldConfig normalSignFieldConfig = new NormalSignFieldConfig();
normalSignFieldConfig.setAssignedSealId(sealId);
normalSignFieldConfig.setFreeMode(true);
normalSignFieldConfig.setAutoSign(false);
SignField field = new SignField();
field.setSignFieldType(0);
field.setNormalSignFieldConfig(normalSignFieldConfig);
field.setFileId(fileId);
signFields.add(field);
}else {
for (SignFieldPosition po : pos) {
NormalSignFieldConfig fieldConfig = new NormalSignFieldConfig();
fieldConfig.setAssignedSealId(sealId);
fieldConfig.setAutoSign(autoSign);
if("ALL".equals(po.getAcrossPageMode())){
fieldConfig.setSignFieldPosition(po);
fieldConfig.setSignFieldStyle(2);
SignField qiFengfield = new SignField();
qiFengfield.setSignFieldType(0);
qiFengfield.setNormalSignFieldConfig(fieldConfig);
qiFengfield.setFileId(fileId);
signFields.add(qiFengfield);
}else {
fieldConfig.setSignFieldPosition(po);
fieldConfig.setSignFieldStyle(1);
SignField field = new SignField();
field.setSignFieldType(0);
field.setNormalSignFieldConfig(fieldConfig);
field.setFileId(fileId);
signFields.add(field);
}
}
} }
List<SignField> signFields = new ArrayList<>();
NormalSignFieldConfig normalSignFieldConfig = new NormalSignFieldConfig();
normalSignFieldConfig.setAssignedSealId(sealId);
normalSignFieldConfig.setFreeMode(true);
normalSignFieldConfig.setAutoSign(false);
SignField field = new SignField();
field.setSignFieldType(0);
field.setNormalSignFieldConfig(normalSignFieldConfig);
field.setFileId(fileId);
signFields.add(field);
signer.setSignFields(signFields);
return signer; return signer;
} }

View File

@@ -48,11 +48,11 @@ public class EsignCallbackBizService {
updateFields.add(FormUpdateField.build().fieldName(updatefield).value(refId)); updateFields.add(FormUpdateField.build().fieldName(updatefield).value(refId));
updateFields.add(FormUpdateField.build().fieldName(status).value(enumItemId)); updateFields.add(FormUpdateField.build().fieldName(status).value(enumItemId));
conditions.add(FormWhereCondition.build().value(tempFormId).fieldName("ID")); conditions.add(FormWhereCondition.build().value(tempFormId).fieldName("ID"));
formDataOperator.updateMasterForm(updateFields,tablename,conditions);
JSONObject params = new JSONObject(); JSONObject params = new JSONObject();
params.put("message", "签署完成!!!"); params.put("message", "签署完成!!!");
params.put("returnCode", 1); params.put("returnCode", 1);
protUtil.sendPostNotification(params.toString(), configProvider.getBizConfigByKey(EsignConfigConstants.nodeTokenUrl), oaFlowId); protUtil.sendPostNotification(params.toString(), configProvider.getBizConfigByKey(EsignConfigConstants.nodeTokenUrl), oaFlowId);
formDataOperator.updateMasterForm(updateFields,tablename,conditions);
} }
public void handleFailSignCallbackBiz(String tableName,String statusField,String formId,String failMsg) throws Exception { public void handleFailSignCallbackBiz(String tableName,String statusField,String formId,String failMsg) throws Exception {
@@ -68,11 +68,11 @@ public class EsignCallbackBizService {
List<FormUpdateField> updateFields = new ArrayList<>(); List<FormUpdateField> updateFields = new ArrayList<>();
updateFields.add(FormUpdateField.build().fieldName(status).value(enumItemId)); updateFields.add(FormUpdateField.build().fieldName(status).value(enumItemId));
conditions.add(FormWhereCondition.build().value(tempFormId).fieldName("ID")); conditions.add(FormWhereCondition.build().value(tempFormId).fieldName("ID"));
formDataOperator.updateMasterForm(updateFields,tableName,conditions);
JSONObject params = new JSONObject(); JSONObject params = new JSONObject();
params.put("message", "签署失败: " + failMsg); params.put("message", "签署失败: " + failMsg);
params.put("returnCode", 2); params.put("returnCode", 2);
protUtil.sendPostNotification(params.toString(), configProvider.getBizConfigByKey(EsignConfigConstants.nodeTokenUrl), oaFlowId); protUtil.sendPostNotification(params.toString(), configProvider.getBizConfigByKey(EsignConfigConstants.nodeTokenUrl), oaFlowId);
formDataOperator.updateMasterForm(updateFields,tableName,conditions);
} }
private String getModuleId(String formId) { private String getModuleId(String formId) {