fix:按照法务给定的最新合同模板,新增乘用车手签、乘用车电子签、商用车手签、商用车电子签合同模板,完成测试工作。
This commit is contained in:
parent
579aa3c35f
commit
a82589167a
@ -129,10 +129,15 @@
|
||||
// alert("客户签约类型:operationType=" + operationType);
|
||||
if("LHZL"==operationType || "SQSYC"==operationType){
|
||||
sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionTwo","signIng","ProjectId=<%=projectId%>,CurUserID=<%=CurUser.getUserID()%>,FlowUnid=<%=flowunid%>,,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
}else if("CYSHDZ"==operationType ||"SYCSHHZDZQ"==operationType ){
|
||||
}//else if("CYSHDZ"==operationType ||"SYCSHHZDZQ"==operationType ){
|
||||
// alert("契约锁2.0");
|
||||
sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionNewUtils","signIng","ProjectId=<%=projectId%>,CurUserID=<%=CurUser.getUserID()%>,FlowUnid=<%=flowunid%>,,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
}else{
|
||||
//sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionNewUtils","signIng","ProjectId=<%=projectId%>,CurUserID=<%=CurUser.getUserID()%>,FlowUnid=<%=flowunid%>,,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
//}
|
||||
else if("CYCDZQ"==operationType||"SYCDZQ"==operationType||"CYSHDZ"==operationType||"SYCSHHZDZQ"==operationType){
|
||||
// 乘用车售后回租电子签约 乘用车电子签约
|
||||
// 商用车一车一挂电子签约 商用车电子签约
|
||||
sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionDzq","signIng","ProjectId=<%=projectId%>,CurUserID=<%=CurUser.getUserID()%>,FlowUnid=<%=flowunid%>,,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
}else{
|
||||
sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignAction","signIng","ProjectId=<%=projectId%>,CurUserID=<%=CurUser.getUserID()%>,FlowUnid=<%=flowunid%>,,SubjectId=<%=SubjectId%>");
|
||||
}
|
||||
var sReturns = sReturn.split("@");
|
||||
@ -184,7 +189,7 @@
|
||||
var sReturn = "";
|
||||
if("LHZL"==operationType || "SQSYC"==operationType) {
|
||||
sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionTwo", "contractSignStatus", sParams + ",operationType=" + operationType);
|
||||
}else if("CYSHDZ"==operationType ||"SYCSHHZDZQ"==operationType){
|
||||
}else if("CYSHDZ"==operationType ||"SYCSHHZDZQ"==operationType||"CYCDZQ"==operationType||"SYCDZQ"==operationType){
|
||||
// alert("契约锁2.0");
|
||||
sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionNewUtils","contractSignStatus",sParams+",operationType="+operationType);
|
||||
}else{
|
||||
@ -340,7 +345,7 @@
|
||||
var sReturn = "";
|
||||
if("LHZL"==operationType || "SQSYC"==operationType ){
|
||||
sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionTwo","sendMessageAgain","ProjectId=<%=projectId%>,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
}else if("CYSHDZ"==operationType ||"SYCSHHZDZQ"==operationType){
|
||||
}else if("CYSHDZ"==operationType ||"SYCSHHZDZQ"==operationType||"CYCDZQ"==operationType||"SYCDZQ"==operationType){
|
||||
// alert("契约锁2.0");
|
||||
sReturn = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionNewUtils","sendMessageAgain","ProjectId=<%=projectId%>,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
}else{
|
||||
|
||||
@ -340,6 +340,23 @@
|
||||
param["templateIds"]=tempids;//选择的模板ID
|
||||
}
|
||||
|
||||
//20210922 合同模板调整
|
||||
|
||||
// 客户手签(通用C端售后回租合同) 乘用车手签
|
||||
// 乘用车售后回租电子签约 乘用车电子签约
|
||||
// 专用车产品、商用车一车一挂 商用车手签
|
||||
// 商用车一车一挂电子签约 商用车电子签约
|
||||
|
||||
if("KHSQ"==operationType2){
|
||||
param["templateIds"]='f57aa80567853aa37fd6dd902021a';//选择的模板ID
|
||||
}else if("CYSHDZ"==operationType2){
|
||||
param["templateIds"]='f57aa80567853aa37fd6dd902021b';//选择的模板ID
|
||||
}else if("ZYC"==operationType2||"SYCSHHZ"==operationType2){
|
||||
param["templateIds"]='f57aa80567853aa37fd6dd902021c';//选择的模板ID
|
||||
}else if("SYCSHHZDZQ"==operationType2){
|
||||
param["templateIds"]='f57aa80567853aa37fd6dd902021d';//选择的模板ID
|
||||
}
|
||||
|
||||
param["templateParam"]=JSON.stringify(tempParam).replace(/,/g,"@");//生成模板的参数据
|
||||
for(var key in param){
|
||||
if(sparam.length>0){sparam+=",";}
|
||||
@ -372,12 +389,14 @@
|
||||
|
||||
if("LHZL"==operationType || "SQSYC"==operationType){
|
||||
falg = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionTwo","compnySignIng","FlowUnid=<%=flowunid%>,flagType=word,ProjectId=<%=projectId%>,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
//商用车一车一挂、专用车产品、网约车、大通、C端直租、客户手签、
|
||||
}else if ("SYCSHHZ"==operationType||"ZYC"==operationType||"WYC"==operationType||"DT"==operationType||"CDZZ"==operationType||"5c494617683548a49cfc050f60067ea2"==tempids){
|
||||
//商用车一车一挂、专用车产品、网约车、大通、C端直租、客户手签、商用车手签、乘用车手签
|
||||
}else if ("SYCSHHZ"==operationType||"ZYC"==operationType||"WYC"==operationType||"DT"==operationType||"CDZZ"==operationType
|
||||
||"CYCSQ"==operationType||"SYCSQ"==operationType||"5c494617683548a49cfc050f60067ea2"==tempids){
|
||||
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||"KJLHZLCYC"==operationType||"KJLHZLSYC"==operationType){//凯捷联合租赁
|
||||
}else if("KJLHZL"==operationType||"KJLHZLCYC"==operationType||"KJLHZLSYC"==operationType ||"KJCYYQR"==operationType
|
||||
||"KJSYYQR"==operationType||"CYCDZQ"==operationType||"SYCDZQ"==operationType){//凯捷联合租赁商用车手签、乘用车手签
|
||||
// alert("凯捷联合租赁,合同模板id=" + tempids);
|
||||
falg = RunJavaMethodTrans("com.tenwa.channelportal.action.ContractSignActionNewUtils","compnySignIng","FlowUnid=<%=flowunid%>,flagType=word,ProjectId=<%=projectId%>,SubjectId=<%=SubjectId%>,operationType="+operationType);
|
||||
} else{
|
||||
|
||||
@ -175,11 +175,15 @@ public class FileTemplateUtil {
|
||||
return "[{'fileTemplate':\""+"[{'text':'狮桥商用车合同模板','value':'93e4194efb604c71b394d902b2060da8'}]"+"\"}]";
|
||||
}else if("KJLHZL".equals(operationType)){//KJLHZL 调整成 KJLHZLCYC 凯捷联合融资租赁乘用车
|
||||
return "[{'fileTemplate':\""+"[{'text':'凯捷联合融资租赁合同模板','value':'5e1b90d31c4749e2af83891b48ccbe19'}]"+"\"}]";
|
||||
}else if("KJLHZLCYC".equals(operationType)){//新增 KJLHZLCYC 凯捷联合融资租赁乘用车 ''
|
||||
}else if("KJLHZLCYC".equals(operationType)){//新增 KJLHZLCYC 凯捷联合融资租赁乘用车
|
||||
return "[{'fileTemplate':\""+"[{'text':'凯捷联合融资租赁乘用车合同模板','value':'5fd761a9cb0e4530ae029ec4d713b708'}]"+"\"}]";
|
||||
}else if("KJLHZLSYC".equals(operationType)){//新增凯捷联合融资租赁商用车
|
||||
return "[{'fileTemplate':\""+"[{'text':'凯捷联合融资租赁商用车合同模板','value':'4f724ee9a25048b5b0100fb6e5967fde'}]"+"\"}]";
|
||||
}else if("CYSHDZ".equals(operationType)){
|
||||
}else if("KJCYYQR".equals(operationType)){//新增 凯捷联合租赁手签-乘用车有确认函
|
||||
return "[{'fileTemplate':\""+"[{'text':'凯捷联合融资租赁乘用车有确认函合同','value':'hh8924e442646d488b4e568a83447cy'}]"+"\"}]";
|
||||
}else if("KJSYYQR".equals(operationType)){//新增 凯捷联合租赁手签-商用车有确认函
|
||||
return "[{'fileTemplate':\""+"[{'text':'凯捷联合融资租赁商用车有确认函合同','value':'hh8924e442646d488b4e568a83447sy'}]"+"\"}]";
|
||||
}else if("CYSHDZ".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'乘用车售后回租电子签约','value':'e6972f1da71f11ebbfe100163e0e11e6'}]"+"\"}]";
|
||||
}else if("SYCSHHZDZQ".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'商用车一车一挂电子签约合同模板','value':'59f0423f984a46128292fbd8768fcd1e'}]"+"\"}]";
|
||||
@ -187,6 +191,15 @@ public class FileTemplateUtil {
|
||||
return "[{'fileTemplate':\""+"[{'text':'凯捷联合融资租赁电子签约合同模板','value':'e8e8924e442646d488b4e568a834477f'}]"+"\"}]";
|
||||
}else if("ZC".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'中车合同模板','value':'a37a3bc1919c4ba39d8ba6348fb1962e'}]"+"\"}]";
|
||||
//20210922 2021年度合同模板调整
|
||||
}else if("CYCSQ".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'乘用车手签合同模板','value':'f57aa80567853aa37fd6dd902021a'}]"+"\"}]";
|
||||
}else if("CYCDZQ".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'乘用车电子签约合同模板','value':'f57aa80567853aa37fd6dd902021b'}]"+"\"}]";
|
||||
}else if("SYCSQ".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'商用车手签合同模板','value':'f57aa80567853aa37fd6dd902021c'}]"+"\"}]";
|
||||
}else if("SYCDZQ".equals(operationType)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'商用车电子签约合同模板','value':'f57aa80567853aa37fd6dd902021d'}]"+"\"}]";
|
||||
}else{
|
||||
if("01".equals(leasform)){
|
||||
return "[{'fileTemplate':\""+"[{'text':'合同(直租)','value':'333cd5b36cd846938e618516ba9c8cbb'}]"+"\"}]";
|
||||
|
||||
379
src/com/tenwa/channelportal/action/ContractSignActionDzq.java
Normal file
379
src/com/tenwa/channelportal/action/ContractSignActionDzq.java
Normal file
@ -0,0 +1,379 @@
|
||||
package com.tenwa.channelportal.action;
|
||||
|
||||
import com.amarsoft.are.jbo.*;
|
||||
import com.base.util.StringUtil;
|
||||
import com.qiyuesuo.sdk.v2.bean.Action;
|
||||
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.qiyuesuo.v2.ContractSignEnums;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.SignatoryVo;
|
||||
import com.tenwa.comm.util.date.DateAssistant;
|
||||
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
|
||||
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 java.util.*;
|
||||
|
||||
public class ContractSignActionDzq {
|
||||
|
||||
private String FlowUnid;
|
||||
private String flagType;
|
||||
private String ProjectId;
|
||||
private String SubjectId;
|
||||
private String customerType;
|
||||
private String CurUserID;
|
||||
private String operationType;
|
||||
private String tempid;
|
||||
|
||||
//直接添加公司公章
|
||||
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 {
|
||||
ContractSignActionTwoOwnUtil catu = new ContractSignActionTwoOwnUtil();
|
||||
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 {
|
||||
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);
|
||||
//创建合同
|
||||
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(null, SubjectId, contractId, documentId,tempid);
|
||||
//调用公司盖章
|
||||
catu.companySealSign(SubjectId, contractId);
|
||||
// ContractSignVtwoUtils contractSignVtwoUtils = new ContractSignVtwoUtils();
|
||||
// System.out.println("claimSignInsuranceTwo 发起公司盖章");
|
||||
// String tempId="5c494617683548a49cfc050f60067ea2";
|
||||
// String fileName=bo.getAttribute("filename").getString();
|
||||
// String filePath=makefullPath;
|
||||
// String res = contractSignVtwoUtils.sign(ContractSignEnums.ContractSignTypeEnum.SIGNATURE_DEFAULT,
|
||||
// tempId, SubjectId, fileName, filePath, null);
|
||||
|
||||
|
||||
bo.setAttributeValue("DOCUMENT_ID",documentId);
|
||||
bo.setAttributeValue("SINGCONTRACT_ID", 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);
|
||||
String downloadstatus = catu.contractDownload(SubjectId, documentId, makefullPath);
|
||||
System.out.println("合同下载log===" + downloadstatus);
|
||||
return "success";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
tx.rollback();
|
||||
e.printStackTrace();
|
||||
System.out.println("法人客户生成合同盖章失败" + e.getMessage());
|
||||
return "flase@error";
|
||||
}
|
||||
}
|
||||
private List<SignatoryVo> getPersonPar(BizObject bo, String FlowUnid) throws JBOException {
|
||||
|
||||
List<SignatoryVo> personPar = new LinkedList<SignatoryVo>();
|
||||
|
||||
//添加个人基本信息
|
||||
SignatoryVo czVo=new SignatoryVo();
|
||||
czVo.setSignatoryType(ContractSignEnums.SignatoryTypeEnum.PERSON_CZ.getType());
|
||||
czVo.setSignatorySubType(ContractSignEnums.SignatoryTypeEnum.PERSON_CZ.getSubType());
|
||||
czVo.setName(bo.getAttribute("CUSTOMERNAME").toString());
|
||||
czVo.setMobile(bo.getAttribute("TELEPHONE").toString());
|
||||
personPar.add(czVo);
|
||||
|
||||
//获取共同申请人的信息
|
||||
SignatoryVo gtVo=new SignatoryVo();
|
||||
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){
|
||||
gtVo.setSignatoryType(ContractSignEnums.SignatoryTypeEnum.PERSON_GT.getType());
|
||||
gtVo.setSignatorySubType(ContractSignEnums.SignatoryTypeEnum.PERSON_GT.getSubType());
|
||||
gtVo.setName(name);
|
||||
gtVo.setMobile(mobile);
|
||||
personPar.add(gtVo);
|
||||
}
|
||||
}
|
||||
//获取担保人信息
|
||||
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){
|
||||
SignatoryVo dbVo=new SignatoryVo();
|
||||
if(i==0){
|
||||
dbVo.setSignatoryType(ContractSignEnums.SignatoryTypeEnum.PERSON_DBONE.getType());
|
||||
dbVo.setSignatorySubType(ContractSignEnums.SignatoryTypeEnum.PERSON_DBONE.getSubType());
|
||||
}else if(i==1){
|
||||
dbVo.setSignatoryType(ContractSignEnums.SignatoryTypeEnum.PERSON_DBTWO.getType());
|
||||
dbVo.setSignatorySubType(ContractSignEnums.SignatoryTypeEnum.PERSON_DBTWO.getSubType());
|
||||
}
|
||||
dbVo.setName(name);
|
||||
dbVo.setMobile(mobile);
|
||||
personPar.add(dbVo);
|
||||
}
|
||||
}
|
||||
return personPar;
|
||||
}
|
||||
|
||||
//个人直接发起电子签约
|
||||
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;
|
||||
// 乘用车售后回租电子签约 乘用车电子签约
|
||||
// 商用车一车一挂电子签约 商用车电子签约
|
||||
if("CYCDZQ".equals(operationType)||"CYSHDZ".equals(operationType) ){
|
||||
tempid="f57aa80567853aa37fd6dd902021b";
|
||||
}else if( "SYCDZQ".equals(operationType)||"SYCSHHZDZQ".equals(operationType) ){
|
||||
tempid="f57aa80567853aa37fd6dd902021d";
|
||||
}
|
||||
|
||||
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<SignatoryVo>> parameter = new HashMap<String, List<SignatoryVo>>();
|
||||
//List<Map<String, String>> companyPar = new LinkedList<Map<String, String>>();
|
||||
List<SignatoryVo> companyPar=new LinkedList<SignatoryVo>();
|
||||
// 添加公司公章
|
||||
SignatoryVo comVo=new SignatoryVo();
|
||||
comVo.setSignatoryType(ContractSignEnums.SignatoryTypeEnum.PARENT_COMPANY.getType());
|
||||
comVo.setSignatorySubType(ContractSignEnums.SignatoryTypeEnum.PARENT_COMPANY.getSubType());
|
||||
comVo.setMobile("12599998888");
|
||||
companyPar.add(comVo);
|
||||
// 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<SignatoryVo> personPar=getPersonPar(bo,FlowUnid);
|
||||
|
||||
parameter.put("PERSONAL", personPar);
|
||||
ContractSignActionDzqUtil catu = new ContractSignActionDzqUtil();
|
||||
//创建合同
|
||||
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();
|
||||
|
||||
List<SignatoryVo> signatoryVoList=new LinkedList<SignatoryVo>();
|
||||
signatoryVoList.addAll(companyPar);
|
||||
signatoryVoList.addAll(personPar);
|
||||
//发起合同
|
||||
catu.send(signatoryVoList, SubjectId, contractId, documentId,tempid);
|
||||
|
||||
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();// 获取生成文件路径
|
||||
|
||||
ContractSignActionTwoOwnUtil catu = new ContractSignActionTwoOwnUtil();
|
||||
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());
|
||||
ContractSignActionTwoOwnUtil catu = new ContractSignActionTwoOwnUtil();
|
||||
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;
|
||||
}
|
||||
|
||||
public String getTempid() {
|
||||
return tempid;
|
||||
}
|
||||
|
||||
public void setTempid(String tempid) {
|
||||
this.tempid = tempid;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,498 @@
|
||||
package com.tenwa.channelportal.action;
|
||||
|
||||
import com.amarsoft.are.jbo.JBOException;
|
||||
import com.amarsoft.awe.util.ASResultSet;
|
||||
import com.amarsoft.awe.util.SqlObject;
|
||||
import com.amarsoft.awe.util.Transaction;
|
||||
import com.amarsoft.dict.als.cache.CacheLoaderFactory;
|
||||
import com.qiyuesuo.sdk.v2.SdkClient;
|
||||
import com.qiyuesuo.sdk.v2.bean.*;
|
||||
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.DocumentAddResult;
|
||||
import com.qiyuesuo.sdk.v2.response.SdkResponse;
|
||||
import com.qiyuesuo.sdk.v2.utils.IOUtils;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.ContractSignEnums;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.SignatoryVo;
|
||||
import com.tenwa.app.manage.qiyuesuo.v2.StamperVo;
|
||||
import com.tenwa.util.MultiSubjectUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.util.*;
|
||||
|
||||
public class ContractSignActionDzqUtil {
|
||||
|
||||
private static final ResourceBundle resourceBunlde = ResourceBundle.getBundle("qiyuesuo");
|
||||
|
||||
|
||||
//深圳公司参数
|
||||
private static final String sZ_Url = resourceBunlde.getString("SZ_Url");
|
||||
private static final String sZ_Key = resourceBunlde.getString("SZ_Key");
|
||||
private static final String sZ_Secret = resourceBunlde.getString("SZ_Secret");
|
||||
private static final String sZ_OfficialSealId = resourceBunlde.getString("SZ_OfficialSealId");
|
||||
private static final String sZ_CompanyName = resourceBunlde.getString("SZ_CompanyName");
|
||||
|
||||
//天津公司参数
|
||||
private static final String tJ_Url = resourceBunlde.getString("TJ_Url");
|
||||
private static final String tJ_Key = resourceBunlde.getString("TJ_Key");
|
||||
private static final String tJ_Secret = resourceBunlde.getString("TJ_Secret");
|
||||
private static final String tJ_OfficialSealId = resourceBunlde.getString("TJ_OfficialSealId");
|
||||
private static final String tJ_CompanyName = resourceBunlde.getString("TJ_CompanyName");
|
||||
|
||||
//子公司参数(辉煌)
|
||||
private static final String hH_CompanyName = resourceBunlde.getString("HH_CompanyName");
|
||||
private static final String hH_OfficialSealId = resourceBunlde.getString("HH_OfficialSealId");
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(sZ_Url);
|
||||
System.out.println(sZ_CompanyName);
|
||||
|
||||
}
|
||||
|
||||
private SdkClient getSdkClient(String subjectId){
|
||||
if(MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){
|
||||
return new SdkClient(sZ_Url, sZ_Key, sZ_Secret);
|
||||
}else if (MultiSubjectUtil.TJSUBJECTID.equals(subjectId)){
|
||||
return new SdkClient(sZ_Url, sZ_Key, sZ_Secret);//应客户要求,现在都是以深圳主体发起
|
||||
//return new SdkClient(tJ_Url, tJ_Key, tJ_Secret);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getComPanyName(String subjectId){
|
||||
if(MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){
|
||||
return sZ_CompanyName;
|
||||
}else if (MultiSubjectUtil.TJSUBJECTID.equals(subjectId)){
|
||||
return tJ_CompanyName;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//创建合同
|
||||
public SdkResponse<Contract> createContract(Map<String, List<SignatoryVo>> parameter, String subjectId, String fileNme) throws Exception {
|
||||
SdkClient client = this.getSdkClient(subjectId);
|
||||
Contract draftContract = new Contract();
|
||||
draftContract.setSubject(fileNme);
|
||||
draftContract.setOrdinal(false);
|
||||
List<SignatoryVo> list = parameter.get("PERSONAL");
|
||||
if(list!=null && list.size()>0){
|
||||
for (SignatoryVo vo : list) {
|
||||
Signatory persoanlSignatory = new Signatory();
|
||||
persoanlSignatory.setTenantType(vo.getSignatoryType());
|
||||
persoanlSignatory.setTenantName(vo.getName());
|
||||
persoanlSignatory.setReceiver(new User(vo.getSignatorySubType(), vo.getMobile(), "MOBILE"));
|
||||
draftContract.addSignatory(persoanlSignatory);
|
||||
}
|
||||
}
|
||||
list = parameter.get("COMPANY");
|
||||
if(list!=null && list.size()>0){
|
||||
for (SignatoryVo vo : list) {
|
||||
Signatory platformSignatory = new Signatory();
|
||||
platformSignatory.setTenantType(vo.getSignatoryType());
|
||||
Action sealAction = new Action();
|
||||
sealAction.setType("COMPANY");
|
||||
if (ContractSignEnums.SignatoryTypeEnum.PARENT_COMPANY.getSubType().equals(vo.getSignatorySubType())) {
|
||||
if(MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){
|
||||
platformSignatory.setTenantName(sZ_CompanyName);
|
||||
vo.setName(sZ_CompanyName);
|
||||
sealAction.setName(sZ_CompanyName);
|
||||
sealAction.setSealId(new Long(sZ_OfficialSealId));
|
||||
}else if (MultiSubjectUtil.TJSUBJECTID.equals(subjectId)){
|
||||
platformSignatory.setTenantName(tJ_CompanyName);
|
||||
vo.setName(tJ_CompanyName);
|
||||
sealAction.setName(tJ_CompanyName);
|
||||
sealAction.setSealId(new Long(tJ_OfficialSealId));
|
||||
}
|
||||
} else {
|
||||
platformSignatory.setTenantName(hH_CompanyName);
|
||||
vo.setName(hH_CompanyName);
|
||||
sealAction.setName(hH_CompanyName);
|
||||
sealAction.setSealId(new Long(hH_OfficialSealId) );
|
||||
}
|
||||
platformSignatory.setReceiver(new User(vo.getMobile(), "MOBILE"));//子公司必须设置接收方,不管是否是子公司,都设置了一个
|
||||
platformSignatory.addAction(sealAction);
|
||||
draftContract.addSignatory(platformSignatory);
|
||||
}
|
||||
}
|
||||
draftContract.setSend(false);
|
||||
String response = null;
|
||||
try {
|
||||
response = client.service(new ContractDraftRequest(draftContract));
|
||||
} catch (Exception e) {
|
||||
throw new Exception("创建合同草稿请求服务/器失败,失败原因:" + e.getMessage());
|
||||
}
|
||||
System.out.println(response);
|
||||
SdkResponse<Contract> sdkResponse = JSONUtils.toQysResponse(response,
|
||||
Contract.class);
|
||||
if (!sdkResponse.getCode().equals(0)) {
|
||||
throw new Exception("创建合同草稿失败,失败原因:" + sdkResponse.getMessage());
|
||||
}
|
||||
return sdkResponse;
|
||||
}
|
||||
|
||||
//添加本地文件
|
||||
public SdkResponse<DocumentAddResult> addDocumentByFile(String filePath,String subjectId,Long contractId)throws Exception {
|
||||
SdkClient client = this.getSdkClient(subjectId);
|
||||
// 进入本地文件
|
||||
StreamFile file = new StreamFile(new FileInputStream(new File(filePath)));
|
||||
String response = null;
|
||||
try {
|
||||
// PDF为本地文件的类型,请修改为对应的本地文件类型
|
||||
response = client.service(new DocumentAddByFileRequest(contractId,file, "pdf", "由文件创建文档"));
|
||||
} catch (Exception e) {
|
||||
throw new Exception("根据文件添加文档请求服务器失败,失败原因:" + e.getMessage());
|
||||
}
|
||||
SdkResponse<DocumentAddResult> sdkResponse = JSONUtils.toQysResponse(
|
||||
response, DocumentAddResult.class);
|
||||
if (!sdkResponse.getCode().equals(0)) {
|
||||
throw new Exception("根据文件添加文档失败,失败原因:" + sdkResponse.getMessage());
|
||||
}
|
||||
return sdkResponse;
|
||||
}
|
||||
|
||||
//发起合同
|
||||
public SdkResponse send(List<SignatoryVo> signatoryVoList,String subjectId, Long contractId,Long documentId,String tempid) throws Exception {
|
||||
SdkClient client = this.getSdkClient(subjectId);
|
||||
Contract draft = getContract(subjectId, contractId).getResult();
|
||||
//赋值更新Volist,为发起合同做准备
|
||||
updateVoList(draft.getSignatories(),signatoryVoList);
|
||||
//从数据库获取签章配置信息
|
||||
List<StamperVo> stamperVoList = initQuerySql(tempid, documentId);
|
||||
//遍历合并签署位置信息
|
||||
List<Stamper> stampers = updateStamperList(signatoryVoList,stamperVoList);
|
||||
// for (Signatory signatory : draft.getSignatories()) {
|
||||
// // 获取平台方SignatoryId,以及对应的公章签署ActionId和法人章签署ActionId
|
||||
// if (signatory.getTenantType().equals("COMPANY")) {
|
||||
// for (Action action : signatory.getActions()) {
|
||||
// platformSignatoryId = signatory.getId();
|
||||
// companySealActionId = action.getId();
|
||||
// stampers=getStampers(tempid,documentId,companySealActionId,platformSignatoryId);
|
||||
//// Stamper sealStamper = new Stamper();
|
||||
//// sealStamper.setPage(0);
|
||||
//// sealStamper.setType("COMPANY");
|
||||
//// sealStamper.setActionId(companySealActionId);
|
||||
//// sealStamper.setSignatoryId(platformSignatoryId);
|
||||
//// sealStamper.setDocumentId(documentId);
|
||||
//// if (action.getName().equals(sZ_CompanyName)||action.getName().equals(tJ_CompanyName)) {
|
||||
////// sealStamper.setKeyword("甲方(出租人1):(公章) ");
|
||||
//// sealStamper.setKeyword("甲方(出租人):(公章)");
|
||||
//// sealStamper.setOffsetX(-0.12);
|
||||
////// sealStamper.setOffsetY(-0.04);
|
||||
//// sealStamper.setOffsetY(-0.13);
|
||||
////
|
||||
//// //添加第二个盖章位置
|
||||
//// Stamper sealStamper2 = new Stamper();
|
||||
//// sealStamper2.setPage(0);
|
||||
//// sealStamper2.setType("COMPANY");
|
||||
//// sealStamper2.setActionId(companySealActionId);
|
||||
//// sealStamper2.setSignatoryId(platformSignatoryId);
|
||||
//// sealStamper2.setDocumentId(documentId);
|
||||
//// sealStamper2.setKeyword("抵押权人:安鹏融资租赁(天津)有限公司");
|
||||
//// sealStamper2.setOffsetX(-0.18);
|
||||
//// sealStamper2.setOffsetY(-0.10);
|
||||
//// stampers.add(sealStamper2);
|
||||
//// stampers.add(sealStamper);
|
||||
//// } else {
|
||||
//// //sealStamper.setKeyword("甲方(出租人2):(公章)");
|
||||
//// sealStamper.setKeyword("甲方(出租人1):(公章) ");
|
||||
//// sealStamper.setOffsetX(-0.12);
|
||||
////// sealStamper.setOffsetY(-0.13);
|
||||
//// sealStamper.setOffsetY(-0.04);
|
||||
//// stampers.add(sealStamper);
|
||||
//// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
String response = null;
|
||||
try {
|
||||
response = client.service(new ContractSendRequest(draft.getId(),stampers));
|
||||
} catch (Exception e) {
|
||||
throw new Exception("发起合同请求服务器失败,失败原因:" + e.getMessage());
|
||||
}
|
||||
SdkResponse sdkResponse = JSONUtils.toQysResponse(response);
|
||||
if (!sdkResponse.getCode().equals(0)) {
|
||||
throw new Exception("发起合同失败,失败原因:" + sdkResponse.getMessage());
|
||||
}
|
||||
return sdkResponse;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 遍历合并签署位置信息
|
||||
* @param signatoryVoList
|
||||
* @param listVo
|
||||
* @return
|
||||
*/
|
||||
private List<Stamper> updateStamperList(List<SignatoryVo> signatoryVoList, List<StamperVo> listVo) {
|
||||
List<Stamper> listStamper = new ArrayList<>();
|
||||
for(StamperVo stamperVo : listVo){
|
||||
for(SignatoryVo signatoryVo : signatoryVoList){
|
||||
if(stamperVo.getStamperSubType().equals(signatoryVo.getSignatorySubType())){
|
||||
Stamper stamper = stamperVo.getStamper();
|
||||
stamper.setSignatoryId(signatoryVo.getSignatoryId());
|
||||
stamper.setActionId(signatoryVo.getActionId());
|
||||
listStamper.add(stamper);
|
||||
}
|
||||
}
|
||||
}
|
||||
return listStamper;
|
||||
}
|
||||
/**
|
||||
* 赋值操作更新 actionId, SignatoryId
|
||||
* @param signatoryList
|
||||
* @param signatoryVoList
|
||||
* @return
|
||||
*/
|
||||
private void updateVoList(List<Signatory> signatoryList, List<SignatoryVo> signatoryVoList) {
|
||||
for(SignatoryVo signatoryVo : signatoryVoList){
|
||||
for (Signatory signatory : signatoryList) {
|
||||
if(signatoryVo.getName().equals(signatory.getTenantName()) && signatoryVo.getSignatoryType().equals(signatory.getTenantType())){
|
||||
signatoryVo.setSignatoryId(signatory.getId());
|
||||
if (signatory.getTenantType().equals(ContractSignEnums.SignatoryTypeEnum.PARENT_COMPANY.getType())) {
|
||||
// logger.info("ContractSignVtwoUtils#updateVoList 当签署方信息为公司时");
|
||||
// logger.info("ContractSignVtwoUtils#updateVoList 开始遍历签署方信息中的签署流程");
|
||||
for (Action action : signatory.getActions()) {
|
||||
signatoryVo.setActionId(action.getId());//公司签署位置必传项
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stamper 签署位置
|
||||
* 公司签署位置需要指定ActionId
|
||||
* 个人签署位置需要指定SignatoryId
|
||||
*/
|
||||
private List<StamperVo> initQuerySql(String tempId, Long documentId) throws Exception{
|
||||
Transaction Sqlca=null;
|
||||
List<StamperVo> list = new ArrayList<>();
|
||||
try {
|
||||
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
|
||||
String selSql = " select stamper_type, stamper_sub_type, keyword, offsetX, offsetY, keywordIndex from lb_contract_sign_stamper where temp_id='"+ tempId +"' " ;
|
||||
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
|
||||
while(rs.next()) {
|
||||
StamperVo stamperVo = new StamperVo();
|
||||
stamperVo.setStamperSubType(rs.getString("stamper_sub_type")); // 签署位置类型:母公司,子公司,承租人,共同申请人,担保人1,担保人2
|
||||
Stamper stamper = new Stamper();
|
||||
stamper.setPage(0);// 坐标页码,0代表所有
|
||||
stamper.setDocumentId(documentId);//合同文档ID
|
||||
// 获取接口推送所需数据
|
||||
stamper.setType(rs.getString("stamper_type")); // 签署类型:COMPANY(公章),PERSONAL(个人签名),LP(法人章),TIMESTAMP(时间戳),ACROSS_PAGE(骑缝章)
|
||||
stamper.setKeyword(rs.getString("keyword")); // 关键字
|
||||
stamper.setOffsetX(Double.parseDouble(rs.getString("offsetX"))); // 横坐标/关键字偏移量
|
||||
stamper.setOffsetY(Double.parseDouble(rs.getString("offsetY"))); // 纵坐标/关键字偏移量
|
||||
stamper.setKeywordIndex(Integer.parseInt(rs.getString("keywordIndex"))); // 关键字索引:1代表第1个关键字,0代表所有关键字,-1代表倒数第1个关键字;默认为1
|
||||
stamperVo.setStamper(stamper);
|
||||
list.add(stamperVo);
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
throw new Exception("ContractSignVtwoUtils#initQuerySql 签署位置sql查询,失败原因:" + e.getMessage());
|
||||
}finally{
|
||||
if(Sqlca!=null){
|
||||
try {
|
||||
Sqlca.disConnect();
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Sqlca = null;
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据tempId获得签章的相关配置信息
|
||||
* @param tempId
|
||||
* @param documentId
|
||||
* @param companySealActionId
|
||||
* @param platformSignatoryId
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
List<Stamper> getStampers(String tempId,Long documentId,Long companySealActionId,Long platformSignatoryId)throws Exception{
|
||||
Transaction Sqlca=null;
|
||||
List<Stamper> list = new ArrayList<>();
|
||||
try {
|
||||
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
|
||||
String selSql = " select stamper_type, stamper_sub_type, keyword, offsetX, offsetY, keywordIndex from lb_contract_sign_stamper where temp_id='"+ tempId +"' " ;
|
||||
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
|
||||
while(rs.next()) {
|
||||
Stamper stamper = new Stamper();
|
||||
stamper.setPage(0);// 坐标页码,0代表所有
|
||||
stamper.setDocumentId(documentId);//合同文档ID
|
||||
// 获取接口推送所需数据
|
||||
stamper.setType(rs.getString("stamper_type")); // 签署类型:COMPANY(公章),PERSONAL(个人签名),LP(法人章),TIMESTAMP(时间戳),ACROSS_PAGE(骑缝章)
|
||||
stamper.setActionId(companySealActionId);
|
||||
stamper.setSignatoryId(platformSignatoryId);
|
||||
stamper.setKeyword(rs.getString("keyword")); // 关键字
|
||||
stamper.setOffsetX(Double.parseDouble(rs.getString("offsetX"))); // 横坐标/关键字偏移量
|
||||
stamper.setOffsetY(Double.parseDouble(rs.getString("offsetY"))); // 纵坐标/关键字偏移量
|
||||
stamper.setKeywordIndex(Integer.parseInt(rs.getString("keywordIndex"))); // 关键字索引:1代表第1个关键字,0代表所有关键字,-1代表倒数第1个关键字;默认为1
|
||||
list.add(stamper);
|
||||
}
|
||||
}catch (Exception e){
|
||||
throw new Exception("ContractSignVtwoUtils#initQuerySql 签署位置sql查询,失败原因:" + e.getMessage());
|
||||
}finally{
|
||||
if(Sqlca!=null){
|
||||
try {
|
||||
Sqlca.disConnect();
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Sqlca = null;
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
//公司盖章
|
||||
public SdkResponse companySealSign(String subjectId,Long contractId) throws Exception {
|
||||
String response = null;
|
||||
try {
|
||||
SdkClient client = this.getSdkClient(subjectId);
|
||||
Contract contract = this.getContract(subjectId,contractId).getResult();
|
||||
List<Signatory> signatories = contract.getSignatories();
|
||||
if(signatories!=null && signatories.size()>0){
|
||||
for (Signatory signatory : signatories) {
|
||||
String tenantType = signatory.getTenantType();
|
||||
String status = signatory.getStatus();
|
||||
if(tenantType!=null && "COMPANY".equals(tenantType) && status!=null && "SIGNING".equals(status)){
|
||||
SignParam param = new SignParam();
|
||||
param.setContractId(contractId);
|
||||
String company = signatory.getTenantName();
|
||||
System.out.println("盖章公司名称:"+company);
|
||||
param.setTenantName(company);
|
||||
|
||||
if(sZ_CompanyName.equals(company)){
|
||||
param.setSealId(new Long(sZ_OfficialSealId));
|
||||
}else if(tJ_CompanyName.equals(company)){
|
||||
param.setSealId(new Long(tJ_OfficialSealId));
|
||||
}else if(hH_CompanyName.equals(company)){
|
||||
param.setSealId(new Long(hH_OfficialSealId));
|
||||
}
|
||||
response = client.service(new ContractSignCompanyRequest(param));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new Exception("公章签署请求服务器失败,失败原因:" + e.getMessage());
|
||||
}
|
||||
SdkResponse sdkResponse = JSONUtils.toQysResponse(response);
|
||||
if (!sdkResponse.getCode().equals(0)) {
|
||||
throw new Exception("公章签署失败,失败原因:" + sdkResponse.getMessage());
|
||||
}
|
||||
return sdkResponse;
|
||||
}
|
||||
|
||||
public String getContractStatus(String subjectId, Long contractId) throws Exception{
|
||||
Contract contract = this.getContract(subjectId,contractId).getResult();
|
||||
boolean stu = true;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
List<Signatory> signatories = contract.getSignatories();
|
||||
if(signatories!=null && signatories.size()>0){
|
||||
for (Signatory signatory : signatories) {
|
||||
String tenantType = signatory.getTenantType();
|
||||
String status = signatory.getStatus();
|
||||
if(tenantType!=null && "PERSONAL".equals(tenantType)){
|
||||
if(stu && status != null && (!status.equals("SIGNED")) ){
|
||||
stu = false ;
|
||||
}
|
||||
String statusName = "";
|
||||
switch (status) {
|
||||
case "DRAFT":
|
||||
statusName="草稿";
|
||||
break;
|
||||
case "RECALLED":
|
||||
statusName="已撤回";
|
||||
break;
|
||||
case "SIGNING":
|
||||
statusName="签署中";
|
||||
break;
|
||||
case "REJECTED":
|
||||
statusName="已退回";
|
||||
break;
|
||||
case "SIGNED":
|
||||
statusName="已完成";
|
||||
break;
|
||||
case "EXPIRED":
|
||||
statusName="已过期";
|
||||
break;
|
||||
case "FILLING":
|
||||
statusName="拟定中";
|
||||
break;
|
||||
case "WAITING":
|
||||
statusName="待签署";
|
||||
break;
|
||||
case "INVALIDING":
|
||||
statusName="作废中";
|
||||
break;
|
||||
case "INVALIDED":
|
||||
statusName="已作废";
|
||||
break;
|
||||
default:
|
||||
statusName="状态未匹配";
|
||||
break;
|
||||
}
|
||||
sb.append(signatory.getTenantName()).append(":").append(statusName).append(";");
|
||||
}
|
||||
}
|
||||
}
|
||||
if(stu){
|
||||
return "success";
|
||||
}else{
|
||||
return sb.substring(0, sb.length()-1);
|
||||
}
|
||||
}
|
||||
public SdkResponse<Contract> getContract(String subjectId, Long contractId) throws Exception {
|
||||
SdkClient client = this.getSdkClient(subjectId);
|
||||
ContractDetailRequest request = new ContractDetailRequest(contractId);
|
||||
String response;
|
||||
try {
|
||||
response = client.service(request);
|
||||
} catch (Exception e) {
|
||||
throw new Exception("合同详情查询,失败原因:" + e.getMessage());
|
||||
}
|
||||
SdkResponse<Contract> sdkResponse = JSONUtils.toQysResponse(response, Contract.class);
|
||||
if (!sdkResponse.getCode().equals(0)) {
|
||||
throw new Exception("合同详情查询,失败原因:" + sdkResponse.getMessage());
|
||||
}
|
||||
return sdkResponse;
|
||||
}
|
||||
//合同下载
|
||||
public String contractDownload(String subjectId, Long documentId, String filePath) throws Exception {
|
||||
SdkClient client = this.getSdkClient(subjectId);
|
||||
DocumentDownloadRequest request = new DocumentDownloadRequest(documentId);
|
||||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(filePath);
|
||||
client.download(request, fos);
|
||||
IOUtils.safeClose(fos);
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new Exception("合同文件下载,失败原因:" + e.getMessage());
|
||||
}finally{
|
||||
fos.close();
|
||||
}
|
||||
return "合同下载成功!";
|
||||
}
|
||||
|
||||
public String messageSend(String subjectId,Long signContractId){
|
||||
SdkClient client = this.getSdkClient(subjectId);
|
||||
ContractNoticeRequest request = new ContractNoticeRequest(signContractId);
|
||||
String response = client.service(request);
|
||||
SdkResponse responseObj = JSONUtils.toQysResponse(response);
|
||||
if(responseObj.getCode() == 0) {
|
||||
return "success";
|
||||
} else {
|
||||
System.out.println("短信重发失败:"+responseObj.getCode()+":"+responseObj.getMessage());
|
||||
return responseObj.getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -345,8 +345,42 @@ public class MakeOneCodeAndContractModel {
|
||||
img.setAbsolutePosition(400, 800);
|
||||
under10.addImage(img);
|
||||
}
|
||||
|
||||
|
||||
if(pages>10&&"02".equals(leasform)&&("乘用车手签".equals(docName)||"商用车手签".equals(docName))){
|
||||
//车辆交接单水印
|
||||
PdfContentByte under5 = stamp.getUnderContent(5);
|
||||
img.scaleAbsolute(180, 32);
|
||||
img.setAbsolutePosition(400, 800);
|
||||
under5.addImage(img);
|
||||
|
||||
PdfContentByte under7 = stamp.getUnderContent(7);
|
||||
img.scaleAbsolute(180, 32);
|
||||
img.setAbsolutePosition(400, 800);
|
||||
under7.addImage(img);
|
||||
//租金支付表水印
|
||||
PdfContentByte under9 = stamp.getUnderContent(11);
|
||||
img.scaleAbsolute(180, 32);
|
||||
img.setAbsolutePosition(400, 800);
|
||||
under9.addImage(img);
|
||||
}
|
||||
|
||||
if(pages>7&&"02".equals(leasform)&&("乘用车电子签约".equals(docName)||"商用车电子签约".equals(docName))){
|
||||
//车辆交接单水印
|
||||
PdfContentByte under5 = stamp.getUnderContent(5);
|
||||
img.scaleAbsolute(180, 32);
|
||||
img.setAbsolutePosition(400, 800);
|
||||
under5.addImage(img);
|
||||
|
||||
PdfContentByte under7 = stamp.getUnderContent(6);
|
||||
img.scaleAbsolute(180, 32);
|
||||
img.setAbsolutePosition(400, 800);
|
||||
under7.addImage(img);
|
||||
//租金支付表水印
|
||||
PdfContentByte under9 = stamp.getUnderContent(8);
|
||||
img.scaleAbsolute(180, 32);
|
||||
img.setAbsolutePosition(400, 800);
|
||||
under9.addImage(img);
|
||||
}
|
||||
stamp.close();// 关闭
|
||||
File tempfile = new File(InPdfFile);
|
||||
//删除原文件
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user