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<>();
docMap.put("fileId", fileId);
Thread.sleep(1000);
List<Object> docs = new ArrayList<>();
docs.add(docMap);
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.SuperNodeContext;
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.service.CAP4FormManager;
import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.exceptions.BusinessException;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -99,15 +101,31 @@ public class EsignOneSignerNode extends ACommonSuperNode {
String psnName = getStringField(formDataVo,"甲方签署经办人");
String psnMobile = getStringField(formDataVo,"甲方签署经办人联系方式");
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(
fileId,orgName, null, 1, null, null, null, psnMobile, psnName, null,false
,sealId);
Signer a2Signer = createOrgQiFengSigner(
fileId,orgName, aQiFengposition, 2, null, null, null, psnMobile, psnName, null,false
fileId,orgName, pos, 1, null, null, null, psnMobile, psnName, null,autoSign
,sealId);
List<Signer> signers = new ArrayList<>();
signers.add(aSigner);
signers.add(a2Signer);
return signers;
}
@@ -120,6 +138,7 @@ public class EsignOneSignerNode extends ACommonSuperNode {
fileId = uploadFileService.uploadFileToEsign(attachmentId);
}
Map<String, Object> docMap = new HashMap<>();
Thread.sleep(1000);
docMap.put("fileId", fileId);
List<Object> docs = new ArrayList<>();
docs.add(docMap);
@@ -201,12 +220,14 @@ public class EsignOneSignerNode extends ACommonSuperNode {
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 transPhone, String psnName, String psnId,Boolean autoSign,String sealId) {
Signer signer = new Signer();
signer.setSignerType(1);
signer.setSignConfig(mapOf("signOrder", order));
List<SignField> signFields = new ArrayList<>();
signer.setSignFields(signFields);
if(Boolean.FALSE.equals(autoSign)){
signer.setNoticeConfig(mapOf("noticeTypes", "1"));
@@ -218,12 +239,7 @@ public class EsignOneSignerNode extends ACommonSuperNode {
)
)
);
signer.setOrgSignerInfo(orgInfo);
}
List<SignField> signFields = new ArrayList<>();
NormalSignFieldConfig normalSignFieldConfig = new NormalSignFieldConfig();
normalSignFieldConfig.setAssignedSealId(sealId);
normalSignFieldConfig.setFreeMode(true);
@@ -233,8 +249,30 @@ public class EsignOneSignerNode extends ACommonSuperNode {
field.setNormalSignFieldConfig(normalSignFieldConfig);
field.setFileId(fileId);
signFields.add(field);
signer.setSignFields(signFields);
}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);
}
}
}
return signer;
}

View File

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