diff --git a/WebContent/Accounting/LoanSimulation_dormant/LCRentDormantInfo.jsp b/WebContent/Accounting/LoanSimulation_dormant/LCRentDormantInfo.jsp
index 877e469d8..2d31ddcf1 100644
--- a/WebContent/Accounting/LoanSimulation_dormant/LCRentDormantInfo.jsp
+++ b/WebContent/Accounting/LoanSimulation_dormant/LCRentDormantInfo.jsp
@@ -36,13 +36,16 @@
String phaseNo = CurPage.getParameter("PhaseNo");
String settleMethod="";
String rentOrRate="";
- BizObject condition=null;
- if(paymentNumber==null){
- condition=JBOFactory.createBizObjectQuery("jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP","flowunid=:flowunid").setParameter("flowunid", flowunid).getSingleResult(false);
+ String zcContractNum="";
+ BizObject condition=JBOFactory.createBizObjectQuery("jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP","flowunid=:flowunid").setParameter("flowunid", flowunid).getSingleResult(false);
+ if(paymentNumber==null ){
paymentNumber=condition.getAttribute("payment_number").getString();
settleMethod=condition.getAttribute("SETTLE_METHOD").getString();
rentOrRate=condition.getAttribute("RENT_OR_RATE").getString();
}
+ String contractId = condition.getAttribute("CONTRACT_ID").getString();
+ BizObject contract = JBOFactory.createBizObjectQuery("jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO","ID=:CONTRACT_ID").setParameter("CONTRACT_ID", contractId).getSingleResult(false);
+ zcContractNum=contract.getAttribute("ZC_CONTRACT_NUMBER").getString();
String sTempletNo = "LCRentDormantInfo";//--模板号--
ASObjectModel doTemp = new ASObjectModel(sTempletNo);
@@ -93,6 +96,10 @@
%><%@ include file="/Frame/resources/include/ui/include_info.jspf"%>
+<%/*~END~*/%>
+
+
+
+
+<%/*~BEGIN~可编辑区~[Editable=false;CodeAreaID=List07;Describe=自定义函数;]~*/%>
+
+<%/*~END~*/%>
+
+
+
+
+<%/*~BEGIN~可编辑区~[Editable=false;CodeAreaID=List08;Describe=页面装载时,进行初始化;]~*/%>
+
+<%/*~END~*/%>
+<%@ include file="/Frame/resources/include/include_end.jspf"%>
\ No newline at end of file
diff --git a/WebContent/Tenwa/ChannelPortal/DistributorManage/DistributorRegister/CLMSDistributorList.jsp b/WebContent/Tenwa/ChannelPortal/DistributorManage/DistributorRegister/CLMSDistributorList.jsp
index 2987ce6ec..f6276559a 100644
--- a/WebContent/Tenwa/ChannelPortal/DistributorManage/DistributorRegister/CLMSDistributorList.jsp
+++ b/WebContent/Tenwa/ChannelPortal/DistributorManage/DistributorRegister/CLMSDistributorList.jsp
@@ -17,7 +17,7 @@
dwTemp.ReadOnly = "1"; //只读模式
dwTemp.setPageSize(20);
dwTemp.genHTMLObjectWindow("");
- boolean flag = CurUser.hasRole("800R00000070");// 2021/02/26 作废(汽车业务部总监)角色改用(汽车业务部前台副总监)
+ boolean flag = CurUser.hasRole("800R00000070")||CurUser.hasRole("800R00000077");// 2021/02/26 作废(汽车业务部总监)角色改用(汽车业务部前台副总监)
String sButtons[][] =null;
if(flag){
//0、是否展示 1、 权限控制 2、 展示类型 3、按钮显示名称 4、按钮解释文字 5、按钮触发事件代码 6、 7、 8、 9、图标,CSS层叠样式 10、风格
diff --git a/WebContent/Tenwa/Lease/Flow/Comm/LBContract/AttorneyLetter.jsp b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/AttorneyLetter.jsp
index 17309ef8d..5c92f1a6b 100644
--- a/WebContent/Tenwa/Lease/Flow/Comm/LBContract/AttorneyLetter.jsp
+++ b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/AttorneyLetter.jsp
@@ -22,7 +22,7 @@
ASObjectWindow dwTemp = new ASObjectWindow(CurPage,doTemp,request);
dwTemp.Style="1"; //--设置为Grid风格--
dwTemp.ReadOnly = "1";
- dwTemp.setPageSize(15);
+ dwTemp.setPageSize(pageSize==null?50:Integer.parseInt(pageSize));
dwTemp.MultiSelect = true;
dwTemp.genHTMLObjectWindow(userId);
diff --git a/WebContent/Tenwa/Lease/Flow/Comm/LBContract/IndictmentAcceleration.jsp b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/IndictmentAcceleration.jsp
new file mode 100644
index 000000000..cacf69d59
--- /dev/null
+++ b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/IndictmentAcceleration.jsp
@@ -0,0 +1,149 @@
+<%@page import="jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP"%>
+<%@ page contentType="text/html; charset=GBK"%>
+<%@ include file="/Frame/resources/include/include_begin_list.jspf"%>
+<%@ page import="com.tenwa.doc.action.DocListInitAction" %>
+<%@ page import="com.amarsoft.app.lc.workflow.action.GetFlowAction" %>
+<%@ page import="com.amarsoft.app.util.*" %>
+<%
+ /*
+ Author: undefined 2016-09-01
+ Content: 起诉状-加速到期 IndictmentAcceleration.jsp
+ History Log:
+ */
+
+ String userId = CurUser.getUserID();
+ String orgId =CurUser.getOrgID();
+ System.out.print(orgId);
+ String falg = "true";
+ String compClientID = request.getParameter("CompClientID");
+ ASObjectModel doTemp = new ASObjectModel("IndictmentAcceleration");
+
+
+ ASObjectWindow dwTemp = new ASObjectWindow(CurPage,doTemp,request);
+ dwTemp.Style="1"; //--设置为Grid风格--
+ dwTemp.ReadOnly = "1";
+ dwTemp.setPageSize(pageSize==null?50:Integer.parseInt(pageSize));
+ dwTemp.MultiSelect = true;
+ dwTemp.genHTMLObjectWindow(userId);
+
+ //0、是否展示 1、 权限控制 2、 展示类型 3、按钮显示名称 4、按钮解释文字 5、按钮触发事件代码 6、 7、 8、 9、图标,CSS层叠样式 10、风格
+ String sButtons[][] =null;
+ sButtons=new String[][]{
+ {"true","All","Button","生成起诉状","生成起诉状","generateQuotation()","","","","btn_icon_generate"},
+ {"true","All","Button","批量下载","批量下载","lotdown()","","","","btn_icon_down"},
+ {"false","All","Button","公司盖章","公司盖章","stamp()","","","",""},
+ };
+
+%><%@include file="/Frame/resources/include/ui/include_list.jspf"%>
+
+<%@ include file="/Frame/resources/include/include_end.jspf"%>
\ No newline at end of file
diff --git a/WebContent/Tenwa/Lease/Flow/Comm/LBContract/IndictmentCancelContract.jsp b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/IndictmentCancelContract.jsp
new file mode 100644
index 000000000..693d267b8
--- /dev/null
+++ b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/IndictmentCancelContract.jsp
@@ -0,0 +1,149 @@
+<%@page import="jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP"%>
+<%@ page contentType="text/html; charset=GBK"%>
+<%@ include file="/Frame/resources/include/include_begin_list.jspf"%>
+<%@ page import="com.tenwa.doc.action.DocListInitAction" %>
+<%@ page import="com.amarsoft.app.lc.workflow.action.GetFlowAction" %>
+<%@ page import="com.amarsoft.app.util.*" %>
+<%
+ /*
+ Author: undefined 2016-09-01
+ Content: 起诉状-解除合同 IndictmentCancelContract.jsp
+ History Log:
+ */
+
+ String userId = CurUser.getUserID();
+ String orgId =CurUser.getOrgID();
+ System.out.print(orgId);
+ String falg = "true";
+ String compClientID = request.getParameter("CompClientID");
+ ASObjectModel doTemp = new ASObjectModel("IndictmentCancelContract");
+
+
+ ASObjectWindow dwTemp = new ASObjectWindow(CurPage,doTemp,request);
+ dwTemp.Style="1"; //--设置为Grid风格--
+ dwTemp.ReadOnly = "1";
+ dwTemp.setPageSize(pageSize==null?50:Integer.parseInt(pageSize));
+ dwTemp.MultiSelect = true;
+ dwTemp.genHTMLObjectWindow(userId);
+
+ //0、是否展示 1、 权限控制 2、 展示类型 3、按钮显示名称 4、按钮解释文字 5、按钮触发事件代码 6、 7、 8、 9、图标,CSS层叠样式 10、风格
+ String sButtons[][] =null;
+ sButtons=new String[][]{
+ {"true","All","Button","生成起诉状","生成起诉状","generateQuotation()","","","","btn_icon_generate"},
+ {"true","All","Button","批量下载","批量下载","lotdown()","","","","btn_icon_down"},
+ {"false","All","Button","公司盖章","公司盖章","stamp()","","","",""},
+ };
+
+%><%@include file="/Frame/resources/include/ui/include_list.jspf"%>
+
+<%@ include file="/Frame/resources/include/include_end.jspf"%>
\ No newline at end of file
diff --git a/WebContent/Tenwa/Lease/Flow/Comm/LBContract/ReminderLetter.jsp b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/ReminderLetter.jsp
index adfa2b118..3897ab3e9 100644
--- a/WebContent/Tenwa/Lease/Flow/Comm/LBContract/ReminderLetter.jsp
+++ b/WebContent/Tenwa/Lease/Flow/Comm/LBContract/ReminderLetter.jsp
@@ -22,7 +22,7 @@
ASObjectWindow dwTemp = new ASObjectWindow(CurPage,doTemp,request);
dwTemp.Style="1"; //--设置为Grid风格--
dwTemp.ReadOnly = "1";
- dwTemp.setPageSize(15);
+ dwTemp.setPageSize(pageSize==null?50:Integer.parseInt(pageSize));
dwTemp.MultiSelect = true;
dwTemp.genHTMLObjectWindow(userId);
diff --git a/WebContent/WEB-INF/etc/jbo/jbo_calc.xml b/WebContent/WEB-INF/etc/jbo/jbo_calc.xml
index 3db229a09..ed8636251 100644
--- a/WebContent/WEB-INF/etc/jbo/jbo_calc.xml
+++ b/WebContent/WEB-INF/etc/jbo/jbo_calc.xml
@@ -4622,6 +4622,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebContent/WEB-INF/etc/jbo/jbo_doc.xml b/WebContent/WEB-INF/etc/jbo/jbo_doc.xml
index cacb4318d..67578d710 100644
--- a/WebContent/WEB-INF/etc/jbo/jbo_doc.xml
+++ b/WebContent/WEB-INF/etc/jbo/jbo_doc.xml
@@ -1,170 +1,170 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -186,7 +186,7 @@
-
+
@@ -195,23 +195,23 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -223,8 +223,8 @@
-
-
+
+
@@ -233,11 +233,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -258,8 +258,8 @@
-
-
+
+
@@ -268,12 +268,12 @@
-
-
+
+
-
-
-
+
+
+
@@ -381,5 +381,19 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/tenwa/channelportal/action/alpha/RentDormantAction.java b/src/com/tenwa/channelportal/action/alpha/RentDormantAction.java
new file mode 100644
index 000000000..67eafae31
--- /dev/null
+++ b/src/com/tenwa/channelportal/action/alpha/RentDormantAction.java
@@ -0,0 +1,141 @@
+package com.tenwa.channelportal.action.alpha;
+
+import com.amarsoft.app.util.StringUtil;
+import com.amarsoft.are.jbo.BizObject;
+import com.amarsoft.are.jbo.BizObjectManager;
+import com.amarsoft.are.jbo.JBOFactory;
+import com.amarsoft.are.jbo.JBOTransaction;
+import com.amarsoft.awe.util.ASResultSet;
+import com.amarsoft.awe.util.SqlObject;
+import com.amarsoft.awe.util.Transaction;
+import com.tenwa.comm.util.jboutil.DataOperatorUtil;
+import com.tenwa.reckon.util.UUIDUtil;
+import com.tenwa.util.SerialNumberUtil;
+import jbo.app.tenwa.calc.LB_RENT_DORMANT;
+import jbo.app.tenwa.calc.LC_RENT_PLAN_TEMP;
+import jbo.app.tenwa.doc.LB_DOC_CONTRACT_LIST;
+import jbo.com.tenwa.lease.comm.LB_GUARANTEE_UNIT_TEMP;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 休眠还款申请-信息保存
+ */
+public class RentDormantAction {
+
+ String flowUnid;;//流程编号
+ String contractDate;;//合同签署日期
+ String zcContractNum;;//合同签署日期
+
+
+ public String getZcContractNum() {
+ return zcContractNum;
+ }
+
+ public void setZcContractNum(String zcContractNum) {
+ this.zcContractNum = zcContractNum;
+ }
+
+ public String getContractDate() {
+ return contractDate;
+ }
+
+ public void setContractDate(String contractDate) {
+ this.contractDate = contractDate;
+ }
+
+ public String getFlowUnid() {
+ return flowUnid;
+ }
+
+ public void setFlowUnid(String flowUnid) {
+ this.flowUnid = flowUnid;
+ }
+
+ /**
+ * 休眠还款信息保存
+ * @param tx
+ * @throws Exception
+ */
+ public String saveRentDormantAction(JBOTransaction tx) throws Exception{
+ String res = "";
+ try {
+ System.out.println("saveRentDormantAction-----------------------flowUnid="+flowUnid);
+ BizObjectManager lcctBm = JBOFactory.getBizObjectManager(jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP.CLASS_NAME);
+ BizObject lcctBo = lcctBm.createQuery("FLOWUNID=:FLOWUNID ")
+ .setParameter("FLOWUNID", flowUnid).getSingleResult(false);
+ String contractId = lcctBo.getAttribute("CONTRACT_ID").getString();
+ BizObjectManager lciBm = JBOFactory.getBizObjectManager(jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO.CLASS_NAME);
+ BizObject lciBo = lciBm.createQuery("ID=:CONTRACT_ID ")
+ .setParameter("CONTRACT_ID", contractId).getSingleResult(false);
+ String contractNo = lciBo.getAttribute("CONTRACT_NO").getString();
+ String projectId = lciBo.getAttribute("PROJECT_ID").getString();
+ System.out.println("saveRentDormantAction-----------------------contractNo="+contractNo);
+ System.out.println("saveRentDormantAction-----------------------contractNo2="+contractNo);
+ String rentDormantNum = null;
+ String contractDate2 = null;
+ String zcContractNum2 = null;
+ String rentDormantId = null;
+ // TODO: 2022/2/15 休眠还款信息保存
+ BizObjectManager bomLRD = JBOFactory.getFactory().getManager(LB_RENT_DORMANT.CLASS_NAME,tx);
+ BizObject bolLRD = bomLRD.createQuery("FLOWUNID=:FLOWUNID ")
+ .setParameter("FLOWUNID", flowUnid).getSingleResult(true);
+ if(bolLRD != null){
+ rentDormantNum = bolLRD.getAttribute("rent_dormant_num").getString();
+ contractDate2 = bolLRD.getAttribute("contract_date").getString();
+ zcContractNum2 = bolLRD.getAttribute("zc_contract_num").getString();
+ rentDormantId = bolLRD.getAttribute("ID").getString();
+ if(rentDormantNum != null){
+ if(contractDate2 == null || StringUtils.isEmpty(contractDate2) || !contractDate2.equals(contractDate)
+ || zcContractNum2 == null || StringUtils.isEmpty(zcContractNum2) || !zcContractNum2.equals(zcContractNum)){
+ bolLRD.setAttributeValue("contract_date", contractDate);
+ bolLRD.setAttributeValue("zc_contract_num", zcContractNum);
+ bomLRD.saveObject(bolLRD);//修改数据
+ }
+ return rentDormantNum;
+ }
+ }
+ rentDormantNum = createContractNo(lciBo, tx);
+ bolLRD = bomLRD.newObject();
+ bolLRD.setAttributeValue("ID", UUIDUtil.getUUID());
+ bolLRD.setAttributeValue("PROJECT_ID", projectId);
+ bolLRD.setAttributeValue("CONTRACT_ID", contractId);
+ bolLRD.setAttributeValue("FLOWUNID", flowUnid);
+ bolLRD.setAttributeValue("rent_dormant_num", rentDormantNum);
+ bolLRD.setAttributeValue("contract_date", contractDate);
+ bolLRD.setAttributeValue("zc_contract_num", zcContractNum);
+ bomLRD.saveObject(bolLRD);
+ res = rentDormantNum;
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return res;
+ }
+
+ /**
+ * 休眠还款协议生成
+ * @return
+ */
+ private String createContractNo(BizObject lciBo, JBOTransaction tx) throws Exception{
+ String area_code=lciBo.getAttribute("AREA_CODE").getString();
+ String subjectid=lciBo.getAttribute("subjectid").getString();
+ String dept="BQAP(";
+ if(area_code.equals(null)||area_code.equals("")){
+ area_code="0";
+ }
+ dept+="A";
+ if(lciBo.getAttribute("LEAS_FORM").toString().equals("01")){//直租
+ dept+="Z";
+ }else{//回租
+ dept+="H";
+ }
+ if("d989246c11c111eaaa0000163e0e11e6".equals(subjectid)){
+ dept+=")TJ";
+ }else{
+ dept+=")SZ";
+ }
+ return SerialNumberUtil.getContractSerialNaumber(dept,area_code, tx);
+ }
+}
\ No newline at end of file
diff --git a/src/com/tenwa/channelportal/action/alpha/RentDormantDeleteAction.java b/src/com/tenwa/channelportal/action/alpha/RentDormantDeleteAction.java
new file mode 100644
index 000000000..2cc88b8d8
--- /dev/null
+++ b/src/com/tenwa/channelportal/action/alpha/RentDormantDeleteAction.java
@@ -0,0 +1,97 @@
+package com.tenwa.channelportal.action.alpha;
+
+import com.amarsoft.are.jbo.BizObject;
+import com.amarsoft.are.jbo.BizObjectManager;
+import com.amarsoft.are.jbo.JBOFactory;
+import com.amarsoft.are.jbo.JBOTransaction;
+import com.tenwa.comm.util.jboutil.DataOperatorUtil;
+import jbo.app.tenwa.doc.LB_DOC_CONTRACT_LIST;
+import jbo.com.tenwa.lease.comm.LB_GUARANTEE_UNIT_TEMP;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 删除征信合同记录
+ */
+public class RentDormantDeleteAction {
+
+ String objectType;//文件类型
+ String planNumber;//项目编号
+ String flowUnid;;//流程编号
+
+
+ public String getFlowUnid() {
+ return flowUnid;
+ }
+
+ public void setFlowUnid(String flowUnid) {
+ this.flowUnid = flowUnid;
+ }
+
+ public String getObjectType() {
+ return objectType;
+ }
+
+ public void setObjectType(String objectType) {
+ this.objectType = objectType;
+ }
+
+ public String getPlanNumber() {
+ return planNumber;
+ }
+
+ public void setPlanNumber(String planNumber) {
+ this.planNumber = planNumber;
+ }
+
+ /**
+ * 删除征信授权文件
+ * @param tx
+ * @throws Exception
+ */
+ public void deleteRentDormant(JBOTransaction tx) throws Exception{
+ BizObjectManager bom = JBOFactory.getBizObjectManager(jbo.app.tenwa.doc.LB_DOCRELATIVE.CLASS_NAME);
+ BizObject lbDocBiz = bom.createQuery("OBJECTTYPE='contractRentDormant' and plan_number=:planNumber ")
+ .setParameter("objectType",objectType).setParameter("planNumber",planNumber).getSingleResult(false);
+ if(null != lbDocBiz){
+ String lbDocBizId = lbDocBiz.getAttribute("id").toString();
+ BizObjectManager bom1 = JBOFactory.getBizObjectManager(jbo.app.tenwa.doc.LB_DOCLIBRARY.CLASS_NAME);
+ String lbDocLibraryId = bom1.createQuery("relative_id=:relative_id").setParameter("relative_id", lbDocBizId).getSingleResult(false).getAttribute("id").toString();
+ BizObjectManager bom2 = JBOFactory.getBizObjectManager(jbo.app.tenwa.doc.LB_DOCATTRIBUTE.CLASS_NAME);
+ String docAttributeId = bom2.createQuery("library_id=:library_id").setParameter("library_id", lbDocLibraryId).getSingleResult(false).getAttribute("id").toString();
+ BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOC_CONTRACT_LIST.CLASS_NAME, tx);
+ // 查询lb_doc_contract_list表
+// BizObject bo = contBom.createQuery("attribute_id=:attributeId and file_flag='yes' and sendprocess='1' ")
+ BizObject bo = contBom.createQuery("attribute_id=:attributeId")
+ .setParameter("attributeId", docAttributeId).getSingleResult(false);
+// if(null == bo){
+ if(null != bo){
+ Map condtion= new HashMap();
+ condtion.put("id", lbDocBizId);
+ DataOperatorUtil.deleteJBOByCondtion(jbo.app.tenwa.doc.LB_DOCRELATIVE.CLASS_NAME, condtion, tx);
+ condtion.clear();
+ condtion.put("id", lbDocLibraryId);
+ DataOperatorUtil.deleteJBOByCondtion(jbo.app.tenwa.doc.LB_DOCLIBRARY.CLASS_NAME, condtion, tx);
+ condtion.clear();
+ condtion.put("id", docAttributeId);
+ DataOperatorUtil.deleteJBOByCondtion(jbo.app.tenwa.doc.LB_DOCATTRIBUTE.CLASS_NAME, condtion, tx);
+ }
+ }
+ }
+
+ /**
+ * 判断担保人是否为法人
+ * @param tx
+ * @throws Exception
+ */
+ public String checkCreditAuth(JBOTransaction tx) throws Exception{
+ BizObjectManager pbm = JBOFactory.getBizObjectManager(LB_GUARANTEE_UNIT_TEMP.CLASS_NAME, tx);
+ BizObject pbo = pbm.createQuery("FLOWUNID=:flowUnid")
+ .setParameter("flowUnid", flowUnid).getSingleResult(true);
+ if(null == pbo){
+ return "";
+ }
+ return pbo.getAttribute("CERTTYPE").toString();
+ }
+}
\ No newline at end of file
diff --git a/src/com/tenwa/channelportal/action/alpha/RentDormantSignAction.java b/src/com/tenwa/channelportal/action/alpha/RentDormantSignAction.java
new file mode 100644
index 000000000..150246532
--- /dev/null
+++ b/src/com/tenwa/channelportal/action/alpha/RentDormantSignAction.java
@@ -0,0 +1,191 @@
+package com.tenwa.channelportal.action.alpha;
+
+import com.alibaba.fastjson.JSONObject;
+import com.amarsoft.are.jbo.*;
+import com.tenwa.app.dao.ContractSignInfo;
+import com.tenwa.app.manage.qiyuesuo.v2.ContractSignEnums;
+import com.tenwa.app.manage.qiyuesuo.v2.ContractSignVtwoUtils;
+import com.tenwa.app.manage.qiyuesuo.v2.QYSParams;
+import com.tenwa.channelportal.action.generativecontract.WordToPDFUtil;
+import jbo.app.tenwa.doc.LB_DOCATTRIBUTE;
+import jbo.app.tenwa.doc.LB_DOCLIBRARY;
+import jbo.app.tenwa.doc.LB_DOCRELATIVE;
+import org.apache.log4j.Logger;
+
+import java.io.File;
+
+public class RentDormantSignAction {
+
+ private static Logger logger=Logger.getLogger(RentDormantSignAction.class);
+
+ private String projectId;
+
+ private String planNumber;;
+
+ private String contractNo;
+
+ private String contractId;
+
+ private String subjectId;
+
+ private String tempId;
+
+ public String getPlanNumber() {
+ return planNumber;
+ }
+
+ public void setPlanNumber(String planNumber) {
+ this.planNumber = planNumber;
+ }
+
+ public String getContractNo() {
+ return contractNo;
+ }
+
+ public void setContractNo(String contractNo) {
+ this.contractNo = contractNo;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getContractId() {
+ return contractId;
+ }
+
+ public void setContractId(String contractId) {
+ this.contractId = contractId;
+ }
+
+ public String getSubjectId() {
+ return subjectId;
+ }
+
+ public void setSubjectId(String subjectId) {
+ this.subjectId = subjectId;
+ }
+
+ public String getTempId() {
+ return tempId;
+ }
+
+ public void setTempId(String tempId) {
+ this.tempId = tempId;
+ }
+
+ /**
+ * 保险委托授权书附件用LibreOffice实现word转换pdf
+ * word转换pdf
+ * @throws JBOException
+ */
+ @SuppressWarnings({ "unchecked", "static-access" })
+ public String wordToPdfRentDormant(JBOTransaction tx) throws JBOException {
+ BizObjectManager bom=JBOFactory.getBizObjectManager(LB_DOCRELATIVE.CLASS_NAME);
+ BizObject DOCRELATIVE=bom.createQuery(" OBJECTTYPE='contractRentDormant' and plan_number=:planNumber ").setParameter("planNumber", planNumber).getSingleResult(false);
+ BizObjectManager attrBom=JBOFactory.getBizObjectManager(LB_DOCATTRIBUTE.CLASS_NAME);
+ BizObject attrBo=null;
+ WordToPDFUtil wordTopdf = new WordToPDFUtil();
+ File file = null;
+ Boolean result = null;
+ String sql = "";
+ try {
+ if (DOCRELATIVE != null) {
+ String DOCRELATIVEid=DOCRELATIVE.getAttribute("id").toString();
+ BizObjectManager bom1=JBOFactory.getBizObjectManager(LB_DOCLIBRARY.CLASS_NAME);
+ String DOCLIBRARYid=bom1.createQuery("relative_id=:relative_id").setParameter("relative_id", DOCRELATIVEid).getSingleResult(false).getAttribute("id").toString();
+ attrBo = attrBom.createQuery("library_id=:library_id").setParameter("library_id", DOCLIBRARYid).getSingleResult(true);
+
+ String path = attrBo.getAttribute("FULLPATH").toString();
+ String lastFilePath = path.replace(".docx", ".pdf");
+ File filePath = new File(path);
+ if(!filePath.exists()){
+ logger.info("word转换pdf的源文件不存在");
+ }
+ String lastFilePathpdf = filePath.getParent();
+ try {
+ result = wordTopdf.Word2Pdf(path, lastFilePathpdf);
+ } catch (Exception e) {
+ result = false;
+ e.printStackTrace();
+ }
+ if (result) {
+ file =new File(lastFilePath);
+ attrBo.setAttributeValue("FULLPATH",attrBo.getAttribute("FULLPATH").toString().replace(".docx", ".pdf"));
+ attrBo.setAttributeValue("FILENAME",attrBo.getAttribute("FILENAME").toString().replace(".docx", ".pdf"));
+ attrBo.setAttributeValue("FILEPATH",attrBo.getAttribute("FILEPATH").toString().replace(".docx", ".pdf"));
+ attrBo.setAttributeValue("FileSize",file.length());
+ attrBo.setAttributeValue("CONTENT_TYPE","application/pdf");
+ attrBom.saveObject(attrBo);
+ }
+ }
+
+ } catch (JBOException e) {
+ e.printStackTrace();
+ }
+ return attrBo.getAttribute("ID").toString();
+ }
+
+
+ /**
+ * 休眠还款协议盖章:对接契约锁2.0
+ * @param tx
+ * @return
+ * @throws Exception
+ */
+ public String claimSignRentDormantTwo(JBOTransaction tx) throws Exception {
+ logger.info("claimSignRentDormantTwo 休眠还款协议盖章:对接契约锁2.0 开始 0126");
+ String libraryid="";
+ BizObjectManager bom=JBOFactory.getBizObjectManager(LB_DOCRELATIVE.CLASS_NAME);
+ BizObject DOCRELATIVE=bom.createQuery("OBJECTTYPE='contractRentDormant' and CONTRACT_ID=:contractid ").setParameter("contractid", contractId).getSingleResult(false);
+ logger.info("claimSignRentDormantTwo 查询文件关联信息");
+ if (DOCRELATIVE != null) {
+ logger.info("claimSignRentDormantTwo 查询文件关联信息不为空时");
+ String DOCRELATIVEid=DOCRELATIVE.getAttribute("id").toString();
+ BizObjectManager bom1=JBOFactory.getBizObjectManager(LB_DOCLIBRARY.CLASS_NAME);
+ libraryid=bom1.createQuery("relative_id=:relative_id").setParameter("relative_id", DOCRELATIVEid).getSingleResult(false).getAttribute("id").toString();
+ logger.info("claimSignRentDormantTwo 查询文件关联信息libraryid="+libraryid);
+ }
+ BizObjectManager contBom = JBOFactory.getBizObjectManager(LB_DOCATTRIBUTE.CLASS_NAME, tx);
+ ContractSignInfo con = null;
+ BizObject bo = null;
+ String info="";
+ try{
+ bo = contBom.createQuery("library_id=:libraryid").setParameter("libraryid", libraryid).getSingleResult(true);
+ logger.info("claimSignRentDormantTwo 查询文件信息");
+ if(bo != null){
+ logger.info("claimSignRentDormantTwo 查询文件信息不为空时");
+ String fileName = bo.getAttribute("FILENAME").toString();
+ String filePath = bo.getAttribute("FULLPATH").toString();
+ logger.info("claimSignRentDormantTwo fileName="+fileName);
+ logger.info("claimSignRentDormantTwo filePath="+filePath);
+ ContractSignVtwoUtils contractSignVtwoUtils = new ContractSignVtwoUtils();
+ logger.info("claimSignRentDormantTwo 发起公司盖章");
+ QYSParams qysParams = new QYSParams();
+ qysParams.setList(null);//手签,无需传承租人、共同申请人、担保人信息
+ qysParams.setContractSignTypeEnum(ContractSignEnums.ContractSignTypeEnum.SIGNATURE_DEFAULT);//客户手签
+ qysParams.setFileName(fileName);
+ qysParams.setFilePath(filePath);
+ qysParams.setSubjectId(subjectId);
+ qysParams.setTempId(tempId);//合同模板id
+ JSONObject resJson = contractSignVtwoUtils.sign(qysParams);
+ if (null == resJson) {
+ logger.warn("claimSignRentDormantTwo 20210415 调用契约锁盖章异常,返回盖章失败");
+ return "error";
+ }
+ logger.info("claimSignRentDormantTwo 20210415 调用契约锁盖章成功,res=" + resJson.toJSONString());
+ return "success";
+ } else {
+ return "error";
+ }
+ } catch (Exception e) {
+ logger.error("claimSignInsuranceTwo 系统错误,错误信息: ", e);
+ e.printStackTrace();
+ return "error";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java b/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java
index 31b4caaca..41e39d1a6 100644
--- a/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java
+++ b/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java
@@ -75,7 +75,7 @@ public class CmbToPayController extends BaseFlowStartAction {
JSONObject jsonObj = JSONObject.fromObject(map);
return jsonObj.toString();
}*/
- List contract_id_list = java.util.Arrays.asList(contract_ids.split("@"));
+ List contract_id_list = Arrays.asList(contract_ids.split("@"));
if(contract_id_list==null || contract_id_list.size()<=0) {
map.put("code", "1") ;
map.put("msg", "尚未选择合同,请检查") ;
@@ -352,8 +352,19 @@ public class CmbToPayController extends BaseFlowStartAction {
String BNKFLG = checkCMB(BANK_NAME);
//NUSAGE = "客户["+CRTACC+"]发起申请";
String BUSNAR = "[实际付款][客户:"+CRTACC+"][支付金额:"+TRSAMT+"]";
+ /*
+ *银企直连此字符串的规则:
+ * 0.此字段在银企直连中最大为62
+ * 1.字符串长度为N,那么最多可输入汉字数为(N-2)/2
+ * 2.如果中文中夹杂英文字符或数字,那么要做分段处理,每段汉字长度都要+2。例:“中国TCL集团”是 (2*2+2)+(3)+(2*2+2)=15
+ * */
+ //cusLength:customerName最大长度(以银企直连算法)
+ int cusLength = 62-(2+contractNoZC.length()+contractNo.length());
+ customerName = getCMBlength(customerName,cusLength);
NUSAGE = customerName+"-"+contractNoZC+"-"+contractNo;
+
+
pay_detail = new SDKDcPayReqxVO();
pay_detail.setYURREF(YURREF);
pay_detail.setDBTACC(DBTACC);
@@ -564,4 +575,40 @@ public class CmbToPayController extends BaseFlowStartAction {
return "N";
}
}
+ private String getCMBlength(String str,int length){
+ int count = 0;
+ boolean ChineseFlag = false;
+ char[] c = str.toCharArray();
+ for(int i = 0; i < c.length; i ++){
+ //二进制超过8位则为汉字
+ String len = Integer.toBinaryString(c[i]);
+ if(ChineseFlag){
+ if(len.length() > 8){
+ count=count+2;
+ ChineseFlag = true;
+ }else{
+ count ++;
+ ChineseFlag = false;
+ }
+ }else{
+ if(len.length() > 8){
+ count=count+2+2;
+ ChineseFlag = true;
+ }else{
+ count ++;
+ ChineseFlag = false;
+ }
+ }
+ if(count==length){
+ str = str.substring(0,i+1);
+ break;
+ }else if(count>length){
+ str = str.substring(0,i);
+ break;
+ }
+
+ }
+ return str;
+
+ }
}
diff --git a/src_core/com/tenwa/officetempalte/controller/RentNotinyDeleteAction.java b/src_core/com/tenwa/officetempalte/controller/RentNotinyDeleteAction.java
index ccd3179f1..2c777409b 100644
--- a/src_core/com/tenwa/officetempalte/controller/RentNotinyDeleteAction.java
+++ b/src_core/com/tenwa/officetempalte/controller/RentNotinyDeleteAction.java
@@ -82,6 +82,10 @@ public class RentNotinyDeleteAction {
DOCRELATIVE=bom.createQuery(" PROJ_ID=:projectId and OBJECTTYPE='ReminderLetter'").setParameter("projectId",projectId).getSingleResult(false);
}else if("AttorneyLetter".equals(objecttype)){//催收服务委托书
DOCRELATIVE=bom.createQuery(" PROJ_ID=:projectId and OBJECTTYPE='AttorneyLetter'").setParameter("projectId",projectId).getSingleResult(false);
+ }else if("IndictmentAcceleration".equals(objecttype)){//起诉状-加速到期
+ DOCRELATIVE=bom.createQuery(" PROJ_ID=:projectId and OBJECTTYPE='IndictmentAcceleration'").setParameter("projectId",projectId).getSingleResult(false);
+ }else if("IndictmentCancelContract".equals(objecttype)){//起诉状-解除合同
+ DOCRELATIVE=bom.createQuery(" PROJ_ID=:projectId and OBJECTTYPE='IndictmentCancelContract'").setParameter("projectId",projectId).getSingleResult(false);
}else if("contractInsurance".equals(objecttype)){
DOCRELATIVE=bom.createQuery(" PROJ_ID=:projectId and OBJECTTYPE='contractInsurance' and PLAN_NUMBER=:plan_number").setParameter("projectId",projectId).setParameter("plan_number",plan_number).getSingleResult(false);
}
diff --git a/src_jbo/jbo/app/tenwa/calc/LB_RENT_DORMANT.java b/src_jbo/jbo/app/tenwa/calc/LB_RENT_DORMANT.java
new file mode 100644
index 000000000..db3bf9765
--- /dev/null
+++ b/src_jbo/jbo/app/tenwa/calc/LB_RENT_DORMANT.java
@@ -0,0 +1,44 @@
+package jbo.app.tenwa.calc;
+
+/**
+* 休眠还款协议信息表 - JBO命名常量类
+* Note: This file is generated by ADE tools, dont modify it.
+
+*/
+public interface LB_RENT_DORMANT {
+ /**
+ * 休眠租金临时表
+ * 代表本类映射的BizObjectClass
+ */
+ public static final String CLASS_NAME = "jbo.app.tenwa.calc.LB_RENT_DORMANT";
+ /**
+ * 标识 STRING(32)
+ */
+ public static final String ID = "ID";
+ /**
+ * 流程编号 STRING(32)
+ */
+ public static final String FLOWUNID = "FLOWUNID";
+ /**
+ * 项目编号 STRING(32)
+ */
+ public static final String PROJECT_ID = "PROJECT_ID";
+ /**
+ * 合同编号 STRING(32)
+ */
+ public static final String CONTRACT_ID = "CONTRACT_ID";
+ /**
+ * 中车合同编号 STRING(32)
+ */
+ public static final String zc_contract_num = "zc_contract_num";
+ /**
+ * 休眠还款协议编号 STRING(32)
+ */
+ public static final String rent_dormant_num = "rent_dormant_num";
+
+ /**
+ * 合同签署时间 STRING(32)
+ */
+ public static final String contract_date = "contract_date";
+
+}
\ No newline at end of file
diff --git a/src_jbo/jbo/app/tenwa/doc/REMINDER_LETTER.java b/src_jbo/jbo/app/tenwa/doc/REMINDER_LETTER.java
new file mode 100644
index 000000000..d64384377
--- /dev/null
+++ b/src_jbo/jbo/app/tenwa/doc/REMINDER_LETTER.java
@@ -0,0 +1,27 @@
+package jbo.app.tenwa.doc;
+
+/**
+* 文档附件详情 - JBO命名常量类
+* Note: This file is generated by ADE tools, dont modify it.
+
+*/
+public interface REMINDER_LETTER {
+ /**
+ * 文档附件详情
+ * 代表本类映射的BizObjectClass
+ */
+ public static final String CLASS_NAME = "jbo.app.tenwa.doc.REMINDER_LETTER";
+ /**
+ * 主键 STRING(32)
+ */
+ public static final String ID = "ID";
+ /**
+ * 附件编号 STRING(32)
+ */
+ public static final String LIBRARY_ID = "CONTRACT_ID";
+ /**
+ * 文档路径 STRING(500)
+ */
+ public static final String FILEPATH = "TYPE";
+
+}
\ No newline at end of file
diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/CreditAuditHolidayBatch.java b/src_tenwa/com/tenwa/lease/app/quartzmession/CreditAuditHolidayBatch.java
index b3496e516..4b6cfd401 100644
--- a/src_tenwa/com/tenwa/lease/app/quartzmession/CreditAuditHolidayBatch.java
+++ b/src_tenwa/com/tenwa/lease/app/quartzmession/CreditAuditHolidayBatch.java
@@ -5,7 +5,9 @@ import com.amarsoft.awe.util.SqlObject;
import com.amarsoft.awe.util.Transaction;
import com.amarsoft.dict.als.cache.CacheLoaderFactory;
import com.tenwa.lease.app.quartzmession.audit.AuditOrderEnums;
+import com.tenwa.reckon.util.DateUtil;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.quartz.Job;
@@ -24,11 +26,16 @@ public class CreditAuditHolidayBatch implements Job{
private static final Logger logger = LogManager.getLogger(CreditAuditHolidayBatch.class);// 引入logger日志
public void execute(JobExecutionContext arg0) throws JobExecutionException {
- logger.info("【信审考核统计】【CreditAuditHolidayBatch】【开始】<<<<<<<<<<<<<: 2020062022");
- insertStOrder();
- deleteCreditAudit();
- initDetail();
- updateDetail();
+ logger.info("【信审考核统计】【CreditAuditHolidayBatch】【开始】<<<<<<<<<<<<<: CreditAuditHolidayBatch20211118");
+ long beginTime = System.currentTimeMillis();
+ String begin = DateUtil.getSystemDateDetailTime();
+// insertStOrder();
+ int preDayCount = 30;//增量更新30天前数据
+// int preDayCount = 345;//增量更新345天前数据
+ logger.info("【信审考核统计】【CreditAuditHolidayBatch】【开始】<<<<<<<<<<<<<: CreditAuditHolidayBatch20211124preDayCount=" + preDayCount);
+ deleteCreditAudit(preDayCount);
+ initDetail(preDayCount);
+ updateDetail(preDayCount);
initOrderAuditDay();
saveOrderAuditDay();
updateOrderAuditDay();
@@ -36,7 +43,9 @@ public class CreditAuditHolidayBatch implements Job{
savePaymentOrderAuditDay();
updatePaymentOrderAuditDay();
updateCreditAuditType();
- logger.info("【信审考核统计】【CreditAuditHolidayBatch】【完成】<<<<<<<<<<<<<: ");
+ long excuteTime = System.currentTimeMillis() - beginTime;
+ logger.info("【信审考核统计】【CreditAuditHolidayBatch】【完成】<<<<<<<<<<<<<: beginTime=【" + begin + "】 endTime=【" + DateUtil.getSystemDateDetailTime() +
+ "】 CreditAuditHolidayBatch20211118 -- excuteTime=" + excuteTime/60000);
}
/**
@@ -187,13 +196,14 @@ public class CreditAuditHolidayBatch implements Job{
* 添加审核流程记录明细
* @return
*/
- private void deleteCreditAudit(){
+ private void deleteCreditAudit(int preDayCount){
Transaction Sqlca=null;
try{
logger.info("【信审考核统计】【deleteCreditAudit】数据清空执行开始<<<<<<<<<<<<<");
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
//初始化信审考核明细表
- String delSql="truncate table st_credit_audit_order_detail";
+ String stBeginTime = queryStBeginTime(preDayCount);
+ String delSql="delete from st_credit_audit_order_detail where begintime > '"+ stBeginTime +"'";
String delSql2="truncate table st_credit_audit_order";
String delSql3="truncate table st_payment_audit_order";
Sqlca.executeSQL(new SqlObject(delSql));
@@ -263,16 +273,17 @@ public class CreditAuditHolidayBatch implements Job{
* 添加审核流程记录明细
* @return
*/
- private void initDetail(){
+ private void initDetail(int preDayCount){
Transaction Sqlca=null;
try{
logger.info("【信审考核统计】【initDetail】初始化订单明细记录执行开始<<<<<<<<<<<<<");
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
+ Map listHoliday = listHoliday(Sqlca);
+ logger.info("【考核统计】【initDetail】汇总假期信息列表<<<< listHoliday.size : " + listHoliday.keySet().size());
//初始化信审考核明细表
- List typeEnumList = AuditOrderEnums.AuditTypeEnum.findCreditTypeList();
for(AuditOrderEnums.AuditTypeEnum auditTypeEnum : AuditOrderEnums.AuditTypeEnum.values()){
logger.info("【考核统计】【initDetail】初始化订单明细记录执行开始<<【"+auditTypeEnum.getFlowName()+"】<< :" + auditTypeEnum.getDesc());
- initDetail(Sqlca, auditTypeEnum);
+ initDetail(Sqlca, auditTypeEnum, preDayCount, listHoliday);
}
Sqlca.commit();
logger.info("【信审考核统计】【initDetail】初始化订单明细记录执行完成<<<<<<<<<<<<");
@@ -302,7 +313,7 @@ public class CreditAuditHolidayBatch implements Job{
* 修改审核明细的创建时间
* @return
*/
- private void updateDetail(){
+ private void updateDetail(int preDayCount){
Transaction Sqlca=null;
try{
logger.info("【信审考核统计】【updateDetail】修改订单明细中的创建时间执行开始<<<<<<<<<<<<<");
@@ -311,9 +322,9 @@ public class CreditAuditHolidayBatch implements Job{
List typeEnumList = AuditOrderEnums.AuditTypeEnum.findCreditTypeList();
for(AuditOrderEnums.AuditTypeEnum auditTypeEnum : typeEnumList){
logger.info("【信审考核统计】【updateDetail】修改订单明细中的--创建时间开始<<【信审部分】");
- updateDetail(Sqlca, auditTypeEnum);
+ updateDetail(Sqlca, auditTypeEnum, preDayCount);
logger.info("【信审考核统计】【updateDetail】修改订单明细中的--审核时间开始<<【信审部分】");
- updateDetailAuditDay(Sqlca, auditTypeEnum);
+ updateDetailAuditDay(Sqlca, auditTypeEnum, preDayCount);
}
Sqlca.commit();
logger.info("【信审考核统计】【updateDetail】修改订单明细中的创建时间执行完成<<<<<<<<<<<<<");
@@ -445,16 +456,43 @@ public class CreditAuditHolidayBatch implements Job{
}
+
/**
* 添加审核流程记录明细
* @return
* @throws Exception
*/
- public String initDetail(Transaction Sqlca, AuditOrderEnums.AuditTypeEnum auditTypeEnum) throws Exception {
+ public String initDetail(Transaction Sqlca, AuditOrderEnums.AuditTypeEnum auditTypeEnum, int preDayCount, Map listHoliday) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy/MM/dd");
+ String ftBeginTime = queryFtBeginTime(preDayCount);
int con=0;
+ String nextAuditFlowType = ""; // 下阶段流程审核类型
+ String create_day = ""; // 流程创建日期
+ String audit_day = ""; // 流程审核日期
+ String auditTime = ""; // 审核时间
+ String jump_begintime = ""; // 跳过节假日之后流程开始时间
+ String jump_endtime = ""; // 跳过节假日之后流程结束时间
+ String createtime = ""; // 流程创建时间【第二个定时器进行修改】
+ String begintime = ""; // 流程开始时间
+ String endtime = ""; // 流程结束时间
+
+ String remark = "";
+ String auditOrderSts = "";
+ String auditOrderStsDes = "";
+ String uuidDetail = "";
+ String projectId = ""; // 用户id
+ String userid = ""; // 用户id
+ String username = ""; // 用户姓名
+ String objectno = ""; // 流程编号
+ String serialno = ""; // 流程处理流水
+ String auditFlowType = ""; // 流程审核类型
+ String auditFlowTypeDes = ""; // 流程审核类型说明
+
+ String auditResSts = ""; // 审核最终结果状态:0,审核中,1,审核通过,2,审核拒绝,3,退回到经销商
+ String auditChoiceSts = ""; // 审核最终结果状态:0,审核中,1,审核通过,2,审核拒绝,3,退回到经销商
+ String auditResStsDes = ""; // 流程审核结果说明
// 查询所有需要发送还款提醒的数据
String selSql="SELECT \n" +
" FBO.proj_id as project_id,\n" +
@@ -476,37 +514,37 @@ public class CreditAuditHolidayBatch implements Job{
"LEFT JOIN flow_bussiness_object FBO ON FT.objectno=FBO.flow_unid \n" +
"WHERE FT.flowname = '" + auditTypeEnum.getFlowName() +"'" +
" AND FT.phaseno='" + auditTypeEnum.getPhaseNo() +"'" +
+ " AND FT.begintime > '" + ftBeginTime +"'" +
" AND (FT.USERNAME IS NOT NULL OR FT.USERNAME <>'')";
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
while(rs.next()) {
// 获取接口推送所需数据
con++;
- String nextAuditFlowType = rs.getString("nextAuditFlowType"); // 下阶段流程审核类型
+ nextAuditFlowType = rs.getString("nextAuditFlowType"); // 下阶段流程审核类型
+ create_day = ""; // 流程创建日期
+ audit_day = ""; // 流程审核日期
+ auditTime = ""; // 审核时间
+ jump_begintime = ""; // 跳过节假日之后流程开始时间
+ jump_endtime = ""; // 跳过节假日之后流程结束时间
+ createtime = ""; // 流程创建时间【第二个定时器进行修改】
+ begintime = rs.getString("begintime"); // 流程开始时间
+ endtime = rs.getString("endtime"); // 流程结束时间
- String create_day = ""; // 流程创建日期
- String audit_day = ""; // 流程审核日期
- String auditTime = ""; // 审核时间
- String jump_begintime = ""; // 跳过节假日之后流程开始时间
- String jump_endtime = ""; // 跳过节假日之后流程结束时间
- String createtime = ""; // 流程创建时间【第二个定时器进行修改】
- String begintime = rs.getString("begintime"); // 流程开始时间
- String endtime = rs.getString("endtime"); // 流程结束时间
+ remark = "";
+ auditOrderSts = "";
+ auditOrderStsDes = "";
+ uuidDetail = UUID.randomUUID().toString().replace("-", "");
+ projectId = rs.getString("project_id"); // 用户id
+ userid = rs.getString("userid"); // 用户id
+ username = rs.getString("username"); // 用户姓名
+ objectno = rs.getString("objectno"); // 流程编号
+ serialno = rs.getString("serialno"); // 流程处理流水
+ auditFlowType = rs.getString("auditFlowType"); // 流程审核类型
+ auditFlowTypeDes = rs.getString("auditFlowTypeDes"); // 流程审核类型说明
- String remark = "";
- String auditOrderSts = "";
- String auditOrderStsDes = "";
- String uuidDetail = UUID.randomUUID().toString().replace("-", "");
- String projectId = rs.getString("project_id"); // 用户id
- String userid = rs.getString("userid"); // 用户id
- String username = rs.getString("username"); // 用户姓名
- String objectno = rs.getString("objectno"); // 流程编号
- String serialno = rs.getString("serialno"); // 流程处理流水
- String auditFlowType = rs.getString("auditFlowType"); // 流程审核类型
- String auditFlowTypeDes = rs.getString("auditFlowTypeDes"); // 流程审核类型说明
-
- String auditResSts = rs.getString("auditResSts"); // 审核最终结果状态:0,审核中,1,审核通过,2,审核拒绝,3,退回到经销商
- String auditChoiceSts = rs.getString("auditChoiceSts"); // 审核最终结果状态:0,审核中,1,审核通过,2,审核拒绝,3,退回到经销商
- String auditResStsDes = rs.getString("auditResStsDes"); // 流程审核结果说明
+ auditResSts = rs.getString("auditResSts"); // 审核最终结果状态:0,审核中,1,审核通过,2,审核拒绝,3,退回到经销商
+ auditChoiceSts = rs.getString("auditChoiceSts"); // 审核最终结果状态:0,审核中,1,审核通过,2,审核拒绝,3,退回到经销商
+ auditResStsDes = rs.getString("auditResStsDes"); // 流程审核结果说明
if(AuditOrderEnums.CREDIT_AUDIT_TYPE.equals(auditTypeEnum.getFlowNo())){
// logger.info("【信审考核统计】【initDetail】信审统计明细--serialno=" + serialno);
if(StringUtils.isEmpty(endtime)){
@@ -604,7 +642,7 @@ public class CreditAuditHolidayBatch implements Job{
//开始时间处理
if(StringUtils.isNotEmpty(begintime)){
create_day = dayFormat.format(simpleDateFormat.parse(begintime));
- jump_begintime = resJumpHoliday(Sqlca, begintime); // 跳过节假日之后流程开始时间
+ jump_begintime = resJumpHoliday(Sqlca, begintime, listHoliday); // 跳过节假日之后流程开始时间
jump_begintime = sdf.format(simpleDateFormat.parse(jump_begintime));//格式化时间格式
createtime = sdf.format(simpleDateFormat.parse(begintime));
begintime = createtime;
@@ -616,11 +654,11 @@ public class CreditAuditHolidayBatch implements Job{
if (StringUtils.isNotEmpty(endtime)){
// 2020-06-05 审核数量记录为当前时间,不跳过节假日
audit_day = dayFormat.format(simpleDateFormat.parse(endtime));
- jump_endtime = resJumpHoliday(Sqlca, endtime); // 跳过节假日之后流程结束时间
+ jump_endtime = resJumpHoliday(Sqlca, endtime, listHoliday); // 跳过节假日之后流程结束时间
jump_endtime = sdf.format(simpleDateFormat.parse(jump_endtime));
endtime = sdf.format(simpleDateFormat.parse(endtime));
//信审考核时间累加
- auditTime = diffTime(Sqlca, jump_begintime, jump_endtime);
+ auditTime = diffTime(Sqlca, jump_begintime, jump_endtime, listHoliday);
if("0".equals(auditTime)){//审核时间不足一分钟,按一分钟算
auditTime = "1";
}
@@ -675,6 +713,7 @@ public class CreditAuditHolidayBatch implements Job{
")";
Sqlca.executeSQL(new SqlObject(insertSql));
}
+ logger.info("【initDetail】明细初始化完成,--auditTypeEnum.getFlowName()=【" + auditTypeEnum.getFlowName() +"】 --countNum=" + con);
return String.valueOf(con);
}
@@ -683,31 +722,37 @@ public class CreditAuditHolidayBatch implements Job{
* @return
* @throws Exception
*/
- public String updateDetail(Transaction Sqlca, AuditOrderEnums.AuditTypeEnum auditTypeEnum) throws Exception {
+ public String updateDetail(Transaction Sqlca, AuditOrderEnums.AuditTypeEnum auditTypeEnum, int preDayCount) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy/MM/dd");
+ String ftBeginTime = queryFtBeginTime(preDayCount);
int con=0;
// 查询当前最小的审批时间
String selSql="SELECT \n" +
" FT.userid,\n" +
" FT.objectno,\n" +
" min(FT.begintime) AS begintime\n" +
- "FROM FLOW_TASK FT\n" +
- "LEFT JOIN FLOW_OPINION_BUSINESS FOB ON FT.SERIALNO=FOB.SERIALNO \n" +
- "WHERE FT.flowname = '" + auditTypeEnum.getFlowName() +"'" +
+ " FROM FLOW_TASK FT\n" +
+ " LEFT JOIN FLOW_OPINION_BUSINESS FOB ON FT.SERIALNO=FOB.SERIALNO \n" +
+ " WHERE FT.flowname = '" + auditTypeEnum.getFlowName() +"'" +
" AND FT.phaseno='" + auditTypeEnum.getPhaseNo() +"'" +
- "AND (FT.USERNAME IS NOT NULL OR FT.USERNAME <>'') group by FT.objectno";
+ " AND FT.begintime > '" + ftBeginTime +"'" +
+ " AND (FT.USERNAME IS NOT NULL OR FT.USERNAME <>'') group by FT.objectno";
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
+ String begintime = ""; // 流程编号
+ String objectno = ""; // 流程创建时间
+ String createtime = "";
+ //2020-06-05 进单时间不跳过节假日
+ String create_day = "";
while(rs.next()) {
// 获取接口推送所需数据
con++;
- String begintime = rs.getString("begintime"); // 流程编号
- String objectno = rs.getString("objectno"); // 流程创建时间
- String createtime = sdf.format(simpleDateFormat.parse(begintime));
-// String create_day = dayFormat.format(simpleDateFormat.parse(resJumpHoliday(Sqlca, begintime)));
+ begintime = rs.getString("begintime"); // 流程编号
+ objectno = rs.getString("objectno"); // 流程创建时间
+ createtime = sdf.format(simpleDateFormat.parse(begintime));
//2020-06-05 进单时间不跳过节假日
- String create_day = dayFormat.format(simpleDateFormat.parse(begintime));
+ create_day = dayFormat.format(simpleDateFormat.parse(begintime));
String updSql="UPDATE st_credit_audit_order_detail SET create_day='"+create_day+"', createtime='"+createtime+"'," +
"UPDATETIME=DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') WHERE objectno='"+objectno+"' ";
Sqlca.executeSQL(new SqlObject(updSql));
@@ -720,21 +765,23 @@ public class CreditAuditHolidayBatch implements Job{
* @return
* @throws Exception
*/
- public String updateDetailAuditDay(Transaction Sqlca, AuditOrderEnums.AuditTypeEnum auditTypeEnum) throws Exception {
+ public String updateDetailAuditDay(Transaction Sqlca, AuditOrderEnums.AuditTypeEnum auditTypeEnum, int preDayCount) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy/MM/dd");
+ String ftBeginTime = queryFtBeginTime(preDayCount);
int con=0;
// 查询当前最大的审批时间
String selSql="SELECT \n" +
" FT.userid,\n" +
" FT.objectno,\n" +
" max(FT.endtime) AS endtime\n" +
- "FROM FLOW_TASK FT\n" +
- "LEFT JOIN FLOW_OPINION_BUSINESS FOB ON FT.SERIALNO=FOB.SERIALNO \n" +
- "WHERE FT.flowname = '" + auditTypeEnum.getFlowName() +"'" +
+ " FROM FLOW_TASK FT\n" +
+ " LEFT JOIN FLOW_OPINION_BUSINESS FOB ON FT.SERIALNO=FOB.SERIALNO \n" +
+ " WHERE FT.flowname = '" + auditTypeEnum.getFlowName() +"'" +
" AND FT.phaseno='" + auditTypeEnum.getPhaseNo() +"'" +
- "AND (FT.endtime IS NOT NULL OR FT.endtime <>'') AND (FT.USERNAME IS NOT NULL OR FT.USERNAME <>'') group by FT.objectno, FT.userid";
+ " AND FT.begintime > '" + ftBeginTime +"'" +
+ " AND (FT.endtime IS NOT NULL OR FT.endtime <>'') AND (FT.USERNAME IS NOT NULL OR FT.USERNAME <>'') group by FT.objectno, FT.userid";
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
while(rs.next()) {
// 获取接口推送所需数据
@@ -869,7 +916,7 @@ public class CreditAuditHolidayBatch implements Job{
String username = rs.getString("username"); // 流程创建时间
String auditFlowType = rs.getString("auditFlowType"); // 流程创建时间
String auditFlowTypeDes = rs.getString("auditFlowTypeDes"); // 流程创建时间
-
+ // TODO: 2021/11/10 可优化,提取到循环外边
String selSql2="SELECT count(1) as countNum FROM st_payment_audit_order " +
"WHERE every_day ='" + every_day +"' and userid='" + userid +"' and auditFlowType='" + auditFlowType +"'";
ASResultSet rs2 = Sqlca.getASResultSet(new SqlObject(selSql2));
@@ -920,10 +967,8 @@ public class CreditAuditHolidayBatch implements Job{
String selSql="SELECT id, every_day, userid, auditFlowType, count_audit FROM st_payment_audit_order ";
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
while(rs.next()) {
-
// 获取接口推送所需数据
con++;
- logger.info("【付款申请考核统计】【updateOrderAuditDay】付款申请考核统计订单执行 con=" + con);
String id = rs.getString("id"); // 流程编号
String count_audit = rs.getString("count_audit"); // 审核数量
String auditFlowType = rs.getString("auditFlowType"); // 流程类型
@@ -981,6 +1026,7 @@ public class CreditAuditHolidayBatch implements Job{
"UPDATETIME=DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') WHERE id='"+id+"' ";
Sqlca.executeSQL(new SqlObject(updSql));
}
+ logger.info("【付款申请考核统计】【updateOrderAuditDay】付款申请考核统计订单执行 con=" + con);
return String.valueOf(con);
}
@@ -1000,26 +1046,34 @@ public class CreditAuditHolidayBatch implements Job{
" group by auditFlowType, userid, objectno, create_day " +
" ) as a group by auditFlowType, userid, create_day" ;
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
+ String every_day = ""; // 流程编号
+ String order_count = ""; // 流程创建时间
+ String userid = ""; // 流程创建时间
+ String username = ""; // 流程创建时间
+ String auditFlowType = ""; // 流程创建时间
+ String auditFlowTypeDes = ""; // 流程创建时间
+ // TODO: 2021/11/10 可优化,提取到循环外边
+// String selSql2="SELECT count(1) as countNum FROM st_credit_audit_order " +
+// "WHERE auditFlowType='" + auditFlowType +"' group by every_day, userid";
while(rs.next()) {
// 获取接口推送所需数据
con++;
- String every_day = rs.getString("every_day"); // 流程编号
- String order_count = rs.getString("order_count"); // 流程创建时间
- String userid = rs.getString("userid"); // 流程创建时间
- String username = rs.getString("username"); // 流程创建时间
- String auditFlowType = rs.getString("auditFlowType"); // 流程创建时间
- String auditFlowTypeDes = rs.getString("auditFlowTypeDes"); // 流程创建时间
-
+ every_day = rs.getString("every_day"); // 流程编号
+ order_count = rs.getString("order_count"); // 流程创建时间
+ userid = rs.getString("userid"); // 流程创建时间
+ username = rs.getString("username"); // 流程创建时间
+ auditFlowType = rs.getString("auditFlowType"); // 流程创建时间
+ auditFlowTypeDes = rs.getString("auditFlowTypeDes"); // 流程创建时间
+ // TODO: 2021/11/10 可优化,提取到循环外边
String selSql2="SELECT count(1) as countNum FROM st_credit_audit_order " +
"WHERE every_day ='" + every_day +"' and userid='" + userid +"' and auditFlowType='" + auditFlowType +"'";
ASResultSet rs2 = Sqlca.getASResultSet(new SqlObject(selSql2));
if(rs2.next()) {
- if(rs2.getInt("countNum") > 0){
+ if(rs2.getInt("countNum") > 0 ){
String updSql="UPDATE st_credit_audit_order SET order_count='"+order_count+"', " +
"UPDATETIME=DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') WHERE every_day='"+every_day +"' and userid='"
+ userid +"' and auditFlowType='" + auditFlowType +"'";
Sqlca.executeSQL(new SqlObject(updSql));
- logger.info("【信审考核统计】【saveOrderCreateDay】更新记录保存进单数量<<<<<<<<<<<<<");
}else {
String insertSql = "INSERT INTO st_credit_audit_order(\n" +
" every_day,\n" +
@@ -1042,7 +1096,6 @@ public class CreditAuditHolidayBatch implements Job{
"DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') " +
")";
Sqlca.executeSQL(new SqlObject(insertSql));
- logger.info("【信审考核统计】【saveOrderCreateDay】新增记录保存进单数量<<<<<<<<<<<<<");
}
}
}
@@ -1060,11 +1113,23 @@ public class CreditAuditHolidayBatch implements Job{
// 查询所有需要发送还款提醒的数据
String selSql="SELECT id, every_day, userid, auditFlowType, count_audit FROM st_credit_audit_order ";
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
+ Set passSet = new HashSet<>();
+ Set rejectSet = new HashSet<>();
+ Set rejectSet1 = new HashSet<>();//拒绝数量:信用不良0010
+ Set rejectSet2 = new HashSet<>();//拒绝数量:法院执行0020
+ Set rejectSet3 = new HashSet<>();//拒绝数量:虚假信息0030
+ Set rejectSet4 = new HashSet<>();//拒绝数量:身份核实异常0040
+ Set rejectSet5 = new HashSet<>();//拒绝数量:购车目的异常0050
+ Set rejectSet6 = new HashSet<>();//拒绝数量:综合评分不足0060
+ //排除同一条订单多种意见的情况
+ Map resMap = new HashMap<>();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+ int audittime = 0;
while(rs.next()) {
// 获取接口推送所需数据
con++;
- logger.info("【信审考核统计】【updateOrderAuditDay】信审考核统计订单执行 con=" + con);
+// logger.info("【信审考核统计】【updateOrderAuditDay】信审考核统计订单执行 con=" + con);
String id = rs.getString("id"); // 流程编号
String count_audit = rs.getString("count_audit"); // 审核数量
String auditFlowType = rs.getString("auditFlowType"); // 流程类型
@@ -1082,41 +1147,35 @@ public class CreditAuditHolidayBatch implements Job{
" AND auditFlowType='" + auditFlowType +"'" +
" AND auditType ='BusinessApplyFlow'" ;
ASResultSet rs2 = Sqlca.getASResultSet(new SqlObject(selSql2));
- Set passSet = new HashSet<>();
- Set rejectSet = new HashSet<>();
- Set rejectSet1 = new HashSet<>();//拒绝数量:信用不良0010
- Set rejectSet2 = new HashSet<>();//拒绝数量:法院执行0020
- Set rejectSet3 = new HashSet<>();//拒绝数量:虚假信息0030
- Set rejectSet4 = new HashSet<>();//拒绝数量:身份核实异常0040
- Set rejectSet5 = new HashSet<>();//拒绝数量:购车目的异常0050
- Set rejectSet6 = new HashSet<>();//拒绝数量:综合评分不足0060
+ passSet = new HashSet<>();
+ rejectSet = new HashSet<>();
+ rejectSet1 = new HashSet<>();//拒绝数量:信用不良0010
+ rejectSet2 = new HashSet<>();//拒绝数量:法院执行0020
+ rejectSet3 = new HashSet<>();//拒绝数量:虚假信息0030
+ rejectSet4 = new HashSet<>();//拒绝数量:身份核实异常0040
+ rejectSet5 = new HashSet<>();//拒绝数量:购车目的异常0050
+ rejectSet6 = new HashSet<>();//拒绝数量:综合评分不足0060
//排除同一条订单多种意见的情况
- Map resMap = new HashMap<>();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
- int audittime = 0;
+ resMap = new HashMap<>();
+ audittime = 0;
while(rs2.next()) {
String objectno = rs2.getString("objectno");
String endtime = rs2.getString("endtime");
if(StringUtils.isEmpty(endtime) || "null".equals(endtime)){
- logger.info("【信审考核统计】【updateOrderAuditDay】endtime异常-当前订单为--objectno=" +objectno);
+ logger.warn("【信审考核统计】【updateOrderAuditDay】endtime异常-当前订单为--objectno=" +objectno);
continue;
}
- //取值
- String audittimeStr = rs2.getString("audittime"); // 审核时间
- //审核时间计算
- if(StringUtils.isNotEmpty(audittimeStr) && !"null".equals(audittimeStr)){
- audittime = audittime + Integer.parseInt(audittimeStr);
- }
+
if(resMap.containsKey(objectno)){
String endtimeBak = resMap.get(objectno);
- logger.info("【信审考核统计】【updateOrderAuditDay】双结果订单-当前订单为--objectno=" +objectno);
- logger.info("【信审考核统计】【updateOrderAuditDay】双结果订单-当前订单为--endtimeBak=" +endtimeBak);
- logger.info("【信审考核统计】【updateOrderAuditDay】双结果订单-当前订单为--endtime=" +endtime);
+// logger.info("【信审考核统计】【updateOrderAuditDay】双结果订单-当前订单为--objectno=" +objectno);
+// logger.info("【信审考核统计】【updateOrderAuditDay】双结果订单-当前订单为--endtimeBak=" +endtimeBak);
+// logger.info("【信审考核统计】【updateOrderAuditDay】双结果订单-当前订单为--endtime=" +endtime);
Date endtimeBakDate = sdf.parse(endtimeBak);
Date endtimeDate = sdf.parse(endtime);
//以最新结果为准
if(endtimeBakDate.getTime() > endtimeDate.getTime()){//如果已处理的订单时间大于当前的时间,则不处理当前结果
- logger.info("【信审考核统计】【updateOrderAuditDay】双结果订单-以最新结果为准,不处理当前结果--objectno=" +objectno);
+ logger.warn("【信审考核统计】【updateOrderAuditDay】双结果订单-以最新结果为准,不处理当前结果--objectno=" +objectno);
continue;
}else {//如果当前状态为最新状态,则清除之前的数量
passSet.remove(objectno);
@@ -1129,10 +1188,19 @@ public class CreditAuditHolidayBatch implements Job{
rejectSet6.remove(objectno);
}
}
- logger.info("【信审考核统计】【updateOrderAuditDay】当前订单为--objectno=" +objectno);
+// logger.info("【信审考核统计】【updateOrderAuditDay】当前订单为--objectno=" +objectno);
resMap.put(objectno, endtime);
//大状态:// 0,审核中,1,任意退回,2,审核拒绝,3,审核通过
String auditOrderSts = rs2.getString("auditOrderSts");
+ if(StringUtils.isNotEmpty(auditOrderSts) && !"null".equals(auditOrderSts)
+ && !"0".equals(auditOrderSts) && !"1".equals(auditOrderSts)){
+ //取值
+ String audittimeStr = rs2.getString("audittime"); // 审核时间
+ //审核时间计算
+ if(StringUtils.isNotEmpty(audittimeStr) && !"null".equals(audittimeStr)){
+ audittime = audittime + Integer.parseInt(audittimeStr);
+ }
+ }
//小状态:信用不良0010,法院执行0020,虚假信息0030,身份核实异常0040,购车目的异常0050,综合评分不足0060
String auditResSts = rs2.getString("auditResSts");
@@ -1189,111 +1257,67 @@ public class CreditAuditHolidayBatch implements Job{
* @param date
* @return
*/
- private String resJumpHoliday(Transaction Sqlca, String date) throws SQLException, ParseException {
+ private String resJumpHoliday(Transaction Sqlca, String date, Map listHoliday) throws SQLException, ParseException {
//查询当前时间是否在工作时间
-// logger.info("===================当前时间:date=" + date);
+// logger.info("resJumpHoliday --【开始】--查询当前时间是否在工作时间:date=" + date);
SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
- int hour = Integer.parseInt(date.substring(11, 13));
- int minute = Integer.parseInt(date.substring(14, 16));
- if(hour < 9){//时间小于当天9点,则调整时间为上午九点
- date = date.substring(0, 11) + "09:00:00";
- }else if((hour == 17 && minute > 30) || (hour > 17)){//时间小于当天17:30点,则调整时间为第二天的上午九点
- Date time = simpleDateFormat.parse(date);
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(time);
- calendar.add(Calendar.DAY_OF_MONTH, 1);
- date = simpleDateFormat.format(calendar.getTime()).substring(0, 11) + "09:00:00";
- }
- //查询当前时间是否在节假日时间
- String day = date.substring(0, 10);
- int count = 0;
- while (count < 15){
- count ++;
- String selSql="SELECT count(1) as countNum " +
- " FROM st_credit_audit_holiday st" +
- " WHERE st.c_date='" + day +"'" +
- " AND st.otype='休'" ;
- ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
- int countNum = 0;
- if(rs.next()){
- countNum = rs.getInt("countNum");
- }
- if(countNum > 0){
- Date time = simpleDateFormat.parse(date);
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(time);
- calendar.add(Calendar.DAY_OF_MONTH, 1);
- date = simpleDateFormat.format(calendar.getTime()).substring(0, 11) + "09:00:00";
- day = date.substring(0, 10);
- }else {
- break;
- }
- }
- return date;
+ int hour = Integer.parseInt(date.substring(11, 13));
+ int minute = Integer.parseInt(date.substring(14, 16));
+ if(hour < 9){//时间小于当天9点,则调整时间为上午九点
+ date = date.substring(0, 11) + "09:00:00";
+ }else if((hour == 17 && minute > 30) || (hour > 17)){//时间小于当天17:30点,则调整时间为第二天的上午九点
+ Date time = simpleDateFormat.parse(date);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(time);
+ calendar.add(Calendar.DAY_OF_MONTH, 1);
+ date = simpleDateFormat.format(calendar.getTime()).substring(0, 11) + "09:00:00";
+ }
+ //查询当前时间是否在节假日时间
+ String day = date.substring(0, 10);
+ //logger.info("resJumpHoliday 查询当前时间是否在节假日时间 day=" + day);
+ int count = 0;
+ while (listHoliday.containsKey(day) && count < 15) {
+ //logger.info("resJumpHoliday 节假日时间 day=" + day);
+ count ++;
+ Date time = simpleDateFormat.parse(date);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(time);
+ calendar.add(Calendar.DAY_OF_MONTH, 1);
+ date = simpleDateFormat.format(calendar.getTime()).substring(0, 11) + "09:00:00";
+ day = date.substring(0, 10);
+ logger.info("resJumpHoliday 节假日时间 + 1 day=" + day);
+ }
+ //logger.info("resJumpHoliday --【结束】--查询当前时间是否在工作时间:date=" + date);
+ return date;
}
+
+ /**
+ * 查询所有节假日
+ * @param Sqlca
+ * @return
+ * @throws SQLException
+ */
+ private Map listHoliday(Transaction Sqlca) throws SQLException {
+ String selSql="SELECT c_date " +
+ " FROM st_credit_audit_holiday st" +
+ " WHERE st.otype='休'" ;
+ ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
+ Map holidayMap = new HashMap<>();
+ while(rs.next()) {
+ holidayMap.put(rs.getString("c_date"), "1");
+ }
+ return holidayMap;
+ }
+
/**
* 根据时间段相差时间获得跳过节假日的工作日时间
* @param begintime 开始时间
* @param endtime 结束时间
* @return
*/
- private String resDiffJumpHoliday(Transaction Sqlca, String begintime, String endtime) throws SQLException, ParseException {
- //获取开始时间、结束时间跳过节假日的时间
- begintime = resJumpHoliday(Sqlca, begintime);
- endtime = resJumpHoliday(Sqlca, endtime);
- //确认开始时间,到结束时间,中间隔的时间,并排除节假日时间
- //如果结束时间小于或者等于开始时间
- SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy/MM/dd");
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
- Date beginDate = simpleDateFormat.parse(begintime);
- Date endDate = simpleDateFormat.parse(endtime);
- long diff = 0;
- if(beginDate.getTime() >= endDate.getTime()){
- return "0";
- }else if (begintime.substring(0, 10).equals(endtime.substring(0, 10))){
- diff = diffMinute(beginDate.getTime(), endDate.getTime());
- return String.valueOf(diff);
- }else {
- long diffBeginAfter = diffBeginDateAfter(begintime, beginDate);
- long diffEndDateBefore = diffEndDateBefore(endtime, endDate);
- diff = diffBeginAfter + diffEndDateBefore;
- //得到相差的天数 betweenDate
-
- beginDate = dayFormat.parse(dayFormat.format(beginDate));
- endDate = dayFormat.parse(dayFormat.format(endDate));
- long betweenDate = (endDate.getTime() - beginDate.getTime())/(60*60*24*1000);
- if (betweenDate == 1){
- return String.valueOf(diff);
- }else {//中间相隔大于一天查询数据库相隔天数中有几天是假期,
- begintime = dayFormat.format(beginDate);
- endtime = dayFormat.format(endDate);
- String selSql="SELECT COUNT(1) as countNum FROM (\n" +
- " SELECT c_date\n" +
- " FROM st_credit_audit_holiday st\n" +
- " WHERE st.c_date BETWEEN '"+begintime+"' AND '"+endtime+"'\n" +
- " AND st.otype='休'\n" +
- " GROUP BY st.c_date\n" +
- " ) AS s" ;
- ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
- int countNum = 0;
- if(rs.next()){
- countNum = rs.getInt("countNum");
- }
- diff += (betweenDate - countNum - 1)*8*60;
- return String.valueOf(diff);
- }
- }
- }
-
- /**
- * 根据时间段相差时间获得跳过节假日的工作日时间
- * @param begintime 开始时间
- * @param endtime 结束时间
- * @return
- */
- private String diffTime(Transaction Sqlca, String begintime, String endtime) throws SQLException, ParseException {
+ private String diffTime(Transaction Sqlca, String begintime, String endtime, Map listHoliday) throws SQLException, ParseException {
//如果结束时间小于或者等于开始时间
SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -1302,7 +1326,8 @@ public class CreditAuditHolidayBatch implements Job{
long diff = 0;
if(beginDate.getTime() >= endDate.getTime()){//开始时间大于结束时间
return "0";
- }else if (begintime.substring(0, 10).equals(endtime.substring(0, 10))){//开始时间和结束时间年月日相同
+ }else if (dayFormat.format(beginDate).equals(dayFormat.format(endDate))){//开始时间和结束时间年月日相同
+ logger.info("diffTime2111182 开始时间和结束时间年月日相同 beginDate=" + dayFormat.format(beginDate) + "--> endDate=" + dayFormat.format(endDate));
diff = diffMinute(beginDate.getTime(), endDate.getTime());
return String.valueOf(diff);
}else {
@@ -1313,29 +1338,56 @@ public class CreditAuditHolidayBatch implements Job{
beginDate = dayFormat.parse(dayFormat.format(beginDate));
endDate = dayFormat.parse(dayFormat.format(endDate));
long betweenDate = (endDate.getTime() - beginDate.getTime())/(60*60*24*1000);
+ logger.info("diffTime211118 begintime=" + begintime + "相差天数:betweenDateCX" + betweenDate);
if (betweenDate == 1){
return String.valueOf(diff);
}else {//中间相隔大于一天查询数据库相隔天数中有几天是假期,
begintime = dayFormat.format(beginDate);
endtime = dayFormat.format(endDate);
- String selSql="SELECT COUNT(1) as countNum FROM (\n" +
- " SELECT c_date\n" +
- " FROM st_credit_audit_holiday st\n" +
- " WHERE st.c_date BETWEEN '"+begintime+"' AND '"+endtime+"'\n" +
- " AND st.otype='休'\n" +
- " GROUP BY st.c_date\n" +
- " ) AS s" ;
- ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
- int countNum = 0;
- if(rs.next()){
- countNum = rs.getInt("countNum");
- }
+ //时间段内假期天数
+ int countNum = holidayNum(begintime, endtime, listHoliday);
+ logger.info("diffTime211118 begintime=" + begintime + "非工作天数:holidayNumCX" + countNum);
diff += (betweenDate - countNum - 1)*8*60;
return String.valueOf(diff);
}
}
}
+ /**
+ * 计算该时间中间的假期时间
+ * @param beginDate yyyy/MM/dd
+ * @param endDate yyyy/MM/dd
+ * @param listHoliday yyyy/MM/dd,1
+ * @return
+ */
+ private int holidayNum(String beginDate, String endDate, Map listHoliday) throws ParseException {
+ SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy/MM/dd");
+ int hilidayNum = 0;
+ if(beginDate.equals(endDate)){
+ return hilidayNum;
+ }
+ Date begin = dayFormat.parse(beginDate);
+ Date end = dayFormat.parse(endDate);
+ if(end.getTime() <= begin.getTime()){
+ return hilidayNum;
+ }
+ String tempDate = beginDate;
+ //日期加一,不等于结束日期
+ while (!tempDate.equals(endDate)){
+ //当前日期存在于假期之中,假期加1
+ if(listHoliday.containsKey(tempDate)){
+ hilidayNum++;
+ }
+ Date time = dayFormat.parse(tempDate);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(time);
+ calendar.add(Calendar.DAY_OF_MONTH, 1);
+ tempDate = dayFormat.format(calendar.getTime());
+ }
+ return hilidayNum;
+ }
+
+
private long diffEndDateBeforeNew(String endTime, Date endDate) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String endtimeBefore = endTime.substring(0, 8) + "090000";
@@ -1399,10 +1451,39 @@ public class CreditAuditHolidayBatch implements Job{
return res <= 0 ? 1 : res;
}
-// private long diffMinute(long begin, long end){
-// if(begin > end){
-// return -1;
-// }
-// return (end - begin)/1000/60;
-// }
+ /**
+ * 查询st相关表中时间
+ * @param preDayCount 多少天前数据,增量更新
+ * @return
+ * @throws Exception
+ */
+ private String queryStBeginTime(int preDayCount) throws Exception {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ Date date = new Date();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(date);
+ cal.add(Calendar.DATE, -preDayCount);
+ logger.info("queryStBeginTime 查询st相关表中时间:" + sdf.format(cal.getTime()));
+ return sdf.format(cal.getTime()) + "000000";
+ }
+
+ /**
+ * 查询flow相关表中时间
+ * @param preDayCount 多少天前数据,增量更新
+ * @return
+ * @throws Exception
+ */
+ private String queryFtBeginTime(int preDayCount) throws Exception {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+ Date date = new Date();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(date);
+ cal.add(Calendar.DATE, -preDayCount);
+ logger.info("queryFtBeginTime 查询flow相关表中时间:" + sdf.format(cal.getTime()));
+ return sdf.format(cal.getTime());
+ }
+
+
+
+
}