中车新增租金计划模板
This commit is contained in:
parent
7602b543ac
commit
91df982237
@ -377,6 +377,9 @@
|
||||
falg = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionTwoOwn","compnySignIng","FlowUnid=<%=flowunid%>,flagType=word,ProjectId=<%=projectId%>,SubjectId=<%=SubjectId%>,tempid="+tempids);
|
||||
}else if("ZC"==operationType){
|
||||
falg="success";
|
||||
}else if("KJLHZL"==operationType){//凯捷联合租赁
|
||||
// alert("凯捷联合租赁,合同模板id=" + tempids);
|
||||
falg = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionNewUtils","compnySignIng","FlowUnid=<%=flowunid%>,flagType=word,ProjectId=<%=projectId%>,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
} else{
|
||||
falg = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignAction","compnySignIng","FlowUnid=<%=flowunid%>,flagType=word,ProjectId=<%=projectId%>,SubjectId=<%=SubjectId%>");
|
||||
}
|
||||
|
||||
@ -79,7 +79,12 @@
|
||||
//模板号
|
||||
// param["templateNo"]="ceaa18f72b0e4bbaa6e66dcfd7e32c87";
|
||||
param["templateNo"]="2ef0d0fa5dfb4fe2bf3ff6d4487dc22a";
|
||||
|
||||
|
||||
//todo 判断当前合同是否为中车 中车模板:69cec0b49c2111eb82b800163e0e11e6
|
||||
var sResult = RunJavaMethodTrans("com.tenwa.lease.flow.contract.check.ContractInfoCheck","checkChannelZC","contractid=" + contract_ids[i]);
|
||||
if("SUCCESS"==sResult){//中车返回为SUCCESS
|
||||
param["templateNo"]="69cec0b49c2111eb82b800163e0e11e6";
|
||||
}
|
||||
//生成文件关联关系
|
||||
tempParam["OBJECTTYPE"]="租金通知书";
|
||||
tempParam["contract_id"]=contract_ids[i];
|
||||
@ -152,13 +157,24 @@
|
||||
var PLAN_LISTS=getItemValueArray(0,"PLAN_LIST");
|
||||
var contract_ids=getItemValueArray(0,"contract_id");
|
||||
var subjectIds=getItemValueArray(0,"subjectid");
|
||||
|
||||
for(var i=0;i<PAYMENT_NUMBERS.length;i++){
|
||||
var plan_number=PAYMENT_NUMBERS[i];//投放编号
|
||||
var plan_list=PLAN_LISTS[i];//期次
|
||||
var contractID = contract_ids[i];
|
||||
var subjectId = subjectIds[i];
|
||||
var result=RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignAction","claimSignA","PAYMENT_NUMBER="+plan_number+",PLAN_LIST="+plan_list+",contract_id="+contractID+",flagType=start,SubjectId="+subjectId);
|
||||
var result= "";
|
||||
//todo 判断当前合同是否为中车 中车模板:69cec0b49c2111eb82b800163e0e11e6
|
||||
var sResult = RunJavaMethodTrans("com.tenwa.lease.flow.contract.check.ContractInfoCheck","checkChannelZC","contractid=" + contract_ids[i]);
|
||||
if("SUCCESS"==sResult){//中车返回为SUCCESS
|
||||
var tempId = "69cec0b49c2111eb82b800163e0e11e6";
|
||||
result=RunJavaMethodTrans("com.tenwa.channelportal.action.ContractPlanListSignAction","claimSignPlanListTwo",
|
||||
"planNumber="+plan_number+",planList="+plan_list+",contractId="+contractID+",flagType=start,subjectId="+subjectId
|
||||
+",tempId="+tempId);
|
||||
}else {
|
||||
result=RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignAction","claimSignA",
|
||||
"PAYMENT_NUMBER="+plan_number+",PLAN_LIST="+plan_list+",contract_id="+contractID+",flagType=start,SubjectId="+subjectId);
|
||||
}
|
||||
|
||||
if("success"==result){
|
||||
number++;
|
||||
}
|
||||
|
||||
@ -32,6 +32,9 @@ TJ_CompanyName=\u5b89\u9e4f\u5929\u6d25\u6709\u9650\u516c\u53f8
|
||||
HH_CompanyName=\u5b89\u9e4f\u79df\u8d41\u6d4b\u8bd5\u5b50\u516c\u53f8
|
||||
#合同专用章
|
||||
HH_OfficialSealId=2730629214314173089
|
||||
|
||||
#KJ_CompanyName=\u5317\u4eac\u5b89\u9e4f\u79df\u8d41\u6d4b\u8bd5\u6709\u9650\u516c\u53f8
|
||||
KJ_CompanyName=\u5317\u4eac\u5b89\u9e4f\u79df\u8d41\u6d4b\u8bd5\u6709\u9650\u516c\u53f8
|
||||
#KJ_OfficialSealId=2786070848694391520
|
||||
KJ_OfficialSealId=2786070848694391520
|
||||
|
||||
|
||||
|
||||
@ -173,6 +173,8 @@ public class FileTemplateUtil {
|
||||
return "[{'fileTemplate':\""+"[{'text':'联合租赁','value':'7ae245ef8b644b62a4658069adab6c32'}]"+"\"}]";
|
||||
}else if("SQSYC".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'狮桥商用车合同模板','value':'93e4194efb604c71b394d902b2060da8'}]"+"\"}]";
|
||||
}else if("KJLHZL".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'¿½ÝÁªºÏÈÚ×Ê×âÁÞºÏͬģ°å','value':'5e1b90d31c4749e2af83891b48ccbe19'}]"+"\"}]";
|
||||
}else if("ZC".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'中车合同模板','value':'a37a3bc1919c4ba39d8ba6348fb1962e'}]"+"\"}]";
|
||||
}else{
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
package com.tenwa.app.manage.qiyuesuo.v2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 契约锁合同签约需要的枚举
|
||||
*/
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.tenwa.app.manage.qiyuesuo.v2;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.amarsoft.are.jbo.JBOException;
|
||||
import com.amarsoft.awe.util.ASResultSet;
|
||||
import com.amarsoft.awe.util.SqlObject;
|
||||
@ -9,20 +10,15 @@ import com.tenwa.app.manage.qiyuesuo.v2.ContractSignEnums.ContractSignTypeEnum;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignEnums.SignatoryTypeEnum;
|
||||
import com.qiyuesuo.sdk.v2.SdkClient;
|
||||
import com.qiyuesuo.sdk.v2.bean.*;
|
||||
import com.qiyuesuo.sdk.v2.bean.Signatory;
|
||||
import com.qiyuesuo.sdk.v2.http.StreamFile;
|
||||
import com.qiyuesuo.sdk.v2.json.JSONUtils;
|
||||
import com.qiyuesuo.sdk.v2.param.SignParam;
|
||||
import com.qiyuesuo.sdk.v2.request.*;
|
||||
import com.qiyuesuo.sdk.v2.response.ContractPageResult;
|
||||
import com.qiyuesuo.sdk.v2.response.DocumentAddResult;
|
||||
import com.qiyuesuo.sdk.v2.response.SdkResponse;
|
||||
import com.qiyuesuo.sdk.v2.utils.IOUtils;
|
||||
import com.tenwa.comm.util.date.DateAssistant;
|
||||
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
|
||||
import com.tenwa.util.MultiSubjectUtil;
|
||||
import jbo.app.tenwa.doc.LB_DOC_CONTRACT_LIST;
|
||||
import jbo.com.tenwa.lease.carbrand.LB_CONTRACT_SIGN_LOG;
|
||||
import oracle.sql.TIMESTAMP;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@ -31,7 +27,9 @@ import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class ContractSignVtwoUtils {
|
||||
|
||||
@ -54,14 +52,20 @@ public class ContractSignVtwoUtils {
|
||||
private static final String tJ_CompanyName = resourceBunlde.getString("TJ_CompanyName");
|
||||
|
||||
//子公司参数(辉煌)
|
||||
public static final String HH_CHILD_SUBJECT_TYPE = "0";
|
||||
private static final String hH_CompanyName = resourceBunlde.getString("HH_CompanyName");
|
||||
private static final String hH_OfficialSealId = resourceBunlde.getString("HH_OfficialSealId");
|
||||
|
||||
//子公司参数(凯捷)
|
||||
public static final String KJ_CHILD_SUBJECT_TYPE = "1";
|
||||
private static final String kJ_CompanyName = resourceBunlde.getString("KJ_CompanyName");
|
||||
private static final String kJ_OfficialSealId = resourceBunlde.getString("KJ_OfficialSealId");
|
||||
|
||||
|
||||
private SdkClient getSdkClient(String subjectId){
|
||||
if(MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){
|
||||
if (SubjectConstant.SZ_SUBJECT_ID.equals(subjectId)) {
|
||||
return new SdkClient(sZ_Url, sZ_Key, sZ_Secret);
|
||||
}else if (MultiSubjectUtil.TJSUBJECTID.equals(subjectId)){
|
||||
} else if (SubjectConstant.TJ_SUBJECT_ID.equals(subjectId)) {
|
||||
return new SdkClient(sZ_Url, sZ_Key, sZ_Secret);//应客户要求,现在都是以深圳主体发起
|
||||
}
|
||||
return null;
|
||||
@ -69,80 +73,118 @@ public class ContractSignVtwoUtils {
|
||||
|
||||
/**
|
||||
* 简单公司盖章
|
||||
* @param contractSignTypeEnum
|
||||
* @param tempId 合同模板id
|
||||
* @param list
|
||||
* @param subjectId
|
||||
* @param fileName
|
||||
* @param filePath
|
||||
* @param qysParams
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public String sign(ContractSignTypeEnum contractSignTypeEnum, String tempId,
|
||||
String subjectId, String fileName, String filePath, List<SignatoryVo> list) throws Exception {
|
||||
public JSONObject sign(QYSParams qysParams) throws Exception {
|
||||
JSONObject resJson = null;
|
||||
try{
|
||||
logger.info("ContractSignVtwoUtils#sign 开始调用契约锁合同签章流程 20201224");
|
||||
SdkClient client = this.getSdkClient(subjectId);
|
||||
Contract contract = new Contract();
|
||||
contract.setSubject(fileName);
|
||||
contract.setOrdinal(false);
|
||||
contract.setSend(false);
|
||||
//初始化生成公司签署方信息
|
||||
List<SignatoryVo> signatoryVos = initCompanySignatoryVoList(subjectId, contractSignTypeEnum);
|
||||
//判断是否包含用户信息
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
list = signatoryVos;
|
||||
}else {
|
||||
list.addAll(signatoryVos);
|
||||
logger.info("ContractSignVtwoUtils#sign 开始调用契约锁合同签章流程 20210207");
|
||||
logger.info("ContractSignVtwoUtils#sign 校验参数信息 20210207");
|
||||
String checkRes = checkParams(qysParams);
|
||||
if(null != checkRes){
|
||||
logger.error("ContractSignVtwoUtils#sign 校验参数信息【失败】--errorMsg=" + checkRes);
|
||||
throw new Exception(checkRes);
|
||||
}
|
||||
List<Signatory> signatories = signatoryInitList(list, subjectId, contractSignTypeEnum);
|
||||
contract.setSignatories(signatories);
|
||||
//创建合同
|
||||
//获取契约锁客户端,等待发起接口调用
|
||||
SdkClient client = this.getSdkClient(qysParams.getSubjectId());
|
||||
// 1、创建合同
|
||||
// 1.4、调用契约锁【创建合同】接口
|
||||
logger.info("ContractSignVtwoUtils#sign 创建合同 20201224");
|
||||
SdkResponse<Contract> createContract = this.createContract(contract, client);
|
||||
SdkResponse<Contract> createContract = this.createContract(qysParams, client);
|
||||
logger.info("ContractSignVtwoUtils#sign 创建合同【结束】 20201224");
|
||||
Long contractId = createContract.getResult().getId();
|
||||
List<Signatory> signatoryList = createContract.getResult().getSignatories();
|
||||
//赋值更新Volist,为发起合同做准备
|
||||
list = updateVoList(signatoryList, list);
|
||||
updateVoList(signatoryList, qysParams);
|
||||
//添加本地生成的合同文件
|
||||
logger.info("ContractSignVtwoUtils#sign 添加本地生成的合同文件 20201224");
|
||||
SdkResponse<DocumentAddResult> addDocumentByFile = this.addDocumentByFile(filePath, subjectId, contractId, client);
|
||||
SdkResponse<DocumentAddResult> addDocumentByFile = this.addDocumentByFile(qysParams, contractId, client);
|
||||
logger.info("ContractSignVtwoUtils#sign 添加本地生成的合同文件【结束】 20201224");
|
||||
Long documentId = addDocumentByFile.getResult().getDocumentId();
|
||||
//发起合同
|
||||
logger.info("ContractSignVtwoUtils#sign 发起合同");
|
||||
this.send(contractSignTypeEnum, tempId, subjectId, contractId, documentId, client, list);
|
||||
this.send(qysParams, contractId, documentId, client);
|
||||
logger.info("ContractSignVtwoUtils#sign 发起合同【结束】");
|
||||
//调用公司盖章
|
||||
logger.info("ContractSignVtwoUtils#sign 调用公司盖章");
|
||||
this.companySealSign(subjectId, contractId, client);
|
||||
this.companySealSign(qysParams.getSubjectId(), contractId, client);
|
||||
logger.info("ContractSignVtwoUtils#sign 调用公司盖章【结束】");
|
||||
logger.info("ContractSignVtwoUtils#sign 合同下载");
|
||||
String downStatus = this.contractDownload(subjectId, documentId, filePath, client);
|
||||
String downStatus = this.contractDownload(qysParams, documentId, client);
|
||||
logger.info("ContractSignVtwoUtils#sign 合同下载【结束】");
|
||||
logger.info("ContractSignVtwoUtils#sign 合同下载log===" + downStatus);
|
||||
resJson = new JSONObject();
|
||||
resJson.put("contractId", contractId);
|
||||
resJson.put("documentId", documentId);
|
||||
}catch (Exception e){
|
||||
logger.error("ContractSignVtwoUtils#sign error={} ", e.getMessage(), e);
|
||||
return "error";
|
||||
throw new Exception(e);
|
||||
}
|
||||
return "success";
|
||||
return resJson;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 校验参数信息
|
||||
* @param qysParams
|
||||
* @return
|
||||
*/
|
||||
private String checkParams(QYSParams qysParams){
|
||||
if(StringUtils.isEmpty(qysParams.getFileName())){
|
||||
return "qysParams.fileName 不能为空";
|
||||
}else if (StringUtils.isEmpty(qysParams.getSubjectId())){
|
||||
return "qysParams.subjectId 不能为空";
|
||||
}else if (StringUtils.isEmpty(qysParams.getFilePath())){
|
||||
return "qysParams.filePath 不能为空";
|
||||
}else if (StringUtils.isEmpty(qysParams.getTempId())){
|
||||
return "qysParams.tempId 不能为空";
|
||||
}else if (null == qysParams.getContractSignTypeEnum()){
|
||||
return "qysParams.contractSignTypeEnum 不能为空";
|
||||
}else if (!SubjectConstant.SZ_SUBJECT_ID.equals(qysParams.getSubjectId()) && !SubjectConstant.TJ_SUBJECT_ID.equals(qysParams.getSubjectId())){
|
||||
return "qysParams.subjectId 当前主体id不存在";
|
||||
}else if(ContractSignTypeEnum.SIGNATURE_JOINT.getSubType().equals(qysParams.getContractSignTypeEnum().getSubType())){//联合租赁
|
||||
if(StringUtils.isEmpty(qysParams.getFileName())) {
|
||||
return "qysParams.childSubject 联合租赁时,子公司类型不能为空";
|
||||
}else if (!HH_CHILD_SUBJECT_TYPE.equals(qysParams.getChildSubject()) && !KJ_CHILD_SUBJECT_TYPE.equals(qysParams.getChildSubject())) {
|
||||
return "qysParams.childSubject 联合租赁时,当前子公司类型不存在";
|
||||
}
|
||||
}else if (ContractSignTypeEnum.ELECTRONIC_JOINT.getType().equals(qysParams.getContractSignTypeEnum().getType())){//电子签约 需要包含用户信息
|
||||
return "qysParams.list 电子签约时,签署方信息应包含用户信息,不能为空";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建合同
|
||||
* @param contract
|
||||
* @param qysParams
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public SdkResponse<Contract> createContract(Contract contract, SdkClient client) throws Exception {
|
||||
public SdkResponse<Contract> createContract(QYSParams qysParams, SdkClient client) throws Exception {
|
||||
logger.info("ContractSignVtwoUtils#createContract 保险委托授权书 -- 创建合同 20201223");
|
||||
logger.info("ContractSignVtwoUtils#createContract 【开始】遍历签署方信息");
|
||||
//公司签署方
|
||||
String response = null;
|
||||
try {
|
||||
Contract contract = new Contract();
|
||||
//合同主题(合同名称)
|
||||
contract.setSubject(qysParams.getFileName());
|
||||
//是否顺序签署;默认为true
|
||||
contract.setOrdinal(false);
|
||||
//是否发起合同;发起合同后不能再进行添加文档、指定签署位置等操作
|
||||
contract.setSend(false);
|
||||
// 1.1、初始化生成公司签署方信息
|
||||
List<SignatoryVo> signatoryVos = initCompanySignatoryVoList(qysParams);
|
||||
// 1.2、判断是否包含用户信息
|
||||
if(CollectionUtils.isEmpty(qysParams.getList())){
|
||||
qysParams.setList(signatoryVos);
|
||||
}else {
|
||||
qysParams.getList().addAll(signatoryVos);
|
||||
}
|
||||
// 1.3、整理符合契约锁规范的签署方信息
|
||||
List<Signatory> signatories = signatoryInitList(qysParams);
|
||||
contract.setSignatories(signatories);
|
||||
logger.info("ContractSignVtwoUtils#createContract 开始创建合同 contract={} ", JSONUtils.toJson(contract));
|
||||
response = client.service(new ContractDraftRequest(contract));
|
||||
logger.info("ContractSignVtwoUtils#createContract 创建合同结束 response={} ", response);
|
||||
@ -158,21 +200,155 @@ public class ContractSignVtwoUtils {
|
||||
return sdkResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化签署方的公司信息
|
||||
* @param qysParams
|
||||
* @return
|
||||
*/
|
||||
public List<SignatoryVo> initCompanySignatoryVoList(QYSParams qysParams){
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 开始初始化签署方信息subjectId={}", qysParams.getSubjectId());
|
||||
List<SignatoryVo> signatories = new ArrayList<>();
|
||||
//初始化当前公司签署方信息
|
||||
SignatoryVo signatoryVo = createCompanySignatoryVo(qysParams.getSubjectId());
|
||||
signatories.add(signatoryVo);
|
||||
if(ContractSignTypeEnum.SIGNATURE_JOINT.getSubType().equals(qysParams.getContractSignTypeEnum().getSubType())){//联合租赁
|
||||
SignatoryVo subCompany = new SignatoryVo();
|
||||
subCompany.setSignatoryType(SignatoryTypeEnum.SUB_COMPANY.getType());
|
||||
subCompany.setSignatorySubType(SignatoryTypeEnum.SUB_COMPANY.getSubType());
|
||||
subCompany.setMobile("12599998888");
|
||||
Action action = new Action();
|
||||
action.setType(SignatoryTypeEnum.SUB_COMPANY.getType());
|
||||
if(qysParams.getChildSubject().equals(HH_CHILD_SUBJECT_TYPE)){ //当前联合租赁为卡尔时
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 当前签署类型为联合签约【卡尔】");
|
||||
subCompany.setName(hH_CompanyName);
|
||||
action.setName(hH_CompanyName);
|
||||
action.setSealId(new Long(hH_OfficialSealId));
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 加载联合签约信息【卡尔】");
|
||||
}else if(qysParams.getChildSubject().equals(KJ_CHILD_SUBJECT_TYPE)){ //当前联合租赁为凯捷时
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 当前签署类型为联合签约【凯捷】");
|
||||
subCompany.setName(kJ_CompanyName);
|
||||
action.setName(kJ_CompanyName);
|
||||
action.setSealId(new Long(kJ_OfficialSealId));
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 加载联合签约信息【凯捷】");
|
||||
}
|
||||
subCompany.addAction(action);
|
||||
signatories.add(subCompany);
|
||||
}
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 初始化签署方信息【结束】signatories={}", JSONUtils.toJson(signatories));
|
||||
return signatories;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化当前主体的签署方公司信息
|
||||
* @param subjectId
|
||||
* @return
|
||||
*/
|
||||
private SignatoryVo createCompanySignatoryVo(String subjectId){
|
||||
SignatoryVo signatoryVo = new SignatoryVo();
|
||||
signatoryVo.setSignatoryType(SignatoryTypeEnum.PARENT_COMPANY.getType());
|
||||
signatoryVo.setSignatorySubType(SignatoryTypeEnum.PARENT_COMPANY.getSubType());
|
||||
signatoryVo.setMobile("12599996666");
|
||||
Action action = new Action();
|
||||
action.setType(SignatoryTypeEnum.PARENT_COMPANY.getType());
|
||||
if(SubjectConstant.SZ_SUBJECT_ID.equals(subjectId)){
|
||||
signatoryVo.setName(sZ_CompanyName);
|
||||
action.setName(sZ_CompanyName);
|
||||
action.setSealId(new Long(sZ_OfficialSealId));
|
||||
}else if (SubjectConstant.TJ_SUBJECT_ID.equals(subjectId)){
|
||||
signatoryVo.setName(tJ_CompanyName);
|
||||
action.setName(tJ_CompanyName);
|
||||
action.setSealId(new Long(tJ_OfficialSealId));
|
||||
}
|
||||
signatoryVo.addAction(action);
|
||||
return signatoryVo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 合同签署方信息转换为契约锁可调用信息
|
||||
* @param qysParams
|
||||
* @return List
|
||||
*/
|
||||
private List<Signatory> signatoryInitList(QYSParams qysParams) throws Exception{
|
||||
logger.info("ContractSignVtwoUtils#signatoryInitList 合同签署方信息转换subjectId={}", qysParams.getSubjectId());
|
||||
//初始化公司信息
|
||||
List<Signatory> list = new ArrayList<>();
|
||||
boolean checkData = true;//参数是否符合要求
|
||||
if(ContractSignTypeEnum.ELECTRONIC_JOINT.getType().equals(qysParams.getContractSignTypeEnum().getType())){//电子签约 需要包含用户信息
|
||||
logger.info("ContractSignVtwoUtils#signatoryInitList 合同签署方信息 list={}", JSONUtils.toJson(list));
|
||||
logger.info("ContractSignVtwoUtils#signatoryInitList 合同签署方信息【用户信息】signatories={}", JSONUtils.toJson(qysParams.getList()));
|
||||
if(CollectionUtils.isEmpty(qysParams.getList())){
|
||||
logger.error("ContractSignVtwoUtils#signatoryInitList 参数校验失败 电子签约 不包含签署方信息");
|
||||
throw new Exception(" 参数校验失败 电子签约 不包含签署方信息 ");
|
||||
}
|
||||
for(SignatoryVo signatoryVo : qysParams.getList()) {
|
||||
if (SignatoryTypeEnum.PERSON_CZ.getType().equals(signatoryVo.getSignatoryType())) {//电子签约 && 个人
|
||||
if (SignatoryTypeEnum.PERSON_CZ.getSubType().equals(signatoryVo.getSignatorySubType())) {//电子签约 && 承租人信息
|
||||
checkData = false;
|
||||
}
|
||||
//个人信息转化
|
||||
Signatory signatory = signatoryPersonInit(signatoryVo);
|
||||
list.add(signatory);
|
||||
}
|
||||
}
|
||||
if(checkData){
|
||||
logger.error("ContractSignVtwoUtils#signatoryInitList 参数校验失败 电子签约 不包含承租人信息");
|
||||
throw new Exception("ContractSignVtwoUtils#signatoryInitList 参数校验失败 电子签约 不包含承租人信息 ");
|
||||
}
|
||||
}
|
||||
for(SignatoryVo signatoryVo : qysParams.getList()) {
|
||||
if (SignatoryTypeEnum.PARENT_COMPANY.getType().equals(signatoryVo.getSignatoryType())) {//公司信息
|
||||
//公司信息转化
|
||||
Signatory signatory = signatoryCompanyInit(signatoryVo, qysParams.getSubjectId());
|
||||
list.add(signatory);
|
||||
}
|
||||
}
|
||||
logger.info("ContractSignVtwoUtils#signatoryInitList 初始化签署方信息【结束】list={}", JSONUtils.toJson(list));
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化为契约锁个人签署方信息
|
||||
* @param signatoryVo
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private Signatory signatoryPersonInit(SignatoryVo signatoryVo) throws Exception{
|
||||
Signatory personSignatory = new Signatory();
|
||||
personSignatory.setTenantType(signatoryVo.getSignatoryType());
|
||||
personSignatory.setTenantName(signatoryVo.getName());
|
||||
personSignatory.setReceiver(new User(signatoryVo.getSignatorySubType(), signatoryVo.getMobile(), "MOBILE"));
|
||||
return personSignatory;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化为契约锁公司签署方信息
|
||||
* @param signatoryVo
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private Signatory signatoryCompanyInit(SignatoryVo signatoryVo, String subjectId) throws Exception{
|
||||
Signatory companySignatory = new Signatory();
|
||||
companySignatory.setTenantType(signatoryVo.getSignatoryType());
|
||||
companySignatory.setTenantName(signatoryVo.getName());
|
||||
if(!SubjectConstant.SZ_SUBJECT_ID.equals(subjectId)){//如果当前的订单不是深圳,要增加接收方信息
|
||||
companySignatory.setReceiver(new User(signatoryVo.getSignatorySubType(), signatoryVo.getMobile(), "MOBILE"));
|
||||
}
|
||||
companySignatory.setActions(signatoryVo.getActions());
|
||||
return companySignatory;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用文件添加合同文件
|
||||
* @param filePath
|
||||
* @param subjectId
|
||||
* @param qysParams
|
||||
* @param contractId
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public SdkResponse<DocumentAddResult> addDocumentByFile(String filePath, String subjectId, Long contractId, SdkClient client)throws Exception {
|
||||
logger.info("ContractSignVtwoUtils#addDocumentByFile 本地文件转化为文件流 filePath={} ", filePath);
|
||||
public SdkResponse<DocumentAddResult> addDocumentByFile(QYSParams qysParams, Long contractId, SdkClient client)throws Exception {
|
||||
logger.info("ContractSignVtwoUtils#addDocumentByFile 本地文件转化为文件流 filePath={} ", qysParams.getFilePath());
|
||||
// 进入本地文件
|
||||
StreamFile file = new StreamFile(new FileInputStream(new File(filePath)));
|
||||
logger.info("ContractSignVtwoUtils#addDocumentByFile 本地文件转化为文件流【结束】 filePath={} ", filePath);
|
||||
StreamFile file = new StreamFile(new FileInputStream(new File(qysParams.getFilePath())));
|
||||
logger.info("ContractSignVtwoUtils#addDocumentByFile 本地文件转化为文件流【结束】 filePath={} ", qysParams.getFilePath());
|
||||
String response = null;
|
||||
try {
|
||||
logger.info("ContractSignVtwoUtils#addDocumentByFile 开始上传合同文件 contractId={} ", contractId);
|
||||
@ -198,7 +374,7 @@ public class ContractSignVtwoUtils {
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public SdkResponse companySealSign(String subjectId,Long contractId, SdkClient client) throws Exception {
|
||||
public SdkResponse companySealSign(String subjectId, Long contractId, SdkClient client) throws Exception {
|
||||
String response = null;
|
||||
try {
|
||||
logger.info("ContractSignVtwoUtils#companySealSign 公司盖章 contractId={} ", contractId);
|
||||
@ -221,8 +397,10 @@ public class ContractSignVtwoUtils {
|
||||
param.setSealId(new Long(sZ_OfficialSealId));
|
||||
}else if(tJ_CompanyName.equals(company)){
|
||||
param.setSealId(new Long(tJ_OfficialSealId));
|
||||
}else if(hH_CompanyName.equals(company)){
|
||||
}else if(hH_CompanyName.equals(company)){//联合租赁时,卡尔
|
||||
param.setSealId(new Long(hH_OfficialSealId));
|
||||
}else if(kJ_CompanyName.equals(company)){//联合租赁时,凯捷 2021-02-07
|
||||
param.setSealId(new Long(kJ_OfficialSealId));
|
||||
}
|
||||
logger.info("ContractSignVtwoUtils#companySealSign 开始公司遍历签署");
|
||||
response = client.service(new ContractSignCompanyRequest(param));
|
||||
@ -271,19 +449,19 @@ public class ContractSignVtwoUtils {
|
||||
|
||||
/**
|
||||
* 合同下载
|
||||
* @param subjectId
|
||||
* @param qysParams
|
||||
* @param documentId
|
||||
* @param filePath
|
||||
* @param client
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public String contractDownload(String subjectId, Long documentId, String filePath, SdkClient client) throws Exception {
|
||||
public String contractDownload(QYSParams qysParams, Long documentId, SdkClient client) throws Exception {
|
||||
logger.info("ContractSignVtwoUtils#contractDownload 合同下载 documentId={} ", documentId);
|
||||
DocumentDownloadRequest request = new DocumentDownloadRequest(documentId);
|
||||
FileOutputStream fos = null;
|
||||
try {
|
||||
logger.info("ContractSignVtwoUtils#contractDownload 创建文件输出流 filePath={} ", filePath);
|
||||
fos = new FileOutputStream(filePath);
|
||||
logger.info("ContractSignVtwoUtils#contractDownload 创建文件输出流 filePath={} ", qysParams.getFilePath());
|
||||
fos = new FileOutputStream(qysParams.getFilePath());
|
||||
logger.info("ContractSignVtwoUtils#contractDownload 开始合同下载");
|
||||
client.download(request, fos);
|
||||
logger.info("ContractSignVtwoUtils#contractDownload 合同下载【结束】");
|
||||
@ -298,30 +476,67 @@ public class ContractSignVtwoUtils {
|
||||
return "合同下载成功!";
|
||||
}
|
||||
|
||||
/**
|
||||
* 合同页面链接查询
|
||||
* @param documentId
|
||||
* @param client
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public String contractPageUrl(Long documentId, SdkClient client) throws Exception {
|
||||
logger.info("ContractSignVtwoUtils#contractPageUrl 合同页面链接查询 documentId={} ", documentId);
|
||||
String pageUrl = null;
|
||||
ContractViewPageRequest request=new ContractViewPageRequest(documentId);
|
||||
String response = client.service(request);
|
||||
SdkResponse<ContractPageResult> responseObj = JSONUtils.toQysResponse(response, ContractPageResult.class);
|
||||
if(responseObj.getCode() == 0) {
|
||||
ContractPageResult result = responseObj.getResult();
|
||||
logger.info("合同页面地址为:{}", result.getPageUrl());
|
||||
logger.info("ContractSignVtwoUtils#contractPageUrl 合同页面地址为 PageUrl={} ", result.getPageUrl());
|
||||
pageUrl = result.getPageUrl();
|
||||
} else {
|
||||
logger.info("ContractSignVtwoUtils#contractPageUrl 请求失败,错误码:{},错误信息:{}", responseObj.getCode(), responseObj.getMessage());
|
||||
}
|
||||
return pageUrl;
|
||||
}
|
||||
|
||||
// public static void main(String[] args) {
|
||||
// // 初始化sdkClient
|
||||
// String serverUrl = "https://openapi.qiyuesuo.cn";
|
||||
// String accessKey = "fjHd9oRRkQ";
|
||||
// String accessSecret = "PZXX3xiQbjRfzPqGlXv8BwRbo9FVnl";
|
||||
// SdkClient sdkClient = new SdkClient(serverUrl, accessKey, accessSecret);
|
||||
// ContractViewPageRequest request=new ContractViewPageRequest(2806190588519518413L);
|
||||
// String response = sdkClient.service(request);
|
||||
// SdkResponse<ContractPageResult> responseObj = JSONUtils.toQysResponse(response, ContractPageResult.class);
|
||||
// if(responseObj.getCode() == 0) {
|
||||
// ContractPageResult result = responseObj.getResult();
|
||||
// logger.info("合同页面地址为:{}", result.getPageUrl());
|
||||
// } else {
|
||||
// logger.info("请求失败,错误码:{},错误信息:{}", responseObj.getCode(), responseObj.getMessage());
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 发起合同
|
||||
* @param contractSignTypeEnum
|
||||
* @param tempId 合同模板id
|
||||
* @param subjectId
|
||||
* @param qysParams
|
||||
* @param contractId
|
||||
* @param documentId
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public SdkResponse send(ContractSignTypeEnum contractSignTypeEnum, String tempId, String subjectId, Long contractId,
|
||||
Long documentId, SdkClient client, List<SignatoryVo> list) throws Exception {
|
||||
public SdkResponse send(QYSParams qysParams, Long contractId, Long documentId, SdkClient client) throws Exception {
|
||||
logger.info("ContractSignVtwoUtils#send 发起合同 contractId={} ", contractId);
|
||||
Contract draft = this.getContract(subjectId, contractId, client).getResult();
|
||||
Contract draft = this.getContract(qysParams.getSubjectId(), contractId, client).getResult();
|
||||
logger.info("ContractSignVtwoUtils#send 获取契约锁合同信息 contract={} ", JSONUtils.toJson(draft));
|
||||
String contractName = draft.getSubject();
|
||||
|
||||
logger.info("ContractSignVtwoUtils#send 查询数据库签署配置信息 lb_contract_sign_stamper tempId={} ", tempId);
|
||||
List<StamperVo> listVo = initQuerySql(tempId, documentId);
|
||||
logger.info("ContractSignVtwoUtils#send 查询数据库签署配置信息 lb_contract_sign_stamper tempId={} ", qysParams.getTempId());
|
||||
List<StamperVo> listVo = initQuerySql(qysParams.getTempId(), documentId);
|
||||
logger.info("ContractSignVtwoUtils#send 遍历合并签署位置信息 contractName={} ", contractName);
|
||||
logger.info("ContractSignVtwoUtils#send 完成组装遍历合并签署位置信息 SignatoryVo.list={}", JSONUtils.toJson(list));
|
||||
logger.info("ContractSignVtwoUtils#send 完成组装遍历合并签署位置信息 SignatoryVo.list={}", JSONUtils.toJson(qysParams.getList()));
|
||||
logger.info("ContractSignVtwoUtils#send 完成组装遍历合并签署位置信息 StamperVo.listVo={}", JSONUtils.toJson(listVo));
|
||||
List<Stamper> stampers = updateStamperList(contractSignTypeEnum, list, listVo);
|
||||
List<Stamper> stampers = updateStamperList(qysParams, listVo);
|
||||
logger.info("ContractSignVtwoUtils#send 完成组装遍历合并签署位置信息 stampers={}", JSONUtils.toJson(stampers));
|
||||
String response = null;
|
||||
try {
|
||||
@ -343,14 +558,14 @@ public class ContractSignVtwoUtils {
|
||||
|
||||
/**
|
||||
* 遍历合并签署位置信息
|
||||
* @param list
|
||||
* @param qysParams
|
||||
* @param listVo
|
||||
* @return
|
||||
*/
|
||||
private List<Stamper> updateStamperList(ContractSignTypeEnum contractSignTypeEnum, List<SignatoryVo> list, List<StamperVo> listVo) {
|
||||
private List<Stamper> updateStamperList(QYSParams qysParams, List<StamperVo> listVo) {
|
||||
List<Stamper> listStamper = new ArrayList<>();
|
||||
for(StamperVo stamperVo : listVo){
|
||||
for(SignatoryVo signatoryVo : list){
|
||||
for(SignatoryVo signatoryVo : qysParams.getList()){
|
||||
if(stamperVo.getStamperSubType().equals(signatoryVo.getSignatorySubType())){
|
||||
Stamper stamper = stamperVo.getStamper();
|
||||
stamper.setSignatoryId(signatoryVo.getSignatoryId());
|
||||
@ -415,12 +630,12 @@ public class ContractSignVtwoUtils {
|
||||
/**
|
||||
* 赋值操作更新 actionId, SignatoryId
|
||||
* @param signatoryList
|
||||
* @param list
|
||||
* @param qysParams
|
||||
* @return
|
||||
*/
|
||||
private List<SignatoryVo> updateVoList(List<Signatory> signatoryList, List<SignatoryVo> list) {
|
||||
logger.info("ContractSignVtwoUtils#updateVoList 开始赋值操作更新Vo listVo= {}", JSONUtils.toJson(list));
|
||||
for(SignatoryVo signatoryVo : list){
|
||||
private void updateVoList(List<Signatory> signatoryList, QYSParams qysParams) {
|
||||
logger.info("ContractSignVtwoUtils#updateVoList 开始赋值操作更新Vo listVo= {}", JSONUtils.toJson(qysParams.getList()));
|
||||
for(SignatoryVo signatoryVo : qysParams.getList()){
|
||||
for (Signatory signatory : signatoryList) {
|
||||
logger.info("ContractSignVtwoUtils#updateVoList signatoryVo.Name={} ", signatoryVo.getName());
|
||||
logger.info("ContractSignVtwoUtils#updateVoList signatory.getTenantName={} ", signatory.getTenantName());
|
||||
@ -439,181 +654,13 @@ public class ContractSignVtwoUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("ContractSignVtwoUtils#updateVoList 赋值操作更新Vo【结束】 listVo= {}", JSONUtils.toJson(list));
|
||||
return list;
|
||||
}
|
||||
logger.info("ContractSignVtwoUtils#updateVoList 赋值操作更新Vo【结束】 listVo= {}", JSONUtils.toJson(qysParams.getList()));
|
||||
|
||||
/**
|
||||
* 初始化签署方信息
|
||||
* @param subjectId
|
||||
* @param contractSignTypeEnum
|
||||
* @return
|
||||
*/
|
||||
public List<SignatoryVo> initCompanySignatoryVoList(String subjectId, ContractSignTypeEnum contractSignTypeEnum){
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 开始初始化签署方信息subjectId={}", subjectId);
|
||||
List<SignatoryVo> signatories = new ArrayList<>();
|
||||
SignatoryVo signatoryVo = createCompanySignatoryVo(subjectId);
|
||||
signatories.add(signatoryVo);
|
||||
if(ContractSignTypeEnum.SIGNATURE_JOINT.getSubType().equals(contractSignTypeEnum.getSubType())){//联合租赁
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 当前签署类型为联合签约");
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 加载联合签约信息");
|
||||
SignatoryVo subCompany = new SignatoryVo();
|
||||
subCompany.setSignatoryType(SignatoryTypeEnum.SUB_COMPANY.getType());
|
||||
subCompany.setSignatorySubType(SignatoryTypeEnum.SUB_COMPANY.getSubType());
|
||||
subCompany.setMobile("12599998888");
|
||||
Action action = new Action();
|
||||
action.setType(SignatoryTypeEnum.SUB_COMPANY.getType());
|
||||
subCompany.setName(hH_CompanyName);
|
||||
action.setName(hH_CompanyName);
|
||||
action.setSealId(new Long(hH_OfficialSealId));
|
||||
subCompany.addAction(action);
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 加载联合签约信息");
|
||||
}
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 初始化签署方信息【结束】signatories={}", JSONUtils.toJson(signatories));
|
||||
return signatories;
|
||||
}
|
||||
|
||||
private SignatoryVo createCompanySignatoryVo(String subjectId){
|
||||
SignatoryVo signatoryVo = new SignatoryVo();
|
||||
signatoryVo.setSignatoryType(SignatoryTypeEnum.PARENT_COMPANY.getType());
|
||||
signatoryVo.setSignatorySubType(SignatoryTypeEnum.PARENT_COMPANY.getSubType());
|
||||
signatoryVo.setMobile("12599996666");
|
||||
Action action = new Action();
|
||||
action.setType(SignatoryTypeEnum.PARENT_COMPANY.getType());
|
||||
if(MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){
|
||||
signatoryVo.setName(sZ_CompanyName);
|
||||
action.setName(sZ_CompanyName);
|
||||
action.setSealId(new Long(sZ_OfficialSealId));
|
||||
}else if (MultiSubjectUtil.TJSUBJECTID.equals(subjectId)){
|
||||
signatoryVo.setName(tJ_CompanyName);
|
||||
action.setName(tJ_CompanyName);
|
||||
action.setSealId(new Long(tJ_OfficialSealId));
|
||||
}
|
||||
signatoryVo.addAction(action);
|
||||
return signatoryVo;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 初始化签署方信息
|
||||
* @param subjectId
|
||||
* @param contractSignTypeEnum
|
||||
* @return
|
||||
*/
|
||||
public List<Signatory> initBaseCompanySignatoryList(String subjectId, ContractSignTypeEnum contractSignTypeEnum){
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 开始初始化签署方信息subjectId={}", subjectId);
|
||||
List<Signatory> signatories = new ArrayList<>();
|
||||
Signatory signatory = createCompanySignatory(subjectId);
|
||||
signatories.add(signatory);
|
||||
if(ContractSignTypeEnum.SIGNATURE_JOINT.getSubType().equals(contractSignTypeEnum.getSubType())){//联合租赁
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 当前签署类型为联合签约");
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 加载联合签约信息");
|
||||
Signatory subCompany = new Signatory();
|
||||
signatory.setReceiver(new User("12599998888", "MOBILE"));
|
||||
signatory.setTenantType(SignatoryTypeEnum.PARENT_COMPANY.getType());//签署方类型:COMPANY(公司),PERSONAL(个人)
|
||||
Action action = new Action();
|
||||
action.setType(SignatoryTypeEnum.PARENT_COMPANY.getType());
|
||||
signatory.setTenantName(hH_CompanyName);
|
||||
action.setName(hH_CompanyName);
|
||||
action.setSealId(new Long(hH_OfficialSealId));
|
||||
subCompany.addAction(action);
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 加载联合签约信息");
|
||||
}
|
||||
logger.info("ContractSignVtwoUtils#initBaseCompanySignatoryList 初始化签署方信息【结束】signatories={}", JSONUtils.toJson(signatories));
|
||||
return signatories;
|
||||
}
|
||||
|
||||
private Signatory createCompanySignatory(String subjectId){
|
||||
Signatory signatory = new Signatory();
|
||||
signatory.setTenantType(SignatoryTypeEnum.PARENT_COMPANY.getType());//签署方类型:COMPANY(公司),PERSONAL(个人)
|
||||
Action action = new Action();
|
||||
action.setType(SignatoryTypeEnum.PARENT_COMPANY.getType());
|
||||
if(MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){
|
||||
signatory.setTenantName(sZ_CompanyName);
|
||||
action.setName(sZ_CompanyName);
|
||||
action.setSealId(new Long(sZ_OfficialSealId));
|
||||
}else if (MultiSubjectUtil.TJSUBJECTID.equals(subjectId)){
|
||||
signatory.setTenantName(tJ_CompanyName);
|
||||
action.setName(tJ_CompanyName);
|
||||
action.setSealId(new Long(tJ_OfficialSealId));
|
||||
}
|
||||
signatory.addAction(action);
|
||||
return signatory;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 合同签署方信息转换
|
||||
* @param signatories
|
||||
* @param subjectId
|
||||
* @return Signatory
|
||||
*/
|
||||
private List<Signatory> signatoryInitList(List<SignatoryVo> signatories, String subjectId, ContractSignTypeEnum contractSignTypeEnum) throws Exception{
|
||||
logger.info("ContractSignVtwoUtils#signatoryInitList 合同签署方信息转换subjectId={}", subjectId);
|
||||
//初始化公司信息
|
||||
List<Signatory> list = new ArrayList<>();
|
||||
boolean checkData = true;//参数是否符合要求
|
||||
if(ContractSignTypeEnum.ELECTRONIC_JOINT.getType().equals(contractSignTypeEnum.getType())){//电子签约 需要包含用户信息
|
||||
logger.info("ContractSignVtwoUtils#signatoryInitList 合同签署方信息 list={}", JSONUtils.toJson(list));
|
||||
logger.info("ContractSignVtwoUtils#signatoryInitList 合同签署方信息【用户信息】signatories={}", JSONUtils.toJson(signatories));
|
||||
if(CollectionUtils.isEmpty(signatories)){
|
||||
logger.error("ContractSignVtwoUtils#signatoryInitList 参数校验失败 电子签约 不包含用户信息");
|
||||
throw new Exception(" 参数校验失败 电子签约 不包含用户信息 ");
|
||||
}
|
||||
for(SignatoryVo signatoryVo : signatories) {
|
||||
if (SignatoryTypeEnum.PERSON_CZ.getType().equals(signatoryVo.getSignatoryType())) {//电子签约 && 个人
|
||||
if (SignatoryTypeEnum.PERSON_CZ.getSubType().equals(signatoryVo.getSignatorySubType())) {//电子签约 && 承租人信息
|
||||
checkData = false;
|
||||
}
|
||||
//个人信息转化
|
||||
Signatory signatory = signatoryPersonInit(signatoryVo);
|
||||
list.add(signatory);
|
||||
}
|
||||
}
|
||||
if(checkData){
|
||||
logger.error("ContractSignVtwoUtils#signatoryInitList 参数校验失败 电子签约 不包含承租人信息");
|
||||
throw new Exception("ContractSignVtwoUtils#signatoryInitList 参数校验失败 电子签约 不包含承租人信息 ");
|
||||
}
|
||||
}
|
||||
for(SignatoryVo signatoryVo : signatories) {
|
||||
if (SignatoryTypeEnum.PARENT_COMPANY.getType().equals(signatoryVo.getSignatoryType())) {//公司信息
|
||||
//个人信息转化
|
||||
Signatory signatory = signatoryCompanyInit(signatoryVo, subjectId);
|
||||
list.add(signatory);
|
||||
}
|
||||
}
|
||||
logger.info("ContractSignVtwoUtils#signatoryInitList 初始化签署方信息【结束】list={}", JSONUtils.toJson(list));
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化个人签署方信息
|
||||
* @param signatoryVo
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private Signatory signatoryPersonInit(SignatoryVo signatoryVo) throws Exception{
|
||||
Signatory persoanlSignatory = new Signatory();
|
||||
persoanlSignatory.setTenantType(signatoryVo.getSignatoryType());
|
||||
persoanlSignatory.setTenantName(signatoryVo.getName());
|
||||
persoanlSignatory.setReceiver(new User(signatoryVo.getSignatorySubType(), signatoryVo.getMobile(), "MOBILE"));
|
||||
return persoanlSignatory;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化公司签署方信息
|
||||
* @param signatoryVo
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private Signatory signatoryCompanyInit(SignatoryVo signatoryVo, String subjectId) throws Exception{
|
||||
Signatory companySignatory = new Signatory();
|
||||
companySignatory.setTenantType(signatoryVo.getSignatoryType());
|
||||
companySignatory.setTenantName(signatoryVo.getName());
|
||||
if(!MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){
|
||||
companySignatory.setReceiver(new User(signatoryVo.getSignatorySubType(), signatoryVo.getMobile(), "MOBILE"));
|
||||
}
|
||||
companySignatory.setActions(signatoryVo.getActions());
|
||||
return companySignatory;
|
||||
}
|
||||
}
|
||||
|
||||
103
src/com/tenwa/app/manage/qiyuesuo/v2/QYSParams.java
Normal file
103
src/com/tenwa/app/manage/qiyuesuo/v2/QYSParams.java
Normal file
@ -0,0 +1,103 @@
|
||||
package com.tenwa.app.manage.qiyuesuo.v2;
|
||||
|
||||
import java.io.Serializable;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignEnums.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 契约锁接口参数整理
|
||||
*/
|
||||
public class QYSParams implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 当前签约的业务类型
|
||||
*/
|
||||
private ContractSignTypeEnum contractSignTypeEnum;
|
||||
|
||||
/**
|
||||
* 合同/文件模板id
|
||||
*/
|
||||
private String tempId;
|
||||
|
||||
/**
|
||||
* 主体id
|
||||
*/
|
||||
private String subjectId;
|
||||
|
||||
/**
|
||||
* 联合租赁时,必传字段【0卡尔,1凯捷】
|
||||
*/
|
||||
private String childSubject;
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
private String fileName;
|
||||
|
||||
/**
|
||||
* 文件路径
|
||||
*/
|
||||
private String filePath;
|
||||
|
||||
/**
|
||||
* 签署方信息,【公司印章信息,电子签约时包含承租人、共同申请人、担保人信息】
|
||||
*/
|
||||
private List<SignatoryVo> list;
|
||||
|
||||
public ContractSignTypeEnum getContractSignTypeEnum() {
|
||||
return contractSignTypeEnum;
|
||||
}
|
||||
|
||||
public void setContractSignTypeEnum(ContractSignTypeEnum contractSignTypeEnum) {
|
||||
this.contractSignTypeEnum = contractSignTypeEnum;
|
||||
}
|
||||
|
||||
public String getTempId() {
|
||||
return tempId;
|
||||
}
|
||||
|
||||
public void setTempId(String tempId) {
|
||||
this.tempId = tempId;
|
||||
}
|
||||
|
||||
public String getSubjectId() {
|
||||
return subjectId;
|
||||
}
|
||||
|
||||
public void setSubjectId(String subjectId) {
|
||||
this.subjectId = subjectId;
|
||||
}
|
||||
|
||||
public String getChildSubject() {
|
||||
return childSubject;
|
||||
}
|
||||
|
||||
public void setChildSubject(String childSubject) {
|
||||
this.childSubject = childSubject;
|
||||
}
|
||||
|
||||
public String getFileName() {
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public void setFileName(String fileName) {
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public String getFilePath() {
|
||||
return filePath;
|
||||
}
|
||||
|
||||
public void setFilePath(String filePath) {
|
||||
this.filePath = filePath;
|
||||
}
|
||||
|
||||
public List<SignatoryVo> getList() {
|
||||
return list;
|
||||
}
|
||||
|
||||
public void setList(List<SignatoryVo> list) {
|
||||
this.list = list;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
package com.tenwa.app.manage.qiyuesuo.v2;
|
||||
|
||||
public class SubjectConstant {
|
||||
public static final String SZ_SUBJECT_ID = "aa740e4111c111eaaa0000163e0e11e6"; //深圳主体ID
|
||||
public static final String TJ_SUBJECT_ID = "d989246c11c111eaaa0000163e0e11e6"; //天津主体ID
|
||||
}
|
||||
@ -9,6 +9,9 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignVtwoUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.PropertySource;
|
||||
@ -35,7 +38,7 @@ import com.qiyuesuo.sdk.v2.utils.IOUtils;
|
||||
import com.tenwa.util.MultiSubjectUtil;
|
||||
|
||||
public class ContractSignActionTwoUtil {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ContractSignActionTwoUtil.class);
|
||||
private static final ResourceBundle resourceBunlde = ResourceBundle.getBundle("qiyuesuo");
|
||||
|
||||
|
||||
@ -410,6 +413,7 @@ public class ContractSignActionTwoUtil {
|
||||
|
||||
public String getContractStatus(String subjectId, Long contractId) throws Exception{
|
||||
Contract contract = this.getContract(subjectId,contractId).getResult();
|
||||
logger.info("getContractStatus#20210422 查询合同信息 contract=" + JSONUtils.toJson(contract));
|
||||
boolean stu = true;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
List<Signatory> signatories = contract.getSignatories();
|
||||
|
||||
@ -1,9 +1,11 @@
|
||||
package com.tenwa.channelportal.action;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.amarsoft.are.jbo.*;
|
||||
import com.tenwa.app.dao.ContractSignInfo;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignEnums;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignVtwoUtils;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.QYSParams;
|
||||
import com.tenwa.channelportal.action.generativecontract.WordToPDFUtil;
|
||||
import jbo.app.tenwa.doc.*;
|
||||
import org.apache.log4j.Logger;
|
||||
@ -160,13 +162,20 @@ public class ContractInsuranceSignAction {
|
||||
logger.info("claimSignInsuranceTwo filePath="+filePath);
|
||||
ContractSignVtwoUtils contractSignVtwoUtils = new ContractSignVtwoUtils();
|
||||
logger.info("claimSignInsuranceTwo ·¢Æð¹«Ë¾¸ÇÕÂ");
|
||||
String res = contractSignVtwoUtils.sign(ContractSignEnums.ContractSignTypeEnum.SIGNATURE_DEFAULT, tempId, subjectId, fileName, filePath, null);
|
||||
logger.info("claimSignInsuranceTwo 公司盖章【结束】 res=" + res);
|
||||
if ("success".equals(res)) {
|
||||
return "success";
|
||||
}else{
|
||||
QYSParams qysParams = new QYSParams();
|
||||
qysParams.setList(null);//手签,无需传承租人、共同申请人、担保人信息
|
||||
qysParams.setContractSignTypeEnum(ContractSignEnums.ContractSignTypeEnum.SIGNATURE_DEFAULT);//客户手签
|
||||
qysParams.setFileName(fileName);
|
||||
qysParams.setFilePath(filePath);
|
||||
qysParams.setSubjectId(subjectId);
|
||||
qysParams.setTempId(tempId);//合同模板id
|
||||
JSONObject resJson = contractSignVtwoUtils.sign(qysParams);
|
||||
if (null == resJson) {
|
||||
logger.warn("claimSignInsuranceTwo 20210415 调用契约锁盖章异常,返回盖章失败");
|
||||
return "error";
|
||||
}
|
||||
logger.info("claimSignInsuranceTwo 20210415 调用契约锁盖章成功,res=" + resJson.toJSONString());
|
||||
return "success";
|
||||
} else {
|
||||
return "error";
|
||||
}
|
||||
|
||||
@ -0,0 +1,153 @@
|
||||
package com.tenwa.channelportal.action;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.amarsoft.are.jbo.*;
|
||||
import com.tenwa.app.dao.ContractSignInfo;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignEnums;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignVtwoUtils;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.QYSParams;
|
||||
import com.tenwa.channelportal.action.generativecontract.WordToPDFUtil;
|
||||
import jbo.app.tenwa.doc.*;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import java.io.File;
|
||||
|
||||
public class ContractPlanListSignAction {
|
||||
|
||||
private static Logger logger=Logger.getLogger(ContractPlanListSignAction.class);
|
||||
|
||||
private String projectId;
|
||||
|
||||
private String planNumber;
|
||||
|
||||
private String planList;
|
||||
|
||||
private String contractNo;
|
||||
|
||||
private String contractId;
|
||||
|
||||
private String subjectId;
|
||||
|
||||
private String tempId;
|
||||
|
||||
public String getPlanNumber() {
|
||||
return planNumber;
|
||||
}
|
||||
|
||||
public void setPlanNumber(String planNumber) {
|
||||
this.planNumber = planNumber;
|
||||
}
|
||||
|
||||
public String getContractNo() {
|
||||
return contractNo;
|
||||
}
|
||||
|
||||
public void setContractNo(String contractNo) {
|
||||
this.contractNo = contractNo;
|
||||
}
|
||||
|
||||
public String getProjectId() {
|
||||
return projectId;
|
||||
}
|
||||
|
||||
public void setProjectId(String projectId) {
|
||||
this.projectId = projectId;
|
||||
}
|
||||
|
||||
public String getContractId() {
|
||||
return contractId;
|
||||
}
|
||||
|
||||
public void setContractId(String contractId) {
|
||||
this.contractId = contractId;
|
||||
}
|
||||
|
||||
public String getSubjectId() {
|
||||
return subjectId;
|
||||
}
|
||||
|
||||
public void setSubjectId(String subjectId) {
|
||||
this.subjectId = subjectId;
|
||||
}
|
||||
|
||||
public String getTempId() {
|
||||
return tempId;
|
||||
}
|
||||
|
||||
public void setTempId(String tempId) {
|
||||
this.tempId = tempId;
|
||||
}
|
||||
|
||||
public String getPlanList() {
|
||||
return planList;
|
||||
}
|
||||
|
||||
public void setPlanList(String planList) {
|
||||
this.planList = planList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 租金支付表盖章:对接契约锁2.0
|
||||
* @param tx
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public String claimSignPlanListTwo(JBOTransaction tx) throws Exception {
|
||||
logger.info("claimSignPlanListTwo 租金支付表盖章:对接契约锁2.0 开始 0413");
|
||||
String libraryid="";
|
||||
planList = planList.split("\\.")[0];
|
||||
BizObjectManager bom=JBOFactory.getBizObjectManager(jbo.app.tenwa.doc.LB_DOCRELATIVE.CLASS_NAME);
|
||||
BizObject DOCRELATIVE=bom.createQuery("plan_number=:plan_number and plan_list=:plan_list").setParameter("plan_number",planNumber).setParameter("plan_list", planList).getSingleResult(false);
|
||||
logger.info("claimSignPlanListTwo 查询文件关联信息");
|
||||
if (DOCRELATIVE != null) {
|
||||
logger.info("claimSignPlanListTwo 查询文件关联信息不为空时");
|
||||
String DOCRELATIVEid=DOCRELATIVE.getAttribute("id").toString();
|
||||
BizObjectManager bom1=JBOFactory.getBizObjectManager(jbo.app.tenwa.doc.LB_DOCLIBRARY.CLASS_NAME);
|
||||
libraryid=bom1.createQuery("relative_id=:relative_id").setParameter("relative_id", DOCRELATIVEid).getSingleResult(false).getAttribute("id").toString();
|
||||
}
|
||||
if(StringUtils.isEmpty(libraryid)){
|
||||
logger.warn("claimSignPlanListTwo 查询文件关联信息为空,返回盖章失败");
|
||||
return "error";
|
||||
}
|
||||
BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOCATTRIBUTE.CLASS_NAME, tx);
|
||||
ContractSignInfo con = null;
|
||||
BizObject bo = null;
|
||||
String info="";
|
||||
try{
|
||||
bo = contBom.createQuery("library_id=:libraryid").setParameter("libraryid", libraryid).getSingleResult(true);
|
||||
logger.info("claimSignInsuranceTwo 查询文件信息");
|
||||
if(bo != null){
|
||||
logger.info("claimSignInsuranceTwo 查询文件信息不为空时");
|
||||
String fileName = bo.getAttribute("FILENAME").toString();
|
||||
String filePath = bo.getAttribute("FULLPATH").toString();
|
||||
logger.info("claimSignInsuranceTwo fileName="+fileName);
|
||||
logger.info("claimSignInsuranceTwo filePath="+filePath);
|
||||
ContractSignVtwoUtils contractSignVtwoUtils = new ContractSignVtwoUtils();
|
||||
logger.info("claimSignInsuranceTwo 发起公司盖章");
|
||||
|
||||
QYSParams qysParams = new QYSParams();
|
||||
qysParams.setList(null);//手签,无需传承租人、共同申请人、担保人信息
|
||||
qysParams.setContractSignTypeEnum(ContractSignEnums.ContractSignTypeEnum.SIGNATURE_DEFAULT);//客户手签
|
||||
qysParams.setFileName(fileName);
|
||||
qysParams.setFilePath(filePath);
|
||||
qysParams.setSubjectId(subjectId);
|
||||
qysParams.setTempId(tempId);//合同模板id
|
||||
JSONObject resJson = contractSignVtwoUtils.sign(qysParams);
|
||||
if (null == resJson) {
|
||||
logger.warn("claimSignPlanListTwo 调用契约锁盖章异常,返回盖章失败");
|
||||
return "error";
|
||||
}
|
||||
logger.info("claimSignInsuranceTwo 公司盖章【结束】 res=" + resJson.toJSONString());
|
||||
logger.info("claimSignPlanListTwo 契约锁返回盖章成功,返回盖章success");
|
||||
return "success";
|
||||
} else {
|
||||
logger.warn("claimSignPlanListTwo 查询文件信息【LB_DOCATTRIBUTE】为空,返回盖章失败");
|
||||
return "error";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("claimSignInsuranceTwo 系统错误,错误信息: ", e);
|
||||
e.printStackTrace();
|
||||
return "error";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,337 @@
|
||||
package com.tenwa.channelportal.action;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignEnums;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignVtwoUtils;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.QYSParams;
|
||||
import jbo.app.tenwa.customer.CUSTOMER_FAMILY_TEMP;
|
||||
import jbo.app.tenwa.doc.LB_DOC_CONTRACT_LIST;
|
||||
import jbo.com.tenwa.lease.carbrand.LB_CONTRACT_SIGN_LOG;
|
||||
import jbo.com.tenwa.lease.comm.LB_GUARANTEE_UNIT_TEMP;
|
||||
import jbo.com.tenwa.lease.comm.LB_PROJECT_INFO_TEMP;
|
||||
|
||||
import com.amarsoft.are.jbo.BizObject;
|
||||
import com.amarsoft.are.jbo.BizObjectManager;
|
||||
import com.amarsoft.are.jbo.JBOException;
|
||||
import com.amarsoft.are.jbo.JBOFactory;
|
||||
import com.amarsoft.are.jbo.JBOTransaction;
|
||||
import com.qiyuesuo.sdk.v2.bean.Contract;
|
||||
import com.qiyuesuo.sdk.v2.response.DocumentAddResult;
|
||||
import com.qiyuesuo.sdk.v2.response.SdkResponse;
|
||||
import com.tenwa.app.manage.util.ContractSignActionTwoUtil;
|
||||
import com.tenwa.comm.util.date.DateAssistant;
|
||||
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* 最新版,契约锁盖章
|
||||
* 20210415
|
||||
*/
|
||||
public class ContractSignActionNewUtils {
|
||||
private static Logger logger=Logger.getLogger(ContractSignActionNewUtils.class);
|
||||
private String FlowUnid;
|
||||
private String flagType;
|
||||
private String ProjectId;
|
||||
private String SubjectId;
|
||||
private String customerType;
|
||||
private String CurUserID;
|
||||
private String operationType;
|
||||
|
||||
//直接添加公司公章
|
||||
public String compnySignIng(JBOTransaction tx) throws Exception {
|
||||
BizObjectManager pbm = JBOFactory.getBizObjectManager(LB_PROJECT_INFO_TEMP.CLASS_NAME, tx);
|
||||
BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOC_CONTRACT_LIST.CLASS_NAME, tx);
|
||||
BizObject bo = null;
|
||||
try {
|
||||
ContractSignActionTwoUtil catu = new ContractSignActionTwoUtil();
|
||||
BizObject pbo = pbm.createQuery("FLOWUNID=:flowunid").setParameter("flowunid", FlowUnid).getSingleResult(true);
|
||||
// 查询lb_doc_contract_list表
|
||||
bo = contBom.createQuery("project_id=:projectId and flow_unid=:flowunid and file_flag='yes' and (sendprocess='0' or sendprocess='2' ) ")
|
||||
.setParameter("projectId", ProjectId).setParameter("flowunid", FlowUnid).getSingleResult(true);
|
||||
if(bo == null ){
|
||||
throw new RuntimeException("请检查合同文件是否生成!");
|
||||
} else {
|
||||
//添加本地生成的合同文件
|
||||
String makefullPath = bo.getAttribute("FULLPATH").toString();// 获取生成文件路径
|
||||
String fileName = bo.getAttribute("filename").getString();
|
||||
QYSParams qysParams = new QYSParams();
|
||||
qysParams.setList(null);//手签,无需传承租人、共同申请人、担保人信息
|
||||
qysParams.setFileName(fileName);
|
||||
qysParams.setFilePath(makefullPath);
|
||||
qysParams.setSubjectId(SubjectId);
|
||||
if("KJLHZL".equals(operationType)) {//凯捷联合租赁
|
||||
qysParams.setTempId("5e1b90d31c4749e2af83891b48ccbe19");//合同模板id
|
||||
qysParams.setContractSignTypeEnum(ContractSignEnums.ContractSignTypeEnum.SIGNATURE_JOINT);//联合租赁-手签
|
||||
qysParams.setChildSubject(ContractSignVtwoUtils.KJ_CHILD_SUBJECT_TYPE);//子公司:凯捷
|
||||
}else {
|
||||
logger.warn("暂不知当前渠道的合同模板。");
|
||||
return "flase@error";
|
||||
}
|
||||
|
||||
ContractSignVtwoUtils contractSignVtwoUtils = new ContractSignVtwoUtils();
|
||||
JSONObject resJson = contractSignVtwoUtils.sign(qysParams);
|
||||
bo.setAttributeValue("DOCUMENT_ID", resJson.getLong("documentId"));
|
||||
bo.setAttributeValue("SINGCONTRACT_ID", resJson.getString("contractId"));
|
||||
bo.setAttributeValue("SIGN_TYPE", "COMPLETE");// 法人客户当盖完章改为完成状态
|
||||
bo.setAttributeValue("SENDPROCESS", "2");
|
||||
contBom.saveObject(bo);
|
||||
Map<String, String> fromCondtion = new HashMap<String, String>();
|
||||
Map<String, String> otherProperty = new HashMap<String, String>();
|
||||
String contractDocId = bo.getAttribute("id")
|
||||
.toString();
|
||||
fromCondtion.put("id", contractDocId);
|
||||
otherProperty.put("SIGNPROCESS", "0");// 发起电子签约
|
||||
otherProperty.put("CONTRACTDOCID", contractDocId);// 发起电子签约
|
||||
otherProperty.put("INPUTTIME",DateAssistant.getTodayNow());
|
||||
// 拷表的方法
|
||||
DataOperatorUtil.copySingleJBO(LB_DOC_CONTRACT_LIST.CLASS_NAME, fromCondtion,LB_CONTRACT_SIGN_LOG.CLASS_NAME, null,otherProperty, tx);
|
||||
|
||||
pbo.setAttributeValue("DATA_STATE", "8");// 状态改成电子签约,签署中
|
||||
pbm.saveObject(pbo);
|
||||
return "success";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
tx.rollback();
|
||||
e.printStackTrace();
|
||||
System.out.println("法人客户生成合同盖章失败" + e.getMessage());
|
||||
return "flase@error";
|
||||
}
|
||||
}
|
||||
|
||||
//个人直接发起电子签约
|
||||
public String signIng(JBOTransaction tx) throws Exception {
|
||||
BizObjectManager pbm = JBOFactory.getBizObjectManager(LB_PROJECT_INFO_TEMP.CLASS_NAME, tx);
|
||||
BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOC_CONTRACT_LIST.CLASS_NAME, tx);
|
||||
BizObject bo = null;
|
||||
try {
|
||||
BizObject pbo = pbm.createQuery("FLOWUNID=:flowunid")
|
||||
.setParameter("flowunid", FlowUnid).getSingleResult(true);
|
||||
// 查询lb_doc_contract_list表
|
||||
bo = contBom.createQuery("project_id=:projectId and file_flag='yes' and (sendprocess='0' or sendprocess='2' ) ")
|
||||
.setParameter("projectId", ProjectId).getSingleResult(true);
|
||||
if(bo == null ){
|
||||
throw new RuntimeException("请检查合同文件是否生成!");
|
||||
} else {
|
||||
Map<String, List<Map<String, String>>> parameter = new HashMap<String, List<Map<String, String>>>();
|
||||
List<Map<String, String>> companyPar = new LinkedList<Map<String, String>>();
|
||||
// 添加公司公章
|
||||
Map<String, String> param1 = new HashMap<String, String>();
|
||||
param1.put("type", "1");// 1标识当期发起公司公章,2标识当前公司下的子公司
|
||||
param1.put("mobile", "12599998888");//子公司添加接收手机号,如果不需要接收,直接填写一个虚拟不存在就行,如果需要传真实手机号
|
||||
companyPar.add(param1);
|
||||
if( "LHZL".equals(operationType) ){
|
||||
Map<String, String> param2 = new HashMap<String, String>();
|
||||
param2.put("type", "2");// 1标识当期发起公司公章,2标识当前公司下的子公司
|
||||
param2.put("mobile", "12599998888");//子公司添加接收手机号,如果不需要接收,直接填写一个虚拟不存在就行,如果需要传真实手机号
|
||||
companyPar.add(param2);
|
||||
}
|
||||
parameter.put("COMPANY", companyPar);
|
||||
//添加个人基本信息
|
||||
List<Map<String, String>> personPar = new LinkedList<Map<String, String>>();
|
||||
Map<String, String> sqPar = new HashMap<String, String>();
|
||||
sqPar.put("name",bo.getAttribute("CUSTOMERNAME").toString());
|
||||
sqPar.put("type", "sq");
|
||||
sqPar.put("mobile",bo.getAttribute("TELEPHONE").toString());
|
||||
personPar.add(sqPar);
|
||||
Map<String, String> gtPar = new HashMap<String, String>();
|
||||
//获取共同申请人的信息
|
||||
BizObjectManager cftm = JBOFactory.getBizObjectManager(CUSTOMER_FAMILY_TEMP.CLASS_NAME);
|
||||
BizObject cft = cftm.createQuery("flowunid=:FLowUnid and Partner_='Y'").setParameter("FLowUnid", FlowUnid).getSingleResult(false);
|
||||
if(cft!=null){
|
||||
String name = cft.getAttribute("name").toString();
|
||||
String mobile = cft.getAttribute("tel").toString();
|
||||
if(name.length()>0 && mobile.length()>0){
|
||||
gtPar.put("name",name);
|
||||
gtPar.put("type", "gt");
|
||||
gtPar.put("mobile",mobile);
|
||||
personPar.add(gtPar);
|
||||
}
|
||||
}
|
||||
//获取担保人信息
|
||||
BizObjectManager cptm = JBOFactory.getBizObjectManager(LB_GUARANTEE_UNIT_TEMP.CLASS_NAME);
|
||||
List<BizObject> cpts = cptm.createQuery("select * from O where flowunid=:flowUnid and CERTTYPE='Ind01' ").setParameter("flowUnid", FlowUnid).getResultList(false);
|
||||
int count = 0;
|
||||
if(cpts!=null && cpts.size()>2){
|
||||
count = 2;
|
||||
}else{
|
||||
count = cpts.size();
|
||||
}
|
||||
for(int i=0;i<count;i++){
|
||||
BizObject cpt = cpts.get(i);
|
||||
String name = cpt.getAttribute("FULLNAME").toString();
|
||||
String mobile = cpt.getAttribute("mobile").toString();
|
||||
if(name.length()>0 && mobile.length()>0){
|
||||
Map<String, String> dbPar = new HashMap<String, String>();
|
||||
dbPar.put("name",name);
|
||||
dbPar.put("type", "db");
|
||||
dbPar.put("mobile",mobile);
|
||||
personPar.add(dbPar);
|
||||
}
|
||||
}
|
||||
parameter.put("PERSONAL", personPar);
|
||||
ContractSignActionTwoUtil catu = new ContractSignActionTwoUtil();
|
||||
//创建合同
|
||||
SdkResponse<Contract> createContract = catu.createContract(parameter, SubjectId,bo.getAttribute("filename").getString());
|
||||
Long contractId = createContract.getResult().getId();
|
||||
//添加本地生成的合同文件
|
||||
String makefullPath = bo.getAttribute("FULLPATH").toString();// 获取生成文件路径
|
||||
SdkResponse<DocumentAddResult> addDocumentByFile = catu.addDocumentByFile(makefullPath, SubjectId, contractId);
|
||||
Long documentId = addDocumentByFile.getResult().getDocumentId();
|
||||
//发起合同
|
||||
catu.send(personPar, SubjectId, contractId, documentId);
|
||||
|
||||
bo.setAttributeValue("DOCUMENT_ID",documentId);
|
||||
bo.setAttributeValue("SINGCONTRACT_ID", contractId);
|
||||
bo.setAttributeValue("SIGN_TYPE", "SIGNING");
|
||||
bo.setAttributeValue("SENDPROCESS", "1");
|
||||
contBom.saveObject(bo);
|
||||
Map<String, String> fromCondtion = new HashMap<String, String>();
|
||||
Map<String, String> otherProperty = new HashMap<String, String>();
|
||||
String contractDocId = bo.getAttribute("id")
|
||||
.toString();
|
||||
fromCondtion.put("id", contractDocId);
|
||||
otherProperty.put("SIGNPROCESS", "0");// 发起电子签约
|
||||
otherProperty.put("CONTRACTDOCID", contractDocId);// 发起电子签约
|
||||
otherProperty.put("INPUTTIME",DateAssistant.getTodayNow());
|
||||
// 拷表的方法
|
||||
DataOperatorUtil.copySingleJBO(LB_DOC_CONTRACT_LIST.CLASS_NAME, fromCondtion,LB_CONTRACT_SIGN_LOG.CLASS_NAME, null,otherProperty, tx);
|
||||
|
||||
pbo.setAttributeValue("DATA_STATE", "8");// 状态改成电子签约,签署中
|
||||
pbm.saveObject(pbo);
|
||||
return "success";
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
tx.rollback();
|
||||
e.printStackTrace();
|
||||
System.out.println("自然人电子签约异常:" + e.getMessage());
|
||||
return "flase@error";
|
||||
}
|
||||
}
|
||||
|
||||
//查出签约结果
|
||||
public String contractSignStatus(JBOTransaction tx) throws Exception {
|
||||
BizObjectManager pbm = JBOFactory.getBizObjectManager(LB_PROJECT_INFO_TEMP.CLASS_NAME, tx);
|
||||
BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOC_CONTRACT_LIST.CLASS_NAME, tx);
|
||||
// 查询lb_doc_contract_list表
|
||||
BizObject bo = contBom.createQuery("project_id=:projectId and file_flag='yes' and (sendprocess='0' or sendprocess='1' ) ")
|
||||
.setParameter("projectId", ProjectId).getSingleResult(true);
|
||||
if(bo == null ){
|
||||
return "请检查合同文件是否生成!";
|
||||
} else {
|
||||
long signContractId = new Long(bo.getAttribute("SINGCONTRACT_ID")==null ? null : bo.getAttribute("SINGCONTRACT_ID").getString());
|
||||
long documentId = new Long(bo.getAttribute("DOCUMENT_ID")==null ? null : bo.getAttribute("DOCUMENT_ID").getString());
|
||||
String makefullPath = bo.getAttribute("FULLPATH")==null ? null : bo.getAttribute("FULLPATH").getString();// 获取生成文件路径
|
||||
|
||||
ContractSignActionTwoUtil catu = new ContractSignActionTwoUtil();
|
||||
String contractStatus = catu.getContractStatus(SubjectId, signContractId);
|
||||
if("success".equals(contractStatus)){
|
||||
//调用公司盖章
|
||||
catu.companySealSign(SubjectId, signContractId);
|
||||
bo.setAttributeValue("SIGN_TYPE", "COMPLETE");
|
||||
bo.setAttributeValue("PROCESS", "5");
|
||||
// contBom.saveObject(bo);
|
||||
Map<String, String> fromCondtion = new HashMap<String, String>();
|
||||
Map<String, String> otherProperty = new HashMap<String, String>();
|
||||
String contractDocId = bo.getAttribute("id").toString();
|
||||
fromCondtion.put("id", contractDocId);
|
||||
otherProperty.put("SIGNPROCESS", "0");// 发起电子签约
|
||||
otherProperty.put("CONTRACTDOCID", contractDocId);// 发起电子签约
|
||||
otherProperty.put("INPUTTIME",DateAssistant.getTodayNow());
|
||||
// 拷表的方法
|
||||
DataOperatorUtil.copySingleJBO(LB_DOC_CONTRACT_LIST.CLASS_NAME, fromCondtion,LB_CONTRACT_SIGN_LOG.CLASS_NAME, null,otherProperty, tx);
|
||||
|
||||
BizObject pbo = pbm.createQuery("FLOWUNID=:flowunid").setParameter("flowunid", FlowUnid).getSingleResult(true);
|
||||
pbo.setAttributeValue("DATA_STATE", "8");// 状态改成电子签约,签署中
|
||||
pbm.saveObject(pbo);
|
||||
String downloadstatus = catu.contractDownload(SubjectId, documentId, makefullPath);
|
||||
System.out.println("合同下载log===" + downloadstatus);
|
||||
bo.setAttributeValue("PROCESS", "6");
|
||||
contBom.saveObject(bo);
|
||||
return "已完成";
|
||||
}else{
|
||||
return contractStatus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String sendMessageAgain(JBOTransaction tx) {
|
||||
try{
|
||||
BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOC_CONTRACT_LIST.CLASS_NAME, tx);
|
||||
BizObject bo = null;
|
||||
bo = contBom.createQuery("select singcontract_id,filename from O where project_id =:projectId"
|
||||
+" and file_flag = 'yes' and sendprocess = '1' and sign_type = 'SIGNING'")
|
||||
.setParameter("projectId", ProjectId).getSingleResult(true);
|
||||
if(bo == null ){
|
||||
return "请检查合同文件是否生成!";
|
||||
} else {
|
||||
long signContractId =new Long(bo.getAttribute("SINGCONTRACT_ID")==null ? null : bo.getAttribute("SINGCONTRACT_ID").getString());
|
||||
ContractSignActionTwoUtil catu = new ContractSignActionTwoUtil();
|
||||
return catu.messageSend(SubjectId, signContractId);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
tx.rollback();
|
||||
} catch (JBOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
e.printStackTrace();
|
||||
return "error";
|
||||
}
|
||||
}
|
||||
|
||||
public String getFlowUnid() {
|
||||
return FlowUnid;
|
||||
}
|
||||
public void setFlowUnid(String flowUnid) {
|
||||
FlowUnid = flowUnid;
|
||||
}
|
||||
public String getFlagType() {
|
||||
return flagType;
|
||||
}
|
||||
public void setFlagType(String flagType) {
|
||||
this.flagType = flagType;
|
||||
}
|
||||
public String getProjectId() {
|
||||
return ProjectId;
|
||||
}
|
||||
public void setProjectId(String projectId) {
|
||||
ProjectId = projectId;
|
||||
}
|
||||
public String getSubjectId() {
|
||||
return SubjectId;
|
||||
}
|
||||
public void setSubjectId(String subjectId) {
|
||||
SubjectId = subjectId;
|
||||
}
|
||||
|
||||
public String getCustomerType() {
|
||||
return customerType;
|
||||
}
|
||||
|
||||
public void setCustomerType(String customerType) {
|
||||
this.customerType = customerType;
|
||||
}
|
||||
|
||||
public String getCurUserID() {
|
||||
return CurUserID;
|
||||
}
|
||||
|
||||
public void setCurUserID(String curUserID) {
|
||||
CurUserID = curUserID;
|
||||
}
|
||||
|
||||
public String getOperationType() {
|
||||
return operationType;
|
||||
}
|
||||
|
||||
public void setOperationType(String operationType) {
|
||||
this.operationType = operationType;
|
||||
}
|
||||
|
||||
}
|
||||
@ -24,9 +24,11 @@ import com.tenwa.app.manage.util.ContractSignActionTwoUtil;
|
||||
import com.tenwa.comm.util.date.DateAssistant;
|
||||
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
|
||||
import com.tenwa.lease.app.service.HttpRequestAppService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class ContractSignActionTwo {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ContractSignActionTwo.class);
|
||||
private String FlowUnid;
|
||||
private String flagType;
|
||||
private String ProjectId;
|
||||
@ -37,6 +39,7 @@ public class ContractSignActionTwo {
|
||||
|
||||
//直接添加公司公章
|
||||
public String compnySignIng(JBOTransaction tx) throws Exception {
|
||||
logger.info("compnySignIng#20210422 普通手签合同,直接盖章");
|
||||
BizObjectManager pbm = JBOFactory.getBizObjectManager(LB_PROJECT_INFO_TEMP.CLASS_NAME, tx);
|
||||
BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOC_CONTRACT_LIST.CLASS_NAME, tx);
|
||||
BizObject bo = null;
|
||||
@ -106,6 +109,7 @@ public class ContractSignActionTwo {
|
||||
|
||||
//个人直接发起电子签约
|
||||
public String signIng(JBOTransaction tx) throws Exception {
|
||||
logger.info("compnySignIng#20210422 个人直接发起电子签约,需要个人签约");
|
||||
BizObjectManager pbm = JBOFactory.getBizObjectManager(LB_PROJECT_INFO_TEMP.CLASS_NAME, tx);
|
||||
BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOC_CONTRACT_LIST.CLASS_NAME, tx);
|
||||
BizObject bo = null;
|
||||
|
||||
@ -17,6 +17,7 @@ import com.amarsoft.are.jbo.JBOTransaction;
|
||||
import com.tenwa.util.MakeContractCheck;
|
||||
|
||||
import jbo.com.tenwa.lease.comm.LB_PROJECT_INFO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
public class ContractInfoCheck {
|
||||
|
||||
@ -154,4 +155,24 @@ public class ContractInfoCheck {
|
||||
}
|
||||
return "success" ;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否为中车合同
|
||||
* @param tx
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public String checkChannelZC(JBOTransaction tx) throws Exception{
|
||||
BizObjectManager lecManger = JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME, tx);
|
||||
BizObject lec = lecManger.createQuery("select O.ZC_CONTRACT_NUMBER from O "
|
||||
+ " where O.id=:contractId")
|
||||
.setParameter("contractId", contractid).getSingleResult(true);
|
||||
if(lec !=null){
|
||||
String zcContractNumber = lec.getAttribute("ZC_CONTRACT_NUMBER").getString();
|
||||
if(!StringUtils.isEmpty(zcContractNumber)){//中车合同号非空,则为中车合同
|
||||
return "SUCCESS";
|
||||
}
|
||||
}
|
||||
return "EROOR";
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user