From a82589167a917919e543642eb1bb5991df166dc3 Mon Sep 17 00:00:00 2001 From: maliang Date: Mon, 11 Oct 2021 14:33:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=8C=89=E7=85=A7=E6=B3=95=E5=8A=A1?= =?UTF-8?q?=E7=BB=99=E5=AE=9A=E7=9A=84=E6=9C=80=E6=96=B0=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=B9=98=E7=94=A8?= =?UTF-8?q?=E8=BD=A6=E6=89=8B=E7=AD=BE=E3=80=81=E4=B9=98=E7=94=A8=E8=BD=A6?= =?UTF-8?q?=E7=94=B5=E5=AD=90=E7=AD=BE=E3=80=81=E5=95=86=E7=94=A8=E8=BD=A6?= =?UTF-8?q?=E6=89=8B=E7=AD=BE=E3=80=81=E5=95=86=E7=94=A8=E8=BD=A6=E7=94=B5?= =?UTF-8?q?=E5=AD=90=E7=AD=BE=E5=90=88=E5=90=8C=E6=A8=A1=E6=9D=BF=EF=BC=8C?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=B5=8B=E8=AF=95=E5=B7=A5=E4=BD=9C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Comm/LBContract/LBContractPrintList.jsp | 15 +- .../LBContractTemplate/contract_template.jsp | 25 +- .../handle/FileTemplateUtil.java | 17 +- .../action/ContractSignActionDzq.java | 379 +++++++++++++ .../action/ContractSignActionDzqUtil.java | 498 ++++++++++++++++++ .../util/MakeOneCodeAndContractModel.java | 36 +- 6 files changed, 959 insertions(+), 11 deletions(-) create mode 100644 src/com/tenwa/channelportal/action/ContractSignActionDzq.java create mode 100644 src/com/tenwa/channelportal/action/ContractSignActionDzqUtil.java diff --git a/WebContent/Tenwa/Lease/Flow/Comm/LBContract/LBContractPrintList.jsp b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/LBContractPrintList.jsp index ab637f607..99912da0d 100644 --- a/WebContent/Tenwa/Lease/Flow/Comm/LBContract/LBContractPrintList.jsp +++ b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/LBContractPrintList.jsp @@ -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{ diff --git a/WebContent/Tenwa/Lease/Flow/Comm/LBContractTemplate/contract_template.jsp b/WebContent/Tenwa/Lease/Flow/Comm/LBContractTemplate/contract_template.jsp index a16e23e7b..987e7ff11 100644 --- a/WebContent/Tenwa/Lease/Flow/Comm/LBContractTemplate/contract_template.jsp +++ b/WebContent/Tenwa/Lease/Flow/Comm/LBContractTemplate/contract_template.jsp @@ -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{ diff --git a/src/com/tenwa/app/baseFileTemplate/handle/FileTemplateUtil.java b/src/com/tenwa/app/baseFileTemplate/handle/FileTemplateUtil.java index 6d3bf6b84..02dd32063 100644 --- a/src/com/tenwa/app/baseFileTemplate/handle/FileTemplateUtil.java +++ b/src/com/tenwa/app/baseFileTemplate/handle/FileTemplateUtil.java @@ -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'}]"+"\"}]"; diff --git a/src/com/tenwa/channelportal/action/ContractSignActionDzq.java b/src/com/tenwa/channelportal/action/ContractSignActionDzq.java new file mode 100644 index 000000000..48f9c1c29 --- /dev/null +++ b/src/com/tenwa/channelportal/action/ContractSignActionDzq.java @@ -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>> parameter = new HashMap>>(); + List> companyPar = new LinkedList>(); + Map param1 = new HashMap(); + param1.put("type", "1");// 1标识当期发起公司公章,2标识当前公司下的子公司 + param1.put("mobile", "12599998888");//子公司添加接收手机号,如果不需要接收,直接填写一个虚拟不存在就行,如果需要传真实手机号 + companyPar.add(param1); + // 添加公司公章 + if("LHZL".equals(operationType)){ + Map param2 = new HashMap(); + param2.put("type", "2");// 1标识当期发起公司公章,2标识当前公司下的子公司 + param2.put("mobile", "12599998888");//子公司添加接收手机号,如果不需要接收,直接填写一个虚拟不存在就行,如果需要传真实手机号 + companyPar.add(param2); + } + parameter.put("COMPANY", companyPar); + //创建合同 + SdkResponse createContract = catu.createContract(parameter, SubjectId,bo.getAttribute("filename").getString()); + Long contractId = createContract.getResult().getId(); + //添加本地生成的合同文件 + String makefullPath = bo.getAttribute("FULLPATH").toString();// 获取生成文件路径 + SdkResponse 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 fromCondtion = new HashMap(); + Map otherProperty = new HashMap(); + 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 getPersonPar(BizObject bo, String FlowUnid) throws JBOException { + + List personPar = new LinkedList(); + + //添加个人基本信息 + 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 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;i0 && 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> parameter = new HashMap>(); + //List> companyPar = new LinkedList>(); + List companyPar=new LinkedList(); + // 添加公司公章 + 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 param2 = new HashMap(); +// param2.put("type", "2");// 1标识当期发起公司公章,2标识当前公司下的子公司 +// param2.put("mobile", "12599998888");//子公司添加接收手机号,如果不需要接收,直接填写一个虚拟不存在就行,如果需要传真实手机号 +// companyPar.add(param2); +// } + parameter.put("COMPANY", companyPar); + //添加个人基本信息 + List personPar=getPersonPar(bo,FlowUnid); + + parameter.put("PERSONAL", personPar); + ContractSignActionDzqUtil catu = new ContractSignActionDzqUtil(); + //创建合同 + SdkResponse createContract = catu.createContract(parameter, SubjectId,bo.getAttribute("filename").getString()); + Long contractId = createContract.getResult().getId(); + //添加本地生成的合同文件 + String makefullPath = bo.getAttribute("FULLPATH").toString();// 获取生成文件路径 + SdkResponse addDocumentByFile = catu.addDocumentByFile(makefullPath, SubjectId, contractId); + Long documentId = addDocumentByFile.getResult().getDocumentId(); + + List signatoryVoList=new LinkedList(); + 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 fromCondtion = new HashMap(); + Map otherProperty = new HashMap(); + 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 fromCondtion = new HashMap(); + Map otherProperty = new HashMap(); + 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; + } +} diff --git a/src/com/tenwa/channelportal/action/ContractSignActionDzqUtil.java b/src/com/tenwa/channelportal/action/ContractSignActionDzqUtil.java new file mode 100644 index 000000000..66e372cb0 --- /dev/null +++ b/src/com/tenwa/channelportal/action/ContractSignActionDzqUtil.java @@ -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 createContract(Map> parameter, String subjectId, String fileNme) throws Exception { + SdkClient client = this.getSdkClient(subjectId); + Contract draftContract = new Contract(); + draftContract.setSubject(fileNme); + draftContract.setOrdinal(false); + List 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 sdkResponse = JSONUtils.toQysResponse(response, + Contract.class); + if (!sdkResponse.getCode().equals(0)) { + throw new Exception("创建合同草稿失败,失败原因:" + sdkResponse.getMessage()); + } + return sdkResponse; + } + + //添加本地文件 + public SdkResponse 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 sdkResponse = JSONUtils.toQysResponse( + response, DocumentAddResult.class); + if (!sdkResponse.getCode().equals(0)) { + throw new Exception("根据文件添加文档失败,失败原因:" + sdkResponse.getMessage()); + } + return sdkResponse; + } + + //发起合同 + public SdkResponse send(List 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 stamperVoList = initQuerySql(tempid, documentId); + //遍历合并签署位置信息 + List 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 updateStamperList(List signatoryVoList, List listVo) { + List 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 signatoryList, List 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 initQuerySql(String tempId, Long documentId) throws Exception{ + Transaction Sqlca=null; + List 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 getStampers(String tempId,Long documentId,Long companySealActionId,Long platformSignatoryId)throws Exception{ + Transaction Sqlca=null; + List 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 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 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 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 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(); + } + } +} diff --git a/src_tenwa/com/tenwa/makeContract/util/MakeOneCodeAndContractModel.java b/src_tenwa/com/tenwa/makeContract/util/MakeOneCodeAndContractModel.java index 1c6da89d1..d8d671933 100644 --- a/src_tenwa/com/tenwa/makeContract/util/MakeOneCodeAndContractModel.java +++ b/src_tenwa/com/tenwa/makeContract/util/MakeOneCodeAndContractModel.java @@ -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); //删除原文件