diff --git a/WebContent/Tenwa/Comm/DocList/PayDocList.jsp b/WebContent/Tenwa/Comm/DocList/PayDocList.jsp index b320d67e1..8b741870a 100644 --- a/WebContent/Tenwa/Comm/DocList/PayDocList.jsp +++ b/WebContent/Tenwa/Comm/DocList/PayDocList.jsp @@ -108,45 +108,27 @@ }; %> + <%@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/Contract/ContractTerminate/ContractTerminateApplyList.jsp b/WebContent/Tenwa/Lease/Flow/Contract/ContractTerminate/ContractTerminateApplyList.jsp index 6fb3a059c..26c68c6b9 100644 --- a/WebContent/Tenwa/Lease/Flow/Contract/ContractTerminate/ContractTerminateApplyList.jsp +++ b/WebContent/Tenwa/Lease/Flow/Contract/ContractTerminate/ContractTerminateApplyList.jsp @@ -10,6 +10,7 @@ //alert(getHtmlMessage('1'));//请选择一条信息! return; } + debugger sReturn = sReturn.split("@"); var contract_id=sReturn[0]; var project_id=sReturn[1]; @@ -17,6 +18,8 @@ var contract_number = sReturn[3]; var project_name = sReturn[4]; var payment_number = sReturn[5]; + //判断是否为可以发起部分结清 + var settletype = sReturn[6]; //校验是否有保证金代偿 /* var isCompensation = AsControl.RunJavaMethod("com.tenwa.reckon.executor.RentCalHelper","isCompensation","contractId="+contract_id); if("false" == isCompensation){ @@ -24,7 +27,7 @@ return ; } */ var sParams = "applyType=<%=sApplyType%>,CurUserID=<%=CurUser.getUserID()%>"; - sParams =sParams+",payment_number="+payment_number+",ProjectId="+project_id+",FlowKey="+payment_number+",ProductId="+product_id+",ContractId="+contract_id+",ProjectName="+project_name; + sParams =sParams+",payment_number="+payment_number+",ProjectId="+project_id+",FlowKey="+payment_number+",ProductId="+product_id+",ContractId="+contract_id+",ProjectName="+project_name+",settletype="+settletype; var sReturnInfo = RunJavaMethodTrans("com.tenwa.lease.flow.contract.terminate.TerminateFlowStartAction","initFLow",sParams); if(typeof(sReturnInfo)=="undefined" || sReturnInfo=="" || sReturnInfo=="_CANCEL_") return; var sReturnInfos=sReturnInfo.split("@"); diff --git a/WebContent/Tenwa/Lease/Flow/Project/BusinessApplication/CustomerFamilyTempInfo.jsp b/WebContent/Tenwa/Lease/Flow/Project/BusinessApplication/CustomerFamilyTempInfo.jsp index ce6469332..da85667f8 100644 --- a/WebContent/Tenwa/Lease/Flow/Project/BusinessApplication/CustomerFamilyTempInfo.jsp +++ b/WebContent/Tenwa/Lease/Flow/Project/BusinessApplication/CustomerFamilyTempInfo.jsp @@ -262,6 +262,11 @@ // parent.parent.resetDWDialog("配偶身份证信息错误!",false); return false; } */ + if(!CheckLicense(certid)){ + alert("配偶证件号格式错误,请检查!"); + return; + } + if(CheckLicense(certid)){ setItemValue(0,0,"certid",certid); //setItemUnit(0,0,"certid",""); diff --git a/WebContent/Tenwa/Lease/Flow/Rent/RentReback/RentIncomeHisList.jsp b/WebContent/Tenwa/Lease/Flow/Rent/RentReback/RentIncomeHisList.jsp index 0bc76b9b0..c88afbf7f 100644 --- a/WebContent/Tenwa/Lease/Flow/Rent/RentReback/RentIncomeHisList.jsp +++ b/WebContent/Tenwa/Lease/Flow/Rent/RentReback/RentIncomeHisList.jsp @@ -1,6 +1,8 @@ <%@page import="com.amarsoft.app.lc.workflow.action.GetFlowAction"%> <%@ page contentType="text/html; charset=GBK"%> <%@ include file="/Frame/resources/include/include_begin_list.jspf"%><% + + String flowNo = CurPage.getParameter("FlowNo");//流程编号 String sFlowUnid = CurPage.getParameter("FlowUnid");//流程编号 if(sFlowUnid == null)sFlowUnid = ""; String sTempletNo = CurPage.getParameter("TempletNo");//模板号 @@ -18,6 +20,9 @@ ASObjectModel doTemp = new ASObjectModel(sTempletNo); doTemp.setHtmlEvent("MEMO", "onmouseover", "showMemo"); doTemp.setHtmlEvent("MEMO", "onmouseout", "hideMemo"); + if("RentRebackFlow".equals(flowNo)){ //租金红冲流程不显示保证金抵扣的数据 + doTemp.appendJboWhere(" and SETTLE_METHOD <> 'settlemethod7'"); + } ASObjectWindow dwTemp = new ASObjectWindow(CurPage,doTemp,request); dwTemp.Style="1"; //--设置为Grid风格-- dwTemp.ReadOnly = "1"; //只读模式 diff --git a/WebContent/WEB-INF/etc/jbo/jbo_app.xml b/WebContent/WEB-INF/etc/jbo/jbo_app.xml index 535ff180f..ada03585a 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_app.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_app.xml @@ -4545,6 +4545,7 @@ + @@ -4667,6 +4668,7 @@ + diff --git a/WebContent/WEB-INF/etc/jbo/jbo_calc.xml b/WebContent/WEB-INF/etc/jbo/jbo_calc.xml index ed8636251..8e2f1901e 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_calc.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_calc.xml @@ -75,7 +75,7 @@ - + @@ -326,6 +326,11 @@ + + + + + @@ -378,6 +383,11 @@ + + + + + diff --git a/WebContent/WEB-INF/etc/jbo/jbo_comm.xml b/WebContent/WEB-INF/etc/jbo/jbo_comm.xml index 6e3d9a9fb..2e6f798db 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_comm.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_comm.xml @@ -845,6 +845,9 @@ + + + diff --git a/WebContent/WEB-INF/etc/jbo/jbo_lease.xml b/WebContent/WEB-INF/etc/jbo/jbo_lease.xml index 9a1fbbc18..53158e6dc 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_lease.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_lease.xml @@ -1511,6 +1511,7 @@ + @@ -2092,6 +2093,7 @@ + @@ -3676,6 +3678,7 @@ + diff --git a/WebContent/WEB-INF/etc/jbo/jbo_sys.xml b/WebContent/WEB-INF/etc/jbo/jbo_sys.xml index 0846b3e7f..61f38bacc 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_sys.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_sys.xml @@ -3238,6 +3238,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/calc/com/tenwa/flow/CopyDormantRentTempToFormal.java b/calc/com/tenwa/flow/CopyDormantRentTempToFormal.java index 1d6ea6122..8392832d9 100644 --- a/calc/com/tenwa/flow/CopyDormantRentTempToFormal.java +++ b/calc/com/tenwa/flow/CopyDormantRentTempToFormal.java @@ -24,7 +24,7 @@ public class CopyDormantRentTempToFormal extends BaseBussiness{ MapfromCondtion=new HashMap(); fromCondtion.put("flowunid",this.getAttribute("FlowUnid").toString()); MapfromCondtion2=new HashMap(); - fromCondtion.put("contract_id",this.getAttribute("ContractId").toString()); + fromCondtion2.put("contract_id",this.getAttribute("ContractId").toString()); MapotherProperty2=new HashMap(); otherProperty2.put("flowunid",this.getAttribute("FlowUnid").toString()); DataOperatorUtil.copySingleJBO(LC_DORMANT_RENT_ADJUST_TEMP.CLASS_NAME, fromCondtion, LC_DORMANT_RENT_ADJUST.CLASS_NAME, null, null, Sqlca); diff --git a/calc/com/tenwa/reckon/copydata/CalcConditionUpdateRent.java b/calc/com/tenwa/reckon/copydata/CalcConditionUpdateRent.java new file mode 100644 index 000000000..02f054ed3 --- /dev/null +++ b/calc/com/tenwa/reckon/copydata/CalcConditionUpdateRent.java @@ -0,0 +1,33 @@ +package com.tenwa.reckon.copydata; + +import com.amarsoft.awe.util.ASResultSet; +import com.amarsoft.awe.util.SqlObject; +import com.amarsoft.awe.util.Transaction; +import com.tenwa.flow.baseBussion.BaseBussiness; + +/** + * 起租后方案信息变更租金计划表合同id为空 + * + * + */ +public class CalcConditionUpdateRent extends BaseBussiness{ + + public Object run(Transaction Sqlca) throws Exception { + this.initBussinessParam(Sqlca); + String flowunid = this.getAttribute("ObjectNo").toString(); //获取流程编号 + String contractId = this.getAttribute("ContractId").toString(); //获取合同编号 + ASResultSet rs = Sqlca.getASResultSet(new SqlObject("select PROJECT_ID,PROJECT_PLAN_NUMBER ,CONTRACT_PLAN_NUMBER ,PAYMENT_NUMBER from lc_rent_plan where CONTRACT_ID ='"+contractId+"' and PLAN_LIST = '1' ")); + if ( rs.next() ) { + SqlObject sql = new SqlObject("update lc_rent_plan_temp set " + + " PROJECT_ID =:projectId,PROJECT_PLAN_NUMBER=:projectPlanNumber ," + + " CONTRACT_PLAN_NUMBER=:contractPlanNumber ,PAYMENT_NUMBER=:paymentNumber,CONTRACT_ID=:contractId " + + " where FLOWUNID=:flowUnid "); + sql.setParameter("projectId", rs.getString( "PROJECT_ID" ) ).setParameter("projectPlanNumber", rs.getString( "PROJECT_PLAN_NUMBER" ) ) + .setParameter("contractPlanNumber", rs.getString( "CONTRACT_PLAN_NUMBER" ) ).setParameter("paymentNumber", rs.getString( "PAYMENT_NUMBER" ) ) + .setParameter("contractId", contractId ).setParameter("flowUnid", flowunid); + Sqlca.executeSQL(sql); + } + return "true"; + + } +} diff --git a/calc/com/tenwa/reckon/executor/CreateTransactionExecutor.java b/calc/com/tenwa/reckon/executor/CreateTransactionExecutor.java index 63a47e36b..068202683 100644 --- a/calc/com/tenwa/reckon/executor/CreateTransactionExecutor.java +++ b/calc/com/tenwa/reckon/executor/CreateTransactionExecutor.java @@ -313,14 +313,20 @@ public class CreateTransactionExecutor implements Transaction { public String carRunOnhire(com.amarsoft.awe.util.Transaction Sqlca) throws Exception { JBOTransaction tx=null; BizObjectManager Bm=JBOFactory.getBizObjectManager(LC_CALC_CONDITION.CLASS_NAME, Sqlca); + BizObjectManager lprrM=JBOFactory.getBizObjectManager(LC_PAY_RENT_PLAN.CLASS_NAME, Sqlca); BizObject boLCC = Bm.createQuery("contract_id='" + contractId + "'").getSingleResult(true); BizObjectManager bmLCI=JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME, Sqlca); BizObject boLCI = bmLCI.createQuery("id='" + contractId + "'").getSingleResult(false); + + List lprrs = lprrM.createQuery(" payment_number=:payment_number ").setParameter("payment_number", this.plannumber ).getResultList(false); + //获取期次 if(boLCC != null) { String settleMethod = boLCC.getAttribute("SETTLE_METHOD").getString(); String defaultDueDay = ProductParamUtil.getProductParameterValue(productId, "PRD0301", settleMethod, "DefaultDueDay"); - int incomeNumber = boLCC.getAttribute("INCOME_NUMBER").getInt(); +// int incomeNumber = boLCC.getAttribute("INCOME_NUMBER").getInt(); + int incomeNumber = lprrs.size() ; + //期初-期末 String periodType = boLCC.getAttribute("PERIOD_TYPE").getString(); String incomeIntervalMonth = boLCC.getAttribute("INCOME_INTERVAL_MONTH").getInt() + ""; @@ -358,6 +364,7 @@ public class CreateTransactionExecutor implements Transaction { } boLCC.setAttributeValue("start_date", startDate); boLCC.setAttributeValue("lease_amt_date", startDate); + boLCC.setAttributeValue("INCOME_NUMBER", incomeNumber); if(planDateList.size()>0)boLCC.setAttributeValue("first_plan_date", planDateList.get(0)); if(planDateList.size()>1)boLCC.setAttributeValue("second_plan_date", planDateList.get(1)); Bm.saveObject(boLCC); @@ -1397,12 +1404,12 @@ public class CreateTransactionExecutor implements Transaction { Double factMoney = new Double(let.getAttribute("FACT_MONEY").getString()); if(mayopeMoney>=advanceMoney){ Double mayopeMoneyNew = mayopeMoney-advanceMoney; - let.setAttributeValue("HAD_MONEY", factMoney - mayopeMoneyNew); + let.setAttributeValue("HAD_MONEY", advanceMoney); let.setAttributeValue("MAYOPE_MONEY", mayopeMoneyNew); letManage.saveObject(let); break; }else{ - let.setAttributeValue("HAD_MONEY", factMoney); + let.setAttributeValue("HAD_MONEY", mayopeMoney); advanceMoney = advanceMoney-mayopeMoney; let.setAttributeValue("MAYOPE_MONEY", 0); letManage.saveObject(let); diff --git a/calc/com/tenwa/reckon/executor/SegmentedFinancingExecutor.java b/calc/com/tenwa/reckon/executor/SegmentedFinancingExecutor.java index 684e7864f..30bfd0fdf 100644 --- a/calc/com/tenwa/reckon/executor/SegmentedFinancingExecutor.java +++ b/calc/com/tenwa/reckon/executor/SegmentedFinancingExecutor.java @@ -43,6 +43,7 @@ public class SegmentedFinancingExecutor extends FundRentPlanExecutor { List overCorpuss = new ArrayList<>(); PlanDateServiceImpl pdsi = new PlanDateServiceImpl( tx ); ConditionBean cb = tcb.getCb(); + BigDecimal maxIncomeNumber = BigDecimal.ZERO; for ( BizObject bo : bos ) { // 分段号 String subsectionNumber = bo.getAttribute( "SUBSECTION_NUMBER" ).getString(); @@ -54,6 +55,10 @@ public class SegmentedFinancingExecutor extends FundRentPlanExecutor { BigDecimal preRate = rate.divide( incomeNumberYear, 20, 4 ); // 期次 BigDecimal incomeNumber = new BigDecimal( bo.getAttribute( "INCOME_NUMBER" ).getString() ); + + if(incomeNumber.compareTo(maxIncomeNumber) > 0 ) { + maxIncomeNumber = incomeNumber; + } cb.setIncomeNumber( incomeNumber.intValue() ); List planDateList = pdsi.getPlanDateList( cb, null ); if ( planDateList.size() > dates.size() ) { @@ -179,6 +184,10 @@ public class SegmentedFinancingExecutor extends FundRentPlanExecutor { } } } + //将分段融的最大值赋值给测算期次 + cb.setIncomeNumber( maxIncomeNumber.intValue() ); + //分段融目前没有配置还款间隔,默认为月付。租赁期限和租赁次数一致 + cb.setLeaseTerm( maxIncomeNumber.intValue() ); FundRentPlanBean fundRentPlanBean = new FundRentPlanBean(); fundRentPlanBean.setCorpusOverageBusinessList( overCorpuss ); fundRentPlanBean.setCorpusBusinessList( corpuss ); diff --git a/src_core/com/tenwa/flow/util/FlowUtil.java b/src_core/com/tenwa/flow/util/FlowUtil.java index 847bab7c0..56d84bfdf 100644 --- a/src_core/com/tenwa/flow/util/FlowUtil.java +++ b/src_core/com/tenwa/flow/util/FlowUtil.java @@ -1,68 +1,39 @@ package com.tenwa.flow.util; -import java.text.DecimalFormat; +import com.amarsoft.app.lc.util.DateAssistant; +import com.amarsoft.are.jbo.*; +import com.amarsoft.are.lang.StringX; +import com.google.common.collect.ImmutableMap; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; +import jbo.com.tenwa.entity.comm.flow.FLOW_WORK_FLAG; +import jbo.com.tenwa.entity.comm.serialutil.T_SERIAL_NUMBER; + import java.util.Calendar; import java.util.HashMap; import java.util.Map; - -import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT; -import jbo.com.tenwa.entity.comm.flow.FLOW_WORK_FLAG; -import jbo.com.tenwa.entity.comm.serialutil.T_SERIAL_DISCARD_NUMBER; -import jbo.com.tenwa.entity.comm.serialutil.T_SERIAL_NUMBER; -import jbo.sys.FLOW_OBJECT; - -import com.amarsoft.app.lc.util.DateAssistant; -import com.amarsoft.are.jbo.BizObject; -import com.amarsoft.are.jbo.BizObjectManager; -import com.amarsoft.are.jbo.BizObjectQuery; -import com.amarsoft.are.jbo.JBOFactory; -import com.amarsoft.are.jbo.JBOTransaction; -import com.amarsoft.are.lang.StringX; -import com.amarsoft.awe.Configure; -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 java.util.Objects; public class FlowUtil { - public static synchronized String getProjectSerialNumber(String orgId,JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("P{year}{month}{day}{maxOrderNumber}",6,null, "项目编号"+orgId, null, tx); - } - - public static synchronized String getEbankSerialNumber(String orgId,JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("E-{year}{month}{maxOrderNumber}",3,null, "网银编号"+orgId, null, tx); - } - - public static synchronized String getOutNoNumber(JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("PF{year}{month}{maxOrderNumber}",4,null, "", null, tx); - } - - public static synchronized String getRentOutNoNumber(JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("PR{year}{month}{maxOrderNumber}",4,null, "", null, tx); - } - + //获取1位的凭证号(凭证号--1、2、3) - public static synchronized String getVoucher_Number(JBOTransaction tx) throws Exception{ - return String.valueOf(Integer.parseInt(FlowUtil.getSerialNumber("{maxOrderNumber}",6,null, "凭证号", Integer.parseInt("2018"), tx))); + public static String getVoucher_Number(JBOTransaction tx) throws Exception { + return FlowUtil.getSerialNumber("{maxOrderNumber}", 6, null, "凭证号", 2018, tx); } - - //获取1位的客户编号(--1、2、3) - public static synchronized String getCustomer_Number(JBOTransaction tx) throws Exception{ - return String.valueOf(Integer.parseInt(FlowUtil.getSerialNumber("{maxOrderNumber}",15,null, "客户编号", Integer.parseInt("2018"), tx))); - } - //获取法人customerid(--1、2、3) - public static synchronized String getCustomer_Id(JBOTransaction tx) throws Exception{ - return String.valueOf(Integer.parseInt(FlowUtil.getSerialNumber("{maxOrderNumber}",15,null, "法人客户编号", Integer.parseInt("2018"), tx))); + + //获取客户编号(法人,自然人) + public static String getCustomer_Number(boolean isCompany, String custType) throws Exception { + ImmutableMap model = ImmutableMap.of("custType", custType); + return FlowUtil.getSerialNumber("APZL{custType}{maxOrderNumber}", 15, model, isCompany ? "法人客户编号" : "客户编号", null, null); } - + //获取经销商编号 - public static synchronized String getDistributorSerialNumber(JBOTransaction tx) throws Exception{ + public static String getDistributorSerialNumber(JBOTransaction tx) throws Exception { return FlowUtil.getSerialNumber("DSTB{year}{month}{day}{maxOrderNumber}",6,null, "经销商编号", null, tx); } - protected static synchronized String getSerialNumber(String serialNumberPattern,int numberCount,Map model,String type,Integer queryYear,JBOTransaction tx) throws Exception - { + + private static String getSerialNumber(String serialNumberPattern, int numberCount, Map model, String type, Integer queryYear, JBOTransaction tx) throws Exception { String currentDateTime = DateAssistant.getTodayNow(); String currentYear = currentDateTime.substring(0,4); String month = currentDateTime.substring(5,7); @@ -70,336 +41,74 @@ public class FlowUtil { String hour = currentDateTime.substring(11,13); String minute = currentDateTime.substring(14,16); String second = currentDateTime.substring(17,19); - - Integer year = Integer.parseInt(currentYear); - if(null != queryYear){ - year = queryYear; - } - Map paramMap = new HashMap(); + Integer year = queryYear != null ? queryYear : Integer.valueOf(currentYear); + Map paramMap = new HashMap<>(); paramMap.put("year", year+""); - paramMap.put("month", month+""); - paramMap.put("day", day+""); - paramMap.put("hour", hour+""); - paramMap.put("minute", minute+""); - paramMap.put("second", second+""); - - int maxOrderNumber = getMaxOrderNumber(type, queryYear, tx); - StringBuffer numberFormat = new StringBuffer(); - for(int i=0;i paramMap,String serialNumberPattern){ - for(String key:paramMap.keySet()){ - if(serialNumberPattern.indexOf("{"+key+"}")>=0){ - serialNumberPattern=serialNumberPattern.replace("{"+key+"}", paramMap.get(key)); + for (String key : paramMap.keySet()) { + if (serialNumberPattern.indexOf("{" + key + "}") >= 0) { + serialNumberPattern = serialNumberPattern.replace("{" + key + "}", paramMap.get(key)); } } return serialNumberPattern; } - /*** - * serialNumberPattern匹配值 - * {year}->年份,如果参数year为空则取当前年 - * {month}->当前月 - * {day}->当前日 - * {hour}->时 - * {minute}->分 - * {second}->秒 - * {maxOrderNumber}->当前最大序号 - * - * **/ - protected static synchronized String getSerialNumberByMonth(String serialNumberPattern,int numberCount,Map model,String type,Integer queryYear,Integer queryMonth,JBOTransaction tx) throws Exception - { - String currentDateTime = DateAssistant.getTodayNow(); - String currentYear = currentDateTime.substring(0,4); - String monthStr = currentDateTime.substring(5,7); - String day = currentDateTime.substring(8,10); - String hour = currentDateTime.substring(11,13); - String minute = currentDateTime.substring(14,16); - String second = currentDateTime.substring(17,19); - - int year = Integer.parseInt(currentYear); - int month = Integer.parseInt(monthStr); - if(null != queryYear){ - year = queryYear; - } - if(null != queryMonth){ - month = queryMonth ; - } - Map paramMap = new HashMap(); - paramMap.put("year", year+""); - paramMap.put("month", monthStr+""); - paramMap.put("day", day+""); - paramMap.put("hour", hour+""); - paramMap.put("minute", minute+""); - paramMap.put("second", second+""); - - int maxOrderNumber = getMaxOrderNumberByMonth(type, year,month, tx); - StringBuffer numberFormat = new StringBuffer(); - for(int i=0;isearchCondtion=new HashMap(); - if(!StringX.isEmpty(type)){ - searchCondtion.put("type_", type); - } - if(null != queryYear){ - searchCondtion.put("year_", queryYear.toString()); - - } - String querySql = DataOperatorUtil.getQuerySql(searchCondtion); - BizObjectQuery bqDest = tNumberManager.createQuery(querySql); - for (String key : searchCondtion.keySet()) { - bqDest.setParameter(key, searchCondtion.get(key).toString()); - } - BizObject serialNumber = null; - serialNumber = bqDest.getSingleResult(true);// 目标JBO,需要做更新操作 - - - if(null==serialNumber){ - - serialNumber = tNumberManager.newObject(); - if(null != queryYear) - { - currentYear = queryYear; - } - serialNumber.setAttributeValue("year_",currentYear); - serialNumber.setAttributeValue("type_",type); - serialNumber.setAttributeValue("order_number_", "0"); - } - int maxOrderNumber = Integer.valueOf(serialNumber.getAttribute("order_number_").getInt()) + 1; - serialNumber.setAttributeValue("order_number_",maxOrderNumber); - tNumberManager.saveObject(serialNumber); - return maxOrderNumber; - } - //考虑并发情况必须采用同步机制 - @SuppressWarnings("unchecked") - protected static synchronized int getMaxOrderNumberByMonth(String type,Integer queryYear,Integer queryMonth,JBOTransaction tx) throws Exception - { - int currentYear = Calendar.getInstance().get(Calendar.YEAR); - int currentMonth = Calendar.getInstance().get(Calendar.MONTH); - BizObjectManager tNumberManager = JBOFactory.getBizObjectManager(T_SERIAL_NUMBER.CLASS_NAME); - tx.join(tNumberManager); - MapsearchCondtion=new HashMap(); - if(!StringX.isEmpty(type)){ - searchCondtion.put("type_", type); - } - if(null != queryYear){ - searchCondtion.put("year_", queryYear.toString()); - - } - if(null != queryMonth){ - searchCondtion.put("month_", queryMonth.toString()); - - } - String querySql = DataOperatorUtil.getQuerySql(searchCondtion); - BizObjectQuery bqDest = tNumberManager.createQuery(querySql); - for (String key : searchCondtion.keySet()) { - bqDest.setParameter(key, searchCondtion.get(key).toString()); - } - BizObject serialNumber = null; - serialNumber = bqDest.getSingleResult(true);// 目标JBO,需要做更新操作 - - - if(null==serialNumber) - { - - serialNumber = tNumberManager.newObject(); - if(null != queryYear) - { - currentYear = queryYear; + //考虑并发情况必须采用同步机制 + private static synchronized int getMaxOrderNumber(String type, Integer queryYear) throws Exception { + JBOTransaction tx = null; + try { + tx = JBOFactory.createJBOTransaction(); + int currentYear = Calendar.getInstance().get(Calendar.YEAR); + BizObjectManager tNumberManager = JBOFactory.getBizObjectManager(T_SERIAL_NUMBER.CLASS_NAME); + tx.join(tNumberManager); + Map searchCondtion = new HashMap(); + if (!StringX.isEmpty(type)) { + searchCondtion.put("type_", type); } - if(null != queryMonth){ - currentMonth = queryMonth; + if (null != queryYear) { + searchCondtion.put("year_", queryYear.toString()); + } - serialNumber.setAttributeValue("year_",currentYear); - serialNumber.setAttributeValue("month_",currentMonth); - serialNumber.setAttributeValue("type_",type); - serialNumber.setAttributeValue("order_number_", "0"); + String querySql = DataOperatorUtil.getQuerySql(searchCondtion); + BizObjectQuery bqDest = tNumberManager.createQuery(querySql); + for (String key : searchCondtion.keySet()) { + bqDest.setParameter(key, searchCondtion.get(key).toString()); + } + // 目标JBO,需要做更新操作 + BizObject serialNumber = bqDest.getSingleResult(true); + if (Objects.isNull(serialNumber)) { + serialNumber = tNumberManager.newObject(); + serialNumber.setAttributeValue("year_", queryYear != null ? queryYear : currentYear); + serialNumber.setAttributeValue("type_", type); + serialNumber.setAttributeValue("order_number_", "0"); + } + int maxOrderNumber = serialNumber.getAttribute("order_number_").getInt() + 1; + serialNumber.setAttributeValue("order_number_", maxOrderNumber); + tNumberManager.saveObject(serialNumber); + tx.commit(); + return maxOrderNumber; + } catch (Exception e) { + if (tx != null) tx.rollback(); + throw e; } - int maxOrderNumber = Integer.valueOf(serialNumber.getAttribute("order_number_").getInt()) + 1; - serialNumber.setAttributeValue("order_number_",maxOrderNumber); - tNumberManager.saveObject(serialNumber); - return maxOrderNumber; } - /** - * 优先从号码废弃池中取号,如果号码废弃池中没有待取号吗,则根据序列号生成 - * @param serialNumberPattern - * @param numberCount - * @param model - * @param type - * @param queryYear - * @param hibernateTemplate - * @param jdbcTemplate - * @return - * @throws Exception - */ - protected static synchronized String getSerialNumberFirstDiscard(String serialNumberPattern,int numberCount,Map model,String type,Integer queryYear,JBOTransaction tx) throws Exception - { - String currentDateTime = DateAssistant.getTodayNow(); - String currentYear = currentDateTime.substring(0,4); - String month = currentDateTime.substring(5,7); - String day = currentDateTime.substring(8,10); - String hour = currentDateTime.substring(11,13); - String minute = currentDateTime.substring(14,16); - String second = currentDateTime.substring(17,19); - - int year = Integer.parseInt(currentYear); - if(null != queryYear){ - year = queryYear; - } - Map paramMap = new HashMap(); - paramMap.put("year", year+""); - paramMap.put("month", month+""); - paramMap.put("day", day+""); - paramMap.put("hour", hour+""); - paramMap.put("minute", minute+""); - paramMap.put("second", second+""); - - int maxOrderNumber =0; - //从废弃池查找可用号码 - maxOrderNumber=getMinDiscardNumber(type, queryYear, tx); - if(maxOrderNumber<0){//废弃池中没有数据 - maxOrderNumber=getMaxOrderNumber(type, year, tx); - } - StringBuffer numberFormat = new StringBuffer(); - for(int i=0;i condtion = new HashMap(); + condtion.put("flow_unid", flowUnid); + DataOperatorUtil.deleteJBOByCondtion(FLOW_WORK_FLAG.CLASS_NAME, condtion, tx); } - @SuppressWarnings("unchecked") - protected static synchronized int getMinDiscardNumber(String type,Integer queryYear,JBOTransaction tx) throws Exception - { - BizObjectManager tNumberManager = JBOFactory.getBizObjectManager(T_SERIAL_DISCARD_NUMBER.CLASS_NAME); - tx.join(tNumberManager); - MapsearchCondtion=new HashMap(); - if(!StringX.isEmpty(type)){ - searchCondtion.put("type_", type); - } - if(null != queryYear){ - searchCondtion.put("year_", queryYear.toString()); - - } - - String querySql = DataOperatorUtil.getQuerySql(searchCondtion); - BizObjectQuery bqDest = tNumberManager.createQuery(querySql); - for (String key : searchCondtion.keySet()) { - bqDest.setParameter(key, searchCondtion.get(key).toString()); - } - BizObject serialNumber = null; - serialNumber = bqDest.getSingleResult(true);// 目标JBO,需要做更新操作 - - if(null!=serialNumber) - { - int minOrderNumber = serialNumber.getAttribute("discard_number_").getInt(); - tNumberManager.deleteObject(serialNumber); - return minOrderNumber; - } - return -1; - } - - public static void deleteWorkFlowConflict(String flowUnid,JBOTransaction tx) throws Exception{ - Map condtion=new HashMap(); - condtion.put("flow_unid", flowUnid); - DataOperatorUtil.deleteJBOByCondtion(FLOW_WORK_FLAG.CLASS_NAME, condtion, tx); - } - - public static String checkWorkFlowConflict(String flowUnid,String flowname,String flowkey,JBOTransaction tx)throws Exception{ - String sql="SELECT flow_unid,flow_name FROM flow_work_flag WHERE flow_name IN(" - + "SELECT flow_nameb FROM flow_mutex_config " - + "WHERE flow_namea=:flow_namea ) AND mutex_key=:mutex_key"; - ASResultSet rs = null; - String flow_unid=null; - String flow_name=null; - String username=null; - String res=""; - try { - MapsearchCondtion=new HashMap(); - Configure CurConfig = Configure.getInstance(); - String sDataSource = CurConfig.getDataSource(); - Transaction Sqlca = Transaction.createTransaction(sDataSource); - SqlObject so = new SqlObject(sql); - so.setParameter("flow_namea",flowname); - so.setParameter("mutex_key",flowkey); - rs = Sqlca.getASResultSet(so); - while(rs.next()){ - flow_unid=rs.getString("flow_unid"); - flow_name=rs.getString("flow_name"); - searchCondtion.clear(); - searchCondtion.put("objectno", flow_unid); - BizObject flowobject=DataOperatorUtil.getSingleJBO(FLOW_OBJECT.CLASS_NAME, searchCondtion, tx); - if(res!=""){ - res+=","; - } - res+=flow_name+"[用户名:"+flowobject.getAttribute("username").getString()+"]"; - } - } catch (Exception e) { - e.printStackTrace(); - }finally{ - rs.close(); - } - if(res.length()>0){ - //删除表数据 - Mapcondtion=new HashMap(); - condtion.put("flow_unid", flowUnid); - DataOperatorUtil.deleteJBOByCondtion(FLOW_BUSSINESS_OBJECT.CLASS_NAME, condtion, tx); - return "当前流程和"+res+"互斥,如有疑惑请联系管理员"; - }else{ - /*BizObjectManager bom=JBOFactory.getBizObjectManager(FLOW_BUSSINESS_OBJECT.CLASS_NAME); - tx.join(bom); - BizObject bo=bom.newObject(); - - bo.setAttributeValue("flow_unid", flowUnid); - bo.setAttributeValue("flow_name", flowname); - bo.setAttributeValue("flow_key", flowkey); - bom.saveObject(bo);*/ - return null; - } - - } - + } diff --git a/src_core/com/tenwa/jbo/manager/BizObject.java b/src_core/com/tenwa/jbo/manager/BizObject.java new file mode 100644 index 000000000..00c20673d --- /dev/null +++ b/src_core/com/tenwa/jbo/manager/BizObject.java @@ -0,0 +1,177 @@ +package com.tenwa.jbo.manager; + +import com.tenwa.comm.exception.BusinessException; +import org.apache.commons.lang.StringUtils; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class BizObject implements Cloneable { + + private String className; + private List datas; + + private BizObject(String className ) { + this.className = className; + } + + public static BizObject getBizObject(String className ) { + return new BizObject( className ); + } + + public void setAttributeValue( String columnName, Object value ) throws SQLException { + if ( columnName == null || "".equals( columnName ) ) { + throw new SQLException( "column name can not be null" ); + } + + if ( datas == null ) { + datas = new ArrayList(); + } + + if ( value == null || "".equals( value ) ) { + datas.add( new DataObject( columnName, "string", null ) ); + } else { + String type = value.getClass().getSimpleName().toLowerCase(); + if ( !DataObject.types.contains( type ) ) { + throw new SQLException( "unrecognized value type" ); + } + datas.add( new DataObject( columnName, type, value ) ); + } + } + + public List query(String params ) throws Exception { + return query( null, params ); + } + + public List query(List> params ) throws Exception { + return query( params, null ); + } + + public List query(List> paramList, String params ) throws Exception { + List bizObjects = DataUtil.getArrayList(); + String sql = "select * from " + this.getTableName(); + String sqlWhere = ""; + String[] sqlParam = null; + if ( StringUtils.isNotEmpty( params ) ) { + sqlWhere += " where 1 = 1"; + String[] ps = params.split( "," ); + sqlParam = new String[ ps.length ]; + int i = 0; + for ( String p : ps ) { + sqlWhere += " and " + p.split( "=" )[ 0 ] + " = ? "; + sqlParam[ i ++ ] = p.split( "=" )[ 1 ]; + } + } + List> datas; + if ( paramList != null ) { + List> pl = DataUtil.getArrayList(); + sqlWhere += " where 1 = 1"; + List keys = DataUtil.getArrayList(); + for ( int i = 0; i < paramList.size(); i ++ ) { + List p; + Map mp = paramList.get( i ); + int j = 0; + for ( Map.Entry m : mp.entrySet() ) { + String key = m.getKey(); + if ( !keys.contains( key ) ) { + String s = ""; + for ( int x = 0; x < paramList.size(); x ++ ) { + if ( s.length() > 0 ) { + s += ","; + } + s += "?"; + } + sqlWhere += " and " + m.getKey() + " in ( " + s + " )"; + keys.add( key ); + } + if ( pl.size() > j ) { + p = pl.get( j ); + } else { + p = DataUtil.getArrayList(); + pl.add( p ); + } + p.add( m.getValue() ); + j ++; + } + } + List r = DataUtil.getArrayList(); + for ( List p : pl ) { + r.addAll( p ); + } + datas = DataUtil.query( sql + sqlWhere, null, r.toArray() ); + } else { + datas = DataUtil.query( sql + sqlWhere, null, sqlParam ); + } + for ( Map data : datas ) { + BizObject bo = (BizObject) this.clone(); + for ( Map.Entry entry : data.entrySet() ) { + bo.setAttributeValue( entry.getKey(), entry.getValue() ); + } + bizObjects.add( bo ); + } + + return bizObjects; + } + + public String getTableName() { + if ( this.className.indexOf( "." ) != -1 ) { + return this.className.substring( this.className.lastIndexOf( "." ) + 1 ); + } + return this.className; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public List getDatas() { + return this.datas; + } + + public String getAttribute( String key ) throws Exception { + for ( DataObject data : this.datas ) { + if ( data.getColumnName().equalsIgnoreCase( key ) ) { + return DataUtil.getString( data.getColumnValue() ); + } + } + throw new BusinessException( "column name not found" ); + } + + public void setAttributes( List datas ) { + this.datas = datas; + } + + public void removeColumn( String columnName ) { + int removeIndex = -1; + for ( int i = 0; i < getDatas().size(); i ++ ) { + DataObject dataObject = getDatas().get( i ); + if ( columnName.equals( dataObject.getColumnName() ) ) { + removeIndex = i; + break; + } + } + getDatas().remove( removeIndex ); + } + + @Override + public BizObject clone() throws CloneNotSupportedException { + BizObject newBo = getBizObject( this.getClassName() ); + List dataObjects = this.getDatas(); + if ( dataObjects == null ) { + return newBo; + } + for ( DataObject dataObject : dataObjects ) { + try { + newBo.setAttributeValue( dataObject.getColumnName(), dataObject.getColumnValue() ); + } catch ( SQLException e ) { + } + } + return newBo; + } +} diff --git a/src_core/com/tenwa/jbo/manager/ConnUtil.java b/src_core/com/tenwa/jbo/manager/ConnUtil.java new file mode 100644 index 000000000..69a05d826 --- /dev/null +++ b/src_core/com/tenwa/jbo/manager/ConnUtil.java @@ -0,0 +1,109 @@ +package com.tenwa.jbo.manager; + +import com.amarsoft.are.jbo.JBOException; +import com.amarsoft.are.jbo.JBOFactory; +import com.amarsoft.are.jbo.JBOTransaction; +import com.amarsoft.awe.util.Transaction; + +import java.sql.Connection; + +public class ConnUtil { + + private Connection connection; + private JBOTransaction jboTransaction; + private Transaction transaction; + private boolean flag = false; + + public ConnUtil() throws Exception { + this.flag = true; + this.jboTransaction = JBOFactory.createJBOTransaction(); + this.transaction = Transaction.createTransaction( this.jboTransaction ); + this.connection = this.transaction.getConnection( this.transaction ); + } + + public ConnUtil(JBOTransaction jboTransaction ) throws Exception { + if ( jboTransaction == null ) { + this.flag = true; + this.jboTransaction = JBOFactory.createJBOTransaction(); + } else { + this.jboTransaction = jboTransaction; + } + this.transaction = Transaction.createTransaction( this.jboTransaction ); + this.connection = this.transaction.getConnection( this.transaction ); + } + + public ConnUtil(Transaction transaction ) throws Exception { + if ( transaction == null ) { + this.flag = true; + this.transaction = Transaction.createTransaction( JBOFactory.createJBOTransaction() ); + } else { + this.transaction = transaction; + } + this.jboTransaction = this.transaction.getTransaction(); + this.connection = this.transaction.getConnection( transaction ); + } + + public JBOTransaction getJboTransaction() { + return jboTransaction; + } + + public void setJboTransaction(JBOTransaction jboTransaction) { + this.jboTransaction = jboTransaction; + } + + public Transaction getTransaction() { + return transaction; + } + + public void setTransaction(Transaction transaction) { + this.transaction = transaction; + } + + public Connection getConnection() { + return this.connection; + } + + public void setConnection(Connection connection) { + this.connection = connection; + } + + public void commit() throws JBOException { + if ( this.transaction != null && this.flag ) { + this.transaction.commit(); + this.transaction = null; + } + } + + public void rollback() throws JBOException { + if ( this.transaction != null && this.flag ) { + this.transaction.rollback(); + this.transaction = null; + } + } + + public void close() throws JBOException { + if ( this.transaction != null && this.flag ) { + this.transaction.disConnect(); + this.transaction = null; + } + } + + /** + * 在类被销毁时,判断内部链接是否存在,如果存在,则关闭连接 + * @throws Throwable + */ + @Override + protected void finalize() throws Throwable { + if ( connection != null && !connection.isClosed() && this.flag ) { + connection.close(); + } + + if ( transaction != null && this.flag ) { + transaction.rollback(); + } + + if ( jboTransaction != null && this.flag ) { + jboTransaction.rollback(); + } + } +} diff --git a/src_core/com/tenwa/jbo/manager/DataObject.java b/src_core/com/tenwa/jbo/manager/DataObject.java new file mode 100644 index 000000000..58e353b05 --- /dev/null +++ b/src_core/com/tenwa/jbo/manager/DataObject.java @@ -0,0 +1,51 @@ +package com.tenwa.jbo.manager; + +import java.util.Arrays; +import java.util.List; + +/** + * 数据存储对象 + */ +public class DataObject { + + private String columnName; + /** + * 目前只有string, int, long, double, boolean, date, bigdecimal, serializable + */ + private String columnType; + private Object columnValue; + + public static List types = Arrays.asList( new String[]{ "string", "int", "integer", "long", "double", "boolean", "date", "bigdecimal" } ); + + public DataObject(String columnName, String columnType, Object columnValue) { + this.columnName = columnName; + this.columnType = columnType; + this.columnValue = columnValue; + } + + public String getColumnName() { + return columnName; + } + + public void setColumnName(String columnName) { + this.columnName = columnName; + } + + public String getColumnType() { + return columnType; + } + + public void setColumnType(String columnType) { + this.columnType = columnType; + } + + public Object getColumnValue() { + return columnValue; + } + + public void setColumnValue(Object columnValue) { + this.columnValue = columnValue; + } + + +} diff --git a/src_core/com/tenwa/jbo/manager/DataUtil.java b/src_core/com/tenwa/jbo/manager/DataUtil.java new file mode 100644 index 000000000..a702d6425 --- /dev/null +++ b/src_core/com/tenwa/jbo/manager/DataUtil.java @@ -0,0 +1,4746 @@ +package com.tenwa.jbo.manager; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.amarsoft.app.als.sys.tools.DateUtil; +import com.amarsoft.app.util.ProductParamUtil; +import com.amarsoft.app.util.StringUtil; +import com.amarsoft.are.ARE; +import com.amarsoft.are.jbo.*; +import com.amarsoft.are.jbo.impl.StateBizObject; +import com.amarsoft.are.lang.DataElement; +import com.amarsoft.are.util.ASValuePool; +import com.amarsoft.are.util.StringFunction; +import com.amarsoft.awe.control.model.Page; +import com.amarsoft.awe.control.model.Parameter; +import com.amarsoft.awe.dw.ASColumn; +import com.amarsoft.awe.dw.ASDataObject; +import com.amarsoft.awe.dw.ASDataObjectFilter; +import com.amarsoft.awe.dw.ASObjectModel; +import com.amarsoft.awe.dw.datamodel.CatalogModel; +import com.amarsoft.awe.dw.datamodel.StyleModel; +import com.amarsoft.biz.bizlet.Bizlet; +import com.amarsoft.context.ASUser; +import com.amarsoft.dict.als.cache.AWEDataWindowCache; +import com.amarsoft.dict.als.cache.CodeCache; +import com.amarsoft.dict.als.manage.CodeManager; +import com.amarsoft.dict.als.object.Item; +import com.sun.xml.internal.stream.XMLInputFactoryImpl; +import com.sun.xml.internal.stream.XMLOutputFactoryImpl; +import com.tenwa.flow.treeview.action.BaseInitTreeView; +import com.tenwa.flow.treeview.action.TreeItemData; +import com.tenwa.reckon.bean.TabCalBean; +import com.tenwa.reckon.util.UUIDUtil; +import org.apache.commons.lang.StringUtils; + +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLOutputFactory; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.net.URLDecoder; +import java.sql.*; +import java.sql.Date; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class DataUtil { + + public static ThreadLocal> threadParams = new ThreadLocal<>(); + + public static Map getThreadParams() { + return threadParams.get(); + } + + public static void setThreadParams(Map params) { + threadParams.set(params); + } + + public static Object getThreadParam(String key) { + if (threadParams.get() != null) { + return threadParams.get().get(key); + } + return null; + } + + public static void setThreadParam(String key, Object value) { + Map params = threadParams.get(); + if (params == null) { + params = new ConcurrentHashMap<>(); + } + params.put(key, value); + setThreadParams(params); + } + + public static void removeThreadParams() { + threadParams.remove(); + } + + public static ThreadLocal> paramHolder = new ThreadLocal<>(); + + public static void setHolderParam(Map params) { + paramHolder.set(params); + } + + public static Map getHolderParam() { + return paramHolder.get(); + } + + public static void removeHolderParam() { + paramHolder.remove(); + } + + /** + * 流程参数变更类型 + */ + public static final String TYPE01 = "new variable"; + public static final String TYPE02 = "variable is cleared"; + public static final String TYPE03 = "no change"; + public static final String TYPE04 = "change in type"; + public static final String TYPE05 = "unresolved data type"; + public static final String TYPE06 = ""; + + public static List getArrayList() { + return Collections.synchronizedList(new ArrayList<>()); + } + + /** + * 批处理插入数据 + * + * @param tableName 表名 + * @param dataList 字段信息[字段名称、字段类型、字段值] + * @param tx 事务,可传可不传 + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public static int[] insert(String tableName, List dataList, JBOTransaction tx) throws Exception { + if (tableName == null || "".equals(tableName)) { + return new int[]{0}; + } + if (dataList == null || dataList.size() == 0) { + return new int[]{0}; + } + + List> datas = getArrayList(); + for (int i = 0; i < dataList.size(); i++) { + if (dataList.get(0) instanceof com.tenwa.jbo.manager.BizObject) { + datas.add(((com.tenwa.jbo.manager.BizObject) dataList.get(i)).getDatas()); + } else if (dataList.get(0) instanceof com.amarsoft.are.jbo.BizObject) { + com.amarsoft.are.jbo.BizObject bo = (com.amarsoft.are.jbo.BizObject) dataList.get(i); + datas.add(getDataObjectByJBO(bo)); + } else { + datas.add((List) dataList.get(i)); + } + } + // 生成SQL + StringBuffer table = new StringBuffer("INSERT INTO " + tableName); + StringBuffer column = new StringBuffer("("); + StringBuffer value = new StringBuffer("("); + for (DataObject col : datas.get(0)) { + if (column.length() > 1) { + column.append(","); + value.append(","); + } + column.append(col.getColumnName()); + value.append("?"); + } + column.append(")"); + value.append(")"); + String sql = table.append(column).append(" VALUES").append(value).toString(); + + ConnUtil connUtil = new ConnUtil(tx); + Connection conn = connUtil.getConnection(); + StringBuffer log = new StringBuffer("*************************************************[insert] " + tableName + "**************************************************"); + log.append("\n"); + log.append(sql); + System.out.println("======" + log.toString()); + PreparedStatement ps = null; + int[] result; + try { + ps = conn.prepareStatement(sql); + setParameter(ps, datas, log); + result = ps.executeBatch(); + + if (ARE.getLog().isInfoEnabled()) { + ARE.getLog().info(log.toString()); + ARE.getLog().info("*************************************************[insert] " + tableName + "**************************************************"); + } + connUtil.commit(); + } catch (Exception e) { + e.printStackTrace(); + connUtil.rollback(); + throw e; + } finally { + if (ps != null) ps.close(); + } + return result; + } + + public static int[] update(List dataList, String... keys) throws Exception { + return update(dataList, null, null, keys); + } + + public static int[] update(Object data, JBOTransaction tx, String... keys) throws Exception { + List dataList = getArrayList(); + String tableName = ""; + Object obj = null; + String type = data.getClass().getSimpleName(); + if ("ArrayList".equals(type) || "SynchronizedRandomAccessList".equals(type)) { + obj = ((List) data).get(0); + dataList.addAll((List) data); + } else { + obj = data; + dataList.add(data); + } + if (obj instanceof BizObject) { + tableName = ((BizObject) obj).getTableName(); + } else if (obj instanceof com.amarsoft.are.jbo.BizObject) { + tableName = ((com.amarsoft.are.jbo.BizObject) obj).getBizObjectClass().getName(); + String pattern = "\\d"; + if (Pattern.matches(pattern, tableName.substring(tableName.length() - 1))) { + tableName = tableName.substring(0, tableName.lastIndexOf("X")); + } + } + return update(tableName, dataList, null, tx, keys); + } + + public static int[] update(List dataList, JBOTransaction tx, String... keys) throws Exception { + String tableName = ""; + if (dataList.get(0) instanceof BizObject) { + tableName = ((BizObject) dataList.get(0)).getTableName(); + } else if (dataList.get(0) instanceof com.amarsoft.are.jbo.BizObject) { + tableName = ((com.amarsoft.are.jbo.BizObject) dataList.get(0)).getBizObjectClass().getName(); + } + return update(tableName, dataList, null, tx, keys); + } + + public static int[] update(List dataList, String excludeFields, JBOTransaction tx, String... keys) throws Exception { + String tableName = ""; + if (dataList.get(0) instanceof BizObject) { + tableName = ((BizObject) dataList.get(0)).getTableName(); + } else if (dataList.get(0) instanceof com.amarsoft.are.jbo.BizObject) { + tableName = ((com.amarsoft.are.jbo.BizObject) dataList.get(0)).getBizObjectClass().getName(); + } + return update(tableName, dataList, excludeFields, tx, keys); + } + + public static int[] update(String tableName, List dataList, JBOTransaction tx, String... keys) throws Exception { + return update(tableName, dataList, null, tx, keys); + } + + /** + * 批处理更新数据 + * + * @param tableName 表名 + * @param dataList 字段信息[字段名称、字段类型、字段值] + * @param tx 事务,可传可不传 + * @return + * @throws Exception + */ + public static int[] update(String tableName, List dataList, String excludeFields, JBOTransaction tx, String... keys) throws Exception { + if (tableName == null || "".equals(tableName)) { + return new int[]{0}; + } + if (dataList == null || dataList.size() == 0) { + return new int[]{0}; + } + // 生成SQL + StringBuffer table = new StringBuffer("UPDATE " + tableName); + StringBuffer column = new StringBuffer(); + StringBuffer key = new StringBuffer(); + column.append(" SET "); + List> datas = getArrayList(); + List> removeDataObjects = getArrayList(); + for (int i = 0; i < dataList.size(); i++) { + List data = null; + if (dataList.get(0) instanceof com.tenwa.jbo.manager.BizObject) { + data = ((com.tenwa.jbo.manager.BizObject) dataList.get(i)).getDatas(); + } else if (dataList.get(0) instanceof com.amarsoft.are.jbo.BizObject) { + com.amarsoft.are.jbo.BizObject bo = (com.amarsoft.are.jbo.BizObject) dataList.get(i); + data = getDataObjectByJBO(bo); + } else { + data = (List) dataList.get(i); + } + datas.add(data); + if (StringUtils.isNotEmpty(excludeFields)) { + List removeDataObject = getArrayList(); + for (String removeColumName : excludeFields.toUpperCase().split(",")) { + for (DataObject dataObject : data) { + if (dataObject.getColumnName().toUpperCase().equals(removeColumName)) { + removeDataObject.add(dataObject); + } + } + } + removeDataObjects.add(removeDataObject); + } + } + + for (int i = 0; i < removeDataObjects.size(); i++) { + for (int j = 0; j < removeDataObjects.get(i).size(); j++) { + datas.get(i).remove(removeDataObjects.get(i).get(j)); + } + } + + // 调整因where导致的下标调整 + int num = 1; + Map index = new ConcurrentHashMap<>(); + for (int i = 0; i < datas.get(0).size(); i++) { + DataObject col = datas.get(0).get(i); + if (keys != null && keys.length > 0) { + if (Arrays.stream(keys).anyMatch(str -> str.equalsIgnoreCase(col.getColumnName()))) continue; + } + if (!column.toString().trim().equals("SET")) { + column.append(", "); + } + index.put(col.getColumnName().toUpperCase(), num++); + column.append(col.getColumnName().toUpperCase()).append(" = ?"); + } + + if (keys != null && keys.length > 0) { + key.append(" WHERE "); + for (int j = 0; j < keys.length; j++) { + if (j > 0) { + key.append(" AND "); + } + index.put(keys[j].toUpperCase(), num++); + key.append(keys[j]).append(" = ?"); + } + } + String sql = table.append(column).append(key).toString(); + + ConnUtil connUtil = new ConnUtil(tx); + Connection conn = connUtil.getConnection(); + StringBuffer log = new StringBuffer("*************************************************[update] " + tableName + "**************************************************"); + log.append("\n"); + log.append(sql); + PreparedStatement ps = null; + int[] result; + try { + ps = conn.prepareStatement(sql); + setParameter(ps, datas, log, index); + result = ps.executeBatch(); + + if (ARE.getLog().isInfoEnabled()) { + ARE.getLog().info(log.toString()); + ARE.getLog().info("*************************************************[update] " + tableName + "**************************************************"); + } + connUtil.commit(); + } catch (Exception e) { + e.printStackTrace(); + connUtil.rollback(); + throw e; + } finally { + if (ps != null) ps.close(); + } + return result; + } + + public static void setParameter(PreparedStatement ps, List> datas, StringBuffer log) throws Exception { + setParameter(ps, datas, log, null); + } + + public static void setParameter(PreparedStatement ps, List> datas, StringBuffer log, Map colIndex) throws Exception { + for (int i = 0; i < datas.size(); i++) { + List cols = datas.get(i); + if (cols.size() == 0) { + throw new SQLException("index " + i + " data is empty"); + } + log.append("\n{"); + for (int j = 0; j < cols.size(); j++) { + DataObject col = cols.get(j); + int index; + if (colIndex != null) { + index = colIndex.get(col.getColumnName().toUpperCase()); + } else { + index = j + 1; + } + if (j > 0) { + log.append(", "); + } + log.append(col.getColumnName()).append("=").append(col.getColumnValue()); + switch (col.getColumnType()) { + case "string": + ps.setString(index, StringUtil.empty2Other(col.getColumnValue(), "")); + break; + case "int": + case "integer": + ps.setInt(index, col.getColumnValue() == null ? 0 : (int) col.getColumnValue()); + break; + case "long": + ps.setLong(index, col.getColumnValue() == null ? 0 : (long) col.getColumnValue()); + break; + case "double": + ps.setDouble(index, col.getColumnValue() == null ? 0.0 : (double) col.getColumnValue()); + break; + case "boolean": + if (col.getColumnValue() == null) { + ps.setNull(index, Types.BOOLEAN); + } else { + ps.setBoolean(index, (boolean) col.getColumnValue()); + } + break; + case "bigdecimal": + ps.setBigDecimal(index, col.getColumnValue() == null ? BigDecimal.ZERO : (BigDecimal) col.getColumnValue()); + break; + case "blob": + if (col.getColumnValue() == null) { + ps.setNull(index, Types.BLOB); + } else { + ps.setBlob(index, (Blob) col.getColumnValue()); + } + break; + case "serializable": + if (col.getColumnValue() == null) { + ps.setNull(index, Types.VARCHAR); + } else { + ByteArrayOutputStream bytesOut = null; + ObjectOutputStream objectOut = null; + try { + bytesOut = new ByteArrayOutputStream(); + objectOut = new ObjectOutputStream(bytesOut); + objectOut.writeObject(col.getColumnValue()); + objectOut.flush(); + bytesOut.flush(); + byte[] buf = bytesOut.toByteArray(); + ByteArrayInputStream bytesIn = new ByteArrayInputStream(buf); + ps.setBinaryStream(index, bytesIn, buf.length); + } catch (Exception e) { + throw e; + } finally { + if (objectOut != null) objectOut.close(); + if (bytesOut != null) bytesOut.close(); + } + } + break; + case "date": + if (col.getColumnValue() == null) { + ps.setNull(index, Types.DATE); + } else { + ps.setObject(index, new Timestamp(((Date) col.getColumnValue()).getTime())); + } + break; + // TODO 谁要谁补 + } + } + log.append("}"); + ps.addBatch(); + } + } + + public static int[] insert(BizObject data, JBOTransaction tx) throws Exception { + List datas = getArrayList(); + datas.add(data); + return insert(datas, tx); + } + + public static int[] insert(List dataList, JBOTransaction tx) throws Exception { + String tableName = ""; + if (dataList.get(0) instanceof BizObject) { + tableName = ((BizObject) dataList.get(0)).getTableName(); + } else if (dataList.get(0) instanceof com.amarsoft.are.jbo.BizObject) { + tableName = ((com.amarsoft.are.jbo.BizObject) dataList.get(0)).getBizObjectClass().getName(); + } + return insert(tableName, dataList, tx); + } + + public static int[] insert(String tableName, List datas) throws Exception { + return insert(tableName, datas, null); + } + + public static int insert(List bos) throws Exception { + return insertBizObject(bos, null); + } + + public static int insertBizObject(List bos, JBOTransaction tx) throws Exception { + Map>> datasWillBeSaved = new HashMap<>(); + ConnUtil connUtil = new ConnUtil(tx); + tx = connUtil.getJboTransaction(); + int num = 0; + try { + for (com.amarsoft.are.jbo.BizObject bo : bos) { + String tableName = bo.getBizObjectClass().getName(); + List> datas = datasWillBeSaved.get(tableName); + if (datas == null) { + datas = getArrayList(); + datasWillBeSaved.put(tableName, datas); + } + datas.add(getDataObjectByJBO(bo)); + } + for (Map.Entry>> dataWillBeSaved : datasWillBeSaved.entrySet()) { + num += sum(insert(dataWillBeSaved.getKey(), (List) dataWillBeSaved.getValue(), tx)); + } + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } + return num; + } + + public static int sum(int[] nums) { + int n = 0; + for (int num : nums) { + n += num; + } + return n; + } + + public static Map getMap() { + return getMap(null); + } + + public static Map getMap(String... keyValues) { + Map map = new ConcurrentHashMap<>(); + if (keyValues != null && keyValues.length % 2 == 0) { + for (int i = 0; i < keyValues.length; i++) { + map.put(keyValues[i], keyValues[i + 1]); + i++; + } + } + return map; + } + + public static int[] copy(String fromJBOClassName, String toJBOClassName, String fp, String td, String tc, String excludeColumns, String cf, boolean createKey, JBOTransaction tx) throws Exception { + Map fromParams = getParams(fp); + Map toDeleteParams = getParams(td); + List> setToColumnValues = getParamList(tc); + Map convertFields = getParams(cf); + return copy(fromJBOClassName, toJBOClassName, fromParams, toDeleteParams, setToColumnValues, excludeColumns, convertFields, createKey, tx); + } + + /** + * 复制数据方法 + * + * @param fromJBOClassName 来源JBO类名 + * @param toJBOClassName 去向JBO类名 + * @param fromParams 来源条件参数 + * @param toDeleteParams 去向删除条件参数 + * @param setToColumnValues 去向个别字段设置值 + * @param excludeColumns 去向过滤字段 + * @param convertFields 来源到去向间不同名,相同内容的字段转换如( PID -> ID ) + * @param createKey 去向是否创建主键( UUID ), 如果设置的转换字段中包含去向主键,则这个参数不生效 + * @param tx 事务 + * @return 返回执行结果行数 + * @throws Exception + * @author + */ + public static int[] copy(String fromJBOClassName, String toJBOClassName, Map fromParams, Map toDeleteParams, List> setToColumnValues, String excludeColumns, Map convertFields, boolean createKey, JBOTransaction tx) throws Exception { + ConnUtil connUtil = new ConnUtil(tx); + tx = connUtil.getJboTransaction(); + int[] result = new int[0]; + try { + String fromTableName = fromJBOClassName.substring(fromJBOClassName.lastIndexOf(".") + 1); + String toTableName = toJBOClassName.substring(toJBOClassName.lastIndexOf(".") + 1); + + // 删除To数据 + if (toDeleteParams != null && !toDeleteParams.isEmpty()) { + String sql = "DELETE FROM " + toTableName + " WHERE"; + String[] params = new String[toDeleteParams.size()]; + int i = 0; + for (Map.Entry entry : toDeleteParams.entrySet()) { + if (!sql.endsWith("WHERE")) { + sql += " AND"; + } + sql += " " + entry.getKey() + " = ?"; + params[i] = entry.getValue(); + i++; + } + DataUtil.executeUpdate(sql, tx, params); + } + + List> fromDatas; + + if (fromParams == null || fromParams.isEmpty()) { + String sql = "SELECT * FROM " + fromTableName; + fromDatas = DataUtil.query2(sql, tx); + } else { + String[] fromP = new String[fromParams.size()]; + StringBuffer sql = new StringBuffer("SELECT * FROM ").append(fromTableName).append(" WHERE"); + int i = 0; + for (Map.Entry f : fromParams.entrySet()) { + if (i > 0) { + sql.append(" AND"); + } + fromP[i] = f.getValue(); + sql.append(" ").append(f.getKey()).append(" = ?"); + i++; + } + fromDatas = DataUtil.query2(sql.toString(), tx, fromP); + } + + List datas = getArrayList(); + if (setToColumnValues != null && setToColumnValues.size() > 0) { + for (Map setToColumnValue : setToColumnValues) { + datas.addAll(getInsertDataByMap(fromJBOClassName, fromDatas, excludeColumns, convertFields, createKey, setToColumnValue)); + } + } else { + datas.addAll(getInsertDataByMap(fromJBOClassName, fromDatas, excludeColumns, convertFields, createKey, null)); + } + + insert(toTableName, datas, tx); + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } + return result; + } + + public static int[] copy(String fromJBOClassName, String toJBOClassName, Map fromParams, Map toDeleteParams, Map setToColumnValue, String excludeColumns, Map convertFields, boolean createKey, JBOTransaction tx) throws Exception { + if (setToColumnValue != null && !setToColumnValue.isEmpty()) { + List> setToColumnValues = getArrayList(); + setToColumnValues.add(setToColumnValue); + return copy(fromJBOClassName, toJBOClassName, fromParams, toDeleteParams, setToColumnValues, excludeColumns, convertFields, createKey, tx); + } else { + return copy(fromJBOClassName, toJBOClassName, fromParams, toDeleteParams, (List) setToColumnValue, excludeColumns, convertFields, createKey, tx); + } + } + + public static int[] copyData(String fromJBOName, String toTableName, Map fromParams, Map setToColumnValue, Map convertFields, JBOTransaction tx) throws Exception { + return copyData(fromJBOName, toTableName, fromParams, null, null, null, convertFields, true, tx); + } + + public static int[] copyData(String fromJBOName, String toTableName, Map fromParams, Map toParams, Map setToColumnValue, String excludeColumns, Map convertFields, boolean createKey, JBOTransaction tx) throws Exception { + return copyData(fromJBOName, null, toTableName, fromParams, toParams, setToColumnValue, excludeColumns, convertFields, createKey, tx); + } + + public static int[] copyData(String fromJBOName, List bos, String toTableName, Map fromParams, Map toParams, Map setToColumnValue, String excludeColumns, Map convertFields, boolean createKey, JBOTransaction tx) throws Exception { + if (setToColumnValue != null && !setToColumnValue.isEmpty()) { + List> setToColumnValues = getArrayList(); + setToColumnValues.add(setToColumnValue); + return copyData(fromJBOName, bos, toTableName, fromParams, toParams, setToColumnValues, excludeColumns, convertFields, createKey, tx); + } else { + return copyData(fromJBOName, bos, toTableName, fromParams, toParams, (List) setToColumnValue, excludeColumns, convertFields, createKey, tx); + } + } + + public static int[] copyData(List bos, String toTableName, Map setToColumnValue, Map fieldMapping, boolean createKey, JBOTransaction tx) throws Exception { + return copyData(null, bos, toTableName, null, null, setToColumnValue, null, fieldMapping, createKey, tx); + } + + public static int[] copyData(List bos, String toTableName, Map fromParams, Map setToColumnValue, String excludeColumns, Map fieldMapping, boolean createKey, JBOTransaction tx) throws Exception { + return copyData(null, bos, toTableName, fromParams, null, setToColumnValue, excludeColumns, fieldMapping, createKey, tx); + } + + public static int[] copyData(List bos, String toTableName, Map fromParams, Map toParams, Map setToColumnValue, String excludeColumns, Map fieldMapping, boolean createKey, JBOTransaction tx) throws Exception { + return copyData(null, bos, toTableName, fromParams, toParams, setToColumnValue, excludeColumns, fieldMapping, createKey, tx); + } + + public static int[] copyData(String fromJBOName, List bos, String toTableName, Map fromParams, Map toParams, List> setToColumnValues, String excludeColumns, Map fieldMapping, boolean createKey, JBOTransaction tx) throws Exception { + ConnUtil connUtil = new ConnUtil(tx); + tx = connUtil.getJboTransaction(); + int[] result; + try { + if (toTableName.indexOf(".") != -2) { + toTableName = toTableName.substring(toTableName.lastIndexOf(".") + 1); + } + // 删除To数据 + if (toParams != null && !toParams.isEmpty()) { + String sql = "DELETE FROM " + toTableName + " WHERE"; + String[] params = new String[toParams.size()]; + int i = 0; + for (Map.Entry entry : toParams.entrySet()) { + if (!sql.endsWith("WHERE")) { + sql += " AND"; + } + if (entry.getKey().startsWith("!")) { + sql += " " + entry.getKey().substring(1) + " <> ? "; + } else { + sql += " " + entry.getKey() + " = ?"; + } + params[i] = entry.getValue(); + i++; + } + DataUtil.executeUpdate(sql, tx, params); + } + + List fromJBO = null; + if (bos != null) { + fromJBO = bos; + } else { + BizObjectManager fromJBOManager = JBOFactory.getBizObjectManager(fromJBOName, tx); + String fromSql = getSqlByParams(fromParams); + BizObjectQuery fromJBOQuery = fromJBOManager.createQuery(fromSql); + setParameter(fromJBOQuery, fromParams); + fromJBO = fromJBOQuery.getResultList(false); + } + if (fromJBO.size() > 0) { + List datas = getArrayList(); + if (setToColumnValues != null && setToColumnValues.size() > 0) { + for (Map setToColumnValue : setToColumnValues) { + datas.addAll(getInsertDataByJBO(fromJBO, excludeColumns, fieldMapping, createKey, setToColumnValue)); + } + } else { + datas.addAll(getInsertDataByJBO(fromJBO, excludeColumns, fieldMapping, createKey, null)); + } + + result = insert(toTableName, datas, tx); + } else { + if (ARE.getLog().isInfoEnabled()) { + ARE.getLog().info("FROM " + fromJBOName + " DATA NOT FOUND"); + } + result = new int[0]; + } + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } + return result; + } + + public static int[] copyDataBySql(String sql, String toJBOClassName, String fp, String td, String tc, String excludeColumns, String cf, boolean createKey, JBOTransaction tx) throws Exception { + Map fromParams = getParams(fp); + Map toDeleteParams = getParams(td); + List> setToColumnValues = getParamList(tc); + Map convertFields = getParams(cf); + return copyDataBySql(sql, toJBOClassName, fromParams, toDeleteParams, setToColumnValues, excludeColumns, convertFields, createKey, tx); + } + + public static int[] copyDataBySql(String sql, String toJBOClassName, Map fromParams, Map toParams, List> setToColumnValues, String excludeColumns, Map fieldMapping, boolean createKey, JBOTransaction tx) throws Exception { + ConnUtil connUtil = new ConnUtil(tx); + tx = connUtil.getJboTransaction(); + int[] result; + try { + String oldToJBOClassName = toJBOClassName; + if (toJBOClassName.indexOf(".") != -2) { + toJBOClassName = toJBOClassName.substring(toJBOClassName.lastIndexOf(".") + 1); + } + // 删除To数据 + if (toParams != null && !toParams.isEmpty()) { + String delSql = "DELETE FROM " + toJBOClassName + " WHERE"; + String[] params = new String[toParams.size()]; + int i = 0; + for (Map.Entry entry : toParams.entrySet()) { + if (!sql.endsWith("WHERE")) { + delSql += " AND"; + } + delSql += " " + entry.getKey() + " = ?"; + params[i] = entry.getValue(); + i++; + } + DataUtil.executeUpdate(delSql, tx, params); + } + + List fromJBO = convertListToJBO2(oldToJBOClassName, query(sql, fromParams, tx)); + if (fromJBO.size() > 0) { + List datas = getArrayList(); + if (setToColumnValues != null && setToColumnValues.size() > 0) { + for (Map setToColumnValue : setToColumnValues) { + datas.addAll(getInsertDataByJBO(fromJBO, excludeColumns, fieldMapping, createKey, setToColumnValue)); + } + } else { + datas.addAll(getInsertDataByJBO(fromJBO, excludeColumns, fieldMapping, createKey, null)); + } + + result = insert(toJBOClassName, datas, tx); + } else { + if (ARE.getLog().isInfoEnabled()) { + ARE.getLog().info("FROM SQL [" + sql + "] DATA NOT FOUND"); + } + result = new int[0]; + } + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } + return result; + } + + public static List getDataObjectByMap(Map columns) { + List data = getArrayList(); + for (Map.Entry column : columns.entrySet()) { + data.add(new DataObject(column.getKey().toUpperCase(), "string", column.getValue())); + } + return data; + } + + public static String getSqlByParams(Map params) { + if (params == null || params.isEmpty()) { + return "1 = 1"; + } + StringBuffer sql = new StringBuffer(); + for (String key : params.keySet()) { + if (sql.length() > 0) { + sql.append(" AND "); + } + sql.append(key.toUpperCase()).append("=:").append(key.toUpperCase()); + } + return sql.toString(); + } + + public static void setParameter(BizObjectQuery query, Map params) { + if (params != null && !params.isEmpty()) { + for (Map.Entry param : params.entrySet()) { + query.setParameter(param.getKey().toUpperCase(), param.getValue()); + } + } + } + + public static List> getInsertDataByJBO(List jbos) { + return getInsertDataByJBO(jbos, null, null, false, null); + } + + public static List> getInsertDataByJBO(List jbos, String excludeColumns) { + return getInsertDataByJBO(jbos, excludeColumns, null, false, null); + } + + public static List> getInsertDataByJBO(List jbos, String excludeColumns, Map fieldMapping, boolean createKey, Map setToColumnValue) { + List> datas = getArrayList(); + for (com.amarsoft.are.jbo.BizObject jbo : jbos) { + List data = getDataObjectByJBO(jbo, fieldMapping, createKey, excludeColumns); + datas.add(getCleanData(data, setToColumnValue)); + } + return datas; + } + + public static List> getInsertDataByMap(String fromJBOClassName, List> fromDatas, String excludeColumns, Map fieldMapping, boolean createKey, Map setToColumnValue) throws Exception { + List> datas = getArrayList(); + for (List f : fromDatas) { + List data = getDataObjectByMap(fromJBOClassName, f, fieldMapping, createKey, excludeColumns); + datas.add(getCleanData(data, setToColumnValue)); + } + return datas; + } + + public static List getCleanData(List data, Map setToColumnValue) { + if (setToColumnValue != null && !setToColumnValue.isEmpty()) { + List toData = getDataObjectByMap(setToColumnValue); + List notContainsData = getArrayList(); + for (DataObject d1 : toData) { + boolean flag = false; + for (DataObject d2 : data) { + if (d2.getColumnName().equals(d1.getColumnName())) { + d2.setColumnType(d1.getColumnType()); + d2.setColumnValue(d1.getColumnValue()); + flag = true; + break; + } + } + if (!flag) { + notContainsData.add(d1); + } + } + data.addAll(notContainsData); + } + return data; + } + + public static List getDataObjectByMap(String fromJBOClassName, List data, Map fieldMapping, boolean createKey, String excludeColumns) throws Exception { + List rData = getArrayList(); + BizObjectClass fromBizObjectClass = JBOFactory.getBizObjectClass(fromJBOClassName); + DataElement[] attributes = fromBizObjectClass.getAttributes(); + List excludeColumnsList = new ArrayList<>(); + if (excludeColumns != null && !"".equals(excludeColumns)) { + String[] keys = excludeColumns.toUpperCase().split(","); + for (String key : keys) { + excludeColumnsList.add(key); + } + } + if (createKey) { + String[] keys = fromBizObjectClass.getKeyAttributes(); + for (String key : keys) { + String value = ""; + try { + for (DataObject dataObject : data) { + if (dataObject.getColumnName().equals(key)) { + value = getString(dataObject.getColumnValue()); + break; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + if (fieldMapping != null && fieldMapping.containsValue(key) && !"".equals(value)) { + continue; + } + excludeColumnsList.add(key.toUpperCase()); + rData.add(new DataObject(key, "string", UUIDUtil.getUUID())); + } + } + + for (DataElement de : attributes) { + if (fieldMapping != null && !fieldMapping.isEmpty() && fieldMapping.containsKey(de.getName().toUpperCase())) { + DataObject dataObject = getDataObject(data, de.getName()); + dataObject.setColumnName(fieldMapping.get(de.getName().toUpperCase()).toUpperCase()); + rData.add(dataObject); + continue; + } + if (excludeColumnsList.size() > 0 && excludeColumnsList.contains(de.getName().toUpperCase())) { + continue; + } + + rData.add(getDataObject(data, de.getName())); + } + + return rData; + } + + public static DataObject getDataObject(List data, String colName) { + for (DataObject dataObject : data) { + if (dataObject.getColumnName().equalsIgnoreCase(colName)) { + return new DataObject(dataObject.getColumnName(), dataObject.getColumnType(), dataObject.getColumnValue()); + } + } + System.out.println(colName + "========="); + return null; + } + + public static List getDataObjectByJBO(com.amarsoft.are.jbo.BizObject jbo) { + return getDataObjectByJBO(jbo, null, false, null); + } + + public static List getDataObjectByJBO(com.amarsoft.are.jbo.BizObject jbo, Map fieldMapping, boolean createKey, String excludeColumns) { + if (jbo == null) { + return null; + } + List data = getArrayList(); + if (createKey) { + String[] keys = jbo.getBizObjectClass().getKeyAttributes(); + if (excludeColumns == null) { + excludeColumns = ""; + } + + for (String key : keys) { + String value = ""; + try { + value = jbo.getAttribute(key).getString(); + } catch (Exception e) { + e.printStackTrace(); + } + + if (fieldMapping != null && fieldMapping.containsValue(key) && !"".equals(value)) { + continue; + } + if (!"".equals(excludeColumns)) { + excludeColumns += ","; + } + excludeColumns += key; + data.add(new DataObject(key, "string", UUIDUtil.getUUID())); + } + } + for (DataElement de : jbo.getAttributes()) { + if (fieldMapping != null && !fieldMapping.isEmpty() && fieldMapping.containsKey(de.getName().toUpperCase())) { + data.add(new DataObject(fieldMapping.get(de.getName().toUpperCase()).toUpperCase(), "string", de.isNull() ? "" : de.getString())); + continue; + } + if (excludeColumns != null && excludeColumns.toUpperCase().contains(de.getName().toUpperCase())) { + continue; + } + switch (de.getType()) { + case 1: + data.add(new DataObject(de.getName().toUpperCase(), "int", de.isNull() ? 0 : de.getInt())); + break; + case 2: + data.add(new DataObject(de.getName().toUpperCase(), "long", de.isNull() ? 0 : de.getLong())); + break; + case 4: + data.add(new DataObject(de.getName().toUpperCase(), "double", de.isNull() ? 0.0 : de.getDouble())); + break; + case 8: + data.add(new DataObject(de.getName().toUpperCase(), "boolean", de.isNull() ? null : de.getBoolean())); + break; + case 16: + data.add(new DataObject(de.getName().toUpperCase(), "date", de.isNull() ? null : de.getDate())); + break; + default: + data.add(new DataObject(de.getName().toUpperCase(), "string", de.isNull() ? "" : de.getString())); + } + } + return data; + } + + public static int executeUpdate(String sql) throws Exception { + return executeUpdate(sql, null, null); + } + + public static int executeUpdate(String sql, Object... params) throws Exception { + return executeUpdate(sql, null, null, params); + } + + public static int executeUpdate(String sql, JBOTransaction tx) throws Exception { + return executeUpdate(sql, tx, null); + } + + public static int executeUpdate(String sql, JBOTransaction tx, Object... params) throws Exception { + return executeUpdate(sql, null, tx, params); + } + + public static int executeUpdate(String sql, List> paramList, JBOTransaction tx, Object... params) throws Exception { + ConnUtil connUtil = new ConnUtil(tx); + PreparedStatement ps = null; + int num; + try { + Connection conn = connUtil.getConnection(); + ps = conn.prepareStatement(sql); + if (paramList == null) { + setParameter(ps, params); + num = ps.executeUpdate(); + } else { + setParameterList(paramList, ps, params); + num = sum(ps.executeBatch()); + } + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } finally { + if (ps != null) { + ps.close(); + } + } + return num; + } + + public static void setParameterList(List> paramList, PreparedStatement preparedStatement, Object... params) throws Exception { + for (List param : paramList) { + int i = 0; + for (int j = 0; j < param.size(); j++) { + preparedStatement.setObject(++i, param.get(j)); + } + if (params != null) { + for (int x = 0; x < params.length; x++) { + preparedStatement.setObject(i + 1, params[x]); + } + } + preparedStatement.addBatch(); + } + } + + public static void setParameter(PreparedStatement preparedStatement, Object... params) throws Exception { + if (params != null) { + for (int i = 0; i < params.length; i++) { + preparedStatement.setObject(i + 1, params[i]); + } + } + } + + public static List> convertArrayToList(String[] array) { + if (array == null || array.length == 0) { + return null; + } + List> lists = getArrayList(); + for (String a : array) { + List list = getArrayList(); + list.add(a); + lists.add(list); + } + + return lists; + } + + public static String getValueBySql(String sql) throws Exception { + return getValueBySql(sql, null, null); + } + + public static String getValueBySql(String sql, Object... params) throws Exception { + return getValueBySql(sql, null, params); + } + + public static String getValueBySql(String sql, JBOTransaction tx, Object... params) throws Exception { + List> list = query(sql, tx, params); + if (list.isEmpty()) { + throw new SQLException("no data found"); + } + if (list.size() > 1) { + throw new SQLException("find multiline data"); + } + Map data = list.get(0); + if (data.values().size() > 1) { + throw new SQLException("find multiple columns"); + } + return data.values().iterator().next(); + } + + public static Map queryOneRow(String sql, JBOTransaction tx, Object... params) throws Exception { + List> list = query(sql, tx, params); + if (list.isEmpty()) { + throw new SQLException("no data found"); + } + if (list.size() > 1) { + throw new SQLException("find multiline data"); + } + Map data = list.get(0); + return data; + } + + public static List> query(String sql, Map params, JBOTransaction tx) throws Exception { + if (!sql.toLowerCase().contains("where")) { + sql += " where 1 = 1"; + } + String[] p = new String[params.size()]; + String where = sql.substring(sql.toLowerCase().lastIndexOf("where") + 5); + int i = 0; + for (Map.Entry param : params.entrySet()) { + String key = param.getKey(); + String value = param.getValue(); + if (where.contains(key)) { + continue; + } + sql += " and " + key + " = ?"; + p[i++] = value; + } + return query(sql, tx, p); + } + + public static List> query(String sql) throws Exception { + return query(sql, (JBOTransaction) null, null); + } + + public static List> query(String sql, Object... params) throws Exception { + return query(sql, null, params); + } + + public static List> query(String sql, JBOTransaction tx) throws Exception { + return query(sql, tx, null); + } + + public static List> query(final String sql, JBOTransaction tx, final Object... params) throws Exception { + ConnUtil connUtil = new ConnUtil(tx); + Connection conn; + PreparedStatement ps = null; + ResultSet rs = null; + List> list = getArrayList(); + try { + conn = connUtil.getConnection(); + ps = conn.prepareStatement(sql); + setParameter(ps, params); + + rs = ps.executeQuery(); + ResultSetMetaData rsmd = rs.getMetaData(); + + while (rs.next()) { + Map result = new HashMap<>(); + for (int i = 1; i <= rsmd.getColumnCount(); i++) { + String colName = rsmd.getColumnLabel(i); + result.put(colName, rs.getString(colName)); + } + list.add(result); + } + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } finally { + if (rs != null) { + rs.close(); + } + if (ps != null) { + ps.close(); + } + } + return list; + } + + public static List queryOneColumn(final String sql, JBOTransaction tx, final Object... params) throws Exception { + ConnUtil connUtil = new ConnUtil(tx); + Connection conn; + PreparedStatement ps = null; + ResultSet rs = null; + List list = getArrayList(); + try { + conn = connUtil.getConnection(); + ps = conn.prepareStatement(sql); + setParameter(ps, params); + + rs = ps.executeQuery(); + ResultSetMetaData rsmd = rs.getMetaData(); + + while (rs.next()) { + String value = ""; + for (int i = 1; i <= rsmd.getColumnCount(); i++) { + String colName = rsmd.getColumnLabel(i); + value = rs.getString(colName); + } + list.add(value); + } + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } finally { + if (rs != null) { + rs.close(); + } + if (ps != null) { + ps.close(); + } + } + return list; + } + + public static List> query2(final String sql, JBOTransaction tx, final Object... params) throws Exception { + ConnUtil connUtil = new ConnUtil(tx); + Connection conn; + PreparedStatement ps = null; + ResultSet rs = null; + List> list = getArrayList(); + try { + conn = connUtil.getConnection(); + ps = conn.prepareStatement(sql); + setParameter(ps, params); + + rs = ps.executeQuery(); + ResultSetMetaData rsmd = rs.getMetaData(); + + while (rs.next()) { + List data = getArrayList(); + for (int i = 1; i <= rsmd.getColumnCount(); i++) { + String colName = rsmd.getColumnLabel(i); + int typeNum = rsmd.getColumnType(i); + Object value; + String colType; + switch (typeNum) { + case 2004: + value = rs.getBlob(colName); + colType = "blob"; + break; + default: + value = rs.getString(colName); + colType = "string"; + break; + } + data.add(new DataObject(colName.toUpperCase(), colType, value)); + } + list.add(data); + } + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } finally { + if (rs != null) { + rs.close(); + } + if (ps != null) { + ps.close(); + } + } + return list; + } + + public static Map flowVariablesHis(String flowunid, String taskId) throws Exception { + return flowVariables("flow_varinst_his", null, flowunid, taskId); + } + + public static Map flowVariablesHis(JBOTransaction tx, String flowunid, String taskId) throws Exception { + return flowVariables("flow_varinst_his", tx, flowunid, taskId); + } + + public static Map flowVariables(String flowunid) throws Exception { + return flowVariables("flow_varinst", null, flowunid, ""); + } + + public static Map flowVariables(String flowunid, String taskId) throws Exception { + return flowVariables("flow_varinst", null, flowunid, taskId); + } + + public static Map flowVariables(JBOTransaction tx, String flowunid, String taskId) throws Exception { + return flowVariables("flow_varinst", tx, flowunid, taskId); + } + + public static Map flowVariables(JBOTransaction tx, String flowunid) throws Exception { + return flowVariables("flow_varinst", tx, flowunid, ""); + } + + public static Map flowVariables(String tableName, JBOTransaction tx, String flowunid, String taskId) throws Exception { + return flowVariables(tableName, tx, flowunid, taskId, null); + } + + public static Map flowVariables(String tableName, JBOTransaction tx, String flowunid, String taskId, String name) throws Exception { + ConnUtil connUtil = new ConnUtil(tx); + PreparedStatement ps = null; + ResultSet rs = null; + Map variables = new ConcurrentHashMap<>(); + try { + Connection conn = connUtil.getConnection(); + if (StringUtils.isEmpty(name)) { + ps = conn.prepareStatement("select name_, value_, var_type_, bytes_ from " + tableName + " where flow_unid_ = ?" + ("".equals(taskId) ? "" : " and task_id_ = ?")); + } else { + name = getSqlInCondition(name.split(",")); + ps = conn.prepareStatement("select name_, value_, var_type_, bytes_ from " + tableName + " where name_ in ( " + name + " ) and flow_unid_ = ?" + ("".equals(taskId) ? "" : " and task_id_ = ?")); + } + if ("".equals(taskId)) { + setParameter(ps, flowunid); + } else { + setParameter(ps, flowunid, taskId); + } + rs = ps.executeQuery(); + + while (rs.next()) { + String type = rs.getString("var_type_"); + if ("serializable".equals(type)) { + variables.put(rs.getString("name_"), getObject(rs.getBytes("bytes_"))); + } else { + variables.put(rs.getString("name_"), getString(rs.getObject("value_"))); + } + } + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } finally { + if (rs != null) { + rs.close(); + } + if (ps != null) { + ps.close(); + } + } + return variables; + } + + public static String getStringOptionByItem(Item[] items) { + if (items == null) { + return ""; + } + + List> maps = getArrayList(); + Arrays.stream(items).forEach(item -> { + Map map = new ConcurrentHashMap<>(); + map.put("label", item.getItemName()); + map.put("value", item.getItemNo()); + maps.add(map); + }); + + return JSON.toJSONString(maps); + } + + public static String getStringByItem(Item[] items) { + if (items == null) { + return ""; + } + + Map map = new ConcurrentHashMap<>(); + + Arrays.stream(items).forEach(item -> map.put(item.getItemNo(), item.getItemName())); + + return JSON.toJSONString(map); + } + + public static String getStringByStyleModel(List styleModels) { + if (styleModels == null) { + return ""; + } + Map map = new ConcurrentHashMap<>(); + + styleModels.forEach(styleModel -> map.put(styleModel.getStyleId(), styleModel.getStyleName())); + + return JSON.toJSONString(map); + } + + public static String getStringOptionByStyleModel(List styleModels) { + if (styleModels == null) { + return ""; + } + List> maps = getArrayList(); + styleModels.forEach(styleModel -> { + Map map = new ConcurrentHashMap<>(); + map.put("label", styleModel.getStyleName()); + map.put("value", styleModel.getStyleId()); + maps.add(map); + }); + + return JSON.toJSONString(maps); + } + + + public static String getStringByJBOClass(String[] cls) { + if (cls == null) { + return ""; + } + + List> maps = getArrayList(); + + Arrays.stream(cls).forEach(c -> { + String packageName = c.substring(0, c.lastIndexOf(".")); + boolean flag = false; + + try { + BizObjectClass boc = JBOFactory.getBizObjectClass(c); + String classLabel = boc.getLabel(); + String[] keys = boc.getKeyAttributes(); + String jboWhere = getSqlWhereByDataElement(keys); + + for (Map map : maps) { + if (packageName.equals(map.get("label"))) { + map.get("label"); + Map jbo = new HashMap<>(); + jbo.put("label", c.substring(c.lastIndexOf(".") + 1)); + jbo.put("package", packageName); + jbo.put("classLabel", classLabel); + jbo.put("jboWhere", jboWhere); + ((List>) map.get("children")).add(jbo); + flag = true; + break; + } + } + if (!flag) { + Map map = new ConcurrentHashMap<>(); + map.put("label", packageName); + List> jbos = getArrayList(); + Map jbo = new ConcurrentHashMap<>(); + jbo.put("label", c.substring(c.lastIndexOf(".") + 1)); + jbo.put("package", packageName); + jbo.put("classLabel", classLabel); + jbo.put("jboWhere", jboWhere); + jbos.add(jbo); + map.put("children", jbos); + maps.add(map); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + + return JSON.toJSONString(maps); + } + + public static String getSqlWhereByDataElement(String[] keys) { + if (keys == null || keys.length == 0) { + return ""; + } + StringBuffer sql = new StringBuffer(); + Arrays.stream(keys).forEach(key -> { + if (sql.length() > 0) { + sql.append(" AND "); + } + sql.append(key).append("=:").append(key); + }); + return sql.toString(); + } + + public static XMLInputFactory getXmlInputFactory() { + return new XMLInputFactoryImpl(); + } + + public static XMLOutputFactory getXmlOutputFactory() { + return new XMLOutputFactoryImpl(); + } + + public static JSONObject toJSON(com.amarsoft.are.jbo.BizObject bo) throws Exception { + if (bo == null) { + return null; + } + + DataElement[] dataElements = bo.getAttributes(); + JSONObject jsonObject = new JSONObject(); + for (DataElement dataElement : dataElements) { + jsonObject.put(dataElement.getName(), bo.getAttribute(dataElement.getName()).getString().replaceAll("\"", "\\\\\"").replaceAll("'", "\\\\'").replaceAll("<", "@^@").replaceAll(">", "@v@").replaceAll("\\+", "@*@")); + } + return jsonObject; + } + + public static JSONObject bizObjectToJSON(BizObject bo) throws Exception { + if (bo == null) { + return null; + } + + List dataObjects = bo.getDatas(); + JSONObject jsonObject = new JSONObject(); + for (DataObject dataObject : dataObjects) { + jsonObject.put(dataObject.getColumnName(), dataObject.getColumnValue()); + } + return jsonObject; + } + + public static String toJSONString(com.amarsoft.are.jbo.BizObject bo) throws Exception { + return toJSON(bo).toJSONString(); + } + + public static String toJSONArrayString(List bos) throws Exception { + JSONArray jsonArray = new JSONArray(); + for (com.amarsoft.are.jbo.BizObject bo : bos) { + jsonArray.add(toJSON(bo)); + } + return jsonArray.toJSONString(); + } + + public static String bizObject2JSONArrayString(List bos) throws Exception { + JSONArray jsonArray = new JSONArray(); + for (BizObject bo : bos) { + jsonArray.add(bizObjectToJSON(bo)); + } + return jsonArray.toJSONString(); + } + + public static String toString(Object object) throws Exception { + if (object instanceof StateBizObject || object instanceof com.amarsoft.are.jbo.BizObject) { + return toString((com.amarsoft.are.jbo.BizObject) object); + } else { + return toArrayString((List) object); + } + } + + public static String toString(com.amarsoft.are.jbo.BizObject bizObject) throws Exception { + if (bizObject == null) { + return ""; + } + + StringBuffer stringBuffer = new StringBuffer("{"); + + for (DataElement dataElement : bizObject.getAttributes()) { + if (stringBuffer.length() > 1) { + stringBuffer.append(", "); + } + stringBuffer.append(dataElement.getName()).append(":").append(bizObject.getAttribute(dataElement.getName()).toString()); + } + + stringBuffer.append("}"); + return stringBuffer.toString(); + } + + public static String toArrayString(List bizObjects) throws Exception { + if (bizObjects == null) { + return ""; + } + StringBuffer stringBuffer = new StringBuffer("["); + for (int i = 0; i < bizObjects.size(); i++) { + if (i > 0) { + stringBuffer.append(", "); + } + com.amarsoft.are.jbo.BizObject bizObject = bizObjects.get(i); + stringBuffer.append("{"); + for (int j = 0; j < bizObject.getAttributes().length; j++) { + DataElement dataElement = bizObject.getAttributes()[j]; + if (j > 1) { + stringBuffer.append(", "); + } + stringBuffer.append(dataElement.getName()).append(":").append(bizObject.getAttribute(dataElement.getName()).toString()); + } + + stringBuffer.append("}"); + } + stringBuffer.append("]"); + + return stringBuffer.toString(); + } + + public static String getString(Object obj) { + if (obj == null) { + return ""; + } + + return String.valueOf(obj); + } + + public static String null2String(String str, String toString) { + return StringUtils.isEmpty(str) ? toString : str; + } + + public static String caseWhen(String caseStr, String... whenThen) { + caseStr = getString(caseStr).trim(); + if (whenThen == null || whenThen.length % 2 != 0) return caseStr; + for (int i = 0; i < whenThen.length; i++) { + if (caseStr.equals(whenThen[i])) { + return whenThen[i + 1]; + } + } + return caseStr; + } + + public static Object getObject(byte[] bytes) throws Exception { + if (bytes == null) { + return ""; + } + + ByteArrayInputStream bytesIn = null; + ObjectInputStream objectInputStream = null; + Object obj; + + try { + bytesIn = new ByteArrayInputStream(bytes); + objectInputStream = new ObjectInputStream(bytesIn); + obj = objectInputStream.readObject(); + } catch (Exception e) { + throw e; + } finally { + if (objectInputStream != null) objectInputStream.close(); + if (bytesIn != null) bytesIn.close(); + } + + return obj; + } + + public static String getObjectType(Object obj) { + if (obj == null) { + return "serializable"; + } + + return obj.getClass().isPrimitive() ? obj.getClass().getName() : "String".equals(obj.getClass().getSimpleName()) ? "String" : "serializable"; + } + + public static String getValueString(Object value) { + if (value == null || "".equals(value)) { + return null; + } + + return "'" + String.valueOf(value) + .replaceAll("'", "''") + .replaceAll("\\$", "\\\\\\$") + "'"; + } + + public static Integer getInteger(Object value) { + if (value == null || "".equals(value)) { + return null; + } + + return Integer.parseInt(value.toString()); + } + + public static Map jsonToMap(JSONObject jsonObject) { + Map result = new ConcurrentHashMap<>(); + if (jsonObject == null) { + return result; + } + + + jsonObject.entrySet().forEach(stringObjectEntry -> { + result.put(stringObjectEntry.getKey(), getString(stringObjectEntry.getValue())); + }); + + return result; + } + + public static Map convertMap(Map map) { + Map result = new ConcurrentHashMap<>(); + if (map == null) { + return result; + } + + map.forEach((k, v) -> result.put(k, getString(v))); + return result; + } + + public static void saveOrUpdateFlowTaskVariables(String flowunid, String taskId, Map flowVariables) throws Exception { + saveOrUpdateFlowTaskVariables(null, flowunid, taskId, flowVariables, "save"); + } + + public static void saveOrUpdateFlowTaskVariables(String flowunid, String taskId, Map flowVariables, String type) throws Exception { + saveOrUpdateFlowTaskVariables(null, flowunid, taskId, flowVariables, type); + } + + public static void saveOrUpdateFlowTaskVariables(JBOTransaction tx, String flowunid, String taskId, Map flowVariables, String type) throws Exception { + saveOrUpdateFlowTaskVariables(tx, flowunid, taskId, flowVariables, type, null); + } + + public static void saveOrUpdateFlowTaskVariables(JBOTransaction tx, String flowunid, String taskId, Map flowVariables, String type, String name) throws Exception { + if (flowVariables == null || flowunid == null || "".equals(flowunid)) { + return; + } + + ConnUtil connUtil = new ConnUtil(tx); + tx = connUtil.getJboTransaction(); + + try { + + Map oldFlowVariables = null; + if (StringUtils.isNotEmpty(name)) { + oldFlowVariables = flowVariables("FLOW_VARINST", tx, flowunid, taskId, name); + } else { + oldFlowVariables = flowVariables(tx, flowunid); + } + + if (flowVariables.isEmpty()) { + flowVariables = oldFlowVariables; + } + + saveOrUpdateFlowTaskVariables(tx, flowunid, taskId, flowVariables, oldFlowVariables); + + Map fromParams = new ConcurrentHashMap<>(); + fromParams.put("FLOW_UNID_", flowunid); + fromParams.put("TASK_ID_", taskId); + + if ("join".equals(type)) { // 处理并行分支参数 + executeUpdate("insert into flow_varinst( id_, flow_unid_, task_id_, name_, var_type_, value_, bytes_, inputtime_, updatetime_, json_value_ ) " + + "select sys_guid(), a.flow_unid_, c.serialno, a.name_, a.var_type_, a.value_, a.bytes_, a.inputtime_, a.updatetime_, a.json_value_ from flow_varinst_his a " + + "left join flow_task b on a.task_id_ = b.serialno left join flow_task c on c.relativeserialno = b.relativeserialno where c.serialno = ? and not exists ( select 1 from flow_varinst where a.flow_unid_ = flow_unid_ and a.name_ = name_ )", tx, taskId); + executeUpdate("insert into flow_varinst_diff( id_, flow_unid_, task_id_, name_, var_type_, value_old_, value_new_, bytes_old_, bytes_new_, diff_value_, inputtime_, updatetime_ ) " + + "select sys_guid(), a.flow_unid_, c.serialno, a.name_, a.var_type_, a.value_old_, a.value_new_, a.bytes_old_, a.bytes_new_, a.diff_value_, a.inputtime_, a.updatetime_ from flow_varinst_diff_his a " + + "left join flow_task b on a.task_id_ = b.serialno left join flow_task c on c.relativeserialno = b.relativeserialno where c.serialno = ? and not exists ( select 1 from flow_varinst_diff where a.flow_unid_ = flow_unid_ and a.name_ = name_ )", tx, taskId); + type = "task"; + } + + if (!"save".equals(type)) { + copy("jbo.sys.FLOW_VARINST", "jbo.sys.FLOW_VARINST_HIS", fromParams, null, (Map) null, null, null, true, tx); + copy("jbo.sys.FLOW_VARINST_DIFF", "jbo.sys.FLOW_VARINST_DIFF_HIS", fromParams, null, (Map) null, null, null, true, tx); + } + + if ("task".equals(type)) { + List> taskIds = DataUtil.query("SELECT SERIALNO AS TASK_ID_ FROM FLOW_TASK WHERE OBJECTNO = ? AND RELATIVESERIALNO = ?", tx, flowunid, taskId); + copy("jbo.sys.FLOW_VARINST", "jbo.sys.FLOW_VARINST", fromParams, null, taskIds, null, null, true, tx); + copy("jbo.sys.FLOW_VARINST_DIFF", "jbo.sys.FLOW_VARINST_DIFF", fromParams, null, taskIds, null, null, true, tx); + } + + if (!"save".equals(type)) { + if ("end".equals(type)) { + DataUtil.executeUpdate("DELETE FROM FLOW_VARINST WHERE FLOW_UNID_ = ?", tx, flowunid); + DataUtil.executeUpdate("DELETE FROM FLOW_VARINST_DIFF WHERE FLOW_UNID_ = ?", tx, flowunid); + } else { + DataUtil.executeUpdate("DELETE FROM FLOW_VARINST WHERE FLOW_UNID_ = ? AND TASK_ID_ = ?", tx, flowunid, taskId); + DataUtil.executeUpdate("DELETE FROM FLOW_VARINST_DIFF WHERE FLOW_UNID_ = ? AND TASK_ID_ = ?", tx, flowunid, taskId); + } + } + + connUtil.commit(); + } catch (Exception e) { + connUtil.rollback(); + throw e; + } + } + + public static Map getBizletAttrs(Bizlet bizlet) throws Exception { + Map result = new ConcurrentHashMap<>(); + if (bizlet == null) { + return result; + } + + ASValuePool attributes = bizlet.getAttributes(); + for (Object key : attributes.getKeys()) { + Object value = attributes.getAttribute(key.toString()) == null ? "" : attributes.getAttribute(key.toString()); + result.put(key.toString(), value); + } + return result; + } + + public static void saveOrUpdateFlowTaskVariables(JBOTransaction tx, String flowunid, String taskId, Map newMap, Map oldMap) throws Exception { + List> flowParamsInstances = getArrayList(); + List> flowParamsSerializableInstances = getArrayList(); + List> flowParamsUpdateInstances = getArrayList(); + List> flowParamsSerializableUpdateInstances = getArrayList(); + List> flowParamsDiffInstances = getArrayList(); + List> flowParamsSerializableDiffInstances = getArrayList(); + List> flowParamsDiffUpdateInstances = getArrayList(); + List> flowParamsSerializableDiffUpdateInstances = getArrayList(); + String now = DateUtil.getTodayNow(); + String type; + + Map map; + boolean flag = false; + if (oldMap != null && oldMap.size() > newMap.size()) { + flag = true; + map = oldMap; + } else { + map = newMap; + } + + if (oldMap != null && newMap != null) { + for (Map.Entry flowVariable : newMap.entrySet()) { + String key = flowVariable.getKey(); + if (key.endsWith("@temp")) { + continue; + } + if (!oldMap.containsKey(key)) { + Object value = flowVariable.getValue(); + String varType = getObjectType(value); + calculateTaskVariableDifferences(flowParamsInstances, + flowParamsSerializableInstances, + flowParamsUpdateInstances, + flowParamsSerializableUpdateInstances, + flowParamsDiffInstances, + flowParamsSerializableDiffInstances, + flowParamsDiffUpdateInstances, + flowParamsSerializableDiffUpdateInstances, + value, null, varType, "insert", flowunid, taskId, key, now); + } + } + } + + for (Map.Entry flowVariable : map.entrySet()) { + Object value; + Object oldValue; + String key = flowVariable.getKey(); + if (key.endsWith("@temp")) { + continue; + } + if (flag) { + value = newMap.get(key) == null ? "" : newMap.get(key); + oldValue = flowVariable.getValue(); + } else { + value = flowVariable.getValue(); + if (oldMap == null) { + continue; + } else { + if (!oldMap.containsKey(key)) { + continue; + } + oldValue = oldMap.get(key); + } + + } + String varType = getObjectType(value); + type = oldValue == null ? "insert" : "update"; + calculateTaskVariableDifferences(flowParamsInstances, + flowParamsSerializableInstances, + flowParamsUpdateInstances, + flowParamsSerializableUpdateInstances, + flowParamsDiffInstances, + flowParamsSerializableDiffInstances, + flowParamsDiffUpdateInstances, + flowParamsSerializableDiffUpdateInstances, + value, oldValue, varType, type, flowunid, taskId, key, now); + } + + execute(tx, flowParamsInstances, flowParamsSerializableInstances, flowParamsUpdateInstances, flowParamsSerializableUpdateInstances, flowParamsDiffInstances, flowParamsSerializableDiffInstances, flowParamsDiffUpdateInstances, flowParamsSerializableDiffUpdateInstances); + + } + + public static void execute(JBOTransaction tx, + List flowParamsInstances, + List flowParamsSerializableInstances, + List flowParamsUpdateInstances, + List flowParamsSerializableUpdateInstances, + List flowParamsDiffInstances, + List flowParamsSerializableDiffInstances, + List flowParamsDiffUpdateInstances, + List flowParamsSerializableDiffUpdateInstances) throws Exception { + if (flowParamsInstances.size() > 0) { + insert("FLOW_VARINST", flowParamsInstances, tx); + } + if (flowParamsSerializableInstances.size() > 0) { + insert("FLOW_VARINST", flowParamsSerializableInstances, tx); + } + if (flowParamsDiffInstances.size() > 0) { + insert("FLOW_VARINST_DIFF", flowParamsDiffInstances, tx); + } + if (flowParamsSerializableUpdateInstances.size() > 0) { + insert("FLOW_VARINST_DIFF", flowParamsSerializableUpdateInstances, tx); + } + if (flowParamsUpdateInstances.size() > 0) { + update("FLOW_VARINST", flowParamsUpdateInstances, tx, "FLOW_UNID_", "TASK_ID_", "NAME_"); + } + if (flowParamsSerializableDiffInstances.size() > 0) { + update("FLOW_VARINST", flowParamsSerializableDiffInstances, tx, "FLOW_UNID_", "TASK_ID_", "NAME_"); + } + if (flowParamsDiffUpdateInstances.size() > 0) { + update("FLOW_VARINST_DIFF", flowParamsDiffUpdateInstances, tx, "FLOW_UNID_", "TASK_ID_", "NAME_"); + } + if (flowParamsSerializableDiffUpdateInstances.size() > 0) { + update("FLOW_VARINST_DIFF", flowParamsSerializableDiffUpdateInstances, tx, "FLOW_UNID_", "TASK_ID_", "NAME_"); + } + } + + public static void calculateTaskVariableDifferences(List> flowParamsInstances, + List> flowParamsSerializableInstances, + List> flowParamsUpdateInstances, + List> flowParamsSerializableUpdateInstances, + List> flowParamsDiffInstances, + List> flowParamsSerializableDiffInstances, + List> flowParamsDiffUpdateInstances, + List> flowParamsSerializableDiffUpdateInstances, + Object value, + Object oldValue, + String varType, + String type, + String flowunid, + String taskId, + String key, + String now) { + + List dataObjects = getArrayList(); + List dataObjectUpdates = getArrayList(); + List dataObjectDiffs = getArrayList(); + List dataObjectUpdateDiffs = getArrayList(); + if ("insert".equals(type)) { + dataObjects.add(new DataObject("ID_", "string", UUIDUtil.getUUID())); + dataObjectDiffs.add(new DataObject("ID_", "string", UUIDUtil.getUUID())); + dataObjects.add(new DataObject("INPUTTIME_", "string", now)); + dataObjectDiffs.add(new DataObject("INPUTTIME_", "string", now)); + dataObjects.add(new DataObject("FLOW_UNID_", "string", flowunid)); + dataObjectDiffs.add(new DataObject("TASK_ID_", "string", taskId)); + dataObjects.add(new DataObject("TASK_ID_", "string", taskId)); + dataObjectDiffs.add(new DataObject("FLOW_UNID_", "string", flowunid)); + dataObjects.add(new DataObject("NAME_", "string", key)); + dataObjectDiffs.add(new DataObject("NAME_", "string", key)); + dataObjects.add(new DataObject("VAR_TYPE_", "string", varType)); + dataObjectDiffs.add(new DataObject("VAR_TYPE_", "string", varType)); + } else { + dataObjectUpdates.add(new DataObject("UPDATETIME_", "string", now)); + dataObjectUpdateDiffs.add(new DataObject("UPDATETIME_", "string", now)); + dataObjectUpdates.add(new DataObject("VAR_TYPE_", "string", varType)); + dataObjectUpdateDiffs.add(new DataObject("VAR_TYPE_", "string", varType)); + + dataObjectUpdates.add(new DataObject("FLOW_UNID_", "string", flowunid)); + dataObjectUpdates.add(new DataObject("TASK_ID_", "string", taskId)); + dataObjectUpdates.add(new DataObject("NAME_", "string", key)); + dataObjectUpdateDiffs.add(new DataObject("FLOW_UNID_", "string", flowunid)); + dataObjectUpdateDiffs.add(new DataObject("TASK_ID_", "string", taskId)); + dataObjectUpdateDiffs.add(new DataObject("NAME_", "string", key)); + } + + if (!"serializable".equals(varType)) { + if ("insert".equals(type)) { + dataObjects.add(new DataObject("VALUE_", "string", value)); + dataObjectDiffs.add(new DataObject("VALUE_OLD_", "string", value)); + } else { + dataObjectUpdates.add(new DataObject("VALUE_", "string", value)); + dataObjectUpdateDiffs.add(new DataObject("VALUE_NEW_", "string", value)); + } + } else { + if ("insert".equals(type)) { + dataObjects.add(new DataObject("BYTES_", "serializable", value)); + try { // JSON解析异常暂时忽略 + dataObjects.add(new DataObject("JSON_VALUE_", "string", toString(value))); + } catch (Exception e) { + e.printStackTrace(); + } + dataObjectDiffs.add(new DataObject("BYTES_OLD_", "serializable", value)); + } else { + dataObjectUpdates.add(new DataObject("BYTES_", "serializable", value)); + try { // JSON解析异常暂时忽略 + dataObjectUpdates.add(new DataObject("JSON_VALUE_", "string", toString(value))); + } catch (Exception e) { + e.printStackTrace(); + } + dataObjectUpdateDiffs.add(new DataObject("BYTES_NEW_", "serializable", value)); + } + } + + if ("update".equals(type)) { + dataObjectUpdateDiffs.add(new DataObject("DIFF_VALUE_", "string", computationalDifference(value, oldValue))); + } + + if (!"serializable".equals(varType)) { + if (dataObjects.size() > 0) { + flowParamsInstances.add(dataObjects); + } + if (dataObjectDiffs.size() > 0) { + flowParamsDiffInstances.add(dataObjectDiffs); + } + if (dataObjectUpdates.size() > 0) { + flowParamsUpdateInstances.add(dataObjectUpdates); + } + if (dataObjectUpdateDiffs.size() > 0) { + flowParamsDiffUpdateInstances.add(dataObjectUpdateDiffs); + } + } else { + if (dataObjects.size() > 0) { + flowParamsSerializableInstances.add(dataObjects); + } + if (dataObjectDiffs.size() > 0) { + flowParamsSerializableUpdateInstances.add(dataObjectDiffs); + } + if (dataObjectUpdates.size() > 0) { + flowParamsSerializableDiffInstances.add(dataObjectUpdates); + } + if (dataObjectUpdateDiffs.size() > 0) { + flowParamsSerializableDiffUpdateInstances.add(dataObjectUpdateDiffs); + } + } + } + + public static String getFlowDiffType(String type) { + String result = ""; + + switch (type) { + case "01": + result = TYPE01; + break; + case "02": + result = TYPE02; + break; + case "03": + result = TYPE03; + break; + case "04": + result = TYPE04; + break; + case "05": + result = TYPE05; + break; + } + + return result; + } + + public static boolean compareClassName(String name1, String name2) { + String pattern = "\\d"; + if (Pattern.matches(pattern, name1.substring(name1.length() - 1))) { + name1 = name1.substring(0, name1.lastIndexOf("X")); + } + if (Pattern.matches(pattern, name2.substring(name2.length() - 1))) { + name2 = name2.substring(0, name2.lastIndexOf("X")); + } + + return name1.equals(name2); + } + + public static void getBizObjectDiff(Object newValue, Object oldValue, StringBuffer stringBuffer) throws JBOException { + getBizObjectDiff(newValue, oldValue, null, stringBuffer); + } + + public static void getBizObjectDiff(Object newValue, Object oldValue, Integer index, StringBuffer stringBuffer) throws JBOException { + com.amarsoft.are.jbo.BizObject newBizObject = (com.amarsoft.are.jbo.BizObject) newValue; + com.amarsoft.are.jbo.BizObject oldBizObject = (com.amarsoft.are.jbo.BizObject) oldValue; + String newBean = newBizObject.getBizObjectClass().getPackageName() + "." + newBizObject.getBizObjectClass().getName(); + String oldBean = oldBizObject.getBizObjectClass().getPackageName() + "." + oldBizObject.getBizObjectClass().getName(); + + if (!compareClassName(newBean, oldBean)) { + if (index != null) { + stringBuffer.append("第").append(index + 1).append("行数据 "); + } + stringBuffer.append("原JBO类型:[ ").append(oldBean).append(" ] -> 转换为:[ ").append(newBean).append(" ]"); + return; + } + + for (DataElement dataElement : newBizObject.getAttributes()) { + String name = dataElement.getName(); + String nv = newBizObject.getAttribute(name).getString(); + String ov = oldBizObject.getAttribute(name).getString(); + if (!nv.equals(ov)) { + if (index != null) { + stringBuffer.append("第").append(index + 1).append("行数据 "); + } + stringBuffer.append("属性[ ").append(name).append(" ] 原始值:[ ").append(ov).append(" ] -> 变更后值:[ ").append(nv).append(" ]"); + stringBuffer.append("\n"); + } + } + } + + public static void getJSONObjectDiff(Object newValue, Object oldValue, StringBuffer stringBuffer) { + getJSONObjectDiff(newValue, oldValue, null, stringBuffer); + } + + public static void getJSONObjectDiff(Object newValue, Object oldValue, Integer index, StringBuffer stringBuffer) { + JSONObject newJSONObject = (JSONObject) newValue; + JSONObject oldJSONObject = (JSONObject) oldValue; + + for (Map.Entry entry : newJSONObject.entrySet()) { + String name = entry.getKey(); + Object nv = entry.getValue(); + Object ov = oldJSONObject.get(name); + + StringBuffer str = new StringBuffer(); + if (nv == ov) { + continue; + } else if (nv == null && ov != null) { + str.append("属性[ ").append(name).append(" ] 原始值:[ ").append(ov).append(" ] -> 变更后值:[ null ]"); + } else if (ov == null && nv != null) { + str.append("属性[ ").append(name).append(" ] 原始值:[ null ] -> 变更后值:[ ").append(nv).append(" ]"); + } else { + String nType = nv.getClass().getName(); + String oType = ov.getClass().getName(); + if (!compareClassName(nType, oType)) { + if ("".equals(ov)) { + str.append("属性[ ").append(name).append(" ] 原始值:[ null ] -> 变更后值:[ ").append(nv).append(" ]"); + } else { + str.append("属性[ ").append(name).append(" ] 原始值类型:[ ").append(oType).append(" ] -> 变更后值类型:[ ").append(nType).append(" ]"); + } + } else { + try { + str.append("属性[ ").append(name).append(" ]"); + if (!"java.lang.String".equals(nType)) { + str.append("变更内容如下: \n"); + } + getDiff(nv, ov, nType, str); + } catch (Exception e) { + e.printStackTrace(); + stringBuffer.append("差异计算产生异常: [ ").append(e.getMessage()).append(" ]"); + } + } + } + + if (index != null && str.length() > 0) { + stringBuffer.append("第").append(index + 1).append("行数据 "); + } + + stringBuffer.append(str).append("\n"); + } + } + + public static void getDiff(Object newValue, Object oldValue, String varType, StringBuffer stringBuffer) throws Exception { + getDiff(newValue, oldValue, varType, null, stringBuffer); + } + + public static void getDiff(Object newValue, Object oldValue, String varType, Integer index, StringBuffer stringBuffer) throws Exception { + Object o = null; + + if (newValue == null && oldValue != null) { + o = oldValue; + } else if (oldValue == null && newValue != null) { + o = newValue; + } + + if (o != null) { + if (index != null) { + stringBuffer.append("第").append(index + 1).append("行数据 "); + } + String type = o.getClass().getName(); + + if (newValue == null) { + stringBuffer.append("原始数据为:[ "); + } else { + stringBuffer.append("新数据数据为:[ "); + } + + switch (type) { + case "com.amarsoft.are.jbo.BizObject": + case "com.amarsoft.are.jbo.impl.StateBizObject": + stringBuffer.append(toString((com.amarsoft.are.jbo.BizObject) o)).append(" ]\n"); + break; + default: + stringBuffer.append(o.toString()).append(" ]\n"); + } + return; + } + + switch (varType) { + // 字符串差异 + case "java.lang.String": + stringBuffer.append("原始值:[ ").append(oldValue.toString()).append(" ] -> 变更后值:[ ").append(newValue.toString()).append(" ]"); + break; + // BizObject差异 + case "com.amarsoft.are.jbo.BizObject": + case "com.amarsoft.are.jbo.impl.StateBizObject": + getBizObjectDiff(newValue, oldValue, index, stringBuffer); + break; + // com.alibaba.fastjson.JSONObject差异 + case "com.alibaba.fastjson.JSONObject": + getJSONObjectDiff(newValue, oldValue, index, stringBuffer); + break; + // 集合判断 + case "java.util.ArrayList": + case "java.util.Collections$SynchronizedRandomAccessList": + List nList = (List) newValue; + List oList = (List) oldValue; + int i = 0; + if (nList.size() > oList.size()) { + for (Object target : nList) { + Object obj; + if (i >= oList.size()) { + obj = null; + } else { + obj = oList.get(i); + } + String type = target.getClass().getName(); + getDiff(target, obj, type, i++, stringBuffer); + } + } else { + for (Object target : oList) { + Object obj; + if (i >= nList.size()) { + obj = null; + } else { + obj = nList.get(i); + } + String type = target.getClass().getName(); + getDiff(obj, target, type, i++, stringBuffer); + } + } + break; + default: + stringBuffer.append(getFlowDiffType("05")); + } + } + + /** + * 简易差异算法 + */ + public static String computationalDifference(Object newValue, Object oldValue) { + StringBuffer stringBuffer = new StringBuffer(); + + if (oldValue == null && newValue != null) { + stringBuffer.append(getFlowDiffType("01")); + } else if (newValue == null && oldValue != null) { + stringBuffer.append(getFlowDiffType("02")); + } else if (newValue == oldValue || getString(newValue).equals(getString(oldValue))) { + stringBuffer.append(getFlowDiffType("03")); + } else { + String nVarType = newValue.getClass().getName(); + String oVarType = oldValue.getClass().getName(); + if (!nVarType.equals(oVarType)) { + stringBuffer.append(getFlowDiffType("04")); + return stringBuffer.toString(); + } + + try { + getDiff(newValue, oldValue, nVarType, stringBuffer); + } catch (Exception e) { + e.printStackTrace(); + stringBuffer.append("差异计算产生异常: [ ").append(e.getMessage()).append(" ]"); + } + } + + if (stringBuffer.length() == 0) { + stringBuffer.append(getFlowDiffType("03")); + } + + return stringBuffer.toString(); + } + + public static DataElement[] createJBOAttributes(String[] attributes, BizObjectManager bizObjectManager) throws Exception { + BizObjectClass managedClass = bizObjectManager.getManagedClass(); + DataElement[] attribute = new DataElement[attributes.length]; + List result = getArrayList(); + + for (int i = 0; i < attributes.length; ++i) { + + if (managedClass.indexOfAttribute(attributes[i]) == -1) { + attribute[i] = new DataElement(attributes[i]); + result.add(attribute[i]); + } + } + + return result.toArray(new DataElement[0]); + } + + public static com.amarsoft.are.jbo.BizObject getBizObject(String templateNo) throws Exception { + return getBizObject(templateNo, (BizObjectManager) null); + } + + public static com.amarsoft.are.jbo.BizObject getBizObject(String templateNo, BizObjectManager bizObjectManager) throws Exception { + ASObjectModel asObjectModel = new ASObjectModel(templateNo); + Vector columns = asObjectModel.Columns; + List attributes = getArrayList(); + + for (ASColumn column : columns) { + if (!column.getAttribute("ISINUSE").equals("0")) { + attributes.add(column.getAttribute("COLNAME")); + } + } + + bizObjectManager = bizObjectManager == null ? JBOFactory.getBizObjectManager(asObjectModel.getJboClass()) : bizObjectManager; + return bizObjectManager.newObject(createJBOAttributes(attributes.toArray(new String[0]), bizObjectManager)); + } + + public static Object getBizObject(String templateNo, Bizlet bizlet, String type) throws Exception { + ASObjectModel asObjectModel = new ASObjectModel(templateNo); + Page page = new Page(null); + ASUser user = ASUser.getUser(bizlet.getAttribute("CurUserID").toString(), null); + page.setUser(user); + asObjectModel.setCurPage(page); + asObjectModel.init(); + + BizObjectManager bizObjectManager = JBOFactory.getBizObjectManager(asObjectModel.getJboClass()); + String where = wrapSharpChar(asObjectModel.getJboWhere()); + String sql = wrapSharpChar(asObjectModel.getJboSql()); + List params = getArrayList(); + getContents(params, where, "\\:[a-zA-Z0-9_]+"); + BizObjectQuery boq = bizObjectManager.createQuery(sql); + ASValuePool as = bizlet.getAttributes(); + for (String p : params) { + p = p.replaceAll(":", ""); + for (Object obj : as.getKeys()) { + String key = (String) obj; + if (p.equalsIgnoreCase(key)) { + boq.setParameter(p, bizlet.getAttribute(key).toString()); + break; + } + } + } + if ("list".equals(type)) { + return boq.getResultList(false); + } else { + return boq.getSingleResult(false); + } + } + + public static String wrapSharpChar(String where) { + List strs = getArrayList(); + getContents(strs, where, "'#[a-zA-Z0-9_%]+?'"); + + for (int i = 0; i < strs.size(); i++) { + String value = strs.get(i); + if (value.endsWith("%'")) { + value = value.substring(2, value.length() - 2); + where = where.replaceAll("'#" + value + "%'", ":" + value + "%"); + } else { + value = value.substring(2, value.length() - 1); + where = where.replaceAll("'#" + value + "'", ":" + value); + } + } + + return where; + } + + public static List getContents(List strs, String content, String pattern) { + String str; + + Pattern p = Pattern.compile(pattern); + Matcher m = p.matcher(content); + + while (m.find()) { + for (int i = 0; i <= m.groupCount(); i++) { + str = m.group(i); + strs.add(str); + } + } + + return strs; + } + + public static com.amarsoft.are.jbo.BizObject getTemplateJBO(String templateNo) throws Exception { + return getTemplateJBO(templateNo, null); + } + + public static com.amarsoft.are.jbo.BizObject getTemplateJBO(String templateNo, Bizlet bizlet) throws Exception { + return getTemplateJBO(templateNo, bizlet, null); + } + + /** + * 根据流程变量,初始化模板 + * + * @param bizlet 模板对应JBO + * @param templateNo 模板编号 + * @param excludeAttribute 流程变量里存在,但不需要加入模板的属性 + * @return + * @throws Exception + */ + public static com.amarsoft.are.jbo.BizObject getTemplateJBO(String templateNo, Bizlet bizlet, String... excludeAttribute) throws Exception { + com.amarsoft.are.jbo.BizObject bizObject = getBizObject(templateNo); + + if (bizlet == null) { + return bizObject; + } + + ASValuePool asValuePool = bizlet.getAttributes(); + + for (Object key : asValuePool.getKeys()) { + if (excludeAttribute != null && Arrays.stream(excludeAttribute).anyMatch(str -> str.equalsIgnoreCase(key.toString()))) continue; + if (bizObject.indexOfAttribute(key.toString()) == -1) continue; + bizObject.setAttributeValue(key.toString(), asValuePool.getAttribute(key.toString())); + } + + return bizObject; + } + + public static List getTemplateJBOs(String templateNo, List bizObjects, Bizlet bizlet, String... excludeAttribute) throws Exception { + if (bizlet == null) { + return bizObjects; + } + + return convertJBO2Template(templateNo, bizObjects, bizlet, excludeAttribute); + } + + public static List convertListToJBO2(String jboClassName, List> datas) throws Exception { + return convertListToJBO(null, jboClassName, datas); + } + + public static List convertListToJBO(String templateNo, List> datas) throws Exception { + return convertListToJBO(templateNo, null, datas); + } + + public static List convertListToJBO(String templateNo, String jboClassName, List> datas) throws Exception { + if (datas == null || datas.isEmpty()) { + List a = DataUtil.getArrayList(); + return a; + } + List bos = getArrayList(); + com.amarsoft.are.jbo.BizObject bizObject; + if (StringUtils.isNotEmpty(templateNo)) { + bizObject = getBizObject(templateNo); + } else { + bizObject = JBOFactory.getBizObjectManager(jboClassName).newObject(); + } + for (Map data : datas) { + com.amarsoft.are.jbo.BizObject bo = (com.amarsoft.are.jbo.BizObject) bizObject.clone(); + for (Map.Entry entry : data.entrySet()) { + boolean flag = false; + for (DataElement attribute : bizObject.getAttributes()) { + if (entry.getKey().equals(attribute.getName())) { + flag = true; + break; + } + } + if (flag) { + bo.setAttributeValue(entry.getKey(), entry.getValue()); + } + } + bos.add(bo); + } + + return bos; + } + + public static com.amarsoft.are.jbo.BizObject convertMapToJBO(String templateNo, List> datas) throws Exception { + if (datas == null || datas.isEmpty()) { + return null; + } + com.amarsoft.are.jbo.BizObject bizObject = getBizObject(templateNo); + Map data = datas.get(0); + for (Map.Entry entry : data.entrySet()) { + bizObject.setAttributeValue(entry.getKey(), entry.getValue()); + } + + return bizObject; + } + + /** + * 将JBO对象转换为模板对象 + * + * @param templateNo 模板名 + * @param bizObjects JBO数据 + */ + public static List convertJBO2Template(String templateNo, List bizObjects, Bizlet bizlet, String... excludeAttribute) throws Exception { + if (bizObjects == null || bizObjects.size() == 0) { + return null; + } + + List bos = getArrayList(); + com.amarsoft.are.jbo.BizObject bo = getBizObject(templateNo); + + for (com.amarsoft.are.jbo.BizObject bizObject : bizObjects) { + com.amarsoft.are.jbo.BizObject newBo = (com.amarsoft.are.jbo.BizObject) bo.clone(); + if (bizlet != null) { + ASValuePool asValuePool = bizlet.getAttributes(); + for (Object key : asValuePool.getKeys()) { + if (excludeAttribute != null && Arrays.stream(excludeAttribute).anyMatch(str -> str.equalsIgnoreCase(key.toString()))) continue; + if (newBo.indexOfAttribute(key.toString()) == -1) continue; + newBo.setAttributeValue(key.toString(), asValuePool.getAttribute(key.toString())); + } + } + + for (DataElement dataElement : bizObject.getAttributes()) { + newBo.setAttributeValue(dataElement.getName(), bizObject.getAttribute(dataElement.getName())); + } + + bos.add(newBo); + } + + return bos; + } + + public static com.amarsoft.are.jbo.BizObject convertBizObjectToBizObject(BizObject bo) throws Exception { + com.amarsoft.are.jbo.BizObject bizObject = JBOFactory.getBizObjectManager(bo.getClassName()).newObject(); + for (DataObject dataObject : bo.getDatas()) { + bizObject.setAttributeValue(dataObject.getColumnName(), dataObject.getColumnValue()); + } + return bizObject; + } + + public static com.amarsoft.are.jbo.BizObject convertJSON2BizObjects(String templateNo, BizObjectManager bizObjectManager, JSONObject jsonObject) throws Exception { + if (templateNo == null || "".equals(templateNo) || jsonObject == null) { + return null; + } + + com.amarsoft.are.jbo.BizObject bizObject = getBizObject(templateNo, bizObjectManager); + + for (Map.Entry entry : jsonObject.entrySet()) { + try { + bizObject.setAttributeValue(entry.getKey(), entry.getValue()); + } catch (Exception e) { + } + } + + return bizObject; + } + + public static List setPageSize(List bos, int maxRow, int firstRow) { + if (bos.size() == 0) { + return bos; + } + List newBos = getArrayList(); + for (int i = firstRow; i < maxRow; i++) { + newBos.add(bos.get(i)); + } + return newBos; + } + + public static List convertJSON2BizObjects(String templateNo, BizObjectManager bizObjectManager, JSONArray jsonArray) throws Exception { + if (templateNo == null || "".equals(templateNo) || jsonArray == null) { + return null; + } + + List bizObjects = getArrayList(); + com.amarsoft.are.jbo.BizObject bizObjectO = getBizObject(templateNo, bizObjectManager); + + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + if (jsonObject == null) { + continue; + } + com.amarsoft.are.jbo.BizObject bizObject = (com.amarsoft.are.jbo.BizObject) bizObjectO.clone(); + + for (Map.Entry entry : jsonObject.entrySet()) { + bizObject.setAttributeValue(entry.getKey(), entry.getValue()); + } + + bizObjects.add(bizObject); + } + + return bizObjects; + } + + public static String convertMapToParams(LinkedHashMap map) { + if (map == null || map.isEmpty()) { + return ""; + } + StringBuffer stringBuffer = new StringBuffer(); + for (Map.Entry entry : map.entrySet()) { + if (stringBuffer.length() > 0) { + stringBuffer.append("△"); + } + stringBuffer.append(entry.getKey()).append("□").append(entry.getValue()); + } + return stringBuffer.toString(); + } + + public static LinkedHashMap convertParamsToMap(String params) { + if (StringUtils.isEmpty(params)) { + return null; + } + String[] p = params.split("△"); + LinkedHashMap map = new LinkedHashMap<>(p.length, 0.75f, true); + for (String s : p) { + String[] v = s.split("□"); + if (v.length == 1) { + map.put(v[0], ""); + } else { + map.put(v[0], v[1]); + } + } + return map; + } + + /** + * 流程初始化方法设置流程详情页面模板数据 + * + * @param templateNo + * @param bizlet + * @param excludeAttribute + * @throws Exception + */ + public static void setTemplateDataToFlowVariables(String templateNo, Bizlet bizlet, String... excludeAttribute) throws Exception { + setTemplateDataToFlowVariables(templateNo, null, bizlet, excludeAttribute); + } + + public static void setTemplateDataToFlowVariables(String templateNo, com.amarsoft.are.jbo.BizObject data, Bizlet bizlet, String... excludeAttribute) throws Exception { + if (data == null) { + bizlet.setAttribute(templateNo, getTemplateJBO(templateNo, bizlet, excludeAttribute)); + } else { + bizlet.setAttribute(templateNo, data); + } + } + + public static void setTemplateData(Bizlet bizlet, String templateNo, String sql, JBOTransaction tx, String... params) throws Exception { + bizlet.setAttribute(templateNo, convertMapToJBO(templateNo, DataUtil.query(sql, tx, params))); + } + + public static void setTemplateData(String templateNo, Bizlet bizlet) throws Exception { + setTemplateData(templateNo, bizlet, null); + } + + public static void setListTemplateData(Bizlet bizlet, String templateNo, String sql, JBOTransaction tx, String... params) throws Exception { + bizlet.setAttribute(templateNo, convertListToJBO(templateNo, DataUtil.query(sql, tx, params))); + } + + public static void setListTemplateData(String templateNo, Bizlet bizlet) throws Exception { + setListTemplateData(templateNo, bizlet, null); + } + + public static void setTemplateData(String templateNo, Bizlet bizlet, String params) throws Exception { + if (StringUtils.isNotEmpty(params)) { + // TODO + } else { + bizlet.setAttribute(templateNo, getBizObject(templateNo, bizlet, "info")); + } + } + + public static void setListTemplateData(String templateNo, Bizlet bizlet, String params) throws Exception { + if (StringUtils.isNotEmpty(params)) { + // TODO + } else { + bizlet.setAttribute(templateNo, getBizObject(templateNo, bizlet, "list")); + } + } + + /** + * 流程初始化方法设置流程列表页面模板数据 + * + * @param templateNo + * @param bizlet + * @param excludeAttribute + * @throws Exception + */ + public static void setListTemplateDataToFlowVariables(String templateNo, Bizlet bizlet, String... excludeAttribute) throws Exception { + setListTemplateDataToFlowVariables(templateNo, null, bizlet, excludeAttribute); + } + + public static void setListTemplateDataToFlowVariables(String templateNo, List datas, Bizlet bizlet, String... excludeAttribute) throws Exception { + if (datas == null) { + bizlet.setAttribute(templateNo, getTemplateJBOs(templateNo, null, bizlet, excludeAttribute)); + } else { + bizlet.setAttribute(templateNo, datas); + } + } + + public static String toString(Map map) throws Exception { + if (map == null) { + return ""; + } + return JSON.toJSONString(convertToMapString(map)); + } + + public static String toJSONString(Map map) throws Exception { + if (map == null || map.isEmpty()) { + return "{}"; + } + StringBuffer stringBuffer = new StringBuffer("{"); + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + if (stringBuffer.length() > 1) { + stringBuffer.append(", "); + } + stringBuffer.append("\"").append(key).append("\"").append(":"); + if (value == null) { + continue; + } else { + String type = value.getClass().getSimpleName(); + if ("StateBizObject".equals(type) || "BizObject".equals(type)) { + stringBuffer.append(toJSONString((com.amarsoft.are.jbo.BizObject) value)); + } else if ("ArrayList".equals(type) || "SynchronizedRandomAccessList".equals(type)) { + List list = (List) value; + if (list.size() > 0) { + Object obj = list.get(0); + if ("StateBizObject".equals(obj.getClass().getSimpleName()) || "BizObject".equals(obj.getClass().getSimpleName())) { + stringBuffer.append(toJSONArrayString(list)); + } else { + stringBuffer.append(JSON.toJSONString(list)); + } + } else { + stringBuffer.append("[]"); + } + } else if ("String".equals(type)) { + String v = value.toString(); + stringBuffer.append("\"").append(v.replaceAll("\"", "\\\\\"").replaceAll("'", "\\\\'").replaceAll("\n", "
").replaceAll("<", "@^@").replaceAll(">", "@v@").replaceAll("\\+", "@*@")).append("\""); + } else { + stringBuffer.append(JSON.toJSONString(value)); + } + } + } + stringBuffer.append("}"); + + return stringBuffer.toString(); + } + + public static Map convertToMapString(Map map) throws Exception { + Map result = new ConcurrentHashMap<>(); + if (map == null) { + return result; + } + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + if (value == null) { + continue; + } else { + String type = value.getClass().getSimpleName(); + if ("StateBizObject".equals(type) || "BizObject".equals(type)) { + result.put(key, toJSONString((com.amarsoft.are.jbo.BizObject) value)); + } else if ("java.util.ArrayList".equals(type) || "java.util.Collections$SynchronizedRandomAccessList".equals(type) || "SynchronizedRandomAccessList".equals(type)) { + List list = (List) value; + if (list.size() > 0) { + Object obj = list.get(0); + if ("StateBizObject".equals(obj.getClass().getSimpleName()) || "BizObject".equals(obj.getClass().getSimpleName())) { + result.put(key, toJSONArrayString(list)); + } else { + result.put(key, JSON.toJSONString(list)); + } + } else { + result.put(key, "[]"); + } + } else if ("String".equals(type)) { + result.put(key, value.toString()); + } else { + result.put(key, JSON.toJSONString(value)); + } + } + } + + return result; + } + + public static Map convertJSONToMap(JSONObject jsonObject) { + Map map = new ConcurrentHashMap<>(); + jsonObject.keySet().forEach(key -> { + Object value = jsonObject.get(key); + value = value == null ? "" : value; + CatalogModel catalogModel = AWEDataWindowCache.getInstance().getCatalogModel(key.split("~")[0]); + if (catalogModel != null) { + BizObjectManager bizObjectManager; + try { + bizObjectManager = JBOFactory.getBizObjectManager(catalogModel.getJboClass()); + if (value instanceof JSONObject) { + value = convertJSON2BizObjects(key.split("~")[0], bizObjectManager, (JSONObject) value); + } else if (value instanceof JSONArray) { + value = convertJSON2BizObjects(key.split("~")[0], bizObjectManager, (JSONArray) value); + } + } catch (Exception e) { + e.printStackTrace(); + } + map.put(key, value); + } else { + map.put(key, value); + } + }); + return map; + } + + public static Map convertStringToMap(String jsonString) { + Map result = new ConcurrentHashMap<>(); + if (jsonString == null || "".equals(jsonString)) { + return result; + } + + return convertJSONToMap(JSON.parseObject(jsonString)); + } + + public static JSONObject convertJSONKeyUpperCase(JSONObject jsonObject) { + JSONObject data = new JSONObject(); + jsonObject.forEach((k, v) -> data.put(k.toUpperCase(), v)); + + return data; + } + + public static String convertMapToArrayString(List> datas) { + if (datas == null || datas.size() == 0) { + return "[]"; + } + + JSONArray jsonArray = new JSONArray(); + for (Map data : datas) { + jsonArray.add(convertMapToJSON(data)); + } + + return jsonArray.toJSONString(); + } + + public static JSONObject convertMapToJSON(Map data) { + JSONObject jsonObject = new JSONObject(); + for (Map.Entry o : data.entrySet()) { + jsonObject.put(o.getKey(), o.getValue()); + } + + return jsonObject; + } + + public static List> convertMapStringToMapObject(List> data) { + List> newData = getArrayList(); + data.forEach(m -> { + Map nm = new ConcurrentHashMap<>(); + m.forEach((k, v) -> { + nm.put(k, getString(v)); + }); + newData.add(nm); + }); + + return newData; + } + + public static String convertMapObjectToArrayString(List> datas) { + if (datas == null || datas.size() == 0) { + return "[]"; + } + + JSONArray jsonArray = new JSONArray(); + for (Map data : datas) { + jsonArray.add(convertMapObjectToJSON(data)); + } + + return jsonArray.toJSONString(); + } + + public static JSONObject convertMapObjectToJSON(Map data) { + JSONObject jsonObject = new JSONObject(); + for (Map.Entry o : data.entrySet()) { + jsonObject.put(o.getKey(), o.getValue()); + } + + return jsonObject; + } + + public static List convertJSONToBizObject(String tableName, JSONArray datas, String excludeFields) throws Exception { + if (StringUtils.isEmpty(tableName) || datas == null || datas.isEmpty()) { + return null; + } + if (tableName.contains(".")) { + tableName = tableName.substring(tableName.lastIndexOf(".") + 1).toUpperCase(); + } + List bos = getArrayList(); + for (int i = 0; i < datas.size(); i++) { + BizObject bo = BizObject.getBizObject(tableName); + JSONObject data = datas.getJSONObject(i); + for (Map.Entry entry : data.entrySet()) { + if (excludeFields != null && excludeFields.toUpperCase().contains(entry.getKey().toUpperCase())) { + continue; + } + bo.setAttributeValue(entry.getKey().toUpperCase(), entry.getValue()); + } + bos.add(bo); + } + + return bos; + } + + public static Object getIgnoreValue(JSONObject target, String key) { + if (target == null || StringUtils.isEmpty(key)) { + return null; + } + for (Map.Entry entry : target.entrySet()) { + if (key.equalsIgnoreCase(entry.getKey())) { + return entry.getValue(); + } + } + return null; + } + + /** + * 为JSONArray以UniCode方式排序, 默认值为字符串类型 + * + * @param jsonArray 数组对象 + * @param sSortIndex 排序关键字 + * @param sSortDirect 升序降序 + * @return 排序后的数组 + */ + public static JSONArray sortJSON(JSONArray jsonArray, String sSortIndex, String sSortDirect) { + if (jsonArray == null) { + return new JSONArray(); + } + + // 排序前后对应下标 + JSONObject sortIndexs = new JSONObject(); + + int n = 0; + while (n < jsonArray.size()) { + sortIndexs.put(n + "", n); + n++; + } + + // 过渡对象 + JSONObject temp; + // 排序 + for (int i = 0; i < jsonArray.size() - 1; i++) { + for (int j = 0; j < jsonArray.size() - 1 - i; j++) { + Object obj1 = getIgnoreValue(jsonArray.getJSONObject(j), sSortIndex); + if (obj1 == null) { + jsonArray.add(new JSONObject()); + return jsonArray; + } + String value1 = obj1 + ""; + Object obj2 = getIgnoreValue(jsonArray.getJSONObject(j + 1), sSortIndex); + if (obj2 == null) { + jsonArray.add(new JSONObject()); + return jsonArray; + } + String value2 = obj2 + ""; + boolean compareFlag = "desc".equalsIgnoreCase(sSortDirect) ? + compareString(value1, value2) < 0 : compareString(value1, value2) > 0; + if (compareFlag) { + int excludeIndex = 0; + if (sortIndexs.containsValue(j)) { + excludeIndex = getOriIndex(sortIndexs, j, null); + sortIndexs.put(excludeIndex + "", j + 1); + } + if (sortIndexs.containsValue(j + 1)) { + sortIndexs.put(getOriIndex(sortIndexs, j + 1, excludeIndex) + "", j); + } + temp = jsonArray.getJSONObject(j); + jsonArray.set(j, jsonArray.getJSONObject(j + 1)); + jsonArray.set(j + 1, temp); + } + } + } + + jsonArray.add(sortIndexs); + return jsonArray; + } + + public static int getOriIndex(JSONObject jsonObject, int index, Integer excludeIndex) { + int n = 0; + for (Map.Entry entry : jsonObject.entrySet()) { + if (excludeIndex != null && Integer.parseInt(entry.getKey()) == excludeIndex) { + continue; + } + if (Integer.parseInt(entry.getValue() + "") == index) { + n = Integer.parseInt(entry.getKey()); + break; + } + } + + return n; + } + + public static int compareString(String a, String b) { + char[] c1 = a.toCharArray(); + char[] c2 = b.toCharArray(); + + int n = c1.length == 0 && c2.length > 0 ? -1 : c1.length > 0 && c2.length == 0 ? 1 : 0; + if (n != 0) { + return n; + } + if (c1.length == 0 && c2.length == 0) { + return 0; + } + for (int i = 0; i < c1.length; i++) { + if (Integer.toHexString(c1[i]).equals(Integer.toHexString(c2[i]))) { + continue; + } else { + n = Integer.parseInt(Integer.toHexString(c1[i])) - Integer.parseInt(Integer.toHexString(c2[i])); + break; + } + } + + return n; + } + + public static int compareNumber(String a, String b) { + BigDecimal numberA; + BigDecimal numberB; + try { + numberA = new BigDecimal(a); + } catch (Exception e) { + return -1; + } + try { + numberB = new BigDecimal(b); + } catch (Exception e) { + return 1; + } + return numberA.compareTo(numberB); + } + + public static JSONArray filterJSON(JSONArray jsonArray, Vector filters, Vector columns) { + if (jsonArray == null) { + return new JSONArray(); + } + List removeObject = getArrayList(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.getJSONObject(i); + List flags = getArrayList(); + for (int j = 0; j < filters.size(); j++) { + ASDataObjectFilter asDataObjectFilter = filters.get(j); + if (".'SEARCH'".equals(asDataObjectFilter.sFilterColumnID)) { + String value = asDataObjectFilter.sFilterInputs[j][1]; + if (StringUtils.isEmpty(value)) { + break; + } + boolean flag = false; + for (ASColumn column : columns) { + String colName = column.getAttribute("COLNAME"); + String actValue = getString(getIgnoreValue(obj, colName)); + String colVisible = column.getAttribute("COLVISIBLE"); + if ("1".equals(colVisible)) { + if (actValue.contains(value)) { + flag = true; + break; + } + } + } + flags.add(flag); + } else { + String columnId = asDataObjectFilter.sFilterColumnID.split("\\.")[1]; + String operator = asDataObjectFilter.sOperator; + if (operator == null) { + operator = ""; + } + String type = asDataObjectFilter.sEditStyle; + if ("".equals(operator)) { + flags.add(true); + continue; + } + boolean flag = false; + String actValue = getString(getIgnoreValue(obj, columnId)); + String value = getFilterValue(asDataObjectFilter.sFilterInputs); + switch (operator) { + case "BeginsWith": + if (actValue.startsWith(value)) { + flag = true; + } + break; + case "Equals": + if (actValue.equals(value)) { + flag = true; + } + break; + case "NotBeginsWith": + if (!actValue.startsWith(value)) { + flag = true; + } + break; + case "Not": + if (!actValue.equals(value)) { + flag = true; + } + break; + case "BigThan": + switch (type) { + case "Text": + if (compareString(actValue, value) > 0) { + flag = true; + } + break; + case "Date": + if (compareTo(actValue, value) > 0) { + flag = true; + } + break; + } + break; + case "LessThan": + switch (type) { + case "Text": + if (compareString(actValue, value) < 0) { + flag = true; + } + break; + case "Date": + if (compareTo(actValue, value) < 0) { + flag = true; + } + break; + } + break; + case "LessEqualsThan": + switch (type) { + case "Text": + if (compareString(actValue, value) <= 0) { + flag = true; + } + break; + case "Date": + if (compareTo(actValue, value) <= 0) { + flag = true; + } + break; + } + break; + case "Area": + // TODO + break; + + } + flags.add(flag); + } + } + boolean f = false; + for (Boolean flag : flags) { + if (!flag) { + f = true; + break; + } + } + if (f) { + removeObject.add(obj); + } + } + for (JSONObject obj : removeObject) { + jsonArray.remove(obj); + } + jsonArray.add(new JSONObject()); + return jsonArray; + } + + public static String getFilterValue(String[][] sFilterInputs) { + String result = ""; + for (String[] sFilterInput : sFilterInputs) { + if (StringUtils.isEmpty(sFilterInput[1])) { + continue; + } + if (result.length() > 0) { + result += "@"; + } + result += sFilterInput[1]; + } + return result; + } + + public static String getTemplateDefaultValue(ASDataObject doTemp) { + return ""; + } + + public static String getTemplateDefaultValue(ASObjectModel doTemp) { + Vector columns = doTemp.Columns; + JSONObject jsonObject = new JSONObject(); + for (ASColumn column : columns) { + String name = column.getItemName(); + String value = column.getAttribute("COLDEFAULTVALUE"); + if (StringUtils.isNotEmpty(value)) { + jsonObject.put(name, value); + } + } + return jsonObject.toJSONString(); + } + + public static String getBusinessTypeTree() throws Exception { + List> datas = query("select case when attribute10 = 'Catalog' then 'folder' else 'item' end type_, typeno, typename, sortno, attribute9 as parentno from business_type where isinuse = 1 and TYPENAME not in('历史数据迁移产品','对公','回租','直租') order by sortno"); + JSONArray jsonArray = new JSONArray(); + for (int i = 0; i < datas.size(); i++) { + Map data = datas.get(i); + String type = data.get("TYPE_"); + String typeNo = data.get("TYPENO"); + String parentNo = data.get("PARENTNO"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", typeNo); + jsonObject.put("label", data.get("TYPENAME")); + if ("folder".equals(type)) { + jsonArray.add(jsonObject); + } else { + for (int j = 0; j < jsonArray.size(); j++) { + JSONObject obj = jsonArray.getJSONObject(j); + if (obj.get("id").toString().replaceAll("Cata", "").equals(parentNo)) { + JSONArray array; + if (obj.get("children") != null) { + array = obj.getJSONArray("children"); + } else { + array = new JSONArray(); + } + array.add(jsonObject); + obj.put("children", array); + } + } + } + } + return jsonArray.toJSONString(); + } + + + //app零售计算器产品选择 + public static String getBusinessTypeTreeApp(String str) throws Exception { + List> datas = query("select case when attribute10 = 'Catalog' then 'folder' else 'item' end type_, typeno, typename, sortno, attribute9 as parentno from business_type where isinuse = 1 and TYPENAME not in('历史数据迁移产品','对公','回租','直租') order by sortno"); + JSONArray jsonArray = new JSONArray(); + for (int i = 0; i < datas.size(); i++) { + Map data = datas.get(i); + String type = data.get("TYPE_"); + String typeNo = data.get("TYPENO"); + String parentNo = data.get("PARENTNO"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", typeNo); + jsonObject.put("label", data.get("TYPENAME")); + if ("folder".equals(type)) { + jsonArray.add(jsonObject); + } else { + for (int j = 0; j < jsonArray.size(); j++) { + JSONObject obj = jsonArray.getJSONObject(j); + if (obj.get("id").toString().replaceAll("Cata", "").equals(parentNo)) { + JSONArray array; + if (obj.get("children") != null) { + array = obj.getJSONArray("children"); + } else { + array = new JSONArray(); + } + if (str.length() != 0 && !data.get("TYPENAME").contains(str)) { + obj.put("children", array);//app零售计算器产品选择增加搜索框 + continue; + } + array.add(jsonObject); + obj.put("children", array); + } + } + } + } + return jsonArray.toJSONString(); + } + + + public static String getBusinessTypeTreePublic() throws Exception { + List> datas = query("select case when attribute10 = 'Catalog' then 'folder' else 'item' end type_, typeno, typename, sortno, attribute9 as parentno from business_type where isinuse = 1 and TYPENAME in('对公','回租','直租') order by sortno"); + JSONArray jsonArray = new JSONArray(); + for (int i = 0; i < datas.size(); i++) { + Map data = datas.get(i); + String type = data.get("TYPE_"); + String typeNo = data.get("TYPENO"); + String parentNo = data.get("PARENTNO"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", typeNo); + jsonObject.put("label", data.get("TYPENAME")); + if ("folder".equals(type)) { + jsonArray.add(jsonObject); + } else { + for (int j = 0; j < jsonArray.size(); j++) { + JSONObject obj = jsonArray.getJSONObject(j); + if (obj.get("id").toString().replaceAll("Cata", "").equals(parentNo)) { + JSONArray array; + if (obj.get("children") != null) { + array = obj.getJSONArray("children"); + } else { + array = new JSONArray(); + } + array.add(jsonObject); + obj.put("children", array); + } + } + } + } + return jsonArray.toJSONString(); + } + + /** + * 立项业务线下对应产品 + * + * @param businessLine + * @return + * @throws Exception + */ + public static String getBusinessTypeTree(String businessLine) throws Exception { + List> datas = null; + /* + * if( businessLine.equals("lines01") ){//商用车 // 查询商用车向下的所有产品 + * List btList = + * JBOFactory.getBizObjectManager("jbo.prd.BUSINESS_TYPE"). + * createQuery("typename LIKE '%商用车%' AND attribute10 = 'Catalog'"). + * getResultList(false); String sortno = ""; for (int i=0; i btList = + * JBOFactory.getBizObjectManager("jbo.prd.BUSINESS_TYPE"). + * createQuery("typename LIKE '%工程机械%' AND attribute10 = 'Catalog'"). + * getResultList(false); String sortno = ""; for (int i=0; i data = datas.get(i); + String type = data.get("TYPE_"); + String typeNo = data.get("TYPENO"); + String parentNo = data.get("PARENTNO"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", typeNo); + jsonObject.put("label", data.get("TYPENAME")); + if ("folder".equals(type)) { + jsonArray.add(jsonObject); + } else { + for (int j = 0; j < jsonArray.size(); j++) { + JSONObject obj = jsonArray.getJSONObject(j); + if (obj.get("id").toString().replaceAll("Cata", "").equals(parentNo)) { + JSONArray array; + if (obj.get("children") != null) { + array = obj.getJSONArray("children"); + } else { + array = new JSONArray(); + } + array.add(jsonObject); + obj.put("children", array); + } + } + } + } + return jsonArray.toJSONString(); + } + + public static String getRiskManagementCatalog() throws Exception { + List> datas = query("select attribute2 type_, itemno, itemname || case when attribute3 = '01' then '(企业目录)' else case when attribute3 = '03' then '(个人目录)' else '' end end itemname, pid, attribute2 from lb_risk_management_catalog where isinuse = '1' order by sortno"); + JSONArray jsonArray = new JSONArray(); + for (int i = 0; i < datas.size(); i++) { + Map data = datas.get(i); + String type = data.get("TYPE_"); + String itemNo = data.get("ITEMNO"); + String parentNo = data.get("PID"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", itemNo); + jsonObject.put("label", data.get("ITEMNAME")); + jsonObject.put("type", type); + jsonObject.put("leaf", data.get("ATTRIBUTE2")); + getTree(jsonObject, jsonArray, type, parentNo); + } + return jsonArray.toJSONString(); + } + + public static String getRiskManagementCatalog(String businessLine) throws Exception { + List> datas = query("select a.attribute2 type_, a.itemno, a.itemname || case when a.attribute3 = '01' then '(企业目录)' else case when a.attribute3 = '03' then '(个人目录)' else '' end end itemname, a.pid, a.attribute2 from lb_risk_management_catalog a left join lb_risk_management_library b on a.itemno = b.itemno where a.isinuse = '1' and ( b.business_line = ? or a.itemno like '0001%' and b.id is null ) order by to_number( a.sortno )", businessLine); + JSONArray jsonArray = new JSONArray(); + for (int i = 0; i < datas.size(); i++) { + Map data = datas.get(i); + String type = data.get("TYPE_"); + String itemNo = data.get("ITEMNO"); + String parentNo = data.get("PID"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", itemNo); + jsonObject.put("label", data.get("ITEMNAME")); + jsonObject.put("type", type); + jsonObject.put("leaf", data.get("ATTRIBUTE2")); + getTree(jsonObject, jsonArray, type, parentNo); + } + return jsonArray.toJSONString(); + } + + public static void getTree(JSONObject jsonObject, JSONArray jsonArray, String type, String parentNo) { + if ("0".equals(type)) { + jsonArray.add(jsonObject); + } else { + JSONObject obj = getTarget(jsonArray, parentNo); + JSONArray array = obj.getJSONArray("children"); + if (array == null) { + array = new JSONArray(); + } + array.add(jsonObject); + obj.put("children", array); + } + } + + /** + * 根据ID搜索对象 + * + * @param jsonArray + * @param id + * @return + */ + public static JSONObject getTarget(JSONArray jsonArray, String id) { + if (jsonArray == null) { + return null; + } + Iterator iterator = jsonArray.iterator(); + while (iterator.hasNext()) { + JSONObject target = null; + JSONObject obj = (JSONObject) iterator.next(); + if (!obj.get("id").equals(id)) { + target = getTarget((JSONArray) obj.get("children"), id); + } else { + return obj; + } + if (target == null) { + continue; + } else { + return target; + } + } + return null; + } + + public static String getFlowCondition(String flowNo, String phaseNo) throws Exception { + try { + String condition = getValueBySql("select attribute11 from flow_model where flowno = ? and phaseno = ?", flowNo, phaseNo); + if (StringUtils.isNotEmpty(condition)) { + return condition; + } else { + return ""; + } + } catch (Exception e) { + return ""; + } + } + + public static String getFlowLog(String flowunid) throws Exception { + List> datas = query("select * from ( select a.serialno, a.phaseno, a.phasename, a.begintime, a.endtime, ifnull(getUserName(b.INPUTUSER),a.username) as username, ifnull(GETORGNAME(b.INPUTORG),a.orgname) as orgname, ( case when b.updatetime is null then b.inputtime else b.updatetime end ) opiniontime, b.phaseopinion, a.phaseopinion1, phaseaction from flow_task a left join flow_opinion b on a.serialno = b.serialno where a.objectno = ? " + + //"union all " + + //"select '' serialno, a.phaseno, b.phasename, '' begintime, '' endtime, '' username, '' orgname, '' opiniontime, to_clob('') phaseopinion, '' phaseopinion1, '' phaseaction from flow_task a left join flow_task b on a.assignedtaskno = b.serialno where a.objectno = ? and a.assignedtaskno = b.serialno " + + //"union all " + + //"select '' serialno, a.phaseno, a.phasename, '' begintime, '' endtime, '' username, '' orgname, '' opiniontime, to_clob('') phaseopinion, '' phaseopinion1, '' phaseaction from flow_model a left join ( select b.phaseno from flow_task a left join flow_task b on a.assignedtaskno = b.serialno where a.objectno = ? and a.assignedtaskno = b.serialno ) c on 1 = 1 " + + //"left join ( select max( flowno ) flowno, max( phaseno ) phaseno from flow_task where objectno = ? ) d on 1 = 1 " + + //"where ( case when c.phaseno is not null then ( case when a.phaseno > c.phaseno then 1 else 2 end ) else ( case when a.phaseno > d.phaseno then 1 else 2 end ) end ) = 1 and a.flowno = d.flowno and ( case when d.phaseno = 1000 then ( case when a.phaseno <> 8000 then 1 else 2 end ) else 1 end ) = 1 ) t " + + ") t " + + "order by to_date( t.begintime, 'yyyy/mm/dd hh24:mi:ss' ), t.phaseno", flowunid); + return convertMapToArrayString(datas); + } + + public static String getFlowLogBack(String flowunid, String userId) throws Exception { + List> datas = query("select * from ( select a.serialno, a.phaseno, a.phasename, a.begintime, a.endtime, a.orgname, ( case when b.updatetime is null then b.inputtime else b.updatetime end ) opiniontime, b.phaseopinion, a.phaseopinion1 from flow_task a left join flow_opinion b on a.serialno = b.serialno where a.objectno = ? and a.phaseaction=? and a.phaseopinion1 like '%退回%') t " + + "order by to_date( t.begintime, 'yyyy/mm/dd hh24:mi:ss' ), t.phaseno", flowunid, userId); + return convertMapToArrayString(datas); + } + + public static String getFlowReader(String flowunid) throws Exception { + List> datas = query("select a.taskno, b.username, a.inputtime, a.updatetime, a.isread from flow_reader a left join user_info b on a.reader = b.userid where flowunid = ?", flowunid); + JSONObject readerData = new JSONObject(); + for (Map data : datas) { + String taskId = data.get("TASKNO"); + JSONArray readers = readerData.getJSONArray(taskId); + JSONObject reader = new JSONObject(); + reader.put("USERNAME", data.get("USERNAME")); + reader.put("ISREAD", data.get("ISREAD")); + reader.put("INPUTTIME", data.get("INPUTTIME")); + reader.put("UPDATETIME", data.get("UPDATETIME")); + if (readers == null) { + readers = new JSONArray(); + } + readers.add(reader); + readerData.put(taskId, readers); + } + return readerData.toJSONString(); + } + + public static void saveFlowCondition(Map params, String flowCondition, JBOTransaction tx) throws Exception { + String flowNo = params.get("flowNo").toString(); + String phaseNo = params.get("phaseNo").toString(); + String keyName = getValueBySql("select attribute12 from flow_model where flowno = ? and phaseno = ?", flowNo, phaseNo); + String keyValue = getString(params.get(keyName)); + executeUpdate("update flow_condition set status = '1' where flowno = ? and phaseno = ?", tx, flowNo, phaseNo); + BizObject bo = BizObject.getBizObject("FLOW_CONDITION"); + bo.setAttributeValue("ID", UUIDUtil.getUUID()); + bo.setAttributeValue("KEY1", keyValue); + bo.setAttributeValue("FLOW_UNID", params.get("ObjectNo")); + bo.setAttributeValue("TASK_ID", params.get("TaskNo")); + bo.setAttributeValue("FLOWNO", flowNo); + bo.setAttributeValue("PHASENO", phaseNo); + bo.setAttributeValue("CONDITION", flowCondition); + bo.setAttributeValue("STATUS", "0"); + bo.setAttributeValue("INPUTUSERID", params.get("userId")); + bo.setAttributeValue("INPUTORGID", params.get("orgId")); + bo.setAttributeValue("INPUTTIME", StringFunction.getTodayNow()); + insert(bo, tx); + } + + public static void setPatameter(Page curPage, String kv) { + if (StringUtils.isEmpty(kv)) { + return; + } + Vector parameters = curPage.getCurComp().getParameterList(); + Parameter parameter = new Parameter(); + parameter.setName(kv.split("->")[0]); + parameter.setValue(kv.split("->")[1]); + parameters.add(parameter); + curPage.getCurComp().setParameterList(parameters); + } + + public static void setAttributes(com.amarsoft.are.jbo.BizObject bo, List> datas) throws JBOException { + if (bo == null && (datas == null || datas.isEmpty())) { + return; + } + Map data = datas.get(0); + for (DataElement dataElement : bo.getAttributes()) { + String columnName = dataElement.getName(); + for (Map.Entry entry : data.entrySet()) { + if (entry.getKey().equalsIgnoreCase(columnName)) { + bo.setAttributeValue(columnName, entry.getValue()); + break; + } + } + } + } + + public static void save(List> classs, Vector columns, com.amarsoft.are.jbo.BizObject bo, boolean createKey, boolean flag, JBOTransaction tx) throws Exception { + if (classs == null || classs.isEmpty() || columns == null || columns.isEmpty()) { + return; + } + for (Map cls : classs) { + String alias = cls.get("alias"); + String className = cls.get("className"); + BizObjectClass boc = JBOFactory.getBizObjectClass(className); + String[] dataElements = boc.getKeyAttributes(); + if (dataElements == null || dataElements.length == 0) { + continue; + } + BizObject newBo = BizObject.getBizObject(className); + String key = ""; + boolean keyFlag = false; + for (ASColumn column : columns) { + String tableName = column.getAttribute("COLTABLENAME"); + if (!alias.equalsIgnoreCase(tableName)) { + continue; + } + String colName = column.getAttribute("COLNAME"); + boolean isKey = false; + for (String keyName : dataElements) { + if (keyName.equalsIgnoreCase(colName)) { + isKey = true; + if (!"".equals(key)) { + key += ","; + } + key += colName.toUpperCase(); + keyFlag = false; + String keyValue = bo.getAttribute(colName).getString(); + if (StringUtils.isNotEmpty(keyValue)) { + keyFlag = true; + } + } + } + if (isKey && createKey) { + newBo.setAttributeValue(colName.toUpperCase(), UUIDUtil.getUUID()); + continue; + } + newBo.setAttributeValue(colName.toUpperCase(), bo.getAttribute(colName).getString()); + } + if (flag) { + keyFlag = false; + } + if ("".equals(key)) { + continue; + } else if (!keyFlag) { + insert(newBo, tx); + } else { + update(newBo, tx, key); + } + } + + return; + } + + public static boolean isJSON(Page page, String dono) throws Exception { + String templateNo = page.getParameter("FlowTemplateNo"); + boolean flag = false; + Vector parameterList = page.getCurComp().getParameterList(); + for (Parameter parameter : parameterList) { + if (parameter.getName().equals(dono) || parameter.getName().equals("InfoData")) { + flag = true; + break; + } + } + return flag; + } + + public static boolean isReadOnly(Page page) throws Exception { + String rightType = page.getParameter("RightType"); + String isHistory = page.getParameter("IsHistory"); + return isReadOnly(rightType, isHistory); + } + + public static boolean isReadOnly(String rightType, String isHistory) { + if ((null != rightType && rightType.equals("ReadOnly")) || (null != isHistory && isHistory.equals("true"))) { + return true; + } else { + return false; + } + } + + public static JSONObject getTemplateAllValue(Page page, String templateNo) throws Exception { + JSONObject dataJSON = null; + String data = page.getParameter(templateNo); + String infoData = page.getParameter("InfoData"); + if ("true".equals(page.getParameter("loadDataBase"))) { + String flowunid = page.getParameter("ObjectNo"); + String taskId = page.getParameter("TaskNo"); + Map d = DataUtil.flowVariables("FLOW_VARINST", null, flowunid, taskId, templateNo); + if (d.size() > 0 && d.get(templateNo) != null) { + data = JSON.toJSONString(d.get(templateNo)); + } + } + if (infoData != null && !"".equals(infoData) && !"null".equals(infoData)) { + dataJSON = JSON.parseObject(infoData.replaceAll("@_@", ">>").replaceAll("%", "@-@").replaceAll("@\\^@", "<").replaceAll("@v@", ">").replaceAll("@\\*@", "+")); + } else if (data != null && !"".equals(data) && !"null".equals(data)) { + dataJSON = JSON.parseObject(URLDecoder.decode(data.replaceAll("%", "@-@"), "UTF-8").replaceAll("@_@", ">>").replaceAll("@\\^@", "<").replaceAll("@v@", ">").replaceAll("@\\*@", "+")); + } + + if (dataJSON != null) { + dataJSON = convertJSONObjectSymbols(dataJSON); + } + + return dataJSON; + } + + public static void convertJSONArraySymbols(JSONArray jsonArray) { + for (int i = 0; i < jsonArray.size(); i++) { + convertJSONObjectSymbols(jsonArray.getJSONObject(i)); + } + } + + public static JSONObject convertJSONObjectSymbols(JSONObject jsonObject) { + for (Map.Entry entry : jsonObject.entrySet()) { + jsonObject.put(entry.getKey(), convertSymbols(entry.getValue())); + } + return jsonObject; + } + + public static Object convertSymbols(Object obj) { + if (obj != null) { + return obj.toString().replaceAll("@-@", "%"); + } + return obj; + } + + public static JSONArray getTemplateAllList(Page page, String templateNo) throws Exception { + JSONArray arrayJSON = null; + String arrayData = page.getParameter(templateNo); + if (arrayData != null && !"".equals(arrayData)) { + arrayJSON = JSON.parseArray(URLDecoder.decode(arrayData, "UTF-8").replaceAll("@_@", ">>")); + } + + return arrayJSON; + } + + public static String getPageParameters(Page page, String... paramterNames) { + return getPageParameters(null, page, paramterNames); + } + + public static String getPageParameters(String symbol, Page page, String... paramterNames) { + Vector params = page.getCurComp().getParameterList(); + StringBuffer stringBuffer = new StringBuffer(); + if (StringUtils.isEmpty(symbol)) { + symbol = "&"; + } + for (Parameter parameter : params) { + if (paramterNames != null && paramterNames.length > 0) { + for (String p : paramterNames) { + if (p.equals(parameter.getName())) { + if (stringBuffer.length() > 0) { + stringBuffer = stringBuffer.append(symbol); + } + stringBuffer = stringBuffer.append(parameter.getName()).append("=").append(parameter.getValue()); + break; + } + } + } else { + if (stringBuffer.length() > 0) { + stringBuffer = stringBuffer.append(symbol); + } + stringBuffer = stringBuffer.append(parameter.getName()).append("=").append(parameter.getValue()); + } + } + return stringBuffer.toString(); + } + + public static Object getTemplateValue(Page page, String templateNo, String key) throws Exception { + JSONObject dataJSON = getTemplateAllValue(page, templateNo); + if (dataJSON == null) { + return null; + } + return dataJSON.get(key); + } + + public static void setTemplateValue(Page page, String templateNo, String key, String value) throws Exception { + JSONObject dataJSON = getTemplateAllValue(page, templateNo); + if (dataJSON == null) { + dataJSON = new JSONObject(); + } + dataJSON.put(key, value); + page.setAttribute(templateNo, JSON.toJSONString(dataJSON).replaceAll(">>", "@_@")); + } + + public static void saveTemplate(Bizlet bizlet, String templateNo, JBOTransaction tx) throws Exception { + saveTemplate(bizlet, templateNo, true, null, true, tx); + } + + public static void saveTemplate(Bizlet bizlet, String templateNo, String otherProp, JBOTransaction tx) throws Exception { + saveTemplate(bizlet, templateNo, true, otherProp, true, tx); + } + + public static void saveTemplate(Bizlet bizlet, String templateNo, boolean createKey, String otherProp, JBOTransaction tx) throws Exception { + saveTemplate(bizlet, templateNo, createKey, otherProp, true, tx); + } + + /** + * flag = true 的时候,无论如何都会insert + * + * @param bizlet + * @param templateNo + * @param insertOrUpdate + * @param tx + * @throws Exception + */ + public static void saveTemplate(Bizlet bizlet, String templateNo, boolean insertOrUpdate, JBOTransaction tx) throws Exception { + saveTemplate(bizlet, templateNo, true, null, insertOrUpdate, tx); + } + + public static void saveTemplate(Bizlet bizlet, String templateNo, boolean createKey, String otherProp, boolean flag, JBOTransaction tx) throws Exception { + if (bizlet != null) { + if ("".equals(bizlet.getAttribute(templateNo))) { + return; + } + com.amarsoft.are.jbo.BizObject bo = (com.amarsoft.are.jbo.BizObject) bizlet.getAttribute(templateNo); + if (bo != null) { + if (StringUtils.isNotEmpty(otherProp)) { + String[] props = otherProp.split(","); + for (String prop : props) { + bo.setAttributeValue(prop.split("=")[0], prop.split("=")[1]); + } + } + saveTemplate(templateNo, bo, createKey, flag, tx); + } else { + throw new JBOException("NO TEMPLATE DATA"); + } + } + } + + public static void saveTemplate(String templateNo, com.amarsoft.are.jbo.BizObject bo, boolean createKey, boolean flag, JBOTransaction tx) throws Exception { + ASObjectModel asObjectModel = new ASObjectModel(templateNo); + List> classs = getTemplateClass(asObjectModel); + Vector columns = asObjectModel.Columns; + save(classs, columns, bo, createKey, flag, tx); + } + + public static List> getTemplateClass(ASObjectModel asObjectModel) { + String jboFrom = asObjectModel.getJboFrom(); + Pattern p = Pattern.compile("jbo\\.(\\w+\\.)*[A-Z_0-9]+[\\s]+(as|AS|As)?[\\s]?[\\w]+[\\s]{1}"); + Matcher m = p.matcher(jboFrom); + List> classs = getArrayList(); + while (m.find()) { + Map cls = new ConcurrentHashMap<>(); + String jboClassName = m.group().trim(); + cls.put("className", jboClassName.split(" ")[0]); + cls.put("alias", jboClassName.split(" ")[1]); + classs.add(cls); + } + String mainJboClass = asObjectModel.getJboClass(); + Map cls = new ConcurrentHashMap<>(); + cls.put("className", mainJboClass); + cls.put("alias", "O"); + classs.add(cls); + + return classs; + } + + public static String getJBOClass(com.amarsoft.are.jbo.BizObject bizObject) { + if (bizObject == null) { + return ""; + } + String className = bizObject.getBizObjectClass().getPackageName() + "." + bizObject.getBizObjectClass().getName(); + String pattern = "\\d"; + if (Pattern.matches(pattern, className.substring(className.length() - 1))) { + className = className.substring(0, className.lastIndexOf("X")); + } + return className; + } + + public static String getIgnoreCaseParams(String key, Page page) { + for (Parameter parameter : page.getCurComp().getParameterList()) { + if (parameter.getName().equalsIgnoreCase(key)) { + return parameter.getValue(); + } + } + return null; + } + + public static List getUpdateFields(String templateNo, com.amarsoft.are.jbo.BizObject bo) throws Exception { + List updateFields = getArrayList(); + if (bo instanceof StateBizObject) { + com.amarsoft.are.jbo.BizObject oBo = getTemplateJBO(templateNo); + StateBizObject so = (StateBizObject) bo; + DataElement[] dataElements = bo.getAttributes(); + for (int i = 0; i < dataElements.length; i++) { + oBo.setAttributeValue(i, so.getOriginalValue(i)); + if (!bo.getAttribute(i).equals(oBo.getAttribute(i))) { + updateFields.add(dataElements[i].getName()); + } + } + } + return updateFields; + } + + public static void saveListTemplate(Bizlet bizlet, String templateNo, JBOTransaction tx) throws Exception { + saveListTemplate(bizlet, null, templateNo, true, null, null, tx); + } + + public static void saveListTemplate(Bizlet bizlet, String templateNo, boolean createKey, JBOTransaction tx) throws Exception { + saveListTemplate(bizlet, null, templateNo, createKey, null, null, tx); + } + + public static void saveListTemplate(Bizlet bizlet, String templateNo, String otherProp, JBOTransaction tx) throws Exception { + saveListTemplate(bizlet, null, templateNo, true, otherProp, null, tx); + } + + public static void saveListTemplate(Bizlet bizlet, String templateNo, boolean createKey, String otherProp, JBOTransaction tx) throws Exception { + saveListTemplate(bizlet, null, templateNo, true, otherProp, null, tx); + } + + public static void saveListTemplate(Bizlet bizlet, String templateNoTemp, String templateNo, boolean createKey, String otherProp, String insertOrUpdate, JBOTransaction tx) throws Exception { + saveListTemplate(bizlet, templateNoTemp, templateNo, createKey ? "true" : "false", otherProp, insertOrUpdate, tx); + } + + public static void saveListTemplate(Bizlet bizlet, String templateNoTemp, String templateNo, String createKey, String otherProp, String insertOrUpdate, JBOTransaction tx) throws Exception { + if (bizlet != null) { + List bos; + if (StringUtils.isNotEmpty(templateNoTemp)) { + bos = (List) bizlet.getAttribute(templateNoTemp); + } else { + bos = (List) bizlet.getAttribute(templateNo); + } + if (bos != null) { + if (StringUtils.isNotEmpty(otherProp)) { + String[] props = otherProp.split(","); + for (com.amarsoft.are.jbo.BizObject bo : bos) { + for (String prop : props) { + bo.setAttributeValue(prop.split("=")[0], prop.split("=")[1]); + } + } + } + saveListTemplate(bos, createKey, insertOrUpdate, tx); + } else { + // throw new JBOException( "NO TEMPLATE DATA" ); + } + } + } + + public static void saveListTemplate(List bos, JBOTransaction tx) throws Exception { + saveListTemplate(bos, "false", null, tx); + } + + public static void saveListTemplate(List bos, String createKey, String insertOrUpdate, JBOTransaction tx) throws Exception { + if (bos == null) { + return; + } + List insert = getArrayList(); + List update = getArrayList(); + String key = ""; + boolean flag = false; + for (com.amarsoft.are.jbo.BizObject bizObject : bos) { + String[] keys = bizObject.getBizObjectClass().getKeyAttributes(); + String className = bizObject.getBizObjectClass().getPackageName() + "." + bizObject.getBizObjectClass().getName(); + String pattern = "\\d"; + if (Pattern.matches(pattern, className.substring(className.length() - 1))) { + className = className.substring(0, className.lastIndexOf("X")); + } + BizObjectManager bom = JBOFactory.getBizObjectManager(className); + com.amarsoft.are.jbo.BizObject bo = bom.newObject(); + for (DataElement dataElement1 : bo.getAttributes()) { + for (DataElement dataElement2 : bizObject.getAttributes()) { + if (dataElement1.getName().equalsIgnoreCase(dataElement2.getName())) { + bo.setAttributeValue(dataElement1.getName().toUpperCase(), bizObject.getAttribute(dataElement2.getName())); + break; + } + } + } + boolean keyFlag = false; + for (String k : keys) { + keyFlag = false; + String keyValue = bizObject.getAttribute(k).getString(); + if (StringUtils.isNotEmpty(keyValue)) { + if (!flag) { + flag = true; + if (!"".equals(key)) { + key += ","; + } + key += k.toUpperCase(); + } + keyFlag = true; + } + if (!keyFlag && ("true".equals(createKey) || "auto".equals(createKey))) { + bo.setAttributeValue(k.toUpperCase(), UUIDUtil.getUUID()); + } + } + if ("insert".equals(insertOrUpdate) && !"auto".equals(createKey)) { + keyFlag = false; + } + if (keyFlag) { + update.add(bo); + } else { + insert.add(bo); + } + } + if (insert.size() > 0) { + insert(insert, tx); + } + if (update.size() > 0) { + update(update, tx, key); + } + } + + + /** + * ***********************************************测算API开始********************************************************** + */ + + // 二分法IRR + public static BigDecimal getIRR(List cashFlows, BigDecimal incomeNumberYear) { + List cashFlow = getArrayList(); + for (int o = 0; o < cashFlows.size(); o++) { + Object obj = cashFlows.get(o); + if (obj instanceof BigDecimal) { + cashFlow.add((BigDecimal) obj); + } else { + cashFlow.add(new BigDecimal(obj.toString())); + } + } + BigDecimal up = BigDecimal.ONE; + BigDecimal down = BigDecimal.ZERO; + BigDecimal two = new BigDecimal("2"); + BigDecimal irr = new BigDecimal("0.01"); + BigDecimal accuracy = new BigDecimal("0.0000001"); + BigDecimal out; + + int i = 0; + while (irr.abs().compareTo(accuracy) > 0 && i < 200) { + out = cashFlow.get(0); + for (int j = 1; j < cashFlow.size(); j++) { + out = out.add(cashFlow.get(j).divide(new BigDecimal(Math.pow(BigDecimal.ONE.add(irr).doubleValue(), j)), 20, 4)); + } + + if (out.compareTo(BigDecimal.ZERO) > 0) { + down = irr; + irr = irr.add(up).divide(two, 20, 4); + } else if (out.compareTo(BigDecimal.ZERO) < 0) { + up = irr; + irr = irr.add(down).divide(two, 20, 4); + } + i++; + } + irr = irr.multiply(incomeNumberYear).multiply(new BigDecimal(100)); + + return irr; + } + + /** + * NPV + * + * @param rate 折现率 + * @param cashFlow 现金流 + * @return + */ + public static BigDecimal getNPV(BigDecimal rate, BigDecimal incomeNumberYear, List cashFlow) { + BigDecimal npv = BigDecimal.ZERO; + rate = BigDecimal.ONE.add(rate.divide(incomeNumberYear, 20, 4)); + // 因为是摊到月的,所以用12月来代替 + // rate = BigDecimal.ONE.add( rate.divide( new BigDecimal( 12 ), 20, 4 ) ); + int i = 1; + for (String cash : cashFlow) { + npv = npv.add(new BigDecimal(cash).divide(new BigDecimal(Math.pow(rate.doubleValue(), Double.parseDouble((i++) + ""))), 20, 4)); + } + return npv.setScale(2, 4); + } + + /** + * XNPV + * + * @param rate 折现率 + * @param dateList 日期列表 + * @param cashFlow 现金流 + * @return + */ + public static BigDecimal getXNPV(BigDecimal rate, String startDate, List dateList, List cashFlow) { + BigDecimal xnpv = BigDecimal.ZERO; + rate = rate.divide(new BigDecimal(360), 20, 4); + BigDecimal prev = BigDecimal.ONE; + for (int i = 0; i < cashFlow.size(); i++) { + BigDecimal days; + if (i == 0) { + days = getDayDiff(startDate, dateList.get(i)); + } else { + days = getDayDiff(dateList.get(i - 1), dateList.get(i)); + } + prev = BigDecimal.ONE.add(rate.multiply(days)).multiply(prev); + xnpv = xnpv.add(new BigDecimal(cashFlow.get(i)).divide(prev, 20, 4)); + } + return xnpv.setScale(2, 4); + } + + + /** + * PMT + * + * @param rate 期利率 + * @param nper 期次 + * @param pv 现值 + * @param fv 未来值 + * @param type 期初/期末 + * @return + */ + public static BigDecimal getPMT(BigDecimal rate, BigDecimal nper, BigDecimal pv, BigDecimal fv, BigDecimal type) { + if (rate == null || nper == null || pv == null) { + return BigDecimal.ZERO; + } + if (fv == null) { + fv = BigDecimal.ZERO; + } + if (type == null || type.compareTo(BigDecimal.ONE) > 0 || type.compareTo(BigDecimal.ZERO) < 0) { + type = BigDecimal.ZERO; + } + if (rate.compareTo(BigDecimal.ZERO) == 0) { + return pv.negate().subtract(fv.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : fv.divide(new BigDecimal(Math.pow(BigDecimal.ONE.add(rate).doubleValue(), nper.doubleValue())), 20, 4)) + .divide(nper, 2, 4); + } else { + return pv.negate().subtract(fv.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : fv.divide(new BigDecimal(Math.pow(BigDecimal.ONE.add(rate).doubleValue(), nper.doubleValue())), 20, 4)) + .multiply(rate).multiply(new BigDecimal(Math.pow(BigDecimal.ONE.add(rate).doubleValue(), nper.subtract(type).doubleValue()))).divide(new BigDecimal(Math.pow(BigDecimal.ONE.add(rate).doubleValue(), nper.doubleValue())).subtract(BigDecimal.ONE), 2, 4); + } + } + + /** + * PV + * + * @param rate 期利率 + * @param nper 期次 + * @param pmt + * @param fv 未来值 + * @param type 期初/期末 + * @return pv 现值 + */ + + public static BigDecimal getPV(BigDecimal rate, BigDecimal nper, BigDecimal pmt, BigDecimal fv, BigDecimal type) { + if (rate == null || nper == null) { + return BigDecimal.ZERO; + } + if (fv == null) { + fv = BigDecimal.ZERO; + } + if (type == null || type.compareTo(BigDecimal.ONE) > 0 || type.compareTo(BigDecimal.ZERO) < 0) { + type = BigDecimal.ZERO; + } + if (pmt == null) { + pmt = BigDecimal.ZERO; + } + if (rate.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.ONE.negate().multiply(pmt.multiply(rate).add(fv.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : fv.divide(new BigDecimal(Math.pow(BigDecimal.ONE.add(rate).doubleValue(), nper.doubleValue())), 20, 4))).setScale(2, 4); + } else { + return BigDecimal.ONE.negate().multiply(pmt.multiply(BigDecimal.ONE.subtract(new BigDecimal(Math.pow(BigDecimal.ONE.add(rate).doubleValue(), nper.negate().add(type).doubleValue()))).divide(rate, 20, 4).add(type)).add(fv.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : fv.divide(new BigDecimal(Math.pow(BigDecimal.ONE.add(rate).doubleValue(), nper.doubleValue())), 20, 4))).setScale(2, 4); + } + } + + public static String getDiscount(JBOTransaction tx, String flowunid, boolean flag) throws Exception { + List> discount; + if (flag) { + discount = query("select wm_concat( ifnull( c.interests, 0 ) || '@' || a.id ) discount from lb_equipment_car_temp a" + + " left join lb_commercial_interests c on a.car_date_id = c.id and trunc( sysdate ) between" + + " to_date( c.interestsbegin, 'yyyy/mm/dd' ) and to_date( c.interestsover, 'yyyy/mm/dd' ) where c.id is not null and a.flowunid = ? order by a.id", tx, flowunid); + } else { + discount = query("select wm_concat( ifnull( c.interests, 0 ) || '@' || a.id ) discount from lb_equipment_car_temp a" + + " left join lb_cardata_model_interests c on a.car_date_id = c.id and trunc( sysdate ) between" + + " to_date( c.interestsbegin, 'yyyy/mm/dd' ) and to_date( c.interestsover, 'yyyy/mm/dd' ) where c.id is not null and a.flowunid = ? order by a.id", tx, flowunid); + } + if (discount.size() == 0 || discount.get(0).get("DISCOUNT") == null) { + return "0"; + } else { + return discount.get(0).get("DISCOUNT"); + } + } + + public static String getDiscountByCarId(String carId, JBOTransaction tx) throws Exception { + List> discount = query("select ifnull( interests, -1 ) interest from lb_commercial_interests where id = ? and trunc( sysdate ) between" + + " to_date( interestsbegin, 'yyyy/mm/dd' ) and to_date( interestsover, 'yyyy/mm/dd' )", tx, carId); + if (discount.size() == 0 || discount.get(0).get("INTEREST") == null) { + return "-1"; + } else { + return discount.get(0).get("INTEREST"); + } + } + + public static String getActualDiscount(JBOTransaction tx, String flowunid) throws Exception { + List> discount = query("select sum( ifnull( actual_discount, 0 ) ) discount from lb_equipment_car_temp where flowunid = ?", tx, flowunid); + if (discount.size() == 0 || discount.get(0).get("DISCOUNT") == null) { + return "0"; + } else { + return discount.get(0).get("DISCOUNT"); + } + } + + public static String getPrice(JBOTransaction tx, String flowunid, boolean flag) throws Exception { + List> price; + if (flag) { + price = query("select wm_concat( id || '@' || ( transactionprice + ifnull( equip_purchase_tax, 0 ) + ifnull( equip_insurance, 0 ) + ifnull( accessory_money, 0 ) + ifnull( upper_equipment, 0 ) ) || '@' || ifnull( price, 0 ) ) price from lb_equipment_car_temp where flowunid = ? order by id", tx, flowunid); + } else { + price = query("select wm_concat( id || '@' || transactionprice || '@' || ifnull( price, 0 ) ) price from lb_equipment_car_temp where flowunid = ? order by id", tx, flowunid); + } + + if (price.size() == 0 || price.get(0).get("PRICE") == null) { + return "0"; + } else { + return price.get(0).get("PRICE"); + } + } + + public static String getPrice1(JBOTransaction tx, String flowunid) throws Exception { + String sql = "select ifnull(SUM(TOTALPRICE),0) as TOTALPRICE from LB_EQUIPMENT_CAR_TEMP o where o.flowunid=? "; + List> map = DataUtil.query(sql, tx, flowunid); + String price = map.get(0).get("TOTALPRICE"); + return price; + } + + //获取增融比例 + public static String getFinancingPro(JBOTransaction tx, String flowunid) throws Exception { + List> price = query("select ifnull(round(sum(INCREASE_FINANCING)/sum(EQUIP_PRICE),2)*100,0) as proportion from LB_EQUIPMENT_CAR_TEMP where FLOWUNID=?", tx, flowunid); + String financingPro = price.get(0).get("PROPORTION"); + return financingPro; + } + + + public static BizObject getDiscountAndYearRate(Map equipment, List> discountRate) throws Exception { + // 交易价格 + BigDecimal transactionPrice = new BigDecimal(equipment.get("TRANSACTIONPRICE")); + // 购置税 + BigDecimal equipPurchaseTax = new BigDecimal(equipment.get("EQUIP_PURCHASE_TAX")); + equipPurchaseTax = BigDecimal.ZERO; + // 保险费 + BigDecimal equipInsurance = new BigDecimal(equipment.get("EQUIP_INSURANCE")); + equipInsurance = BigDecimal.ZERO; + // 配件费 + BigDecimal accessoryMoney = new BigDecimal(equipment.get("ACCESSORY_MONEY")); + accessoryMoney = BigDecimal.ZERO; + // 上装费 + BigDecimal upperEquipment = new BigDecimal(equipment.get("UPPER_EQUIPMENT")); + upperEquipment = BigDecimal.ZERO; + // IRR + BigDecimal irr = new BigDecimal(equipment.get("IRR")); + // 贴息收取延迟月数 + BigDecimal discoutDelayMonth = new BigDecimal(equipment.get("DISCOUTDELAYMONTH")); + // 年还款次数 + BigDecimal incomeNumberYear = new BigDecimal(equipment.get("INCOMENUMBERYEAR")); + // 还款次数 + int incomeNumber = Integer.parseInt(equipment.get("INCOMENUMBER")); + // 期初/期末 + BigDecimal periodType = new BigDecimal(equipment.get("PERIODTYPE")); + // 资金成本折现率 + BigDecimal capitalCostRate = new BigDecimal(equipment.get("CAPITALCOSTRATE")); + // 首付比例 + BigDecimal firstPaymentRatio = new BigDecimal(equipment.get("FIRSTPAYMENTRATIO")); + firstPaymentRatio = firstPaymentRatio.multiply(new BigDecimal("0.01")); + // 保证金比例 + BigDecimal cautionMoneyRatio = new BigDecimal(equipment.get("CAUTIONMONEYRATIO")); + cautionMoneyRatio = cautionMoneyRatio.multiply(new BigDecimal("0.01")); + // 首付款 + transactionPrice = transactionPrice.add(equipInsurance).add(equipPurchaseTax).add(accessoryMoney).add(upperEquipment); + BigDecimal firstPayment = transactionPrice.multiply(firstPaymentRatio); + // 融资额 + BigDecimal cleanLeaseMoney = transactionPrice.subtract(firstPayment).negate(); + // 保证金抵扣 + BigDecimal cautionMoney = cleanLeaseMoney.multiply(cautionMoneyRatio).negate(); + // 贴息 + BigDecimal discount = new BigDecimal(equipment.get("DISCOUNT")); + // 加入贴息计算( 交易价格 + 购置税 + 保险费 - ( 交易价格 + 购置税 + 保险费 ) * 首付比例 ) * 贴息比例 + BigDecimal t = new BigDecimal("0.01"); + BigDecimal dt = BigDecimal.ZERO; + for (Map d : discountRate) { + BigDecimal up = new BigDecimal(d.get("EquipUplimpits")); + BigDecimal down = new BigDecimal(d.get("MoneyLowLimits")); + if (cleanLeaseMoney.negate().compareTo(down) >= 0 && cleanLeaseMoney.negate().compareTo(up) <= 0) { + BigDecimal r; + BigDecimal v; + if ("".equals(d.get("DiscountRate"))) { + r = BigDecimal.ZERO; + } else { + r = new BigDecimal(d.get("DiscountRate")); + } + if ("".equals(d.get("DiscountValue"))) { + v = BigDecimal.ZERO; + } else { + v = new BigDecimal(d.get("DiscountValue")); + } + if (r.compareTo(BigDecimal.ZERO) > 0) { + BigDecimal m; + if ("CLEAN_LEASE_MONEY".equals(d.get("DiscountReferenceFee"))) { + m = cleanLeaseMoney.negate(); + } else { + m = transactionPrice; + } + dt = m.multiply(r).multiply(t); + } else { + dt = v; + } + break; + } + } + dt = dt.setScale(2, 4); + if (dt.compareTo(discount) > 0) { + dt = discount; + } + discount = dt; + if (discoutDelayMonth.compareTo(BigDecimal.ZERO) > 0) { + discount = getPV(capitalCostRate, discoutDelayMonth, BigDecimal.ZERO, discount.negate(), BigDecimal.ZERO); + } + + // 贴息脱税 + BigDecimal tax = new BigDecimal(equipment.get("TAX")).multiply(t); + BigDecimal other = new BigDecimal(equipment.get("OTHER")).multiply(t).add(BigDecimal.ONE); + BigDecimal calDiscount = DataUtil.discountTaxDeduction(discount, tax, other); + + cleanLeaseMoney = cleanLeaseMoney.add(calDiscount).add(cautionMoney); + + BizObject bo = BizObject.getBizObject("LB_EQUIPMENT_CAR_TEMP"); + bo.setAttributeValue("ID", equipment.get("ID")); + bo.setAttributeValue("EQUIP_DISCOUNT", discount); + bo.setAttributeValue("EQUIP_YEAR_RATE", getYearRate(cleanLeaseMoney, irr, incomeNumber, incomeNumberYear, periodType, cautionMoney, calDiscount, tax, other).setScale(6, 4).toString()); + + return bo; + } + + public static BigDecimal getYearRate(BigDecimal cleanLeaseMoney, BigDecimal irr, int incomeNumber, BigDecimal incomeNumberYear, BigDecimal periodType, BigDecimal cautionMoney, BigDecimal calDiscount, BigDecimal tax, BigDecimal other) { + // 构造测算参数 + BigDecimal up = BigDecimal.ONE; + BigDecimal down = BigDecimal.ZERO; + BigDecimal two = new BigDecimal("2"); + BigDecimal rate = new BigDecimal("0.001"); + BigDecimal accuracy = new BigDecimal("0.0000001"); + BigDecimal calcIrr; + BigDecimal cautionMoneyTemp; + BigDecimal cleanLeaseMoneyTemp; + + int i = 0; + do { + cleanLeaseMoneyTemp = cleanLeaseMoney.subtract(cautionMoney).subtract(calDiscount).negate(); + BigDecimal pRete = rate.divide(incomeNumberYear, 20, 4); + BigDecimal rent = getPMT(pRete, new BigDecimal(incomeNumber), cleanLeaseMoneyTemp.negate(), BigDecimal.ZERO, periodType); + List cashList = Arrays.asList(new BigDecimal[incomeNumber + 1]); + List taxList = Arrays.asList(new BigDecimal[incomeNumber + 1]); + cautionMoneyTemp = cautionMoney; + cashList.set(0, cleanLeaseMoney); + taxList.set(0, BigDecimal.ZERO); + for (int j = 1; j < incomeNumber + 1; j++) { + BigDecimal interest = cleanLeaseMoneyTemp.multiply(pRete).setScale(2, 4); + BigDecimal t = interest.multiply(other).multiply(tax).divide(BigDecimal.ONE.add(tax), 2, 4); + taxList.set(j, t); + cashList.set(j, rent.subtract(t)); + cleanLeaseMoneyTemp = cleanLeaseMoneyTemp.subtract(rent.subtract(interest)); + } + if (cautionMoneyTemp.compareTo(BigDecimal.ZERO) > 0) { + double count = cautionMoneyTemp.divide(rent, 2, 4).doubleValue(); + int d = 0; + for (; d < (int) count; d++) { + cashList.set(cashList.size() - 1 - d, BigDecimal.ZERO.subtract(taxList.get(cashList.size() - 1 - d))); + } + cautionMoneyTemp = cautionMoneyTemp.subtract(rent.multiply(new BigDecimal((int) count))); + if (cautionMoneyTemp.compareTo(BigDecimal.ZERO) > 0) { + cashList.set(cashList.size() - 1 - d, rent.subtract(cautionMoneyTemp).subtract(taxList.get(cashList.size() - 1 - d))); + } + } + calcIrr = getIRR(cashList, incomeNumberYear); + if (calcIrr.compareTo(irr) > 0) { + up = rate; + rate = rate.add(down).divide(two, 20, BigDecimal.ROUND_HALF_UP); + } else if (calcIrr.compareTo(irr) < 0) { + down = rate; + rate = rate.add(up).divide(two, 20, BigDecimal.ROUND_HALF_UP); + } else { + break; + } + i++; + } while (calcIrr.abs().compareTo(accuracy) > 0 && i < 100); + return rate.multiply(new BigDecimal(100)); + } + + public static String getUnIncomePlanList(String paymentNumber) throws Exception { + List> planList = query("select case when max(zero_rent_max_plan_list)>=max(min_plan_list) and max(zero_rent_max_plan_list)< max(max_plan_list) then max(zero_rent_max_plan_list)+1||'@'||max(max_plan_list)" + + " when max(ifnull(zero_rent_max_plan_list,0))=0 then max(min_plan_list)|| '@' || max(max_plan_list) WHEN max( zero_rent_max_plan_list ) < max( min_plan_list ) then" + + " max( min_plan_list ) || '@' || max( max_plan_list ) else '0' end as planList from (select min(plan_list) as min_plan_list,max(plan_list) as max_plan_list,0 as zero_rent_max_plan_list from vi_lc_rent_plan vlrp where payment_number = ?" + + " and fact_rent = 0 and vlrp.RENT > 0 union all select 0 as min_plan_list,0 as max_plan_list,max(plan_list) as zero_rent_max_plan_list from vi_lc_rent_plan vlrp where payment_number = ? and vlrp.RENT = 0) vlrp", paymentNumber, paymentNumber); + if (planList.size() > 0 && !"0".equals(planList.get(0).get("PLANLIST"))) { + String pList = planList.get(0).get("PLANLIST"); + int s = Integer.parseInt(pList.split("@")[0]); + int m = Integer.parseInt(pList.split("@")[1]); + String interest = getValueBySql("select interest from vi_lc_rent_plan where payment_number = ? and plan_list = ?", paymentNumber, s); + String r = ""; + if (s == m) { + r = s + "," + m; + } else { + for (int i = s; i <= m; i++) { + if (r.length() > 0) { + r += ","; + } + r += i + "," + i; + } + } + return r + "@" + interest; + } else { + return "0@0"; + } + } + + public static BigDecimal discountTaxDeduction(BigDecimal discount, TabCalBean tcb) { + BigDecimal t = new BigDecimal("0.01"); + BigDecimal tax = new BigDecimal("0"); + BigDecimal other = new BigDecimal("0"); + return discountTaxDeduction(discount, tax, other); + } + + public static BigDecimal discountTaxDeduction(BigDecimal discount, BigDecimal tax, BigDecimal other) { + return discount.subtract(discount.multiply(tax).divide(BigDecimal.ONE.add(tax), 2, 4).multiply(other).setScale(2, 4)); + } + + public static String getFeeName(String feeType, Item[] items) { + for (Item item : items) { + if (feeType.equals(item.getItemNo())) { + return item.getRelativeCode(); + } + } + return feeType; + } + + + public static void updatePACashFlow(Map params, JBOTransaction tx) throws Exception { + String productId = params.get("productId"); + String paymentNumber = params.get("paymentNumber"); + String userId = params.get("userId"); + String orgId = params.get("orgId"); + Map> productCashInIRRList = ProductParamUtil.getProductComponentType(productId, "PRD0315"); + List outFeeType = getArrayList(); + for (Map.Entry> entry : productCashInIRRList.entrySet()) { + String feeName = entry.getKey(); + Map items = entry.getValue(); + if ("N".equals(items.get("CostType10"))) { + outFeeType.add(feeName); + } + } + executeUpdate("DELETE FROM PA_CASH_FLOW WHERE PAYMENT_NUMBER = ?", tx, paymentNumber); + String cashFlowSql = "INSERT INTO PA_CASH_FLOW\n" + + "( ID, PROJECT_ID, PROJECT_PLAN_NUMBER, CONTRACT_ID, CONTRACT_PLAN_NUMBER, PAYMENT_NUMBER,\n" + + " PLAN_DATE, FUND_IN, FUND_IN_DETAILS, FUND_OUT, FUND_OUT_DETAILS, NET_FLOW, INPUTUSERID, INPUTORGID, INPUTTIME\n" + + ")\n" + + "SELECT SYS_GUID(), MAX( C.PROJECT_ID ), MAX( C.PROJECT_PLAN_NUMBER ), MAX( C.CONTRACT_ID ), MAX( C.CONTRACT_PLAN_NUMBER ), MAX( C.PAYMENT_NUMBER ), C.PLAN_DATE,\n" + + "SUM( C.FUND_IN ), NVL( WM_CONCAT( CASE WHEN C.FUND_IN_DETAILS = '' THEN NULL ELSE C.FUND_IN_DETAILS END ), '-' ),\n" + + "SUM( C.FUND_OUT ), NVL( WM_CONCAT( CASE WHEN C.FUND_OUT_DETAILS = '' THEN NULL ELSE C.FUND_OUT_DETAILS END ), '-' ),\n" + + "SUM( C.NET_FLOW ), ?, ?, ?\n" + + "FROM ( SELECT PROJECT_ID, PROJECT_PLAN_NUMBER, CONTRACT_ID, CONTRACT_PLAN_NUMBER, PAYMENT_NUMBER,\n" + + "PLAN_DATE, RENT FUND_IN, '第' || PLAN_LIST || '期本息:' || TO_CHAR( RENT, 'FM9,999,999,999,999,999,999,999,990.00' ) FUND_IN_DETAILS,\n" + + "0 FUND_OUT, '' FUND_OUT_DETAILS, RENT NET_FLOW\n" + + "FROM PA_RENT_PLAN WHERE PAYMENT_NUMBER = ?\n" + + "UNION ALL\n" + + "SELECT PROJECT_ID, PROJECT_PLAN_NUMBER, CONTRACT_ID, CONTRACT_PLAN_NUMBER, PAYMENT_NUMBER,\n" + + "PLAN_DATE,\n" + + "CASE WHEN PAY_TYPE = 'pay_type_in' THEN PLAN_MONEY ELSE 0 END FUND_IN,\n" + + "CASE WHEN PAY_TYPE = 'pay_type_in' THEN CASE WHEN B.ITEMNAME = '设备款' THEN '当金' ELSE B.ITEMNAME END || ':' || TO_CHAR( PLAN_MONEY, 'FM9,999,999,999,999,999,999,999,990.00' ) ELSE '' END FUND_IN_DETAILS,\n" + + "CASE WHEN PAY_TYPE = 'pay_type_in' THEN 0 ELSE PLAN_MONEY END FUND_OUT,\n" + + "CASE WHEN PAY_TYPE = 'pay_type_in' THEN '' ELSE CASE WHEN B.ITEMNAME = '设备款' THEN '当金' ELSE B.ITEMNAME END || ':' || TO_CHAR( PLAN_MONEY, 'FM9,999,999,999,999,999,999,999,990.00' ) END FUND_OUT_DETAILS,\n" + + "CASE WHEN PAY_TYPE = 'pay_type_in' THEN PLAN_MONEY ELSE -PLAN_MONEY END NET_FLOW\n" + + "FROM PA_FUND_PLAN A\n" + + "LEFT JOIN CODE_LIBRARY B ON A.FEE_TYPE = B.ITEMNO AND B.CODENO = 'FeeType'\n" + + "WHERE A.PAYMENT_NUMBER = ?"; + if (outFeeType.size() > 0) { + cashFlowSql += "AND B.RELATIVECODE NOT IN ( " + getSqlInCondition(outFeeType.toArray(new String[outFeeType.size()])) + " )"; + } + cashFlowSql += " ) C GROUP BY C.PLAN_DATE"; + executeUpdate(cashFlowSql, tx, userId, orgId, StringFunction.getTodayNow(), paymentNumber, paymentNumber); + } + + + /** + * ***********************************************测算API结束********************************************************** + */ + + public static String getItemsToString(String codeNo) throws Exception { + return getItemsToString(CodeManager.getItems(codeNo)); + } + + public static String getItemsToString(Item[] items) { + JSONArray jsonArray = new JSONArray(); + for (Item item : items) { + JSONObject obj = new JSONObject(); + obj.put("value", item.getItemNo()); + obj.put("name", item.getItemName()); + jsonArray.add(obj); + } + return jsonArray.toJSONString(); + } + + public static List> getItemsToList(Item[] items) { + List> datas = getArrayList(); + for (Item item : items) { + Map data = new ConcurrentHashMap<>(); + data.put("value", item.getItemNo()); + data.put("name", item.getItemName()); + datas.add(data); + } + return datas; + } + + public static List> toLowerCase(List> datas) { + for (int i = 0; i < datas.size(); i++) { + Map newData = new ConcurrentHashMap<>(); + for (Map.Entry entry : datas.get(i).entrySet()) { + newData.put(entry.getKey().toLowerCase(), entry.getValue()); + } + datas.set(i, newData); + } + return datas; + } + + public static String getSqlInCondition(String[] conditions) { + String condition = ""; + for (String c : conditions) { + if (condition.length() > 0) { + condition += ", "; + } + condition += "'" + c + "'"; + } + return condition; + } + + public static Map convertUserListToMap(List> userList) { + Map users = new ConcurrentHashMap<>(); + if (userList == null) { + return users; + } + for (Map user : userList) { + users.put(user.get("USERID"), user.get("USERNAME")); + } + + return users; + } + + public static String getSelectRole(String config) { + String[] c = config.split(","); + String roles = ""; + for (int i = 0; i < c.length; i++) { + if (i % 2 == 0) { + if (roles.length() > 0) { + roles += ","; + } + roles += "'" + c[i] + "'"; + } + } + return roles; + } + + public static LinkedHashMap getkeyList(String keyList) { + LinkedHashMap params = new LinkedHashMap(1, 0.75f, true); + String[] kvs = keyList.split("@"); + for (String kv : kvs) { + params.put(kv.split("--")[0], kv.split("--")[1]); + } + return params; + } + + public static Map getParams(String p) { + Map np = new ConcurrentHashMap<>(); + if (StringUtils.isEmpty(p)) { + return np; + } + String[] ps = p.split("△"); + for (String s : ps) { + np.put(s.split("->")[0], s.split("->")[1]); + } + return np; + } + + public static Map getPageParams(Page page) { + if (page == null) { + return null; + } + Map params = new ConcurrentHashMap<>(); + for (Parameter parameter : page.getCurComp().getParameterList()) { + params.put(parameter.getName(), parameter.getValue()); + } + + return params; + } + + public static List> getParamList(String p) { + List> np = getArrayList(); + if (StringUtils.isEmpty(p)) { + return np; + } + String[] ps = p.split("@~"); + for (String s : ps) { + Map m = new ConcurrentHashMap<>(); + for (String t : s.split("@")) { + m.put(t.split("->")[0], t.split("->")[1]); + } + np.add(m); + } + return np; + } + + public static BigDecimal getDayDiff(String date1, String date2) { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); + LocalDate e = LocalDate.parse(date1, dateTimeFormatter); + LocalDate s = LocalDate.parse(date2, dateTimeFormatter); + return new BigDecimal(e.until(s, ChronoUnit.DAYS)); + } + + public static int compareTo(String date1, String date2) { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); + LocalDate e = LocalDate.parse(date1, dateTimeFormatter); + LocalDate s = LocalDate.parse(date2, dateTimeFormatter); + return e.compareTo(s); + } + + public static String getEquipAmt(String businessLine, String flowunid, boolean flag) throws Exception { + List> datas; + String table = "lb_equipment_temp"; + if (flag) { + table = "lb_equipment_car_temp"; + } + if ("lines01".equals(businessLine) || "lines04".equals(businessLine)) { + datas = query("select sum( ifnull( transactionprice, 0 ) ) + sum( ifnull( equip_purchase_tax, 0 ) ) + sum( ifnull( equip_insurance, 0 ) ) + sum( ifnull( accessory_money, 0 ) ) + sum( ifnull( upper_equipment, 0 ) ) equipAmt from lb_equipment_car_temp where flowunid = ?", flowunid); + } else if ("lines02".equals(businessLine)) { + datas = query("select sum( ifnull( transactionprice, 0 ) ) equipAmt from lb_equipment_car_temp where flowunid = ?", flowunid); + } else if ("lines".equals(businessLine)) { + datas = query("select sum( ifnull( equip_price, 0 ) ) equipAmt from lb_indent_equipment_temp where flowunid = ?", flowunid); + } else { + datas = query("select sum( ifnull( equip_price, 0 ) ) equipAmt from " + table + " where flowunid = ?", flowunid); + } + // 项目立项工程机械业务线查询lb_equipment_temp表 + if (!flag && "lines04".equals(businessLine) && datas.size() == 0) { + datas = query("select sum( ifnull( equip_price, 0 ) ) equipAmt from " + table + " where flowunid = ?", flowunid); + } + if (datas.size() > 0 && datas.get(0).get("EQUIPAMT") != null) { + return datas.get(0).get("EQUIPAMT"); + } else { + return "0"; + } + } + + public static void copyRiskManagement(String flowunid, String kv, JBOTransaction tx, String otherField) throws Exception { + List> d = DataUtil.query("select id from lb_risk_management_relative where flow_unid = ?", tx, flowunid); + if (d.size() == 0) { + String[] keyValue = kv.split("="); + List> nd = DataUtil.query("select id from lb_risk_management_relative where " + keyValue[0] + " = ? order by to_date( inputtime, 'yyyy/mm/dd hh24:mi:ss' ) desc", tx, keyValue[1]); + if (nd.size() > 0) { + String relativeId = nd.get(0).get("ID"); + String o = "FLOW_UNID->" + flowunid; + if (StringUtils.isNotEmpty(otherField)) { + o += "@" + otherField; + } + DataUtil.copy("jbo.sys.LB_RISK_MANAGEMENT_RELATIVE", "jbo.sys.LB_RISK_MANAGEMENT_RELATIVE", "ID->" + relativeId, "", o, null, null, true, tx); + String newRelativeId = DataUtil.getValueBySql("select id from lb_risk_management_relative where flow_unid = ?", tx, flowunid); + DataUtil.copy("jbo.sys.LB_RISK_MANAGEMENT_DATA", "jbo.sys.LB_RISK_MANAGEMENT_DATA", "RELATIVE_ID->" + relativeId, "", "RELATIVE_ID->" + newRelativeId, null, null, true, tx); + } + } + } + + public static String getNewNodeId(String nodeId) { + String zero = ""; + for (int i = 0; i < nodeId.length(); i++) { + if (nodeId.charAt(i) == '0') { + zero += "0"; + } else { + break; + } + } + int id = Integer.parseInt(nodeId); + id += 1; + return zero + id; + } + + public static String getItemNo(String codeNo, String relativeCode) throws Exception { + Item[] items = CodeManager.getItems(codeNo); + for (Item item : items) { + if (relativeCode.equals(item.getRelativeCode())) { + return item.getItemNo(); + } + } + return ""; + } + + public static String getItemName(String codeNo, String relativeCode) throws Exception { + Item[] items = CodeManager.getItems(codeNo); + for (Item item : items) { + if (relativeCode.equals(item.getRelativeCode())) { + return item.getItemName(); + } + } + return ""; + } + + public static String getItemNames(String codeNo, String itemNos) throws Exception { + String result = ""; + for (String itemNo : itemNos.split(",")) { + if (result.length() > 0) { + result += ","; + } + result += itemNo + "," + CodeCache.getItemName(codeNo, itemNo); + } + return result; + } + + public static String getAttribute1(String codeNo, String relativeCode) throws Exception { + Item[] items = CodeManager.getItems(codeNo); + for (Item item : items) { + if (relativeCode.equals(item.getRelativeCode())) { + return item.getAttribute1(); + } + } + return ""; + } + + /** + * ************************************************页面渲染API开始********************************************************** + */ + + public static void setTreeView(BaseInitTreeView treeView) throws Exception { + List treeItems = treeView.getTreeItem(); + String productId = treeView.getFlowFixedParam().get("ProductId"); + if (StringUtils.isNotEmpty(productId)) { + removeTreeView(treeItems, productId, null); + } + } + + public static void removeTreeView(List treeItems, String productId, List itemNos) throws Exception { + if (itemNos == null) itemNos = getArrayList(); + for (TreeItemData treeItem : treeItems) { + String itemNo = treeItem.getItemNo(); + if (itemNos.contains(itemNo)) { + continue; + } + if (Pattern.matches("(50004)?(50005)?", itemNo)) { + // 处理典当物页面 + String pawnType = ProductParamUtil.getProductParameterValue(productId, "PRD0355", "PawnType"); + if ("real_estate_pawn".equals(pawnType)) { + removeTreeView(treeItems, "50004"); + } else { + removeTreeView(treeItems, "50005"); + } + itemNos.add("50004"); + itemNos.add("50005"); + removeTreeView(treeItems, productId, itemNos); + break; + } + } + } + + public static void removeTreeView(List treeItems, String removeItemNo) { + for (TreeItemData treeItem : treeItems) { + String itemNo = treeItem.getItemNo(); + if (removeItemNo.equals(itemNo)) { + treeItems.remove(treeItem); + break; + } + } + } + + /** + * ************************************************页面渲染API结束********************************************************** + */ + + public static List getSqlParams(String sql, Map params) { + Pattern pattern = Pattern.compile("(\\{(.*?)\\})"); + Matcher matcher = pattern.matcher(sql); + List param = getArrayList(); + while (matcher.find()) { + String key = matcher.group(); + key = key.replaceAll("[{]", ""); + key = key.replaceAll("[}]", ""); + param.add(params.getOrDefault(key, "")); + } + return param; + } + + /** + * 例( { rect1: XXXX, rect2: XXXX } ), 排序类此结构JSON + * + * @param jsonObject + * @return + */ + public static List sortJSONObject(JSONObject jsonObject) { + List newJsonObject = getArrayList(); + for (Map.Entry obj : jsonObject.entrySet()) { + int key = Integer.parseInt(obj.getKey().replaceAll("\\D", "")); + JSONObject newObj = new JSONObject(); + newObj.put(obj.getKey(), obj.getValue()); + if (newJsonObject.size() < key) { + for (int i = 0; i <= key; i++) { + newJsonObject.add(null); + } + } + newJsonObject.set(key, newObj); + } + newJsonObject.removeAll(Collections.singleton(null)); + return newJsonObject; + } + + /** + * 根据ProjectId判断当前项目是否融租上回 + * + * @param projectId + * @return 是否融租上会 + */ + public static boolean projectIsMeeting(String projectId) throws Exception { + boolean _flag = false; + String flowNo = "PAProjectReviewFlow"; + List> data = query("select flow_unid from pa_project_info where id = ? ", projectId); + String flowUnid = ""; + if (data.size() > 0 && data != null) { + flowUnid = data.get(0).get("FLOW_UNID"); + } + List> flowData = query("select flowno from flow_task where objectno= ? ", flowUnid); + //判断sql查出来的归属于项目审核还是变更流程 + if (!flowNo.equals(flowData.get(0).get("FLOWNO"))) { + flowNo = "PaProjectReviewChange"; + } + + //判断当前流程是否上会 + data = query("select serialno from flow_task where objectno = ? and phaseno = '0100' and flowno = ? ", flowUnid, flowNo); + if (data.size() > 0 && data != null) { + _flag = !_flag; + return _flag; + } + return _flag; + } + + /** + * 解析UNICODE + */ + public static String unicodeToString(String unicodes) { + String[] unicodeArray = unicodes.split("\\\\u"); + String sResult = ""; + for (String unicode : unicodeArray) { + sResult += (char) Integer.valueOf(unicode, 16).intValue(); + } + return sResult; + } + + public static String getContractTemplateList() throws Exception { + Item[] paContractTwoClasses = CodeManager.getItems("pa_contract_two_class"); + String params = ""; + for (Item item : paContractTwoClasses) { + if (params.length() > 0) { + params += ","; + } + params += "'" + item.getItemNo() + "'"; + } + List> datas = DataUtil.query("select a.doc_class_itemno codeno, a.id itemno, a.doc_name itemname, b.id template_id from lb_docconfig a left join bf_template b on a.id = b.config_id where a.doc_class_itemno in ( " + params + " ) order by doc_class_itemno, to_number( a.serial_num )"); + return getCodeTree(datas).toJSONString(); + } + + public static JSONObject getCodeTree(List> datas) { + JSONObject sResult = new JSONObject(); + for (Map data : datas) { + String codeNo = data.get("CODENO"); + String itemNo = data.get("ITEMNO"); + String itemName = data.get("ITEMNAME"); + String templateId = data.get("TEMPLATE_ID"); + JSONObject object = new JSONObject(); + object.put("itemno", itemNo); + object.put("itemname", itemName); + object.put("template_id", templateId); + JSONArray array = null; + for (Map.Entry entry : sResult.entrySet()) { + String c = entry.getKey(); + JSONArray a = (JSONArray) entry.getValue(); + if (codeNo.equals(c)) { + array = a; + break; + } + } + if (array == null) { + array = new JSONArray(); + array.add(object); + sResult.put(codeNo, array); + } else { + array.add(object); + } + } + return sResult; + } + + public static void convertBeanToBean(Class cls, Object instanceo, Object instancen) throws Exception { + convertBeanToBean(cls, instanceo, instancen, null); + } + + public static void convertBeanToBean(Class cls, Object instanceo, Object instancen, String excludeMethod) throws Exception { + Method[] declaredMethods = cls.getDeclaredMethods(); + for (Method method : declaredMethods) { + String name = method.getName(); + if (method.getParameterTypes().length > 0) { + continue; + } + if (StringUtils.isNotEmpty(excludeMethod)) { + List em = Arrays.asList(excludeMethod.split(",")); + if (em.contains(name)) { + continue; + } + } + if (name.startsWith("get") || name.startsWith("is")) { + try { + if (name.equals("getSpacingAfterLines") || name.equals("getSpacingBeforeLines")) { + continue; + } + if (name.startsWith("is")) { + name = "get" + name.substring(2); + } + if (name.equals("getWordWrapped") || name.equals("getTextScale") || name.equals("getWordWrap") || name.equals("getWidthType")) { + continue; + } + Method setMethod = cls.getDeclaredMethod(name.replaceAll("get", "set"), method.getReturnType()); + setMethod.invoke(instancen, method.invoke(instanceo)); + } catch (NoSuchMethodException e) { + } + } + } + } +} diff --git a/src_core/com/tenwa/officetempalte/importcallback/impl/LCEbankCallBack.java b/src_core/com/tenwa/officetempalte/importcallback/impl/LCEbankCallBack.java index fd7f51d28..d5e0a41e4 100644 --- a/src_core/com/tenwa/officetempalte/importcallback/impl/LCEbankCallBack.java +++ b/src_core/com/tenwa/officetempalte/importcallback/impl/LCEbankCallBack.java @@ -18,6 +18,7 @@ import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.awe.util.Transaction; import com.amarsoft.context.ASUser; import com.tenwa.comm.exception.BusinessException; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; public class LCEbankCallBack extends BaseImportExcelCallBack { @@ -145,9 +146,11 @@ public class LCEbankCallBack extends BaseImportExcelCallBack { List ebankSns = new ArrayList(); boolean flag = false; String ebs = ""; - List list=JBOFactory.createBizObjectQuery(LC_EBANK.CLASS_NAME,null).getResultList(false); +// List list=JBOFactory.createBizObjectQuery(LC_EBANK.CLASS_NAME,null).getResultList(false); + List> list = DataOperatorUtil.getDataBySql("select EBANK_SN from LC_EBANK"); for(int i=0;i model,String type,Integer queryYear,Integer queryMonth,Integer queryDay,JBOTransaction tx) throws Exception { - JBOTransaction newTx=JBOFactory.createJBOTransaction(); - String currentDateTime = DateAssistant.getTodayNow(); - String currentYear = currentDateTime.substring(0,4); - String monthStr = currentDateTime.substring(5,7); - String dayStr = currentDateTime.substring(8,10); - String hour = currentDateTime.substring(11,13); - String minute = currentDateTime.substring(14,16); - String second = currentDateTime.substring(17,19); - - int year = Integer.parseInt(currentYear); - int month = Integer.parseInt(monthStr); - int day = Integer.parseInt(dayStr); - if(null != queryYear){ - year = queryYear; + JBOTransaction newTx = null; + try { + newTx = JBOFactory.createJBOTransaction(); + String currentDateTime = DateAssistant.getTodayNow(); + String currentYear = currentDateTime.substring(0, 4); + String monthStr = currentDateTime.substring(5, 7); + String dayStr = currentDateTime.substring(8, 10); + String hour = currentDateTime.substring(11, 13); + String minute = currentDateTime.substring(14, 16); + String second = currentDateTime.substring(17, 19); + + int year = Integer.parseInt(currentYear); + int month = Integer.parseInt(monthStr); + int day = Integer.parseInt(dayStr); + if (null != queryYear) { + year = queryYear; + } + if (null != queryMonth) { + month = queryMonth; + } + if (null != queryDay) { + day = queryDay; + } + Map paramMap = new HashMap(); + paramMap.put("year", year + ""); + paramMap.put("month", monthStr + ""); + paramMap.put("day", dayStr + ""); + paramMap.put("hour", hour + ""); + paramMap.put("minute", minute + ""); + paramMap.put("second", second + ""); + + int maxOrderNumber = getMaxOrderNumberByDay(type, year, month, day, newTx); + StringBuffer numberFormat = new StringBuffer(); + for (int i = 0; i < numberCount; i++) { + numberFormat.append("0"); + } + + DecimalFormat df = new DecimalFormat(numberFormat.toString()); + String serialNumberFormat = df.format(maxOrderNumber); + paramMap.put("maxOrderNumber", serialNumberFormat); + if (null != model) { + paramMap.putAll(model); + } + + String serialNumberString = getSerialNumber(paramMap, serialNumberPattern); + newTx.commit(); + return serialNumberString; + } catch (Exception e) { + if (newTx != null) newTx.rollback(); + throw e; } - if(null != queryMonth){ - month = queryMonth ; - } - if(null != queryDay){ - day = queryDay ; - } - Map paramMap = new HashMap(); - paramMap.put("year", year+""); - paramMap.put("month", monthStr+""); - paramMap.put("day", dayStr+""); - paramMap.put("hour", hour+""); - paramMap.put("minute", minute+""); - paramMap.put("second", second+""); - - int maxOrderNumber = getMaxOrderNumberByDay(type, year,month,day, newTx); - StringBuffer numberFormat = new StringBuffer(); - for(int i=0;i map=new HashMap(); - Map param=new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); - - // 定义SQL查询结果集变量 - String MONEY=null; - String MONEYNOTAX=null; - String MONEYTAX=null; - String CORPUS=null; - String INTEREST=null; - String ACCOUNT_DATE=null; - String FACT_DATE=null; - String CONTRACT_ID=null; - String CONTRACT_NUMBER=null; - String PROJECT_NAME=null; - String leas_form=null; - String DISTRIBUTOR_ID=null; - String DISTRIBUTOR_NAME=null; - String CUSTID=null; - String CUSTNAME=null; - String CUSTID2=null;// 该网银已经收过款, 预收科目的客户用这个 - String CUSTNAME2=null; - String CUSTOMERTYPE=null; - String BUSINESSTYPE=null; - String TAX_NUM=null; - String YES_OR_NO=null; - - // 金额类型 - String date1=""; - // 税率类别 - String taxType=""; - // 查询SQL - String sql=""; - param.clear(); - map.put("FlowUnid", FlowUnid); - - // 收到的逾期利息 - if("PZ2018081700000128".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.AGREED_PENALTY,0)";taxType="逾期利息";} - // 收到的违约金 - if("PZ2018081700000130".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.SDHANDLING_CHARGE,0)";taxType="违约金";} - // 收到的提前还款手续费 - if("PZ2018081700000132".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.OTHER_IN,0)";taxType="手续费";} - // 收到的提前日息差 - if("PZ2018072100000047".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.AGREED_DATEPENALTY,0)";taxType="租息";} - // 收到的一年内利息 - if("PZ2018081700000138".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.FIST_CORPUS,0)";taxType="租息";} - // 收到名义货价 - if("PZ2018081700000134".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.SDNOMINAL_PRICE,0)";taxType="留购价";} - - if("PZ2018072100000046".equals(VOUCHERNO)) {date1="IFNULL(DI.DISCOUNT,0)";taxType="租息";} - // 确认手续费(按月分摊) - if("PZ2018081700000122".equals(VOUCHERNO)) {date1="IFNULL(LHA.HANDLING_APPORTION_MONEY,0)";taxType="手续费";} - - // 调整未实现利息收入 - if("PZ2018072100000045".equals(VOUCHERNO)){ - sql="SELECT IFNULL(LRPT.INTEREST, 0) AS MONEY, ROUND( IFNULL(LRPT.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( IFNULL(LRPT.INTEREST, 0) - ROUND( IFNULL(LRPT.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE FROM LC_EBANK_TEMP WHERE FLOWUNID=:FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LRPT.FLOWUNID = LCRAT.FLOWUNID AND LRPT.PAYMENT_NUMBER = LCRAT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID=:FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRP ON LRP.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, SUM(LRPT.INTEREST) AS INTEREST FROM LC_RENT_PLAN LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LCRAT.FLOWUNID=:FLOWUNID AND DATE_FORMAT(LRPT.PLAN_DATE, '%Y/%m/%d') >= DATE_FORMAT(LCRAT.PAYDAY_ADJUST, '%Y/%m/%d') GROUP BY LRPT.CONTRACT_ID) LRPT ON LRPT.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND IFNULL(LRPT.INTEREST, 0) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; - // 收到的逾期租金 - }else if("PZ2018081700000127".equals(VOUCHERNO)) { - sql="SELECT IFNULL(LRPT.RENT, 0) - IFNULL(LRI.RENT, 0) AS MONEY, IFNULL(LRPT.CORPUS, 0) - IFNULL(LRI.CORPUS, 0) AS MONEYNOTAX, IFNULL(LRPT.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, CASE WHEN (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER = IFNULL(LE.EBANK_NUMBER, 0) GROUP BY EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE, MAX(EBANK_NUMBER) AS EBANK_NUMBER, MAX(CUSTOMER_ID) AS CUSTOMER_ID FROM LC_EBANK_TEMP WHERE FLOWUNID = :FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LRPT.FLOWUNID = LCRAT.FLOWUNID AND LRPT.PAYMENT_NUMBER = LCRAT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID = :FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRP ON LRP.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.FLOWUNID, LRPT.CONTRACT_ID, SUM(LRPT.RENT) RENT, SUM(LRPT.CORPUS) CORPUS, SUM(LRPT.INTEREST) AS INTEREST FROM LC_RENT_PLAN LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LCRAT.FLOWUNID = :FLOWUNID AND DATE_FORMAT(LRPT.PLAN_DATE, '%Y/%m/%d') < DATE_FORMAT(LCRAT.PAYDAY_ADJUST, '%Y/%m/%d') GROUP BY LRPT.CONTRACT_ID) LRPT ON LRPT.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT LRI.CONTRACT_ID, SUM(LRI.RENT) RENT, SUM(LRI.CORPUS) CORPUS, SUM(LRI.INTEREST) INTEREST FROM LC_RENT_INCOME LRI GROUP BY LRI.CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND ( IFNULL(LRPT.RENT, 0) - IFNULL(LRI.RENT, 0) ) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; - // 将当月利息转收入 - }else if("PZ2018081700000129".equals(VOUCHERNO)) { - sql="SELECT ROUND( ( getTax ( lci.LEAS_FORM, '租息', LCCT.START_DATE ) - 1 ) * 100, 0 ) AS TAX_NUM, IFNULL(LRPT.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) AS MONEY, ROUND( IFNULL(LRPT.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) - ROUND( IFNULL(LRI.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( IFNULL(LRPT.INTEREST, 0) - ROUND( IFNULL(LRPT.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) - ( IFNULL(LRI.INTEREST, 0) - ROUND( IFNULL(LRI.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE FROM LC_EBANK_TEMP WHERE FLOWUNID=:FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LRPT.FLOWUNID = LCRAT.FLOWUNID AND LRPT.PAYMENT_NUMBER = LCRAT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID=:FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRP ON LRP.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.PLAN_LIST, SUM(LRPT.INTEREST) AS INTEREST FROM LC_RENT_PLAN LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LCRAT.FLOWUNID=:FLOWUNID AND DATE_FORMAT(LCRAT.PAYDAY_ADJUST, '%Y/%m') = DATE_FORMAT(LRPT.PLAN_DATE, '%Y/%m') AND DATE_FORMAT(LRPT.PLAN_DATE, '%Y/%m/%d') < DATE_FORMAT(LCRAT.PAYDAY_ADJUST, '%Y/%m/%d') GROUP BY LRPT.CONTRACT_ID, LRPT.PLAN_LIST) LRPT ON LRPT.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT LRI.CONTRACT_ID, LRI.PLAN_LIST, SUM(LRI.INTEREST) INTEREST FROM LC_RENT_INCOME LRI GROUP BY LRI.CONTRACT_ID, LRI.PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRPT.CONTRACT_ID AND LRI.PLAN_LIST = LRPT.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND ( IFNULL(LRPT.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) ) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; - // 收到的提前还款剩余本金 - }else if("PZ2018081700000136".equals(VOUCHERNO)) { - sql="SELECT IFNULL(LCRAT.OTHER_OUT, 0) AS MONEY, ( IFNULL(LCRAT.CORPUS_OVERAGE, 0) - IFNULL(LCRAT.OTHER_OUT, 0) ) AS MONEYNOTAX, IFNULL(LCRAT.CORPUS_OVERAGE, 0) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, CASE WHEN (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER = IFNULL(LE.EBANK_NUMBER, 0) GROUP BY EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE, MAX(EBANK_NUMBER) AS EBANK_NUMBER, MAX(CUSTOMER_ID) AS CUSTOMER_ID FROM LC_EBANK_TEMP WHERE FLOWUNID = :FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT WHERE LRPT.FLOWUNID = :FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRPT ON LRPT.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND IFNULL(LCRAT.CORPUS_OVERAGE, 0) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; - // 确认贴息收入 - }else if("PZ2018072100000046".equals(VOUCHERNO)) { - sql="SELECT IFNULL(CRM.DISCOUNT, 0) AS MONEY, ROUND( IFNULL(CRM.DISCOUNT, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( IFNULL(CRM.DISCOUNT, 0) - ROUND( IFNULL(CRM.DISCOUNT, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE FROM LC_EBANK_TEMP WHERE FLOWUNID=:FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT MAX(LRPT.FLOWUNID) FLOWUNID, CRM.CONTRACT_ID, SUM(IFNULL(CRM.DISCOUNT, 0)) AS DISCOUNT FROM CONTRACT_RENT_MONTH CRM LEFT JOIN (SELECT LRPT.FLOWUNID, LRPT.CONTRACT_ID, MAX(LCRAT.PAYDAY_ADJUST) PAYDAY_ADJUST FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.FLOWUNID = LRPT.FLOWUNID AND LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID=:FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRPT ON LRPT.CONTRACT_ID = CRM.CONTRACT_ID WHERE DATE_FORMAT(CRM.END_DATE, '%Y%m') >= DATE_FORMAT(LRPT.PAYDAY_ADJUST, '%Y%m') GROUP BY CRM.CONTRACT_ID) CRM ON CRM.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = CRM.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND IFNULL(CRM.DISCOUNT, 0) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; - // 确认手续费 - }else if("PZ2018081700000122".equals(VOUCHERNO)) { - sql="SELECT IFNULL(CRM.FEE, 0) AS MONEY, ROUND( IFNULL(CRM.FEE, 0) / getTax ( LCI.LEAS_FORM, '手续费', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( IFNULL(CRM.FEE, 0) - ROUND( IFNULL(CRM.FEE, 0) / getTax ( LCI.LEAS_FORM, '手续费', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE FROM LC_EBANK_TEMP WHERE FLOWUNID=:FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT MAX(LRPT.FLOWUNID) FLOWUNID, CRM.CONTRACT_ID, SUM(IFNULL(CRM.FEE, 0)) AS FEE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN (SELECT LRPT.FLOWUNID, LRPT.CONTRACT_ID, MAX(LCRAT.PAYDAY_ADJUST) PAYDAY_ADJUST FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.FLOWUNID = LRPT.FLOWUNID AND LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID=:FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRPT ON LRPT.CONTRACT_ID = CRM.CONTRACT_ID WHERE DATE_FORMAT(CRM.END_DATE, '%Y%m') >= DATE_FORMAT(LRPT.PAYDAY_ADJUST, '%Y%m') GROUP BY CRM.CONTRACT_ID) CRM ON CRM.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = CRM.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND LCCT.HANDLING_CHARGE_MONEY_TYPE = '0020' AND IFNULL(CRM.FEE, 0) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; - }else { - sql="SELECT ROUND( ( getTax ( lci.LEAS_FORM, '"+taxType+"', LCCT.START_DATE ) - 1 ) * 100, 0 ) AS TAX_NUM, "+date1+" AS MONEY, ROUND( "+date1+" / getTax ( LCI.LEAS_FORM, '"+taxType+"', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( "+date1+" - ROUND( "+date1+" / getTax ( LCI.LEAS_FORM, '"+taxType+"', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, CASE WHEN (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER = IFNULL(LE.EBANK_NUMBER, 0) GROUP BY EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE, MAX(EBANK_NUMBER) AS EBANK_NUMBER, MAX(CUSTOMER_ID) AS CUSTOMER_ID FROM LC_EBANK_TEMP WHERE FLOWUNID = :FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT WHERE LRPT.FLOWUNID = :FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRPT ON LRPT.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND "+date1+" > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; - } - - // 执行SQL, 获取结果集 - List> dataList=DataOperatorUtil.getDataBySql(Sqlca, sql, map); + try { + Map map=new HashMap(); + Map param=new HashMap(); + Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); + + // 定义SQL查询结果集变量 + String MONEY=null; + String MONEYNOTAX=null; + String MONEYTAX=null; + String CORPUS=null; + String INTEREST=null; + String ACCOUNT_DATE=null; + String FACT_DATE=null; + String CONTRACT_ID=null; + String CONTRACT_NUMBER=null; + String PROJECT_NAME=null; + String leas_form=null; + String DISTRIBUTOR_ID=null; + String DISTRIBUTOR_NAME=null; + String CUSTID=null; + String CUSTNAME=null; + String CUSTID2=null;// 该网银已经收过款, 预收科目的客户用这个 + String CUSTNAME2=null; + String CUSTOMERTYPE=null; + String BUSINESSTYPE=null; + String TAX_NUM=null; + String YES_OR_NO=null; + + // 金额类型 + String date1=""; + // 税率类别 + String taxType=""; + // 查询SQL + String sql=""; + param.clear(); + map.put("FlowUnid", FlowUnid); + + // 收到的逾期利息 + if("PZ2018081700000128".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.AGREED_PENALTY,0)";taxType="逾期利息";} + // 收到的违约金 + if("PZ2018081700000130".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.SDHANDLING_CHARGE,0)";taxType="违约金";} + // 收到的提前还款手续费 + if("PZ2018081700000132".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.OTHER_IN,0)";taxType="手续费";} + // 收到的提前日息差 + if("PZ2018072100000047".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.AGREED_DATEPENALTY,0)";taxType="租息";} + // 收到的一年内利息 + if("PZ2018081700000138".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.FIST_CORPUS,0)";taxType="租息";} + // 收到名义货价 + if("PZ2018081700000134".equals(VOUCHERNO)) {date1="IFNULL(LCRAT.SDNOMINAL_PRICE,0)";taxType="留购价";} + + if("PZ2018072100000046".equals(VOUCHERNO)) {date1="IFNULL(DI.DISCOUNT,0)";taxType="租息";} + // 确认手续费(按月分摊) + if("PZ2018081700000122".equals(VOUCHERNO)) {date1="IFNULL(LHA.HANDLING_APPORTION_MONEY,0)";taxType="手续费";} + + // 调整未实现利息收入 + if("PZ2018072100000045".equals(VOUCHERNO)){ + sql="SELECT IFNULL(LRPT.INTEREST, 0) AS MONEY, ROUND( IFNULL(LRPT.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( IFNULL(LRPT.INTEREST, 0) - ROUND( IFNULL(LRPT.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE FROM LC_EBANK_TEMP WHERE FLOWUNID=:FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LRPT.FLOWUNID = LCRAT.FLOWUNID AND LRPT.PAYMENT_NUMBER = LCRAT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID=:FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRP ON LRP.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, SUM(LRPT.INTEREST) AS INTEREST FROM LC_RENT_PLAN LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LCRAT.FLOWUNID=:FLOWUNID AND DATE_FORMAT(LRPT.PLAN_DATE, '%Y/%m/%d') >= DATE_FORMAT(LCRAT.PAYDAY_ADJUST, '%Y/%m/%d') GROUP BY LRPT.CONTRACT_ID) LRPT ON LRPT.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND IFNULL(LRPT.INTEREST, 0) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; + // 收到的逾期租金 + }else if("PZ2018081700000127".equals(VOUCHERNO)) { + sql="SELECT IFNULL(LRPT.RENT, 0) - IFNULL(LRI.RENT, 0) AS MONEY, IFNULL(LRPT.CORPUS, 0) - IFNULL(LRI.CORPUS, 0) AS MONEYNOTAX, IFNULL(LRPT.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, CASE WHEN (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER = IFNULL(LE.EBANK_NUMBER, 0) GROUP BY EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE, MAX(EBANK_NUMBER) AS EBANK_NUMBER, MAX(CUSTOMER_ID) AS CUSTOMER_ID FROM LC_EBANK_TEMP WHERE FLOWUNID = :FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LRPT.FLOWUNID = LCRAT.FLOWUNID AND LRPT.PAYMENT_NUMBER = LCRAT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID = :FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRP ON LRP.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.FLOWUNID, LRPT.CONTRACT_ID, SUM(LRPT.RENT) RENT, SUM(LRPT.CORPUS) CORPUS, SUM(LRPT.INTEREST) AS INTEREST FROM LC_RENT_PLAN LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LCRAT.FLOWUNID = :FLOWUNID AND DATE_FORMAT(LRPT.PLAN_DATE, '%Y/%m/%d') < DATE_FORMAT(LCRAT.PAYDAY_ADJUST, '%Y/%m/%d') GROUP BY LRPT.CONTRACT_ID) LRPT ON LRPT.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT LRI.CONTRACT_ID, SUM(LRI.RENT) RENT, SUM(LRI.CORPUS) CORPUS, SUM(LRI.INTEREST) INTEREST FROM LC_RENT_INCOME LRI GROUP BY LRI.CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND ( IFNULL(LRPT.RENT, 0) - IFNULL(LRI.RENT, 0) ) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; + // 将当月利息转收入 + }else if("PZ2018081700000129".equals(VOUCHERNO)) { + sql="SELECT ROUND( ( getTax ( lci.LEAS_FORM, '租息', LCCT.START_DATE ) - 1 ) * 100, 0 ) AS TAX_NUM, IFNULL(LRPT.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) AS MONEY, ROUND( IFNULL(LRPT.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) - ROUND( IFNULL(LRI.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( IFNULL(LRPT.INTEREST, 0) - ROUND( IFNULL(LRPT.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) - ( IFNULL(LRI.INTEREST, 0) - ROUND( IFNULL(LRI.INTEREST, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE FROM LC_EBANK_TEMP WHERE FLOWUNID=:FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LRPT.FLOWUNID = LCRAT.FLOWUNID AND LRPT.PAYMENT_NUMBER = LCRAT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID=:FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRP ON LRP.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.PLAN_LIST, SUM(LRPT.INTEREST) AS INTEREST FROM LC_RENT_PLAN LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LCRAT.FLOWUNID=:FLOWUNID AND DATE_FORMAT(LCRAT.PAYDAY_ADJUST, '%Y/%m') = DATE_FORMAT(LRPT.PLAN_DATE, '%Y/%m') AND DATE_FORMAT(LRPT.PLAN_DATE, '%Y/%m/%d') < DATE_FORMAT(LCRAT.PAYDAY_ADJUST, '%Y/%m/%d') GROUP BY LRPT.CONTRACT_ID, LRPT.PLAN_LIST) LRPT ON LRPT.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT LRI.CONTRACT_ID, LRI.PLAN_LIST, SUM(LRI.INTEREST) INTEREST FROM LC_RENT_INCOME LRI GROUP BY LRI.CONTRACT_ID, LRI.PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRPT.CONTRACT_ID AND LRI.PLAN_LIST = LRPT.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND ( IFNULL(LRPT.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) ) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; + // 收到的提前还款剩余本金 + }else if("PZ2018081700000136".equals(VOUCHERNO)) { + sql="SELECT IFNULL(LCRAT.OTHER_OUT, 0) AS MONEY, ( IFNULL(LCRAT.CORPUS_OVERAGE, 0) - IFNULL(LCRAT.OTHER_OUT, 0) ) AS MONEYNOTAX, IFNULL(LCRAT.CORPUS_OVERAGE, 0) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, CASE WHEN (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER = IFNULL(LE.EBANK_NUMBER, 0) GROUP BY EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE, MAX(EBANK_NUMBER) AS EBANK_NUMBER, MAX(CUSTOMER_ID) AS CUSTOMER_ID FROM LC_EBANK_TEMP WHERE FLOWUNID = :FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT WHERE LRPT.FLOWUNID = :FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRPT ON LRPT.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND IFNULL(LCRAT.CORPUS_OVERAGE, 0) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; + // 确认贴息收入 + }else if("PZ2018072100000046".equals(VOUCHERNO)) { + sql="SELECT IFNULL(CRM.DISCOUNT, 0) AS MONEY, ROUND( IFNULL(CRM.DISCOUNT, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( IFNULL(CRM.DISCOUNT, 0) - ROUND( IFNULL(CRM.DISCOUNT, 0) / getTax ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE FROM LC_EBANK_TEMP WHERE FLOWUNID=:FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT MAX(LRPT.FLOWUNID) FLOWUNID, CRM.CONTRACT_ID, SUM(IFNULL(CRM.DISCOUNT, 0)) AS DISCOUNT FROM CONTRACT_RENT_MONTH CRM LEFT JOIN (SELECT LRPT.FLOWUNID, LRPT.CONTRACT_ID, MAX(LCRAT.PAYDAY_ADJUST) PAYDAY_ADJUST FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.FLOWUNID = LRPT.FLOWUNID AND LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID=:FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRPT ON LRPT.CONTRACT_ID = CRM.CONTRACT_ID WHERE DATE_FORMAT(CRM.END_DATE, '%Y%m') >= DATE_FORMAT(LRPT.PAYDAY_ADJUST, '%Y%m') GROUP BY CRM.CONTRACT_ID) CRM ON CRM.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = CRM.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND IFNULL(CRM.DISCOUNT, 0) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; + // 确认手续费 + }else if("PZ2018081700000122".equals(VOUCHERNO)) { + sql="SELECT IFNULL(CRM.FEE, 0) AS MONEY, ROUND( IFNULL(CRM.FEE, 0) / getTax ( LCI.LEAS_FORM, '手续费', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( IFNULL(CRM.FEE, 0) - ROUND( IFNULL(CRM.FEE, 0) / getTax ( LCI.LEAS_FORM, '手续费', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE FROM LC_EBANK_TEMP WHERE FLOWUNID=:FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT MAX(LRPT.FLOWUNID) FLOWUNID, CRM.CONTRACT_ID, SUM(IFNULL(CRM.FEE, 0)) AS FEE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN (SELECT LRPT.FLOWUNID, LRPT.CONTRACT_ID, MAX(LCRAT.PAYDAY_ADJUST) PAYDAY_ADJUST FROM LC_RENT_PLAN_TEMP LRPT LEFT JOIN LC_FUND_RENT_ADJUST_TEMP LCRAT ON LCRAT.FLOWUNID = LRPT.FLOWUNID AND LCRAT.PAYMENT_NUMBER = LRPT.PAYMENT_NUMBER WHERE LRPT.FLOWUNID=:FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRPT ON LRPT.CONTRACT_ID = CRM.CONTRACT_ID WHERE DATE_FORMAT(CRM.END_DATE, '%Y%m') >= DATE_FORMAT(LRPT.PAYDAY_ADJUST, '%Y%m') GROUP BY CRM.CONTRACT_ID) CRM ON CRM.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = CRM.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND LCCT.HANDLING_CHARGE_MONEY_TYPE = '0020' AND IFNULL(CRM.FEE, 0) > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; + }else { + sql="SELECT ROUND( ( getTax ( lci.LEAS_FORM, '"+taxType+"', LCCT.START_DATE ) - 1 ) * 100, 0 ) AS TAX_NUM, "+date1+" AS MONEY, ROUND( "+date1+" / getTax ( LCI.LEAS_FORM, '"+taxType+"', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( "+date1+" - ROUND( "+date1+" / getTax ( LCI.LEAS_FORM, '"+taxType+"', LCCT.START_DATE ), 2 ) ) AS MONEYTAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(LE.FACT_DATE, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, CASE WHEN (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER = IFNULL(LE.EBANK_NUMBER, 0) GROUP BY EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) WHEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_FUND_RENT_ADJUST_TEMP LCRAT LEFT JOIN (SELECT FLOWUNID, MAX(FACT_DATE) AS FACT_DATE, MAX(EBANK_NUMBER) AS EBANK_NUMBER, MAX(CUSTOMER_ID) AS CUSTOMER_ID FROM LC_EBANK_TEMP WHERE FLOWUNID = :FLOWUNID GROUP BY FLOWUNID) LE ON LE.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN (SELECT LRPT.CONTRACT_ID, LRPT.FLOWUNID FROM LC_RENT_PLAN_TEMP LRPT WHERE LRPT.FLOWUNID = :FLOWUNID GROUP BY LRPT.FLOWUNID, LRPT.CONTRACT_ID) LRPT ON LRPT.FLOWUNID = LCRAT.FLOWUNID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND "+date1+" > 0 AND LCRAT.FLOWUNID = :FLOWUNID"; + } + + // 执行SQL, 获取结果集 + List> dataList=DataOperatorUtil.getDataBySql(Sqlca, sql, map); - CreateVoucherServiceImpl vs=new CreateVoucherServiceImpl(); - String VOUCHER_TYPE="1";// 凭证分类 金蝶 + CreateVoucherServiceImpl vs=new CreateVoucherServiceImpl(); + String VOUCHER_TYPE="1";// 凭证分类 金蝶 - for (int i=0;i map = new HashMap(); Map param = new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); String MONEY = null; String MONEYNOTAX = null; @@ -140,10 +135,6 @@ public class CreateVoucherCustCautionMoneyIncome extends BaseBussiness { } } - if (Sqlca != null) { - Sqlca.commit(); - } - String sMessage = "true"; return sMessage; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherDepositDeductionToMoney.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherDepositDeductionToMoney.java index 1623fdbb7..4d14afb03 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherDepositDeductionToMoney.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherDepositDeductionToMoney.java @@ -17,12 +17,10 @@ import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; public class CreateVoucherDepositDeductionToMoney extends BaseBussiness { - public String CreateVoucher(String FlowUnid, String VOUCHERNO,String userid) throws Exception { + public String CreateVoucher(Transaction Sqlca,String FlowUnid, String VOUCHERNO,String userid) throws Exception { - Transaction Sqlca = null; Map map = new HashMap(); Map param = new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); CreateVoucherServiceImpl vs = new CreateVoucherServiceImpl(); String VOUCHER_TYPE = "1"; @@ -134,10 +132,6 @@ public class CreateVoucherDepositDeductionToMoney extends BaseBussiness { } } - if (Sqlca != null) { - Sqlca.commit(); - } - String sMessage = "true"; return sMessage; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherDistCautionMoneyRe.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherDistCautionMoneyRe.java index 1ffb984c5..24cb164a6 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherDistCautionMoneyRe.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherDistCautionMoneyRe.java @@ -3,31 +3,24 @@ package com.tenwa.voucher.CreateVoucherProcess; import java.util.HashMap; import java.util.List; import java.util.Map; - import jbo.app.tenwa.customer.CUSTOMER_LIST; import jbo.voucher.LV_VOUCHER_CONFIG; - import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.awe.util.Transaction; -import com.amarsoft.dict.als.cache.CacheLoaderFactory; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.flow.baseBussion.BaseBussiness; import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; /*** * 经销商的保证金的收取和退回 * @author amarsoft - * */ public class CreateVoucherDistCautionMoneyRe extends BaseBussiness{ -public String CreateVoucher(String FlowUnid,String VOUCHERNO,String userid) throws Exception { +public String CreateVoucher(Transaction Sqlca,String FlowUnid,String VOUCHERNO,String userid) throws Exception { - Transaction Sqlca =null; - //this.initBussinessParam(Sqlca); Map map=new HashMap(); Map param=new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); String MONEY=null; String ACCOUNT_DATE=null; String FACT_DATE=null; @@ -41,11 +34,7 @@ public String CreateVoucher(String FlowUnid,String VOUCHERNO,String userid) thro String sql=""; param.clear(); map.put("FLOWUNID", FlowUnid); - /*if("PZ2018071100000011".equals(VOUCHERNO)||"PZ2018081500000118".equals(VOUCHERNO)){ - sql= "SELECT DDIT.CAUTION_MONEY,DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE,DDIT.LOCAL_ACCOUNT AS ACC_NUMBER,DDIT.REFUND_PERSON,DIF.DISTRIBUTOR_CODING DISTRIBUTOR_NO,DIF.DISTRIBUTOR_NAME FROM D_DEPOSITRETURN_INFO_TEMP DDIT LEFT JOIN DISTRIBUTOR_INFO DIF ON DIF.DISTRIBUTOR_NO=DDIT.DISTRIBUTOR_ID WHERE DDIT.FLOWUNID=:FLOWUNID"; - }*/ if("PZ2018072100000032".equals(VOUCHERNO)){ - //sql= "SELECT DDIT.CAUTION_MONEY,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(DDIT.COLLECT_TIME, '%Y/%m/%d') AS FACT_DATE,DDIT.payer,DIF.DISTRIBUTOR_CODING DISTRIBUTOR_NO,DIF.DISTRIBUTOR_NAME,DDIT.LOCAL_ACCOUNT AS ACC_NUMBER, DDIT.LOCAL_BANK FROM D_DEPOSITCHARGE_INFO_TEMP DDIT LEFT JOIN DISTRIBUTOR_INFO DIF ON DIF.DISTRIBUTOR_NO = DDIT.DISTRIBUTOR_ID WHERE DDIT.FLOWUNID = :FLOWUNID "; sql="SELECT DDIT.CAUTION_MONEY,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(DDIT.COLLECT_TIME, '%Y/%m/%d') AS FACT_DATE,DDIT.payer,DIF.DISTRIBUTOR_CODING DISTRIBUTOR_NO,DIF.DISTRIBUTOR_NAME,DDIT.LOCAL_ACCOUNT AS ACC_NUMBER,DDIT.LOCAL_BANK,DDIT.SUBJECTID,DDIT.SUBJECTNAME FROM D_DEPOSITCHARGE_INFO_TEMP DDIT LEFT JOIN DISTRIBUTOR_INFO DIF ON DIF.DISTRIBUTOR_NO = DDIT.DISTRIBUTOR_ID WHERE DDIT.FLOWUNID = :FLOWUNID "; } List> dataList=DataOperatorUtil.getDataBySql(Sqlca, sql, map); @@ -100,9 +89,6 @@ public String CreateVoucher(String FlowUnid,String VOUCHERNO,String userid) thro vs.createVoucher(vouch.getAttribute("id").getString(),vouch.getAttribute("MODULAR_NUMBER").getString(), vouch.getAttribute("OWNED_COMPANY").getString(), leas_form, VOUCHER_TYPE, userid,param, Sqlca); }} } - if(Sqlca!=null){ - Sqlca.commit(); - } String sMessage="true"; return sMessage; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherForOtherPay.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherForOtherPay.java index 21a005010..8c9b362bd 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherForOtherPay.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherForOtherPay.java @@ -6,17 +6,14 @@ import java.util.Map; import jbo.voucher.LV_VOUCHER_CONFIG; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.awe.util.Transaction; -import com.amarsoft.dict.als.cache.CacheLoaderFactory; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; public class CreateVoucherForOtherPay { - public String CreateVoucher(String FlowUnid,String VOUCHERNO,String userid) throws Exception { - Transaction Sqlca =null; + public String CreateVoucher(Transaction Sqlca,String FlowUnid,String VOUCHERNO,String userid) throws Exception { Map map=new HashMap(); Map param=new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); String MONEY=null; String MONEYNOTAX=null; String MONEYTAX=null; @@ -87,11 +84,6 @@ public class CreateVoucherForOtherPay { } } } - - if(Sqlca!=null){ - Sqlca.commit(); - } - String sMessage="true"; return sMessage; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoanDistributor.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoanDistributor.java index 882f1f496..094a9969f 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoanDistributor.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoanDistributor.java @@ -17,13 +17,11 @@ import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; public class CreateVoucherLoanDistributor { - public String CreateVoucher(String FlowUnid,String VOUCHERNO,String userid) throws Exception { + public String CreateVoucher(Transaction Sqlca,String FlowUnid,String VOUCHERNO,String userid) throws Exception { - Transaction Sqlca =null; Map map=new HashMap(); Map param=new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); String MONEY=null; String MONEYNOTAX=null; String MONEYTAX=null; @@ -492,10 +490,6 @@ public class CreateVoucherLoanDistributor { } } - if(Sqlca!=null){ - Sqlca.commit(); - } - String sMessage="true"; return sMessage; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/ContractOnhireVoucher.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/ContractOnhireVoucher.java index 6f27c998b..ee3990d8a 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/ContractOnhireVoucher.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/ContractOnhireVoucher.java @@ -5,7 +5,6 @@ import com.tenwa.flow.baseBussion.BaseBussiness; import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherLoanDistributor; /** * 起租相关凭证, 实际付款(汽车)流程结束后生成 - * @author xiezhiwen */ public class ContractOnhireVoucher extends BaseBussiness { @@ -18,34 +17,34 @@ public class ContractOnhireVoucher extends BaseBussiness { /** * 回租 */ - cvld.CreateVoucher(FlowUnid, "PZ2018073100000061",userid);// 确认GPS收入 --回租 - cvld.CreateVoucher(FlowUnid, "PZ2018070900000003",userid);// 收取首付款-回租 - cvld.CreateVoucher(FlowUnid, "PZ2018070900000002",userid);// 购置融资租赁资产-回租 - cvld.CreateVoucher(FlowUnid, "PZ2018073100000062",userid);// 购置融资租赁资产-回--第一车贷 - cvld.CreateVoucher(FlowUnid, "PZ2018071000000005",userid);// 合同起租(一次性确认收入)-回租 - cvld.CreateVoucher(FlowUnid, "PZ2018071000000006",userid);// 合同起租(按月分摊收入)--回租 - cvld.CreateVoucher(FlowUnid, "PZ2018071000000004",userid);// 收取客户保证金--回租 - cvld.CreateVoucher(FlowUnid, "PZ2018071000000007",userid);// 收取客户手续费(一次性确认收入)--回租 - cvld.CreateVoucher(FlowUnid, "PZ2018071000000009",userid);// 收取客户手续费(按月分摊收入)--回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018073100000061",userid);// 确认GPS收入 --回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018070900000003",userid);// 收取首付款-回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018070900000002",userid);// 购置融资租赁资产-回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018073100000062",userid);// 购置融资租赁资产-回--第一车贷 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018071000000005",userid);// 合同起租(一次性确认收入)-回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018071000000006",userid);// 合同起租(按月分摊收入)--回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018071000000004",userid);// 收取客户保证金--回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018071000000007",userid);// 收取客户手续费(一次性确认收入)--回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2018071000000009",userid);// 收取客户手续费(按月分摊收入)--回租 - cvld.CreateVoucher(FlowUnid, "PZ2021032400000003",userid);// 起租-收到个人意外险金额--回租 - cvld.CreateVoucher(FlowUnid, "PZ2021032400000004",userid);// 起租-收到贴息--回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2021032400000003",userid);// 起租-收到个人意外险金额--回租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2021032400000004",userid);// 起租-收到贴息--回租 /** * 直租 */ - cvld.CreateVoucher(FlowUnid, "PZ2019070100000001",userid);// 确认GPS收入 --直租 - cvld.CreateVoucher(FlowUnid, "PZ2019070100000002",userid);// 收取首付款-直租 - cvld.CreateVoucher(FlowUnid, "PZ2020080500000001",userid);// 收取客户保证金-直租 - cvld.CreateVoucher(FlowUnid, "PZ2019082600000002",userid);// 购入保险-直租 - cvld.CreateVoucher(FlowUnid, "PZ2019082600000003",userid);// 购入购置税-直租 - cvld.CreateVoucher(FlowUnid, "PZ2020041000000002",userid);// 加装及杂费-直租 - cvld.CreateVoucher(FlowUnid, "PZ2019070100000003",userid);// 购置融资租赁资产-直租(深圳或者天津公司) - cvld.CreateVoucher(FlowUnid, "PZ2020081100000004",userid);// 购置融资租赁资产-直租(分子公司) - cvld.CreateVoucher(FlowUnid, "PZ2019070100000004",userid);// 合同起租-直租(车牌挂在天津或者深圳公司下) - cvld.CreateVoucher(FlowUnid, "PZ2020081100000005",userid);// 合同起租-直租(车牌挂在分子公司下) - cvld.CreateVoucher(FlowUnid, "PZ2019070100000005",userid);// 收取客户手续费(一次性确认收入)--直租 - cvld.CreateVoucher(FlowUnid, "PZ2019070100000006",userid);// 收取客户手续费(按月分摊收入)--直租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000001",userid);// 确认GPS收入 --直租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000002",userid);// 收取首付款-直租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2020080500000001",userid);// 收取客户保证金-直租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2019082600000002",userid);// 购入保险-直租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2019082600000003",userid);// 购入购置税-直租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2020041000000002",userid);// 加装及杂费-直租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000003",userid);// 购置融资租赁资产-直租(深圳或者天津公司) + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2020081100000004",userid);// 购置融资租赁资产-直租(分子公司) + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000004",userid);// 合同起租-直租(车牌挂在天津或者深圳公司下) + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2020081100000005",userid);// 合同起租-直租(车牌挂在分子公司下) + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000005",userid);// 收取客户手续费(一次性确认收入)--直租 + cvld.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000006",userid);// 收取客户手续费(按月分摊收入)--直租 return "true"; } } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/ContractTerminate.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/ContractTerminate.java index ae9d324a0..f0ce3f8f3 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/ContractTerminate.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/ContractTerminate.java @@ -17,18 +17,18 @@ public class ContractTerminate extends BaseBussiness { String userid = this.getAttribute("CurUserID").toString(); CreateVoucherContractTerminate cvct=new CreateVoucherContractTerminate(); - cvct.CreateVoucher(FlowUnid, "PZ2018072100000045",userid);// 提前还款-调整未实现利息收入--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000127",userid);// 提前还款-收到的逾期租金--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000129",userid);// 提前还款-将当月利息转收入-- 回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000128",userid);// 提前还款-收到的逾期利息--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000130",userid);// 提前还款-收到的违约金--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000132",userid);// 提前还款-收到的提前还款手续费--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018072100000047",userid);// 提前还款-收到的提前日息差--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000138",userid);// 提前还款-收到的一年内利息--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000134",userid);// 提前还款-收到名义货价--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000136",userid);// 提前还款-收到的提前还款剩余本金----银行未带 - cvct.CreateVoucher(FlowUnid, "PZ2018072100000046",userid);// 提前还款-确认贴息收入--回租 - cvct.CreateVoucher(FlowUnid, "PZ2018081700000122",userid);// 提前还款-确认手续费(按月分摊)--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000045",userid);// 提前还款-调整未实现利息收入--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000127",userid);// 提前还款-收到的逾期租金--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000129",userid);// 提前还款-将当月利息转收入-- 回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000128",userid);// 提前还款-收到的逾期利息--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000130",userid);// 提前还款-收到的违约金--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000132",userid);// 提前还款-收到的提前还款手续费--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000047",userid);// 提前还款-收到的提前日息差--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000138",userid);// 提前还款-收到的一年内利息--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000134",userid);// 提前还款-收到名义货价--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000136",userid);// 提前还款-收到的提前还款剩余本金----银行未带 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000046",userid);// 提前还款-确认贴息收入--回租 + cvct.CreateVoucher(Sqlca,FlowUnid, "PZ2018081700000122",userid);// 提前还款-确认手续费(按月分摊)--回租 return "true"; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/CreateVoucherDepositDeduction.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/CreateVoucherDepositDeduction.java index 48d72701b..c59a05c09 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/CreateVoucherDepositDeduction.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/CreateVoucherDepositDeduction.java @@ -16,10 +16,10 @@ public class CreateVoucherDepositDeduction extends BaseBussiness { String userid = this.getAttribute("CurUserID").toString(); CreateVoucherDepositDeductionToMoney cvdd=new CreateVoucherDepositDeductionToMoney(); - cvdd.CreateVoucher(FlowUnid, "PZ2018072100000053",userid);//保证金抵扣--回租 - cvdd.CreateVoucher(FlowUnid, "PZ2019070100000026",userid);//保证金抵扣--直租 + cvdd.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000053",userid);//保证金抵扣--回租 + cvdd.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000026",userid);//保证金抵扣--直租 - cvdd.CreateVoucher(FlowUnid, "PZ2019070100000027",userid);//确认未实现利息收入-抵扣租金利息--直租 + cvdd.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000027",userid);//确认未实现利息收入-抵扣租金利息--直租 return "true"; } } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/DistributorCautionMoneyVoucher.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/DistributorCautionMoneyVoucher.java index 8ff4c7063..b4f918cfa 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/DistributorCautionMoneyVoucher.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/DistributorCautionMoneyVoucher.java @@ -5,7 +5,6 @@ import com.tenwa.flow.baseBussion.BaseBussiness; import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherDistCautionMoneyRe; /** * 经销商保证金退回流程结束后生成相应凭证 - * @author xiezhiwen */ public class DistributorCautionMoneyVoucher extends BaseBussiness { @@ -15,11 +14,7 @@ public class DistributorCautionMoneyVoucher extends BaseBussiness { String userid = this.getAttribute("CurUserID").toString(); String FlowUnid=this.getAttribute("FlowUnid").toString(); CreateVoucherDistCautionMoneyRe cvdc=new CreateVoucherDistCautionMoneyRe(); - //cvdc.CreateVoucher(FlowUnid, "PZ2018071100000011");//退回经销商保证金--回租 - //cvdc.CreateVoucher(FlowUnid, "PZ2018081500000118");//退回经销商保证金--直租 - - cvdc.CreateVoucher(FlowUnid, "PZ2018072100000032",userid);//收到经销商保证金-回款-回租 - //cvdc.CreateVoucher(FlowUnid, "PZ2018081500000119");//收到经销商保证金-回款-直租 + cvdc.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000032",userid);//收到经销商保证金-回款-回租 return "true"; } } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/IncomeVoucher.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/IncomeVoucher.java index 9ecad6b34..88ea177ff 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/IncomeVoucher.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/IncomeVoucher.java @@ -12,7 +12,6 @@ import org.slf4j.LoggerFactory; /** * 网银收款流程结束后生成相应的凭证 - * @author xiezhiwen */ public class IncomeVoucher extends BaseBussiness { private static final Logger logger = LoggerFactory.getLogger(IncomeVoucher.class); @@ -34,34 +33,34 @@ public class IncomeVoucher extends BaseBussiness { */ CreateVoucherCustCautionMoneyIncome cvci=new CreateVoucherCustCautionMoneyIncome(); // 汽车回租 - cvci.CreateVoucher(FlowUnid, "PZ2018072100000026", "feetype30",userid);//收到的违约金/罚款 --回租 - cvci.CreateVoucher(FlowUnid, "PZ2018072100000031", "feetype4",userid); //收到名义货价 --回租 - cvci.CreateVoucher(FlowUnid, "PZ2019121600000162", "feetype2",userid); //回款-收到客户保证金 --回租 - cvci.CreateVoucher(FlowUnid, "PZ2019121600000163", "feetype1",userid); //回款-收到客户手续费(一次性)--回租 - cvci.CreateVoucher(FlowUnid, "PZ2019121700000164", "feetype1",userid); //回款-收到客户手续费(按月) --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000026", "feetype30",userid);//收到的违约金/罚款 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000031", "feetype4",userid); //收到名义货价 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121600000162", "feetype2",userid); //回款-收到客户保证金 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121600000163", "feetype1",userid); //回款-收到客户手续费(一次性)--回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121700000164", "feetype1",userid); //回款-收到客户手续费(按月) --回租 - cvci.CreateVoucher(FlowUnid, "PZ2021032400000006", "feetype32",userid); //回款-收到个人意外险(网银来款)--回租 - cvci.CreateVoucher(FlowUnid, "PZ2021032400000005", "feetype33",userid); //回款-收到客户贴息 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2021032400000006", "feetype32",userid); //回款-收到个人意外险(网银来款)--回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2021032400000005", "feetype33",userid); //回款-收到客户贴息 --回租 // 汽车直租 - cvci.CreateVoucher(FlowUnid, "PZ2019070100000015", "feetype30",userid);//收到的违约金/罚款 --回租 - cvci.CreateVoucher(FlowUnid, "PZ2019070100000019", "feetype4",userid); //收到名义货价--直租 - cvci.CreateVoucher(FlowUnid, "PZ2020041000000003", "feetype2",userid); //直租-收到客户保证金 - cvci.CreateVoucher(FlowUnid, "PZ2020080400000003", "feetype5",userid); //直租-收到客户首付款 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000015", "feetype30",userid);//收到的违约金/罚款 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000019", "feetype4",userid); //收到名义货价--直租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2020041000000003", "feetype2",userid); //直租-收到客户保证金 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2020080400000003", "feetype5",userid); //直租-收到客户首付款 /** * 汽车网银回款-租金部分 */ CreateVoucherRentIncome cvri=new CreateVoucherRentIncome(); // 汽车回租 - cvri.CreateVoucher(FlowUnid,"PZ2018072100000024",userid);//回款-收到的租金(网银)--当月(回租) - cvri.CreateVoucher(FlowUnid,"PZ2018080400000081",userid);//回款-收到的租金(网银)--跨月(回租) - cvri.CreateVoucher(FlowUnid,"PZ2018072100000025",userid);//回款-收到的逾期利息(网银)--(回租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018072100000024",userid);//回款-收到的租金(网银)--当月(回租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018080400000081",userid);//回款-收到的租金(网银)--跨月(回租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018072100000025",userid);//回款-收到的逾期利息(网银)--(回租) // 汽车直租 - cvri.CreateVoucher(FlowUnid,"PZ2019070100000016",userid);//回款-收到的租金(网银)--当月(直租) - cvri.CreateVoucher(FlowUnid,"PZ2019070100000017",userid);//回款-收到的租金(网银)--跨月(直租) - cvri.CreateVoucher(FlowUnid,"PZ2019070100000014",userid);//回款-收到的逾期利息(网银)--(直租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000016",userid);//回款-收到的租金(网银)--当月(直租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000017",userid);//回款-收到的租金(网银)--跨月(直租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000014",userid);//回款-收到的逾期利息(网银)--(直租) /** * 代偿反冲 diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/OtherPayMoneyVoucher.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/OtherPayMoneyVoucher.java index 9e69a370a..a9ad19880 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/OtherPayMoneyVoucher.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/OtherPayMoneyVoucher.java @@ -17,7 +17,7 @@ public class OtherPayMoneyVoucher extends BaseBussiness { // 其他支付,客户多余还款退回 CreateVoucherForOtherPay CVFOP = new CreateVoucherForOtherPay(); - CVFOP.CreateVoucher(FlowUnid, "PZ2018072100000051", userid); + CVFOP.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000051", userid); return "true"; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/RedIncomeVoucher.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/RedIncomeVoucher.java index 9c3984e2d..6e774c031 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/RedIncomeVoucher.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/RedIncomeVoucher.java @@ -18,19 +18,19 @@ public class RedIncomeVoucher extends BaseBussiness { /** * 汽车回租 */ - cvri.CreateVoucher(FlowUnid, "PZ2018072100000038",userid);//网银回款反冲-收到的逾期利息 - cvri.CreateVoucher(FlowUnid, "PZ2018072100000039",userid);//网银回款反冲-收到的违约金/罚款 - cvri.CreateVoucher(FlowUnid, "PZ2018072100000037",userid);//网银回款反冲-收到的租金 - cvri.CreateVoucher(FlowUnid, "PZ2018072100000043",userid);//网银回款反冲-收到名义货价 - cvri.CreateVoucher(FlowUnid, "PZ2018072100000034",userid);//网银回款反冲-收到客户保证金 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000038",userid);//网银回款反冲-收到的逾期利息 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000039",userid);//网银回款反冲-收到的违约金/罚款 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000037",userid);//网银回款反冲-收到的租金 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000043",userid);//网银回款反冲-收到名义货价 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000034",userid);//网银回款反冲-收到客户保证金 /** * 汽车直租 */ - cvri.CreateVoucher(FlowUnid, "PZ2019070100000023",userid);//网银回款反冲-收到的租金 - cvri.CreateVoucher(FlowUnid, "PZ2019070100000020",userid);//网银回款反冲-收到的逾期利息 - cvri.CreateVoucher(FlowUnid, "PZ2019070100000021",userid);//网银回款反冲-收到的违约金/罚款 - cvri.CreateVoucher(FlowUnid, "PZ2019070100000025",userid);//网银回款反冲-收到名义货价 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000023",userid);//网银回款反冲-收到的租金 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000020",userid);//网银回款反冲-收到的逾期利息 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000021",userid);//网银回款反冲-收到的违约金/罚款 + cvri.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000025",userid);//网银回款反冲-收到名义货价 return "true"; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMonthSettlement.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMonthSettlement.java index d9bda9c87..9a4945d7a 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMonthSettlement.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMonthSettlement.java @@ -73,7 +73,8 @@ public class CreateVoucherMonthSettlement { // 月结-确认未实现利息收入 if ("PZ2018071200000016".equals(voucherNo)) { // sql="SELECT ROUND((getTax(lci.LEAS_FORM,'租息',LCCT.START_DATE) - 1) * 100,0) AS TAX_NUM,CRM.ID,CRM.INTEREST_TAX AS MONEY,ROUND(CRM.INTEREST_TAX / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) AS MONEYNOTAX,(CRM.INTEREST_TAX - ROUND(CRM.INTEREST_TAX / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)) AS TAX,(IFNULL(LRP.CORPUS, 0) - ROUND(IFNULL(LRP.CORPUS, 0) / getTax(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) AS CORPUS_TAX,((IFNULL(LRP.CORPUS, 0) - ROUND(IFNULL(LRP.CORPUS, 0) / getTax(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) + (IFNULL(CRM.INTEREST_TAX, 0) - ROUND(IFNULL(CRM.INTEREST_TAX, 0) / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2))) AS CORPUS_ADD_INTEREST_TAX,DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(NOW(), '%Y/%m/%d') AS FACT_DATE,CRM.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,LEC.ID AS CARID,LEC.MODEL,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME,CIF.CUSTOMERTYPE,LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = CRM.CONTRACT_ID AND LRP.PLAN_LIST = CRM.rent_list LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,SUM(INTEREST) AS INTEREST,MIN(HIRE_DATE) AS HIRE_DATE FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LRP.CONTRACT_ID = LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT CONTRACT_ID,MAX(PLAN_LIST) AS PLAN_LIST FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI2 ON LRI2.CONTRACT_ID = lci.id LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_EQUIPMENT_CAR LEC ON LEC.CONTRACT_ID = LCI.ID LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID LEFT JOIN (SELECT F58 FROM voucher_v8 WHERE module_name LIKE '%月结-确认未实现利息收入%' GROUP BY F58)V8 ON V8.f58=CRM.ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND LCI.LEAS_FORM='02' AND DATE_FORMAT(CRM.END_DATE, '%Y/%m') = DATE_FORMAT(NOW(), '%Y/%m') AND ((IFNULL(LRP.INTEREST, 0) - IFNULL(LRI.INTEREST, 0)) <> 0 OR (DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m') < DATE_FORMAT(LRP.PLAN_DATE, '%Y/%m') AND LRP.COLLECT_MSG IN ('微信支付', '银联支付'))) AND (CAST(CRM.RENT_LIST AS SIGNED) - CAST(IFNULL(LRI2.PLAN_LIST, 0) AS SIGNED)) <= 2 AND V8.f58 IS NULL "; - sql="SELECT ROUND((GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM, CRM.ID, CRM.INTEREST_TAX AS MONEY, ROUND(CRM.INTEREST_TAX/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) AS MONEYNOTAX, ( CRM.INTEREST_TAX-ROUND(CRM.INTEREST_TAX/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ) AS TAX, ( IFNULL(LRP.CORPUS,0)-ROUND(IFNULL(LRP.CORPUS,0)/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2) ) AS CORPUS_TAX, ( ( IFNULL(LRP.CORPUS,0)-ROUND(IFNULL(LRP.CORPUS,0)/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2) )+( IFNULL(CRM.INTEREST_TAX, 0)-ROUND(IFNULL(CRM.INTEREST_TAX,0)/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ) ) AS CORPUS_ADD_INTEREST_TAX, DATE_FORMAT(NOW(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(NOW(),'%Y/%m/%d') AS FACT_DATE, CRM.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=CRM.CONTRACT_ID AND LRP.PLAN_LIST=CRM.RENT_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(INTEREST) AS INTEREST, MIN(HIRE_DATE) AS HIRE_DATE, MAX(INPUTTIME) AS IMPUTTIME FROM LC_RENT_INCOME GROUP BY CONTRACT_ID, PLAN_LIST ) LRI ON LRI.CONTRACT_ID=LRP.CONTRACT_ID AND LRI.PLAN_LIST=LRP.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LRP.CONTRACT_ID=LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT CONTRACT_ID, MAX(PLAN_LIST) AS PLAN_LIST FROM LC_RENT_INCOME GROUP BY CONTRACT_ID ) LRI2 ON LRI2.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID=LUL.PROJECT_ID LEFT JOIN ( SELECT RENT_PLAN_ID, PLAN_LIST FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID, PLAN_LIST ) DDI ON DDI.RENT_PLAN_ID=LRP.ID AND DDI.PLAN_LIST=LRP.PLAN_LIST LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%月结-确认未实现利息收入%' GROUP BY F58 ) V8 ON V8.F58=CRM.ID WHERE LPI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND LCI.LEAS_FORM='02' AND DATE_FORMAT(CRM.END_DATE,'%Y/%m')<=DATE_FORMAT(NOW(),'%Y/%m') AND ( ( IFNULL(LRP.INTEREST,0)-IFNULL(LRI.INTEREST,0) )<>0 OR ( ( IFNULL(LRP.INTEREST,0)-IFNULL(LRI.INTEREST,0) )=0 AND DATE_FORMAT(IFNULL(LRI.IMPUTTIME,LRI.HIRE_DATE),'%Y/%m')<>DATE_FORMAT(CRM.END_DATE,'%Y/%m') ) ) AND ( CAST(CRM.RENT_LIST AS SIGNED)-CAST(IFNULL(LRI2.PLAN_LIST,0) AS SIGNED) )<=2 AND V8.F58 IS NULL AND DDI.RENT_PLAN_ID IS NULL AND LCI.CONTRACT_STATUS='31' "; + // sql="SELECT ROUND((GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM, CRM.ID, CRM.INTEREST_TAX AS MONEY, ROUND(CRM.INTEREST_TAX/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) AS MONEYNOTAX, ( CRM.INTEREST_TAX-ROUND(CRM.INTEREST_TAX/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ) AS TAX, ( IFNULL(LRP.CORPUS,0)-ROUND(IFNULL(LRP.CORPUS,0)/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2) ) AS CORPUS_TAX, ( ( IFNULL(LRP.CORPUS,0)-ROUND(IFNULL(LRP.CORPUS,0)/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2) )+( IFNULL(CRM.INTEREST_TAX, 0)-ROUND(IFNULL(CRM.INTEREST_TAX,0)/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ) ) AS CORPUS_ADD_INTEREST_TAX, DATE_FORMAT(NOW(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(NOW(),'%Y/%m/%d') AS FACT_DATE, CRM.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=CRM.CONTRACT_ID AND LRP.PLAN_LIST=CRM.RENT_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(INTEREST) AS INTEREST, MIN(HIRE_DATE) AS HIRE_DATE, MAX(INPUTTIME) AS IMPUTTIME FROM LC_RENT_INCOME GROUP BY CONTRACT_ID, PLAN_LIST ) LRI ON LRI.CONTRACT_ID=LRP.CONTRACT_ID AND LRI.PLAN_LIST=LRP.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LRP.CONTRACT_ID=LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT CONTRACT_ID, MAX(PLAN_LIST) AS PLAN_LIST FROM LC_RENT_INCOME GROUP BY CONTRACT_ID ) LRI2 ON LRI2.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID=LUL.PROJECT_ID LEFT JOIN ( SELECT RENT_PLAN_ID, PLAN_LIST FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID, PLAN_LIST ) DDI ON DDI.RENT_PLAN_ID=LRP.ID AND DDI.PLAN_LIST=LRP.PLAN_LIST LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%月结-确认未实现利息收入%' GROUP BY F58 ) V8 ON V8.F58=CRM.ID WHERE LPI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND LCI.LEAS_FORM='02' AND DATE_FORMAT(CRM.END_DATE,'%Y/%m')<=DATE_FORMAT(NOW(),'%Y/%m') AND ( ( IFNULL(LRP.INTEREST,0)-IFNULL(LRI.INTEREST,0) )<>0 OR ( ( IFNULL(LRP.INTEREST,0)-IFNULL(LRI.INTEREST,0) )=0 AND DATE_FORMAT(IFNULL(LRI.IMPUTTIME,LRI.HIRE_DATE),'%Y/%m')<>DATE_FORMAT(CRM.END_DATE,'%Y/%m') ) ) AND ( CAST(CRM.RENT_LIST AS SIGNED)-CAST(IFNULL(LRI2.PLAN_LIST,0) AS SIGNED) )<=2 AND V8.F58 IS NULL AND DDI.RENT_PLAN_ID IS NULL AND LCI.CONTRACT_STATUS='31' "; + sql="SELECT ROUND( ( GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ) - 1 ) * 100, 0 ) AS TAX_NUM, CRM.ID, (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) AS MONEY, ROUND( (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) / GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) - ROUND( (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) / GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) AS TAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(NOW(), '%Y/%m/%d') AS FACT_DATE, CRM.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = CRM.CONTRACT_ID AND LRP.PLAN_LIST = CRM.RENT_LIST LEFT JOIN (SELECT CONTRACT_ID, PLAN_LIST, SUM(INTEREST) AS INTEREST, MIN(HIRE_DATE) AS HIRE_DATE, MAX(INPUTTIME) AS IMPUTTIME FROM LC_RENT_INCOME WHERE IFNULL(INTEREST,0)>0 GROUP BY CONTRACT_ID, PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LRP.CONTRACT_ID = LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT CONTRACT_ID, MAX(PLAN_LIST) AS PLAN_LIST FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI2 ON LRI2.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID LEFT JOIN (SELECT RENT_PLAN_ID, PLAN_LIST FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE = 'bondRepay' GROUP BY RENT_PLAN_ID, PLAN_LIST) DDI ON DDI.RENT_PLAN_ID = LRP.ID AND DDI.PLAN_LIST = LRP.PLAN_LIST LEFT JOIN (SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '月结-确认未实现利息收入' AND F58 IS NOT NULL GROUP BY F58) V8 ON V8.F58 = CRM.ID WHERE LPI.BUSINESSTYPE = '1' AND LUL.IS_MAIN = 'Y' AND LCI.LEAS_FORM = '02' AND LCI.CONTRACT_STATUS = '31' AND DATE_FORMAT(CRM.END_DATE, '%Y/%m') <= DATE_FORMAT(NOW(), '%Y/%m') AND ( ( IFNULL(LRP.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) ) <> 0 OR ( ( IFNULL(LRP.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) ) = 0 AND DATE_FORMAT( IFNULL(LRI.IMPUTTIME, LRI.HIRE_DATE), '%Y/%m' ) <> DATE_FORMAT(CRM.END_DATE, '%Y/%m') ) ) AND ( CAST(CRM.RENT_LIST AS SIGNED) - CAST(IFNULL(LRI2.PLAN_LIST, 0) AS SIGNED) ) <= 2 AND (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0))>0 AND DDI.RENT_PLAN_ID IS NULL AND V8.F58 IS NULL"; // 月结-确认手续费 } else if ("PZ2018071200000017".equals(voucherNo)) { sql = "SELECT CRM.ID, CRM.INTEREST AS MONEY, ROUND(CRM.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) AS MONEYNOTAX, ( CRM.INTEREST-ROUND(CRM.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ) AS TAX, CRM.FEE AS FEEMONEY, IFNULL((CRM.FEE-ROUND(CRM.FEE/GETTAX(LCI.LEAS_FORM,'手续费',LCCT.START_DATE))),0) AS FEE_NOTAX, CRM.DISCOUNT AS DISCOUNT, IFNULL((CRM.DISCOUNT-ROUND(CRM.DISCOUNT/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE))),0) AS DISCOUNT_NOTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, CRM.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=CRM.CONTRACT_ID AND LRP.PLAN_LIST=CRM.RENT_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON CRM.CONTRACT_ID=LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID=LUL.PROJECT_ID LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%月结-确认手续费%' GROUP BY F58 ) V8 ON V8.F58=CRM.ID WHERE LPI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND LUL.IS_MAIN='Y' AND DATE_FORMAT(CRM.END_DATE,'%Y/%m')=DATE_FORMAT(NOW(),'%Y/%m') AND LCCT.HANDLING_CHARGE_MONEY_TYPE='0020' AND V8.F58 IS NULL AND LCI.CONTRACT_STATUS='31' "; @@ -87,7 +88,7 @@ public class CreateVoucherMonthSettlement { */ if("PZ2019070100000028".equals(voucherNo)) { // sql="SELECT ROUND((getTax(lci.LEAS_FORM,'租息',LCCT.START_DATE) - 1) * 100,0) AS TAX_NUM,CRM.ID,CRM.INTEREST_TAX AS MONEY,ROUND(CRM.INTEREST_TAX / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) AS MONEYNOTAX,(CRM.INTEREST_TAX - ROUND(CRM.INTEREST_TAX / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)) AS TAX,(IFNULL(LRP.CORPUS, 0) - ROUND(IFNULL(LRP.CORPUS, 0) / getTax(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) AS CORPUS_TAX,((IFNULL(LRP.CORPUS, 0) - ROUND(IFNULL(LRP.CORPUS, 0) / getTax(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) + (IFNULL(CRM.INTEREST_TAX, 0) - ROUND(IFNULL(CRM.INTEREST_TAX, 0) / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2))) AS CORPUS_ADD_INTEREST_TAX,DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(NOW(), '%Y/%m/%d') AS FACT_DATE,CRM.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,LEC.ID AS CARID,LEC.MODEL,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME,CIF.CUSTOMERTYPE,LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = CRM.CONTRACT_ID AND LRP.PLAN_LIST = CRM.rent_list LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,SUM(INTEREST) AS INTEREST,MIN(HIRE_DATE) AS HIRE_DATE FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LRP.CONTRACT_ID = LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT CONTRACT_ID,MAX(PLAN_LIST) AS PLAN_LIST FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI2 ON LRI2.CONTRACT_ID = lci.id LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_EQUIPMENT_CAR LEC ON LEC.CONTRACT_ID = LCI.ID LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID LEFT JOIN (SELECT F58 FROM voucher_v8 WHERE module_name LIKE '%月结-确认未实现利息收入%' GROUP BY F58)V8 ON V8.f58=CRM.ID WHERE LPI.BUSINESSTYPE = '1' AND lul.IS_MAIN = 'Y' AND LCI.LEAS_FORM='01' AND DATE_FORMAT(CRM.END_DATE, '%Y/%m') = DATE_FORMAT(NOW(), '%Y/%m') AND ((IFNULL(LRP.INTEREST, 0) - IFNULL(LRI.INTEREST, 0)) <> 0 OR (DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m') < DATE_FORMAT(LRP.PLAN_DATE, '%Y/%m') AND LRP.COLLECT_MSG IN ('微信支付', '银联支付'))) AND (CAST(CRM.RENT_LIST AS SIGNED) - CAST(IFNULL(LRI2.PLAN_LIST, 0) AS SIGNED)) <= 2 AND V8.f58 IS NULL "; - sql="SELECT ROUND((GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM, CRM.ID, CRM.INTEREST_TAX AS MONEY, ROUND(CRM.INTEREST_TAX/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) AS MONEYNOTAX, ( CRM.INTEREST_TAX-ROUND(CRM.INTEREST_TAX/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ) AS TAX, ( IFNULL(LRP.CORPUS,0)-ROUND(IFNULL(LRP.CORPUS,0)/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2) ) AS CORPUS_TAX, ( ( IFNULL(LRP.CORPUS,0)-ROUND(IFNULL(LRP.CORPUS,0)/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2) )+( IFNULL(CRM.INTEREST_TAX, 0)-ROUND(IFNULL(CRM.INTEREST_TAX,0)/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ) ) AS CORPUS_ADD_INTEREST_TAX, DATE_FORMAT(NOW(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(NOW(),'%Y/%m/%d') AS FACT_DATE, CRM.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=CRM.CONTRACT_ID AND LRP.PLAN_LIST=CRM.RENT_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(INTEREST) AS INTEREST, MIN(HIRE_DATE) AS HIRE_DATE, MAX(INPUTTIME) AS IMPUTTIME FROM LC_RENT_INCOME GROUP BY CONTRACT_ID, PLAN_LIST ) LRI ON LRI.CONTRACT_ID=LRP.CONTRACT_ID AND LRI.PLAN_LIST=LRP.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LRP.CONTRACT_ID=LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT CONTRACT_ID, MAX(PLAN_LIST) AS PLAN_LIST FROM LC_RENT_INCOME GROUP BY CONTRACT_ID ) LRI2 ON LRI2.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID=LUL.PROJECT_ID LEFT JOIN ( SELECT RENT_PLAN_ID, PLAN_LIST FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID, PLAN_LIST ) DDI ON DDI.RENT_PLAN_ID=LRP.ID AND DDI.PLAN_LIST=LRP.PLAN_LIST LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%月结-确认未实现利息收入%' GROUP BY F58 ) V8 ON V8.F58=CRM.ID WHERE LPI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND LCI.LEAS_FORM='01' AND DATE_FORMAT(CRM.END_DATE,'%Y/%m')=DATE_FORMAT(NOW(),'%Y/%m') AND ( ( IFNULL(LRP.INTEREST,0)-IFNULL(LRI.INTEREST,0) )<>0 OR ( ( IFNULL(LRP.INTEREST,0)-IFNULL(LRI.INTEREST,0) )=0 AND DATE_FORMAT(IFNULL(LRI.IMPUTTIME,LRI.HIRE_DATE),'%Y/%m')<>DATE_FORMAT(CRM.END_DATE,'%Y/%m') ) ) AND ( CAST(CRM.RENT_LIST AS SIGNED)-CAST(IFNULL(LRI2.PLAN_LIST,0) AS SIGNED) )<=2 AND V8.F58 IS NULL AND DDI.RENT_PLAN_ID IS NULL AND LCI.CONTRACT_STATUS='31' "; + sql="SELECT ROUND( ( GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ) - 1 ) * 100, 0 ) AS TAX_NUM, CRM.ID, (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) AS MONEY, ROUND( (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) / GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) AS MONEYNOTAX, ( (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) - ROUND( (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) / GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) AS TAX, ( IFNULL(LRP.CORPUS, 0) - ROUND( IFNULL(LRP.CORPUS, 0) / GETTAX ( LCI.LEAS_FORM, '本金', LCCT.START_DATE ), 2 ) ) AS CORPUS_TAX, ( ( IFNULL(LRP.CORPUS, 0) - ROUND( IFNULL(LRP.CORPUS, 0) / GETTAX ( LCI.LEAS_FORM, '本金', LCCT.START_DATE ), 2 ) ) + ( (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) - ROUND( (IFNULL(CRM.INTEREST_TAX,0)-IFNULL(LRI.INTEREST,0)) / GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) ) AS CORPUS_ADD_INTEREST_TAX, DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(NOW(), '%Y/%m/%d') AS FACT_DATE, CRM.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = CRM.CONTRACT_ID AND LRP.PLAN_LIST = CRM.RENT_LIST LEFT JOIN (SELECT CONTRACT_ID, PLAN_LIST, SUM(INTEREST) AS INTEREST, MIN(HIRE_DATE) AS HIRE_DATE, MAX(INPUTTIME) AS IMPUTTIME FROM LC_RENT_INCOME WHERE IFNULL(INTEREST,0)>0 GROUP BY CONTRACT_ID, PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LRP.CONTRACT_ID = LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT CONTRACT_ID, MAX(PLAN_LIST) AS PLAN_LIST FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI2 ON LRI2.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID LEFT JOIN (SELECT RENT_PLAN_ID, PLAN_LIST FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE = 'bondRepay' GROUP BY RENT_PLAN_ID, PLAN_LIST) DDI ON DDI.RENT_PLAN_ID = LRP.ID AND DDI.PLAN_LIST = LRP.PLAN_LIST LEFT JOIN (SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%月结-确认未实现利息收入%' GROUP BY F58) V8 ON V8.F58 = CRM.ID WHERE LPI.BUSINESSTYPE = '1' AND LUL.IS_MAIN = 'Y' AND LCI.LEAS_FORM = '01' AND DATE_FORMAT(CRM.END_DATE, '%Y/%m') = DATE_FORMAT(NOW(), '%Y/%m') AND ( ( I FNULL(LRP.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) ) <>44 0 OR ( ( IFNULL(LRP.INTEREST, 0) - IFNULL(LRI.INTEREST, 0) 4 ) = 0 AND DATE_FORMAT( IFNULL(LRI.IMPUTTIME, LRI.HIRE_DATE), '%Y/%m' ) <> DATE_FORMAT(CRM.END_DATE, '%Y/%m') ) ) AND ( CAST(CRM.RENT_LIST AS SIGNED) - CAST(IFNULL(LRI2.PLAN_LIST, 0) AS SIGNED) ) <= 2 AND V8.F58 IS NULL AND DDI.RENT_PLAN_ID IS NULL AND LCI.CONTRACT_STATUS = '31'"; }else if("PZ2019070100000029".equals(voucherNo)) { sql = "SELECT CRM.ID, CRM.INTEREST AS MONEY, ROUND(CRM.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) AS MONEYNOTAX, ( CRM.INTEREST-ROUND(CRM.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ) AS TAX, CRM.FEE AS FEEMONEY, IFNULL((CRM.FEE-ROUND(CRM.FEE/GETTAX(LCI.LEAS_FORM,'手续费',LCCT.START_DATE))),0) AS FEE_NOTAX, CRM.DISCOUNT AS DISCOUNT, IFNULL((CRM.DISCOUNT-ROUND(CRM.DISCOUNT/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE))),0) AS DISCOUNT_NOTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, CRM.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE FROM CONTRACT_RENT_MONTH CRM LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=CRM.CONTRACT_ID AND LRP.PLAN_LIST=CRM.RENT_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON CRM.CONTRACT_ID=LCI.ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID=LUL.PROJECT_ID LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%月结-确认手续费%' GROUP BY F58 ) V8 ON V8.F58=CRM.ID WHERE LPI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='01' AND LUL.IS_MAIN='Y' AND DATE_FORMAT(CRM.END_DATE,'%Y/%m')=DATE_FORMAT(NOW(),'%Y/%m') AND LCCT.HANDLING_CHARGE_MONEY_TYPE='0020' AND V8.F58 IS NULL AND LCI.CONTRACT_STATUS='31' "; } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRedCompensatory.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRedCompensatory.java index 80aceec36..8c93b1ed0 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRedCompensatory.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRedCompensatory.java @@ -1,5 +1,6 @@ package com.tenwa.voucher.CreateVoucherProcess; +import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -7,6 +8,7 @@ import java.util.Map; import jbo.voucher.LV_VOUCHER_CONFIG; import com.amarsoft.are.jbo.BizObject; +import com.amarsoft.are.jbo.JBOException; import com.amarsoft.awe.util.ASResultSet; import com.amarsoft.awe.util.Transaction; import com.amarsoft.dict.als.cache.CacheLoaderFactory; @@ -17,94 +19,115 @@ import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; */ public class CreateVoucherRedCompensatory { - public void CreateVoucher(String VOUCHERNO,String userid,String LRI_ID) throws Exception{ + public void CreateVoucher(String VOUCHERNO,String userid,String LRI_ID){ Transaction Sqlca =null; - Map map=new HashMap(); - Map param=new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); - String MONEY=null; - String MONEYNOTAX=null; - String MONEYTAX=null; - String ACCOUNT_DATE=null; - String FACT_DATE=null; - String CONTRACT_ID=null; - String leas_form=null; - String DISTRIBUTOR_ID=null; - String DISTRIBUTOR_NAME=null; - String CONTRACT_NUMBER=null; - String BUSINESSTYPE=null; - String PLAN_LIST=null; - String CHARGE_WAY=null; - String F58=null; - String F56=null; - - String sql=""; - param.clear(); - map.clear(); - - // 代偿反冲-收到的租金 - if("PZ2019071500000030".equals(VOUCHERNO)){ - sql="SELECT LRI.CHARGE_WAY, IFNULL(LRI.RENT,0) AS MONEY, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, V8.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRI.PLAN_ID AS F58, LRI.ID AS F56, LCI.CONTRACT_NUMBER FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.PAYMENT_NUMBER=LRI.PAYMENT_NUMBER AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN ( SELECT RENT_PLAN_ID, MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID )DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN ( SELECT F58, MAX(F65) AS DISTRIBUTOR_CODING, MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND (F58 IS NOT NULL AND F58<>'') AND F59='1' GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN ( SELECT F56 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿反冲-收到代偿的租金' AND (F56 IS NOT NULL AND F56<>'') GROUP BY F56 ) V9 ON V9.F56=LRI.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRI.CONTRACT_ID WHERE LRI.ID='"+LRI_ID+"' AND LCI.BUSINESSTYPE='1' AND IFNULL(LRI.RENT,0)>0 AND V9.F56 IS NULL"; - // 代偿反冲-收到的逾期利息 - }else if("PZ2019071500000031".equals(VOUCHERNO)){ - sql="SELECT LRI.CHARGE_WAY, IFNULL(LRI.PENALTY,0) AS MONEY, IFNULL(V8.MONEY,0) AS MONEYNOTAX, ROUND((IFNULL(LRI.PENALTY,0)-IFNULL(V8.MONEY,0)),2) AS MONEYTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRI.PLAN_ID AS F58, LRI.ID AS F56, LCI.CONTRACT_NUMBER FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN (SELECT RENT_PLAN_ID,MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' AND IFNULL(PENALTY,0)>0 GROUP BY RENT_PLAN_ID)DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT F58, SUM(F7) AS MONEY FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-代偿逾期利息' AND (F58 IS NOT NULL AND F58<>'') GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN ( SELECT F56 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿反冲-代偿逾期利息' AND (F56 IS NOT NULL AND F56<>'') GROUP BY F56 ) V9 ON V9.F56=LRI.ID WHERE LRI.ID='"+LRI_ID+"' AND LCI.BUSINESSTYPE='1' AND V9.F56 IS NULL AND IFNULL(LRI.PENALTY,0)>0"; - // 代偿反冲-收到的租金(微信) - }else if("PZ2020070600000001".equals(VOUCHERNO)){ - sql="SELECT LRI.CHARGE_WAY, IFNULL(LRI.RENT,0) AS MONEY, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, V8.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRI.PLAN_ID AS F58, LRI.ID AS F56, LCI.CONTRACT_NUMBER FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN (SELECT RENT_PLAN_ID,MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID)DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN ( SELECT F58, MAX(F65) AS DISTRIBUTOR_CODING, MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND (F58 IS NOT NULL AND F58<>'') AND F59='1' GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN ( SELECT F56 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿反冲-收到代偿的租金-微信' AND (F56 IS NOT NULL AND F56<>'' AND F58 IS NOT NULL AND F58<>'') GROUP BY F56 ) V9 ON V9.F56=LRI.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRI.CONTRACT_ID WHERE LRI.ID='"+LRI_ID+"' AND LCI.BUSINESSTYPE='1' AND IFNULL(LRI.RENT,0)>0 AND V9.F56 IS NULL"; - // 代偿反冲-收到的逾期利息(微信) - }else if("PZ2020070600000002".equals(VOUCHERNO)){ - sql="SELECT LRI.CHARGE_WAY, IFNULL(LRI.PENALTY,0) AS MONEY, IFNULL(V8.MONEY,0) AS MONEYNOTAX, ROUND((IFNULL(LRI.PENALTY,0)-IFNULL(V8.MONEY,0)),2) AS MONEYTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRI.PLAN_ID AS F58, LRI.ID AS F56, LCI.CONTRACT_NUMBER FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN (SELECT RENT_PLAN_ID,MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' AND IFNULL(PENALTY,0)>0 GROUP BY RENT_PLAN_ID)DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT F58, SUM(F7) AS MONEY FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-代偿逾期利息' AND (F58 IS NOT NULL AND F58<>'') GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN ( SELECT F56 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿反冲-代偿逾期利息-微信' AND (F58 IS NOT NULL AND F58<>'' AND F56 IS NOT NULL AND F56<>'') GROUP BY F56 ) V9 ON V9.F56=LRI.ID WHERE LRI.ID='"+LRI_ID+"' AND LCI.BUSINESSTYPE='1' AND V9.F56 IS NULL AND IFNULL(LRI.PENALTY,0)>0"; - } - List> dataList=DataOperatorUtil.getDataBySql(Sqlca, sql, null); - - CreateVoucherServiceImpl vs=new CreateVoucherServiceImpl(); - String VOUCHER_TYPE="1";// 凭证分类 金蝶 - - for (int i=0;i map=new HashMap(); + Map param=new HashMap(); + + String MONEY=null; + String MONEYNOTAX=null; + String MONEYTAX=null; + String ACCOUNT_DATE=null; + String FACT_DATE=null; + String CONTRACT_ID=null; + String leas_form=null; + String DISTRIBUTOR_ID=null; + String DISTRIBUTOR_NAME=null; + String CONTRACT_NUMBER=null; + String BUSINESSTYPE=null; + String PLAN_LIST=null; + String CHARGE_WAY=null; + String F58=null; + String F56=null; + + String sql=""; + param.clear(); + map.clear(); + + // 代偿反冲-收到的租金 + if("PZ2019071500000030".equals(VOUCHERNO)){ + sql="SELECT LRI.CHARGE_WAY, IFNULL(LRI.RENT,0) AS MONEY, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, V8.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRI.PLAN_ID AS F58, LRI.ID AS F56, LCI.CONTRACT_NUMBER FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.PAYMENT_NUMBER=LRI.PAYMENT_NUMBER AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN ( SELECT RENT_PLAN_ID, MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN ( SELECT F58, MAX(F65) AS DISTRIBUTOR_CODING, MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME='代偿-收到代偿的租金' AND (F58 IS NOT NULL AND F58<>'') AND F59='1' GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN ( SELECT F56 FROM VOUCHER_V8 WHERE (MODULE_NAME='代偿反冲-收到代偿的租金' OR MODULE_NAME='代偿反冲-收到代偿的租金-微信银联') AND (F56 IS NOT NULL AND F56<>'') GROUP BY F56 ) V9 ON V9.F56=LRI.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRI.CONTRACT_ID WHERE LRI.ID='"+LRI_ID+"' AND LCI.BUSINESSTYPE='1' AND IFNULL(LRI.RENT,0)>0 AND V9.F56 IS NULL"; + // 代偿反冲-收到的逾期利息 + }else if("PZ2019071500000031".equals(VOUCHERNO)){ + sql="SELECT LRI.CHARGE_WAY, IFNULL(LRI.PENALTY,0) AS MONEY, IFNULL(V8.MONEY,0) AS MONEYNOTAX, ROUND((IFNULL(LRI.PENALTY,0)-IFNULL(V8.MONEY,0)),2) AS MONEYTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRI.PLAN_ID AS F58, LRI.ID AS F56, LCI.CONTRACT_NUMBER FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN ( SELECT RENT_PLAN_ID, MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' AND IFNULL(PENALTY,0)>0 GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT F58, SUM(F7) AS MONEY FROM VOUCHER_V8 WHERE MODULE_NAME='代偿-代偿逾期利息' AND (F58 IS NOT NULL AND F58<>'') GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN ( SELECT F56 FROM VOUCHER_V8 WHERE (MODULE_NAME='代偿反冲-代偿逾期利息' OR MODULE_NAME='代偿反冲-代偿逾期利息-微信银联') AND (F56 IS NOT NULL AND F56<>'') GROUP BY F56 ) V9 ON V9.F56=LRI.ID WHERE LRI.ID='"+LRI_ID+"' AND LCI.BUSINESSTYPE='1' AND V9.F56 IS NULL AND IFNULL(LRI.PENALTY,0)>0"; + // 代偿反冲-收到的租金(微信) + }else if("PZ2020070600000001".equals(VOUCHERNO)){ + sql="SELECT LRI.CHARGE_WAY, IFNULL(LRI.RENT,0) AS MONEY, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, V8.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRI.PLAN_ID AS F58, LRI.ID AS F56, LCI.CONTRACT_NUMBER FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN (SELECT RENT_PLAN_ID,MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID)DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN ( SELECT F58, MAX(F65) AS DISTRIBUTOR_CODING, MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND (F58 IS NOT NULL AND F58<>'') AND F59='1' GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN ( SELECT F56 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿反冲-收到代偿的租金-微信' AND (F56 IS NOT NULL AND F56<>'' AND F58 IS NOT NULL AND F58<>'') GROUP BY F56 ) V9 ON V9.F56=LRI.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRI.CONTRACT_ID WHERE LRI.ID='"+LRI_ID+"' AND LCI.BUSINESSTYPE='1' AND IFNULL(LRI.RENT,0)>0 AND V9.F56 IS NULL"; + // 代偿反冲-收到的逾期利息(微信) + }else if("PZ2020070600000002".equals(VOUCHERNO)){ + sql="SELECT LRI.CHARGE_WAY, IFNULL(LRI.PENALTY,0) AS MONEY, IFNULL(V8.MONEY,0) AS MONEYNOTAX, ROUND((IFNULL(LRI.PENALTY,0)-IFNULL(V8.MONEY,0)),2) AS MONEYTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRI.PLAN_ID AS F58, LRI.ID AS F56, LCI.CONTRACT_NUMBER FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN (SELECT RENT_PLAN_ID,MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' AND IFNULL(PENALTY,0)>0 GROUP BY RENT_PLAN_ID)DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT F58, SUM(F7) AS MONEY FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-代偿逾期利息' AND (F58 IS NOT NULL AND F58<>'') GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN ( SELECT F56 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿反冲-代偿逾期利息-微信' AND (F58 IS NOT NULL AND F58<>'' AND F56 IS NOT NULL AND F56<>'') GROUP BY F56 ) V9 ON V9.F56=LRI.ID WHERE LRI.ID='"+LRI_ID+"' AND LCI.BUSINESSTYPE='1' AND V9.F56 IS NULL AND IFNULL(LRI.PENALTY,0)>0"; + } + List> dataList=DataOperatorUtil.getDataBySql(Sqlca, sql, null); + + CreateVoucherServiceImpl vs=new CreateVoucherServiceImpl(); + String VOUCHER_TYPE="1";// 凭证分类 金蝶 + + for (int i=0;i map=new HashMap(); - Map param=new HashMap(); - String MONEY=null; - String MONEYNOTAX=null; - String MONEYTAX=null; - String ACCOUNT_DATE=null; - String FACT_DATE=null; - String CONTRACT_ID=null; - String leas_form=null; - String DISTRIBUTOR_ID=null; - String DISTRIBUTOR_NAME=null; - String DISTRIBUTOR_ID2=null; - String DISTRIBUTOR_NAME2=null; - String CONTRACT_NUMBER=null; - String BUSINESSTYPE=null; - String PLAN_LIST=null; - String F58=null; - String YES_OR_NO=null; - - String sql=""; - param.clear(); - map.clear(); - - // 代偿反冲-收到的租金 - if("PZ2019071500000030".equals(VOUCHERNO)){ - //sql="SELECT IFNULL(V8.MONEY, 0) AS MONEY,0.00 AS MONEYNOTAX,0.00 AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LRP.CONTRACT_ID,V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID,V8.DISTRIBUTOR_NAME,LRP.PLAN_LIST,LRP.ID AS F58,LCI.CONTRACT_NUMBER,LCI.BUSINESSTYPE FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST=LRIT.PLAN_LIST LEFT JOIN (SELECT SUM(F7) AS MONEY,F58,MAX(F65) AS DISTRIBUTOR_CODING,MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿-收到代偿的租金%' AND F59 = '1' GROUP BY F58) V8 ON V8.F58=LRP.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRP.CONTRACT_ID WHERE LCI.BUSINESSTYPE = '1' AND IFNULL(V8.MONEY, 0) > 0 AND NOT EXISTS (SELECT F58 FROM VOUCHER_V8 WHERE F58 = V8.F58 AND F59 = 1 AND MODULE_NAME LIKE '%代偿反冲-收到代偿的租金%') AND LRIT.FLOWUNID='"+FLOWUNID+"' "; - //sql="SELECT IFNULL(V8.MONEY, 0) AS MONEY,0.00 AS MONEYNOTAX,0.00 AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LRP.CONTRACT_ID,V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID,V8.DISTRIBUTOR_NAME,LRP.PLAN_LIST,LRP.ID AS F58,LCI.CONTRACT_NUMBER,LCI.BUSINESSTYPE,CASE WHEN (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER = IFNULL(LRIT.EBANK_NUMBER, 0) GROUP BY EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO,CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) ELSE V8.DISTRIBUTOR_CODING END AS DISTRIBUTOR_ID2,CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) ELSE V8.DISTRIBUTOR_NAME END AS DISTRIBUTOR_NAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LRIT.CONTRACT_ID AND LRP.PLAN_LIST = LRIT.PLAN_LIST LEFT JOIN LC_EBANK LE ON LE.ID = LRIT.EBANK_NUMBER LEFT JOIN (SELECT SUM(F7) AS MONEY,F58,MAX(F65) AS DISTRIBUTOR_CODING,MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿-收到代偿的租金%' AND F59 = '1' GROUP BY F58) V8 ON V8.F58 = LRP.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRP.CONTRACT_ID WHERE LCI.BUSINESSTYPE = '1' AND IFNULL(V8.MONEY, 0) > 0 AND NOT EXISTS (SELECT F58 FROM VOUCHER_V8 WHERE F58 = V8.F58 AND F59 = 1 AND MODULE_NAME LIKE '%代偿反冲-收到代偿的租金%') AND LRIT.FLOWUNID = '"+FLOWUNID+"'"; - sql="SELECT IFNULL(LRIT.RENT,0) AS MONEY, 0.00 AS MONEYNOTAX, 0.00 AS MONEYTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, V8.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRP.ID AS F58, LCI.CONTRACT_NUMBER, LCI.BUSINESSTYPE, CASE WHEN ( SELECT LRI.EBANK_NUMBER FROM LC_RENT_INCOME LRI WHERE EBANK_NUMBER=IFNULL(LRIT.EBANK_NUMBER,0) AND NOT EXISTS(SELECT 1 FROM LC_RENT_INCOME_TEMP LRIT2 WHERE LRIT2.FLOWUNID='"+FLOWUNID+"' AND LRIT2.CONTRACT_ID=LRI.CONTRACT_ID AND LRIT2.PLAN_LIST=LRI.PLAN_LIST) GROUP BY LRI.EBANK_NUMBER ) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMER_NUM END AS DISTRIBUTOR_ID2, CASE WHEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMERNAME END AS DISTRIBUTOR_NAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST=LRIT.PLAN_LIST LEFT JOIN ( SELECT RENT_PLAN_ID, MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN LC_EBANK LE ON LE.ID=LRIT.EBANK_NUMBER LEFT JOIN ( SELECT SUM(F7) AS MONEY, F58, MAX(F65) AS DISTRIBUTOR_CODING, MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿-收到代偿的租金%' AND F59='1' AND (F58 IS NOT NULL AND F58<>'') GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID WHERE LCI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND IFNULL(V8.MONEY,0)>0 AND IFNULL(LRIT.RENT,0)>0 AND LRIT.FLOWUNID='"+FLOWUNID+"'"; - // 代偿反冲-收到的逾期利息 - }else if("PZ2019071500000031".equals(VOUCHERNO)){ - //sql="SELECT IFNULL(LRI.PENALTY, 0) AS MONEY,IFNULL(V8.MONEY, 0) AS MONEYNOTAX,ROUND((IFNULL(LRI.PENALTY, 0) - IFNULL(V8.MONEY, 0)),2) AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LRP.CONTRACT_ID,V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID,V8.DISTRIBUTOR_NAME,LRP.PLAN_LIST,LRP.ID AS F58,LCI.CONTRACT_NUMBER,LCI.BUSINESSTYPE FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST =LRIT.PLAN_LIST LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,SUM(IFNULL(PENALTY,0)) AS PENALTY FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,PLAN_LIST)LRI ON LRI.CONTRACT_ID=LRP.CONTRACT_ID AND LRI.PLAN_LIST=LRP.PLAN_LIST LEFT JOIN (SELECT SUM(F7) AS MONEY,F58,MAX(F65) AS DISTRIBUTOR_CODING,MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿-代偿逾期利息%' AND F59 = 1 GROUP BY F58) V8 ON V8.F58=LRP.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRP.CONTRACT_ID WHERE LCI.BUSINESSTYPE = '1' AND IFNULL(V8.MONEY, 0) > 0 AND NOT EXISTS (SELECT F58 FROM VOUCHER_V8 WHERE F58 = V8.F58 AND F59 = 1 AND MODULE_NAME LIKE '%代偿反冲-代偿逾期利息%') AND LRIT.FLOWUNID='"+FLOWUNID+"' "; - //sql="SELECT IFNULL(LRI.PENALTY, 0) AS MONEY,IFNULL(V8.MONEY, 0) AS MONEYNOTAX,ROUND((IFNULL(LRI.PENALTY, 0) - IFNULL(V8.MONEY, 0)),2) AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LRP.CONTRACT_ID,V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID,V8.DISTRIBUTOR_NAME,LRP.PLAN_LIST,LRP.ID AS F58,LCI.CONTRACT_NUMBER,LCI.BUSINESSTYPE,CASE WHEN (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER = IFNULL(LRIT.EBANK_NUMBER, 0) GROUP BY EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO,CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) ELSE V8.DISTRIBUTOR_CODING END AS DISTRIBUTOR_ID2,CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) ELSE V8.DISTRIBUTOR_NAME END AS DISTRIBUTOR_NAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LRIT.CONTRACT_ID AND LRP.PLAN_LIST = LRIT.PLAN_LIST LEFT JOIN LC_EBANK LE ON LE.ID = LRIT.EBANK_NUMBER LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,SUM(IFNULL(PENALTY, 0)) AS PENALTY FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST LEFT JOIN (SELECT SUM(F7) AS MONEY,F58,MAX(F65) AS DISTRIBUTOR_CODING,MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿-代偿逾期利息%' AND F59 = 1 GROUP BY F58) V8 ON V8.F58 = LRP.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRP.CONTRACT_ID WHERE LCI.BUSINESSTYPE = '1' AND IFNULL(V8.MONEY, 0) > 0 AND NOT EXISTS (SELECT F58 FROM VOUCHER_V8 WHERE F58 = V8.F58 AND F59 = 1 AND MODULE_NAME LIKE '%代偿反冲-代偿逾期利息%') AND LRIT.FLOWUNID = '"+FLOWUNID+"' "; - sql="SELECT IFNULL(LRIT.PENALTY, 0) AS MONEY, IFNULL(V8.MONEY, 0) AS MONEYNOTAX, ROUND( ( IFNULL(LRIT.PENALTY, 0) - IFNULL(V8.MONEY, 0) ), 2 ) AS MONEYTAX, DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRP.ID AS F58, LCI.CONTRACT_NUMBER, LCI.BUSINESSTYPE, CASE WHEN (SELECT LRI.EBANK_NUMBER FROM LC_RENT_INCOME LRI WHERE EBANK_NUMBER = IFNULL(LRIT.EBANK_NUMBER, 0) AND NOT EXISTS (SELECT 1 FROM LC_RENT_INCOME_TEMP LRIT2 WHERE LRIT2.FLOWUNID = '"+FLOWUNID+"' AND LRIT2.CONTRACT_ID = LRI.CONTRACT_ID AND LRIT2.PLAN_LIST = LRI.PLAN_LIST) GROUP BY LRI.EBANK_NUMBER) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS DISTRIBUTOR_ID2, CASE WHEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS DISTRIBUTOR_NAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LRIT.CONTRACT_ID AND LRP.PLAN_LIST = LRIT.PLAN_LIST LEFT JOIN (SELECT RENT_PLAN_ID, MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE = 'bondRepay' AND IFNULL(PENALTY, 0) > 0 GROUP BY RENT_PLAN_ID) DDI ON DDI.RENT_PLAN_ID = LRP.ID LEFT JOIN LC_EBANK LE ON LE.ID = LRIT.EBANK_NUMBER LEFT JOIN (SELECT CONTRACT_ID, PLAN_LIST, SUM(IFNULL(PENALTY, 0)) AS PENALTY FROM LC_RENT_INCOME GROUP BY CONTRACT_ID, PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST LEFT JOIN (SELECT SUM(F7) AS MONEY, F58, MAX(F65) AS DISTRIBUTOR_CODING, MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿-代偿逾期利息%' AND F59 = 1 GROUP BY F58) V8 ON V8.F58 = DDI.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRP.CONTRACT_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID WHERE LCI.BUSINESSTYPE = '1' AND LUL.IS_MAIN = 'Y' AND DDI.ID IS NOT NULL AND IFNULL(LRIT.PENALTY, 0) > 0 AND LRIT.FLOWUNID = '"+FLOWUNID+"'"; - } - - rs=Sqlca.getASResultSet(sql); - while(rs.next()){ - MONEY = rs.getString("MONEY"); - MONEYNOTAX = rs.getString("MONEYNOTAX"); - MONEYTAX = rs.getString("MONEYTAX"); - ACCOUNT_DATE = rs.getString("ACCOUNT_DATE"); - FACT_DATE = rs.getString("FACT_DATE"); - CONTRACT_ID = rs.getString("CONTRACT_ID"); - leas_form="01"; - DISTRIBUTOR_ID = rs.getString("DISTRIBUTOR_ID"); - DISTRIBUTOR_NAME = rs.getString("DISTRIBUTOR_NAME"); - DISTRIBUTOR_ID2 = rs.getString("DISTRIBUTOR_ID2"); - DISTRIBUTOR_NAME2 = rs.getString("DISTRIBUTOR_NAME2"); - BUSINESSTYPE = rs.getString("BUSINESSTYPE"); - PLAN_LIST = rs.getString("PLAN_LIST"); - F58 = rs.getString("F58"); - CONTRACT_NUMBER = rs.getString("CONTRACT_NUMBER"); - YES_OR_NO = rs.getString("YES_OR_NO"); - - param.put("FACT_MONEY",MONEY); - param.put("INTERESTNOTAX",MONEYNOTAX); - param.put("TAX",MONEYTAX); - param.put("ACCOUNT_DATE",ACCOUNT_DATE); - param.put("FACT_DATE",FACT_DATE); - param.put("CONTRACT_ID",CONTRACT_ID); - param.put("LEAS_FORM",leas_form); - param.put("CUSTID",DISTRIBUTOR_ID); - param.put("CUSTNAME",DISTRIBUTOR_NAME); - param.put("CUSTID2",DISTRIBUTOR_ID2); - param.put("CUSTNAME2",DISTRIBUTOR_NAME2); - param.put("PLAN_LIST",PLAN_LIST); - param.put("F58",F58); - param.put("CONTRACT_NUMBER",CONTRACT_NUMBER); - param.put("BUSINESSTYPE",BUSINESSTYPE); - param.put("YES_OR_NO",YES_OR_NO); - param.put("VOUCHERNO",VOUCHERNO); + try { + CreateVoucherServiceImpl vs=new CreateVoucherServiceImpl(); + String VOUCHER_TYPE="1";// 凭证分类 金蝶 + Map map=new HashMap(); + Map param=new HashMap(); + String MONEY=null; + String MONEYNOTAX=null; + String MONEYTAX=null; + String ACCOUNT_DATE=null; + String FACT_DATE=null; + String CONTRACT_ID=null; + String leas_form=null; + String DISTRIBUTOR_ID=null; + String DISTRIBUTOR_NAME=null; + String DISTRIBUTOR_ID2=null; + String DISTRIBUTOR_NAME2=null; + String CONTRACT_NUMBER=null; + String BUSINESSTYPE=null; + String PLAN_LIST=null; + String F58=null; + String YES_OR_NO=null; + String sql=""; + param.clear(); map.clear(); - map.put("PROJ_TYPE", leas_form); - map.put("VOUCHER_NO", VOUCHERNO); - BizObject vouch=DataOperatorUtil.getSingleJBO(LV_VOUCHER_CONFIG.CLASS_NAME, map, Sqlca); - if(vouch!=null){ - vs.createVoucher(vouch.getAttribute("id").getString(),vouch.getAttribute("MODULAR_NUMBER").getString(), vouch.getAttribute("OWNED_COMPANY").getString(), leas_form, VOUCHER_TYPE, userid,param, Sqlca1); + // 代偿反冲-收到的租金 + if("PZ2019071500000030".equals(VOUCHERNO)){ + sql="SELECT IFNULL(LRIT.RENT,0) AS MONEY, 0.00 AS MONEYNOTAX, 0.00 AS MONEYTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, V8.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, V8.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRP.ID AS F58, LCI.CONTRACT_NUMBER, LCI.BUSINESSTYPE, CASE WHEN ( SELECT LRI.EBANK_NUMBER FROM LC_RENT_INCOME LRI WHERE EBANK_NUMBER=IFNULL(LRIT.EBANK_NUMBER,0) AND NOT EXISTS(SELECT 1 FROM LC_RENT_INCOME_TEMP LRIT2 WHERE LRIT2.FLOWUNID='"+FLOWUNID+"' AND LRIT2.CONTRACT_ID=LRI.CONTRACT_ID AND LRIT2.PLAN_LIST=LRI.PLAN_LIST) GROUP BY LRI.EBANK_NUMBER ) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMER_NUM END AS DISTRIBUTOR_ID2, CASE WHEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMERNAME END AS DISTRIBUTOR_NAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST=LRIT.PLAN_LIST LEFT JOIN ( SELECT RENT_PLAN_ID, MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN LC_EBANK LE ON LE.ID=LRIT.EBANK_NUMBER LEFT JOIN ( SELECT SUM(F7) AS MONEY, F58, MAX(F65) AS DISTRIBUTOR_CODING, MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿-收到代偿的租金%' AND F59='1' AND (F58 IS NOT NULL AND F58<>'') GROUP BY F58 ) V8 ON V8.F58=DDI.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID WHERE LCI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND IFNULL(V8.MONEY,0)>0 AND IFNULL(LRIT.RENT,0)>0 AND LRIT.FLOWUNID='"+FLOWUNID+"'"; + // 代偿反冲-收到的逾期利息 + }else if("PZ2019071500000031".equals(VOUCHERNO)){ + sql="SELECT IFNULL(LRIT.PENALTY,0) AS MONEY, IFNULL(V8.MONEY,0) AS MONEYNOTAX, ROUND((IFNULL(LRIT.PENALTY,0)-IFNULL(V8.MONEY,0)),2) AS MONEYTAX, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(SYSDATE(),'%Y/%m/%d') AS FACT_DATE, LRP.CONTRACT_ID, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, LRP.PLAN_LIST, LRP.ID AS F58, LCI.CONTRACT_NUMBER, LCI.BUSINESSTYPE, CASE WHEN ( SELECT LRI.EBANK_NUMBER FROM LC_RENT_INCOME LRI WHERE EBANK_NUMBER=IFNULL(LRIT.EBANK_NUMBER,0) AND NOT EXISTS(SELECT 1 FROM LC_RENT_INCOME_TEMP LRIT2 WHERE LRIT2.FLOWUNID='"+FLOWUNID+"' AND LRIT2.CONTRACT_ID=LRI.CONTRACT_ID AND LRIT2.PLAN_LIST=LRI.PLAN_LIST) GROUP BY LRI.EBANK_NUMBER ) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMER_NUM END AS DISTRIBUTOR_ID2, CASE WHEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMERNAME END AS DISTRIBUTOR_NAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST=LRIT.PLAN_LIST LEFT JOIN ( SELECT RENT_PLAN_ID, MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN ( SELECT RENT_PLAN_ID, MAX(ID) AS ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' AND IFNULL(PENALTY,0)>0 GROUP BY RENT_PLAN_ID ) DDI2 ON DDI2.RENT_PLAN_ID=LRP.ID LEFT JOIN LC_EBANK LE ON LE.ID=LRIT.EBANK_NUMBER LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(IFNULL(PENALTY,0)) AS PENALTY FROM LC_RENT_INCOME GROUP BY CONTRACT_ID, PLAN_LIST ) LRI ON LRI.CONTRACT_ID=LRP.CONTRACT_ID AND LRI.PLAN_LIST=LRP.PLAN_LIST LEFT JOIN ( SELECT SUM(F7) AS MONEY, F58, MAX(F65) AS DISTRIBUTOR_CODING, MAX(F61) AS DISTRIBUTOR_NAME FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿-代偿逾期利息%' AND F59=1 GROUP BY F58 ) V8 ON V8.F58=DDI2.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID WHERE LCI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND DDI.ID IS NOT NULL AND IFNULL(LRIT.PENALTY,0)>0 AND LRIT.FLOWUNID='"+FLOWUNID+"'"; + } + rs=Sqlca.getASResultSet(sql); + while(rs.next()){ + MONEY = rs.getString("MONEY"); + MONEYNOTAX = rs.getString("MONEYNOTAX"); + MONEYTAX = rs.getString("MONEYTAX"); + ACCOUNT_DATE = rs.getString("ACCOUNT_DATE"); + FACT_DATE = rs.getString("FACT_DATE"); + CONTRACT_ID = rs.getString("CONTRACT_ID"); + leas_form="01"; + DISTRIBUTOR_ID = rs.getString("DISTRIBUTOR_ID"); + DISTRIBUTOR_NAME = rs.getString("DISTRIBUTOR_NAME"); + DISTRIBUTOR_ID2 = rs.getString("DISTRIBUTOR_ID2"); + DISTRIBUTOR_NAME2 = rs.getString("DISTRIBUTOR_NAME2"); + BUSINESSTYPE = rs.getString("BUSINESSTYPE"); + PLAN_LIST = rs.getString("PLAN_LIST"); + F58 = rs.getString("F58"); + CONTRACT_NUMBER = rs.getString("CONTRACT_NUMBER"); + YES_OR_NO = rs.getString("YES_OR_NO"); + + param.put("FACT_MONEY",MONEY); + param.put("INTERESTNOTAX",MONEYNOTAX); + param.put("TAX",MONEYTAX); + param.put("ACCOUNT_DATE",ACCOUNT_DATE); + param.put("FACT_DATE",FACT_DATE); + param.put("CONTRACT_ID",CONTRACT_ID); + param.put("LEAS_FORM",leas_form); + param.put("CUSTID",DISTRIBUTOR_ID); + param.put("CUSTNAME",DISTRIBUTOR_NAME); + param.put("CUSTID2",DISTRIBUTOR_ID2); + param.put("CUSTNAME2",DISTRIBUTOR_NAME2); + param.put("PLAN_LIST",PLAN_LIST); + param.put("F58",F58); + param.put("CONTRACT_NUMBER",CONTRACT_NUMBER); + param.put("BUSINESSTYPE",BUSINESSTYPE); + param.put("YES_OR_NO",YES_OR_NO); + param.put("VOUCHERNO",VOUCHERNO); + + map.clear(); + map.put("PROJ_TYPE", leas_form); + map.put("VOUCHER_NO", VOUCHERNO); + BizObject vouch=DataOperatorUtil.getSingleJBO(LV_VOUCHER_CONFIG.CLASS_NAME, map, Sqlca); + + if(vouch!=null){ + vs.createVoucher(vouch.getAttribute("id").getString(),vouch.getAttribute("MODULAR_NUMBER").getString(), vouch.getAttribute("OWNED_COMPANY").getString(), leas_form, VOUCHER_TYPE, userid,param, Sqlca); + } + } + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("凭证生成出错!"); + }finally { + if(Sqlca!=null){ + try { + rs.close(); + } catch (SQLException e) { + e.printStackTrace(); + } } - } - if(Sqlca1!=null){ - rs.close(); - Sqlca1.commit(); - Sqlca1.disConnect(); } } } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRedRentIncome.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRedRentIncome.java index d8dd91ea2..aea4cdd9e 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRedRentIncome.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRedRentIncome.java @@ -3,27 +3,20 @@ package com.tenwa.voucher.CreateVoucherProcess; import java.util.HashMap; import java.util.List; import java.util.Map; - import jbo.voucher.LV_VOUCHER_CONFIG; import jbo.voucher.TAX_CODE; - import com.amarsoft.are.jbo.BizObject; -import com.amarsoft.are.jbo.JBOException; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.awe.util.Transaction; -import com.amarsoft.dict.als.cache.CacheLoaderFactory; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; public class CreateVoucherRedRentIncome { - public void CreateVoucher(String FlowUnid,String VOUCHERNO,String userid){ + public void CreateVoucher(Transaction Sqlca,String FlowUnid,String VOUCHERNO,String userid) throws Exception{ - Transaction Sqlca =null; - try{ Map map=new HashMap(); Map param=new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); String MONEY=null; String MONEYNOTAX=null; String MONEYTAX=null; @@ -57,11 +50,9 @@ public class CreateVoucherRedRentIncome { map.put("FLOWUNID", FlowUnid); // 收到的租金 if("PZ2018072100000037".equals(VOUCHERNO) || "PZ2019070100000023".equals(VOUCHERNO)){ - //sql = "SELECT ROUND((getTax (lci.LEAS_FORM,'租金',LCCT.START_DATE) - 1) * 100,0) AS TAX_NUM,IFNULL(LRIT.INTEREST, 0) AS MONEY,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN ROUND(IFNULL(LRIT.INTEREST, 0) / getTax (LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ELSE '0' END AS MONEYNOTAX,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN (IFNULL(LRIT.INTEREST, 0) - ROUND(IFNULL(LRIT.INTEREST, 0) / getTax (LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)) ELSE '0' END AS MONEYTAX,IFNULL(LRIT.RENT,0) AS RENTMONEY,IFNULL(LRIT.CORPUS, 0) AS CORPUS,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN (IFNULL(LRIT.CORPUS,0)-ROUND(IFNULL(LRIT.CORPUS,0)/getTax(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) ELSE '0' END AS CORPUS_TAX,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN ((IFNULL(LRIT.CORPUS, 0) - ROUND(IFNULL(LRIT.CORPUS, 0) / getTax (LCI.LEAS_FORM,'本金',LCCT.START_DATE),2))+(IFNULL(LRIT.INTEREST, 0) - ROUND(IFNULL(LRIT.INTEREST, 0) / getTax (LCI.LEAS_FORM,'租息',LCCT.START_DATE),2))) ELSE '0' END AS CORPUS_ADD_INTEREST_TAX,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN LRIT.INTEREST ELSE '0' END AS INTEREST,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,DI.F_I_TYPE,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME,CIF.CUSTOMERTYPE,LPI.BUSINESSTYPE,LRIT.PLAN_LIST FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LRIT.CONTRACT_ID AND lrp.plan_list = lrit.plan_list LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRIT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND LUL.IS_MAIN = 'Y' AND LRIT.RENT<0 AND LRIT.FLOWUNID = :FLOWUNID "; sql = "SELECT ROUND((getTax(lci.LEAS_FORM,'租金',LCCT.START_DATE) - 1) * 100,0) AS TAX_NUM,IFNULL(LRIT.INTEREST, 0) AS MONEY,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN ROUND(IFNULL(LRIT.INTEREST, 0) / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) ELSE '0' END AS MONEYNOTAX,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN (IFNULL(LRIT.INTEREST, 0) - ROUND(IFNULL(LRIT.INTEREST, 0) / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)) ELSE '0' END AS MONEYTAX,IFNULL(LRIT.RENT, 0) AS RENTMONEY,IFNULL(LRIT.CORPUS, 0) AS CORPUS,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN (IFNULL(LRIT.CORPUS, 0) - ROUND(IFNULL(LRIT.CORPUS, 0) / getTax(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) ELSE '0' END AS CORPUS_TAX,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN ((IFNULL(LRIT.CORPUS, 0) - ROUND(IFNULL(LRIT.CORPUS, 0) / getTax(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) + (IFNULL(LRIT.INTEREST, 0) - ROUND(IFNULL(LRIT.INTEREST, 0) / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2))) ELSE '0' END AS CORPUS_ADD_INTEREST_TAX,CASE WHEN MONTH(NOW()) = MONTH(LRP.PLAN_DATE) THEN LRIT.INTEREST ELSE '0' END AS INTEREST,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,DI.F_I_TYPE,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME,CIF.CUSTOMERTYPE,LPI.BUSINESSTYPE,LRIT.PLAN_LIST,LRP.ID AS F58,CASE WHEN (SELECT MAX(F65) AS F65 FROM VOUCHER_V8 WHERE F58=LRP.ID AND F59=1 AND MODULE_NAME LIKE '%回款-收到的租金(网银)%' GROUP BY F58) IS NOT NULL THEN (SELECT MAX(F65) AS F65 FROM VOUCHER_V8 WHERE F58=LRP.ID AND F59=1 AND MODULE_NAME LIKE '%回款-收到的租金(网银)%' GROUP BY F58) ELSE 'APZL00000000DC' END AS RED_CUSTOMER_NUM,CASE WHEN (SELECT MAX(F61) AS F61 FROM VOUCHER_V8 WHERE F58=LRP.ID AND F59=1 AND MODULE_NAME LIKE '%回款-收到的租金(网银)%' GROUP BY F58) IS NOT NULL THEN (SELECT MAX(F61) AS F61 FROM VOUCHER_V8 WHERE F58=LRP.ID AND F59=1 AND MODULE_NAME LIKE '%回款-收到的租金(网银)%' GROUP BY F58) ELSE '汽车C端待查客户' END AS RED_CUSTOMER_NAME FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LRIT.CONTRACT_ID AND lrp.plan_list = lrit.plan_list LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRIT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND LUL.IS_MAIN = 'Y' AND LRIT.RENT < 0 AND LRIT.FLOWUNID = :FLOWUNID "; // 收到的逾期利息 }else if("PZ2018072100000038".equals(VOUCHERNO) || "PZ2019070100000020".equals(VOUCHERNO)){ - //sql= "SELECT ROUND((getTax(lci.LEAS_FORM,'逾期利息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM,IFNULL(LRIT.PENALTY,0) AS MONEY,ROUND(IFNULL(LRIT.PENALTY,0)/getTax(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2) AS MONEYNOTAX,(IFNULL(LRIT.PENALTY,0)-ROUND(IFNULL(LRIT.PENALTY,0)/getTax(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2)) AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,DI.F_I_TYPE,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME,CIF.CUSTOMERTYPE,LPI.BUSINESSTYPE,LRIT.PLAN_LIST FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRIT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND LUL.IS_MAIN = 'Y' AND IFNULL(LRIT.PENALTY, 0)<0 AND LRIT.FLOWUNID=:FLOWUNID "; sql= "SELECT ROUND((getTax(lci.LEAS_FORM,'逾期利息',LCCT.START_DATE) - 1) * 100,0) AS TAX_NUM,IFNULL(LRIT.PENALTY, 0) AS MONEY,ROUND(IFNULL(LRIT.PENALTY, 0) / getTax(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2) AS MONEYNOTAX,(IFNULL(LRIT.PENALTY, 0) - ROUND(IFNULL(LRIT.PENALTY, 0) / getTax(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2)) AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,DI.F_I_TYPE,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME,CIF.CUSTOMERTYPE,LPI.BUSINESSTYPE,LRIT.PLAN_LIST,LRP.ID AS F58,CASE WHEN (SELECT MAX(F65) AS F65 FROM VOUCHER_V8 WHERE F58=LRP.ID AND F59=1 AND MODULE_NAME LIKE '%回款-收到的租金(网银)%' GROUP BY F58) IS NOT NULL THEN (SELECT MAX(F65) AS F65 FROM VOUCHER_V8 WHERE F58=LRP.ID AND F59=1 AND MODULE_NAME LIKE '%回款-收到的租金(网银)%' GROUP BY F58) ELSE 'APZL00000000DC' END AS RED_CUSTOMER_NUM,CASE WHEN (SELECT MAX(F61) AS F61 FROM VOUCHER_V8 WHERE F58=LRP.ID AND F59=1 AND MODULE_NAME LIKE '%回款-收到的租金(网银)%' GROUP BY F58) IS NOT NULL THEN (SELECT MAX(F61) AS F61 FROM VOUCHER_V8 WHERE F58=LRP.ID AND F59=1 AND MODULE_NAME LIKE '%回款-收到的租金(网银)%' GROUP BY F58) ELSE '汽车C端待查客户' END AS RED_CUSTOMER_NAME FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST=LRIT.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRIT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID = LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE = '1' AND LUL.IS_MAIN = 'Y' AND IFNULL(LRIT.PENALTY, 0) < 0 AND LRIT.FLOWUNID = :FLOWUNID "; // 收到的违约金/罚款 }else if("PZ2018072100000039".equals(VOUCHERNO) || "PZ2019070100000021".equals(VOUCHERNO)) { @@ -173,24 +164,6 @@ public class CreateVoucherRedRentIncome { if(vouch!=null){ vs.createVoucher(vouch.getAttribute("id").getString(),vouch.getAttribute("MODULAR_NUMBER").getString(), vouch.getAttribute("OWNED_COMPANY").getString(), leas_form, VOUCHER_TYPE, userid,param, Sqlca); } - } - - - if(Sqlca!=null){ - Sqlca.commit(); } - - }catch (Exception e){ - e.printStackTrace(); - }finally{ - if(Sqlca!=null){ - try { - Sqlca.disConnect(); - } catch (JBOException e) { - e.printStackTrace(); - } - Sqlca = null; - } - } } } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRentIncome.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRentIncome.java index d943675ee..850470e9d 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRentIncome.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherRentIncome.java @@ -3,10 +3,8 @@ package com.tenwa.voucher.CreateVoucherProcess; import java.util.HashMap; import java.util.List; import java.util.Map; - import jbo.voucher.LV_VOUCHER_CONFIG; import jbo.voucher.TAX_CODE; - import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.JBOException; import com.amarsoft.are.jbo.JBOFactory; @@ -17,11 +15,9 @@ import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; public class CreateVoucherRentIncome { - public void CreateVoucher(String flowunid,String VOUCHERNO,String userid) throws Exception{ - Transaction Sqlca =null; + public void CreateVoucher(Transaction Sqlca, String flowunid,String VOUCHERNO,String userid) throws Exception{ Map map=new HashMap(); Map param=new HashMap(); - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); String MONEY=null; String MONEYNOTAX=null; String MONEYTAX=null; @@ -58,7 +54,7 @@ public class CreateVoucherRentIncome { } else if (("PZ2018080400000081".equals(VOUCHERNO)) || ("PZ2019070100000017".equals(VOUCHERNO))) { sql = "SELECT ROUND((GETTAX(LCI.LEAS_FORM,'租金',LCCT.START_DATE)-1)*100,0) AS TAX_NUM, IFNULL(LRIT.INTEREST,0) AS MONEY, ROUND(IFNULL(LRIT.INTEREST,0)/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) AS MONEYNOTAX, (IFNULL(LRIT.INTEREST,0)-ROUND(IFNULL(LRIT.INTEREST,0)/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)) AS MONEYTAX, IFNULL(LRIT.RENT,0) AS RENTMONEY, IFNULL(LRIT.CORPUS,0) AS CORPUS, DATE_FORMAT(CASE WHEN (LRIT.ACCOUNTING_DATE IS NOT NULL OR LRIT.ACCOUNTING_DATE!='') THEN LRIT.ACCOUNTING_DATE ELSE NOW() END,'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(CASE WHEN (LRIT.HIRE_DATE IS NOT NULL OR LRIT.HIRE_DATE!='') THEN LRIT.HIRE_DATE ELSE NOW() END, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, LRIT.PLAN_LIST, LRP.ID AS F58, CASE WHEN ( SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER=IFNULL(LRIT.EBANK_NUMBER,0) GROUP BY EBANK_NUMBER ) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) WHEN ( SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) WHEN ( SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST=LRIT.PLAN_LIST LEFT JOIN LC_EBANK LE ON LE.ID=LRIT.EBANK_NUMBER LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRIT.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID=LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND IFNULL(LRIT.RENT,0)>0 AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m') AND NOT EXISTS(SELECT DDI.ID FROM D_DEPOSITRETURN_INFO DDI WHERE DDI.MONEY_TYPE='bondRepay' AND DDI.RENT_PLAN_ID=LRP.ID ) AND LRIT.FLOWUNID=:FLOWUNID"; } else if (("PZ2018072100000025".equals(VOUCHERNO)) || ("PZ2019070100000014".equals(VOUCHERNO))) { - sql = "SELECT ROUND((GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM, IFNULL(LRIT.PENALTY,0) AS MONEY, ROUND(IFNULL(LRIT.PENALTY,0)/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2) AS MONEYNOTAX, (IFNULL(LRIT.PENALTY,0)-ROUND(IFNULL(LRIT.PENALTY,0)/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2)) AS MONEYTAX, DATE_FORMAT(CASE WHEN (LRIT.ACCOUNTING_DATE IS NOT NULL OR LRIT.ACCOUNTING_DATE!='') THEN LRIT.ACCOUNTING_DATE ELSE NOW() END,'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(CASE WHEN (LRIT.HIRE_DATE IS NOT NULL OR LRIT.HIRE_DATE!='') THEN LRIT.HIRE_DATE ELSE NOW() END, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, LRIT.PLAN_LIST, LRP.ID AS F58, CASE WHEN ( SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER=IFNULL(LRIT.EBANK_NUMBER,0) GROUP BY EBANK_NUMBER ) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) WHEN ( SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) WHEN ( SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST=LRIT.PLAN_LIST LEFT JOIN LC_EBANK LE ON LE.ID=LRIT.EBANK_NUMBER LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID=LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND IFNULL(LRIT.PENALTY,0)>0 AND NOT EXISTS(SELECT DDI.ID FROM D_DEPOSITRETURN_INFO DDI WHERE DDI.MONEY_TYPE='bondRepay' AND IFNULL(DDI.PENALTY,0)>0 AND DDI.RENT_PLAN_ID=LRP.ID ) AND LRIT.FLOWUNID=:FLOWUNID"; + sql = "SELECT ROUND((GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM, IFNULL(LRIT.PENALTY,0) AS MONEY, ROUND(IFNULL(LRIT.PENALTY,0)/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2) AS MONEYNOTAX, (IFNULL(LRIT.PENALTY,0)-ROUND(IFNULL(LRIT.PENALTY,0)/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2)) AS MONEYTAX, DATE_FORMAT(CASE WHEN (LRIT.ACCOUNTING_DATE IS NOT NULL OR LRIT.ACCOUNTING_DATE!='') THEN LRIT.ACCOUNTING_DATE ELSE NOW() END,'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(CASE WHEN (LRIT.HIRE_DATE IS NOT NULL OR LRIT.HIRE_DATE!='') THEN LRIT.HIRE_DATE ELSE NOW() END, '%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.PROJECT_NAME, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, DI.F_I_TYPE, CIF.CUSTOMER_NUM AS CUSTOMERID, CIF.CUSTOMERNAME, CIF.CUSTOMERTYPE, LPI.BUSINESSTYPE, LRIT.PLAN_LIST, LRP.ID AS F58, CASE WHEN ( SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE EBANK_NUMBER=IFNULL(LRIT.EBANK_NUMBER,0) GROUP BY EBANK_NUMBER ) IS NULL THEN 'YES' ELSE 'NO' END AS YES_OR_NO, CASE WHEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMER_NUM FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) WHEN ( SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID2, CASE WHEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT CUSTOMERNAME FROM CUSTOMER_INFO WHERE CUSTOMERID=LE.CUSTOMER_ID ) WHEN ( SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE DISTRIBUTOR_NO=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME2 FROM LC_RENT_INCOME_TEMP LRIT LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRIT.CONTRACT_ID AND LRP.PLAN_LIST=LRIT.PLAN_LIST LEFT JOIN LC_EBANK LE ON LE.ID=LRIT.EBANK_NUMBER LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID=LUL.PROJECT_ID WHERE LPI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND IFNULL(LRIT.PENALTY,0)>0 AND NOT EXISTS(SELECT DDI.ID FROM D_DEPOSITRETURN_INFO DDI WHERE DDI.MONEY_TYPE='bondRepay' AND DDI.RENT_PLAN_ID=LRP.ID) AND LRIT.FLOWUNID=:FLOWUNID"; } @@ -148,8 +144,5 @@ public class CreateVoucherRentIncome { vs.createVoucher(vouch.getAttribute("id").getString(),vouch.getAttribute("MODULAR_NUMBER").getString(), vouch.getAttribute("OWNED_COMPANY").getString(), leas_form, VOUCHER_TYPE, userid,param, Sqlca); } } - if(Sqlca!=null){ - Sqlca.commit(); - } } } diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/EarlyContract.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/EarlyContract.java new file mode 100644 index 000000000..717846855 --- /dev/null +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/EarlyContract.java @@ -0,0 +1,898 @@ +package com.tenwa.voucher.CreateVoucherProcess; + +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import com.amarsoft.are.jbo.BizObject; +import com.amarsoft.are.jbo.BizObjectManager; +import com.amarsoft.are.jbo.JBOException; +import com.amarsoft.are.jbo.JBOFactory; +import com.amarsoft.are.jbo.JBOTransaction; +import com.amarsoft.awe.util.SqlObject; +import com.amarsoft.awe.util.Transaction; +import com.tenwa.comm.util.date.DateAssistant; +import com.tenwa.jbo.manager.DataUtil; +import com.tenwa.reckon.bean.TabCalBean; +import com.tenwa.reckon.util.DateUtil; +import com.tenwa.reckon.util.TbBeanTools; +import com.tenwa.reckon.util.UUIDUtil; + +public class EarlyContract { + + // 流程编号 + private String flowunid; + // 租赁物编号 + private String IDS; + // 提出日期 + private String PAYDAY_ADJUST; + // 提请结清租赁物占比 + private String REPURCHASE_RATIO; + // 合同ID + private String contractId; + // 合同年利率 + private String YEAR_RATE; + // 变更类型 + private String ADJUST_TYPE; + // 商定逾期罚息 + private String AGREED_PENALTY; + // 其它应收 + private String OTHER_IN; + // 投放编号 + private String plannumber; + // 产品编号 + private String productId; + // + private String calType; + // + private String planList; + //结清方式 + private String SettleMethod; + + public String getSettleMethod() { + return SettleMethod; + } + + public void setSettleMethod(String settleMethod) { + SettleMethod = settleMethod; + } + + public String getPlanList() { + return planList; + } + + public void setPlanList(String planList) { + this.planList = planList; + } + + public String getCalType() { + return calType; + } + + + public void setCalType(String calType) { + this.calType = calType; + } + + + public String getPlannumber() { + return plannumber; + } + + + public void setPlannumber(String plannumber) { + this.plannumber = plannumber; + } + + + public String getProductId() { + return productId; + } + + + public void setProductId(String productId) { + this.productId = productId; + } + + + public String getPAYDAY_ADJUST() { + return PAYDAY_ADJUST; + } + + + public void setPAYDAY_ADJUST(String pAYDAY_ADJUST) { + PAYDAY_ADJUST = pAYDAY_ADJUST; + } + + + public String getREPURCHASE_RATIO() { + return REPURCHASE_RATIO; + } + + + public void setREPURCHASE_RATIO(String rEPURCHASE_RATIO) { + REPURCHASE_RATIO = rEPURCHASE_RATIO; + } + + + public String getContractId() { + return contractId; + } + + + public void setContractId(String contractId) { + this.contractId = contractId; + } + + + public String getYEAR_RATE() { + return YEAR_RATE; + } + + + public void setYEAR_RATE(String yEAR_RATE) { + YEAR_RATE = yEAR_RATE; + } + + + public String getADJUST_TYPE() { + return ADJUST_TYPE; + } + + + public void setADJUST_TYPE(String aDJUST_TYPE) { + ADJUST_TYPE = aDJUST_TYPE; + } + + + public String getAGREED_PENALTY() { + return AGREED_PENALTY; + } + + + public void setAGREED_PENALTY(String aGREED_PENALTY) { + AGREED_PENALTY = aGREED_PENALTY; + } + + + public String getOTHER_IN() { + return OTHER_IN; + } + + + public void setOTHER_IN(String oTHER_IN) { + OTHER_IN = oTHER_IN; + } + + + public String getFlowunid() { + return flowunid; + } + + + public void setFlowunid(String flowunid) { + this.flowunid = flowunid; + } + + + public String getIDS() { + return IDS; + } + + + public void setIDS(String iDS) { + IDS = iDS; + } + + //校验约定终止日 + public String timeInfo(JBOTransaction tx) { + String ret = "true"; + String time = ""; + Date date1=null; + Date date2=null; + Date date4=null; + Date date5=null; + //获取当前日期 + Date date3 = new Date(); + Transaction Sqlca = null; + try { + Sqlca = Transaction.createTransaction(tx); + //获取到本月租金计划还款时间 + time = Sqlca.getString("select PLAN_DATE from lc_rent_plan_temp lrpt where FLOWUNID = '"+flowunid+"' and substr(PLAN_DATE,1,7) = (select DATE_FORMAT(now(),'%Y/%m') from dual)"); + Calendar c = Calendar.getInstance(); + Calendar b = Calendar.getInstance(); + SimpleDateFormat formatter=new SimpleDateFormat("yyyy/MM/dd"); + SimpleDateFormat mon=new SimpleDateFormat("yyyy/MM"); + //将本月租金计划还款时间转为时间格式 + date1=formatter.parse(time); + //将约定终止日转化为时间格式 + date2=formatter.parse(PAYDAY_ADJUST); + c.setTime(date1); + b.setTime(date2); + //获取下月租金计划还款时间月份 + c.add(Calendar.MONTH, 1); + b.add(Calendar.MONTH, 0); + String t1 = formatter.format(date3); + date3 = formatter.parse(t1); + + String lastMonth1 = mon.format(c.getTime()); + date4 = mon.parse(lastMonth1); + //获取约定终止日月份 + String lastMonth2 = mon.format(b.getTime()); + date5 = mon.parse(lastMonth2); + + if(date4.before(date5)) { + ret = "false"; + } + + }catch(Exception e){ + ret = "false"; + } + return ""+ret+""; + } + + + /** + * 获取租赁物比重 + */ + public String getReductionRatio(JBOTransaction tx) { + Transaction Sqlca = null; + String REDUCTION_RATIO=""; + try { + Sqlca = Transaction.createTransaction(tx); + String idss=""; + if(IDS!=null && !"".equals(IDS)) { + String[] ids = IDS.split("@~"); + for (String id : ids) { + if("".equals(idss)) { + idss="'"+id+"'"; + }else { + idss+=",'"+id+"'"; + } + } + } + // 获取租赁物-增融后租赁物价格(元) + REDUCTION_RATIO = Sqlca.getString("select EQUIP_PRICE as REDUCTION_RATIO from (select SUM(retainfield2) as EQUIP_PRICE from LB_EQUIPMENT_CAR_TEMP where ID in ("+idss+") and FLOWUNID = '"+flowunid+"' group by CONTRACT_ID ) LECT"); + REDUCTION_RATIO = new BigDecimal(REDUCTION_RATIO).multiply(new BigDecimal(100)).toString(); + DecimalFormat df = new DecimalFormat("#.00"); + REDUCTION_RATIO = df.format(Double.valueOf(REDUCTION_RATIO.toString())); + } catch (Exception e) { + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + }finally { + if(Sqlca!=null) { + try { + Sqlca.disConnect(); + Sqlca=null; + } catch (JBOException e) { + e.printStackTrace(); + } + } + } + return ""+REDUCTION_RATIO+""; + } + + + /* + * 获取留购价金额 + * */ + public String getPrice(JBOTransaction tx){ + Transaction Sqlca = null; + String NOMINAL_PRICE=""; + + try { + Sqlca = Transaction.createTransaction(tx); + String idss=""; + // 单车留购价 + String PRICE = Sqlca.getString("select ifnull(lcct.NOMINAL_PRICE,1)/ ifnull(t.um,1) from lc_calc_condition_temp lcct left join (select count(id) as um from lb_equipment_car_temp lect where FLOWUNID = '"+flowunid+"') t on 1 = 1 where FLOWUNID = '"+flowunid+"'"); + double i = 0; + if(IDS!=null && !"".equals(IDS)) { + String[] ids = IDS.split("@~"); + for (String id : ids) { + if("".equals(idss)) { + i = i+1; + idss="'"+id+"'"; + }else { + i = i+1; + idss+=",'"+id+"'"; + } + } + } + NOMINAL_PRICE = String.valueOf(i*Double.valueOf(PRICE)); + } catch (Exception e) { + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + } + return ""+NOMINAL_PRICE+""; + } + + + //判断本次部分结清是否选取完全部车辆 + public String getYesNo(JBOTransaction tx) { + Transaction Sqlca = null; + String YesNo = ""; + try { + Sqlca = Transaction.createTransaction(tx); + String idss=""; + if(IDS!=null && !"".equals(IDS)) { + String[] ids = IDS.split("@~"); + for (String id : ids) { + if("".equals(idss)) { + idss="'"+id+"'"; + }else { + idss+=",'"+id+"'"; + } + } + } + YesNo = Sqlca.getString("select case when count(id)=0 then 'Y' else 'N' end from lb_equipment_car_temp lect where FLOWUNID = '"+flowunid+"' and id not in ("+idss+") and (TERMINATE_TYPE = '1' or TERMINATE_TYPE is null)"); + }catch(Exception e) { + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + } + return ""+YesNo+""; + } + + // 判断合同是否为部分结清 + public String Countnum(JBOTransaction tx) { + String Countnum = ""; + Transaction Sqlca = null; + try { + Sqlca = Transaction.createTransaction(tx); + Countnum = Sqlca.getString("select count(*) from lc_rent_plan where CONTRACT_ID = '"+contractId+"' and MEMO = '部分结清' "); + }catch(Exception e) { + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + } + + return ""+Countnum+""; + } + + + + //全部结清更新租赁物临时表 + public void alterdata(JBOTransaction tx) { + Transaction Sqlca = null; + try { + Sqlca = Transaction.createTransaction(tx); + String sql="UPDATE LB_EQUIPMENT_CAR_TEMP SET TERMINATE_TYPE='3' WHERE (TERMINATE_TYPE IS NULL OR TERMINATE_TYPE='1') AND FLOWUNID='"+flowunid+"' "; + Sqlca.executeSQL(sql); + Sqlca.commit(); + }catch(Exception e) { + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + } + } + + + + /** + * 全部结清,将租赁物等于未结清的标记为本次结清,如果是部分结清,将选中租赁物标记为本次结清 + */ + @SuppressWarnings("deprecation") + public String setEquipmentTerminateStatus(JBOTransaction tx) { + Transaction Sqlca = null; + String succeed="true"; + try { + Sqlca = Transaction.createTransaction(tx); + /** + * 每次选择全部结清与部分结清,初始化租赁物状态 + */ + String sql1="UPDATE LB_EQUIPMENT_CAR_TEMP SET TERMINATE_TYPE='1',SETTLE_STATUS='1' WHERE FLOWUNID='"+flowunid+"' AND ifnull(TERMINATE_TYPE,'1') <> '2' "; + Sqlca.executeSQL(sql1); + String sql2="UPDATE LB_EQUIPMENT_CAR_TEMP SET TERMINATE_TYPE='3' WHERE FLOWUNID='"+flowunid+"'"; + // 部分结清将选中的变更为本次结清 + if(IDS!=null && !"".equals(IDS)) { + String[] ids = IDS.split("@~"); + String idss=""; + for (String id : ids) { + if("".equals(idss)) { + idss="'"+id+"'"; + }else { + idss+=",'"+id+"'"; + } + } + sql2 = sql2+" AND ID IN("+idss+")"; + Sqlca.executeSQL(sql2); + // 全部结清,将未结清租赁物全部转入本次结清租赁物 + }else { + Sqlca.executeSQL(sql1); + } + Sqlca.commit(); + } catch (Exception e) { + succeed="false"; + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + }finally { + if(Sqlca!=null) { + try { + Sqlca.disConnect(); + Sqlca=null; + } catch (JBOException e) { + e.printStackTrace(); + } + } + } + return ""+succeed+""; + } + + + // 提前结清撤销是变更租赁物状态 + @SuppressWarnings("deprecation") + public String setEquipStatus(JBOTransaction tx) { + Transaction Sqlca = null; + String succeed="true"; + try { + Sqlca = Transaction.createTransaction(tx); + /** + * 每次选择全部结清与部分结清,初始化租赁物状态 + */ + String sql1="UPDATE LB_EQUIPMENT_CAR_TEMP SET TERMINATE_TYPE='1',SETTLE_STATUS='1' WHERE FLOWUNID='"+flowunid+"' AND ifnull(TERMINATE_TYPE,'1') <> '2' "; + Sqlca.executeSQL(sql1); + Sqlca.executeSQL("delete from lc_rent_income_temp where FLOWUNID = '"+flowunid+"'"); + Sqlca.commit(); + + } catch (Exception e) { + succeed="false"; + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + }finally { + if(Sqlca!=null) { + try { + Sqlca.disConnect(); + Sqlca=null; + } catch (JBOException e) { + e.printStackTrace(); + } + } + } + return ""+succeed+""; + } + + + /** + * 获取结清金额数据 + */ + public String getSettlementMoney(JBOTransaction tx){ + Transaction Sqlca = null; + try{ + Sqlca = Transaction.createTransaction(tx); + // 剩余本金- 本次结清车辆约定终止日,次月后所有本金 + String CORPUS_OVERAGE = Sqlca.getString("select sum(CORPUS) from lc_rent_plan lrp where STR_TO_DATE(lrp.PLAN_DATE, '%Y/%m/%d')> STR_TO_DATE('"+PAYDAY_ADJUST+"', '%Y/%m/%d') and lrp.CONTRACT_ID = '"+contractId+"'"); + if(CORPUS_OVERAGE == null) { + CORPUS_OVERAGE="0.00"; + } + // 部分结清车辆未到期本金- 本次结清车辆约定终止日,次月后所有本金 + BigDecimal cd = new BigDecimal(Double.parseDouble(CORPUS_OVERAGE)*Double.parseDouble(REPURCHASE_RATIO)/100); + double t1 = cd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + String PREMATURE_MONEY = Double.toString(t1); + if(PREMATURE_MONEY == null) { + PREMATURE_MONEY="0.00"; + } + // 剩余车辆未到期本金- 本次结清车辆约定终止日,次月后所有本金 + BigDecimal bg = new BigDecimal(Double.parseDouble(CORPUS_OVERAGE) - Double.parseDouble(PREMATURE_MONEY)); + double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + String RESIDUE_MONEY = Double.toString(f1); + if(RESIDUE_MONEY == null) { + RESIDUE_MONEY="0.00"; + } + // 逾期租金- 本次结清车辆截止约定终止日(上月)所有逾期租金 + String DUN_RENT = Sqlca.getString("select ifnull(sum(round(ifnull(ifnull(LRP.RENT,0),0) - ifnull(ifnull(LRI.RENT,0),0),2)),0) as OVER_RENT from LC_RENT_PLAN LRP left join (select CONTRACT_ID,PLAN_LIST,SUM(ifnull(RENT, 0)) as RENT from LC_RENT_INCOME group by CONTRACT_ID,PLAN_LIST ) LRI on LRI.CONTRACT_ID = LRP.CONTRACT_ID and LRP.PLAN_LIST = LRI.PLAN_LIST where STR_TO_DATE(LRP.PLAN_DATE,'%Y/%m/%d') < STR_TO_DATE('"+PAYDAY_ADJUST+"','%Y/%m/%d') and LRP.CONTRACT_ID = '"+contractId+"'"); + if(DUN_RENT == null) { + DUN_RENT="0.00"; + } + // return CORPUS_OVERAGE+"@"+PREMATURE_MONEY+"@"+RESIDUE_MONEY+"@"+DUN_RENT+"; + return ""+CORPUS_OVERAGE+"@"+PREMATURE_MONEY+"@"+RESIDUE_MONEY+"@"+DUN_RENT+""; + }catch(Exception e){ + e.printStackTrace(); + return "ERR"; + } + + } + + + //提前部分结清只能发起一次 + public String getdisposable(JBOTransaction tx){ + Transaction Sqlca = null; + String disposable = ""; + try { + Sqlca = Transaction.createTransaction(tx); + //获取合同租赁物是否发起过提前部分结清 + disposable = Sqlca.getString("select case when count(*)>0 then 'true' else 'false' end from apzl.lb_equipment_car_temp where FLOWUNID = '"+flowunid+"' and TERMINATE_TYPE = '2'"); + }catch(Exception e) { + e.printStackTrace(); + } + return ""+disposable+""; + } + + + @SuppressWarnings("unchecked") + public String partSettlement(JBOTransaction tx){ + com.amarsoft.awe.util.Transaction Sqlca = null; + try{ + TabCalBean bean = TbBeanTools.getTabInfoTrans(calType, flowunid,plannumber,productId,tx); + BigDecimal t = new BigDecimal( "0.01" ); + BigDecimal zero = new BigDecimal(0); + Sqlca = com.amarsoft.awe.util.Transaction.createTransaction(tx); + //本次结清租赁物比例 + String equipmentRatio = REPURCHASE_RATIO; + String paydayAdjust = PAYDAY_ADJUST; + BigDecimal equipmentRatio2 = new BigDecimal(equipmentRatio).divide(new BigDecimal(100)); + + BizObjectManager lfratBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_RENT_ADJUST_TEMP",Sqlca); + BizObject lfrat = lfratBm.createQuery("FLOWUNID='"+flowunid+"'").getSingleResult(true); + String CONTRACT_ID = Sqlca.getString("SELECT lci.id FROM lb_contract_info_temp lcit left join lb_contract_info lci on lci.CONTRACT_NO = lcit.CONTRACT_NO where lcit.FLOWUNID='"+flowunid+"'"); + String adjustType = lfrat.getAttribute("ADJUST_TYPE").toString(); + + // 获取网银 + String EBANK_NUMBER = Sqlca.getString("SELECT LE.ID FROM LC_EBANK_TEMP LET LEFT JOIN LC_EBANK LE ON LE.EBANK_NUMBER=LET.EBANK_NUMBER where LET.FLOWUNID='"+flowunid+"'"); + String FACT_DATE = Sqlca.getString("SELECT FACT_DATE FROM LC_EBANK_TEMP LET where LET.FLOWUNID='"+flowunid+"'"); +// String MAXIMUM_TOTAL = lfrat.getAttribute("MAXIMUM_TOTAL").getString(); +// String RECEIVABLE_MONEY02 = MAXIMUM_TOTAL; +// //String OPEN_MONEY = lfrat.getAttribute("OPEN_MONEY").getString(); +// // 判断结清类型是否为提前结清 +// if("01".equals(adjustType)){ +// Sqlca.executeSQL(new SqlObject("update LC_EBANK_TEMP let set HAD_MONEY = HAD_MONEY+"+RECEIVABLE_MONEY02+",MAYOPE_MONEY=MAYOPE_MONEY-"+RECEIVABLE_MONEY02+" where LET.FLOWUNID = '" +flowunid+ "'") ); +// }else if("coerce_terminate".equals(adjustType)){ +// Sqlca.executeSQL(new SqlObject("update LC_EBANK_TEMP let set HAD_MONEY = HAD_MONEY+MAYOPE_MONEY,MAYOPE_MONEY=MAYOPE_MONEY-MAYOPE_MONEY where LET.FLOWUNID = '" +flowunid+ "'") ); +// } + /** + * 变更租金计划表 + */ + // 获取日期大于约定终止日所在月的租金计划,按比例算出每期租金,本金,利息,在约定终止日那一月汇总后边的 + String planlist = Sqlca.getString("select max(PLAN_LIST) from LC_RENT_PLAN where CONTRACT_ID = '"+contractId+"' and STR_TO_DATE(PLAN_DATE,'%Y/%m/%d')<= STR_TO_DATE('"+paydayAdjust+"','%Y/%m/%d')"); + BizObjectManager lrptBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_RENT_PLAN_TEMP",Sqlca); + List lrptBoList = lrptBm.createQuery("FLOWUNID='"+flowunid+"' and plan_list >= '"+planlist+"' order by plan_list desc").getResultList(true); + //查询结清租金 +// BigDecimal tax = new BigDecimal( bean.getTax() ).multiply( t ); +// BigDecimal other = new BigDecimal( bean.getOther() ).multiply( t ).add( BigDecimal.ONE ); + // 获取该合同约定终止日所在月开始所有本金 + String SUM_CORPUS = Sqlca.getString("SELECT ifnull(SUM(ifnull(CORPUS,0)),0) FROM LC_RENT_PLAN WHERE CONTRACT_ID='"+contractId+"' AND date_format(STR_TO_DATE(PLAN_DATE,'%Y/%m/%d'),'%Y/%m/%d')>date_format(STR_TO_DATE('"+paydayAdjust+"','%Y/%m/%d'),'%Y/%m/%d')"); + // 未结清租金 + BigDecimal now_rent = new BigDecimal(0); + // 未结清本金 + BigDecimal now_corpus = new BigDecimal(0); + // 结清日最近的一期租金 + BigDecimal end_rent = new BigDecimal(0); + // 结清日最近的一期本金 + BigDecimal end_corpus = new BigDecimal(0); + // 结清日最近的一期利息 + BigDecimal end_interest = new BigDecimal(0); + String last_plan_date = ""; + for(int i=0; iifnull(LRI.RENT,0) order by LRPT.PLAN_LIST"; + }else{ + sql = "select ifnull(LRPT.RENT,0)-ifnull(LRI.RENT,0) as OVER_RENT,ifnull(LRPT.CORPUS,0)-ifnull(LRI.CORPUS,0) as OVER_CORPUS,ifnull(LRPT.INTEREST,0)-ifnull(LRI.INTEREST,0) as OVER_INTEREST,LRPT.PLAN_LIST as PLAN_LIST,LRPT.PLAN_DATE as PLAN_DATE,LRP.PLAN_ID,date_format(now() ,'%Y/%m/%d') as ACCOUNTING_DATE,date_format(now(),'%Y/%m/%d %h:%m:%s') as INPUTTIME from(select MAX(ID) as PLAN_ID,CONTRACT_ID,PLAN_LIST,MAX(PLAN_DATE) as PLAN_DATE,SUM(RENT) as RENT,SUM(CORPUS) as CORPUS,SUM(INTEREST) as INTEREST from LC_RENT_PLAN_TEMP where FLOWUNID = '"+flowunid+"' and CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST ) LRPT left join (select CONTRACT_ID,PLAN_LIST,MAX(ID) as PLAN_ID from LC_RENT_PLAN where CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST )LRP on LRP.CONTRACT_ID = LRPT.CONTRACT_ID and LRP.PLAN_LIST = LRPT.PLAN_LIST left join (select CONTRACT_ID,PLAN_LIST,SUM(RENT) as RENT,SUM(CORPUS) as CORPUS,SUM(INTEREST) as INTEREST from LC_RENT_INCOME where CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST ) LRI on LRI.CONTRACT_ID = LRPT.CONTRACT_ID and LRI.PLAN_LIST = LRPT.PLAN_LIST where ifnull(LRPT.RENT,0)>ifnull(LRI.RENT,0) and LRPT.PLAN_DATE <= '"+last_plan_date+"' order by LRPT.PLAN_LIST "; + } + /** + * 保证金抵扣留购价款 (强制结清不核销留购价) + */ + BigDecimal REPURCHASE_MONEY = new BigDecimal(lfrat.getAttribute("REPURCHASE_MONEY").toString()); + + /** + * 处理资金计划表-其他应收 + */ + BigDecimal OTHER_IN = new BigDecimal(lfrat.getAttribute("OTHER_IN").toString()); + String OTHER_IN_ID = UUID.randomUUID().toString().replaceAll("-",""); + if(OTHER_IN.compareTo(zero)>0) { + BizObject lfptBo = lfptBm.newObject(); + lfptBo.setAttributeValue("ID",OTHER_IN_ID); + lfptBo.setAttributeValue("PROJECT_ID",lrptBo2.getAttribute("PROJECT_ID")); + lfptBo.setAttributeValue("PROJECT_PLAN_NUMBER",lrptBo2.getAttribute("PROJECT_PLAN_NUMBER")); + lfptBo.setAttributeValue("CONTRACT_ID",lrptBo2.getAttribute("CONTRACT_ID")); + lfptBo.setAttributeValue("CONTRACT_PLAN_NUMBER",lrptBo2.getAttribute("CONTRACT_PLAN_NUMBER")); + lfptBo.setAttributeValue("PAYMENT_NUMBER",lrptBo2.getAttribute("PAYMENT_NUMBER")); + lfptBo.setAttributeValue("PLAN_LIST","1"); + lfptBo.setAttributeValue("PAY_TYPE","pay_type_in"); + lfptBo.setAttributeValue("FEE_TYPE","feetype8"); + lfptBo.setAttributeValue("SETTLE_METHOD","settlemethod6"); + lfptBo.setAttributeValue("PLAN_DATE",paydayAdjust); + lfptBo.setAttributeValue("PLAN_MONEY",OTHER_IN.toString()); + lfptBo.setAttributeValue("FLOWUNID",flowunid); + lfptBo.setAttributeValue("INPUTTIME",DateUtil.getSystemDateTime()); + lfptBm.saveObject(lfptBo); + } + BigDecimal OTHER_OUT = new BigDecimal(lfrat.getAttribute("OTHER_OUT").toString()); + String OTHER_OUT_ID = UUID.randomUUID().toString().replaceAll("-",""); + if(OTHER_OUT.compareTo(zero)>0) { + BizObject lfptBo = lfptBm.newObject(); + lfptBo.setAttributeValue("ID",OTHER_OUT_ID); + lfptBo.setAttributeValue("PROJECT_ID",lrptBo2.getAttribute("PROJECT_ID")); + lfptBo.setAttributeValue("PROJECT_PLAN_NUMBER",lrptBo2.getAttribute("PROJECT_PLAN_NUMBER")); + lfptBo.setAttributeValue("CONTRACT_ID",lrptBo2.getAttribute("CONTRACT_ID")); + lfptBo.setAttributeValue("CONTRACT_PLAN_NUMBER",lrptBo2.getAttribute("CONTRACT_PLAN_NUMBER")); + lfptBo.setAttributeValue("PAYMENT_NUMBER",lrptBo2.getAttribute("PAYMENT_NUMBER")); + lfptBo.setAttributeValue("PLAN_LIST","1"); + lfptBo.setAttributeValue("PAY_TYPE","pay_type_out"); + lfptBo.setAttributeValue("FEE_TYPE","feetype11"); + lfptBo.setAttributeValue("SETTLE_METHOD","settlemethod6"); + lfptBo.setAttributeValue("PLAN_DATE",paydayAdjust); + lfptBo.setAttributeValue("PLAN_MONEY",OTHER_OUT.toString()); + lfptBo.setAttributeValue("FLOWUNID",flowunid); + lfptBo.setAttributeValue("INPUTTIME",DateUtil.getSystemDateTime()); + lfptBm.saveObject(lfptBo); + } + + + /** + * 租金实收表操作 + */ + sql = "SELECT ifnull(LRPT.RENT,0)-ifnull(LRI.RENT,0)-ifnull(LRIT.RENT,0) AS OVER_RENT, ifnull(LRPT.CORPUS,0)-ifnull(LRI.CORPUS,0)-ifnull(LRIT.CORPUS,0) AS OVER_CORPUS, ifnull(LRPT.INTEREST,0)-ifnull(LRI.INTEREST,0)-ifnull(LRIT.INTEREST,0) AS OVER_INTEREST, LRPT.PLAN_LIST AS PLAN_LIST, LRPT.PLAN_DATE AS PLAN_DATE, LRP.PLAN_ID, date_format(now(),'%Y/%m/%d') AS ACCOUNTING_DATE, date_format(now(),'%Y/%m/%d %h:%m:%s') AS INPUTTIME FROM ( SELECT MAX(ID) AS PLAN_ID, CONTRACT_ID, PLAN_LIST, MAX(PLAN_DATE) AS PLAN_DATE, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_PLAN_TEMP WHERE FLOWUNID='"+flowunid+"' AND CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRPT LEFT JOIN (SELECT CONTRACT_ID, PLAN_LIST, MAX(ID) AS PLAN_ID FROM LC_RENT_PLAN WHERE CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST )LRP ON LRP.CONTRACT_ID=LRPT.CONTRACT_ID AND LRP.PLAN_LIST=LRPT.PLAN_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_INCOME WHERE CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRI ON LRI.CONTRACT_ID=LRPT.CONTRACT_ID AND LRI.PLAN_LIST=LRPT.PLAN_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_INCOME_TEMP WHERE CONTRACT_ID='"+contractId+"' and FLOWUNID='"+flowunid+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRIT ON LRIT.CONTRACT_ID=LRPT.CONTRACT_ID AND LRIT.PLAN_LIST=LRPT.PLAN_LIST WHERE ifnull(LRPT.RENT,0)>(ifnull(LRI.RENT,0)+ifnull(LRIT.RENT,0)) AND LRPT.PLAN_LIST<=(SELECT MIN(PLAN_LIST) FROM LC_RENT_PLAN_TEMP WHERE FLOWUNID='"+flowunid+"' AND date_format(STR_TO_DATE(PLAN_DATE,'%Y/%m/%d'),'%Y/%m/%d')>=date_format(STR_TO_DATE('"+paydayAdjust+"','%Y/%m/%d'),'%Y/%m/%d')) ORDER BY LRPT.PLAN_LIST"; + List> dataList = DataUtil.query(sql, Sqlca); + for(int i=0; i ifnull(LRI.RENT,0)or vlrp.PENALTY_OVER>0) and LRPT.PLAN_LIST = '"+PLAN_LIST+"' order by LRPT.PLAN_LIST"; + List> dataOverList = DataUtil.query(overSql, Sqlca); + BigDecimal plan_rent = new BigDecimal(dataOverList.get(0).get("OVER_RENT")); + BigDecimal plan_corpus = new BigDecimal(dataOverList.get(0).get("OVER_CORPUS")); + String factSql = "SELECT CONTRACT_ID, PLAN_LIST, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_INCOME_TEMP WHERE CONTRACT_ID='"+contractId+"' and FLOWUNID='"+flowunid+"' and plan_list='"+PLAN_LIST+"' GROUP BY CONTRACT_ID, PLAN_LIST"; + List> dataFactList = DataUtil.query(factSql, Sqlca); + BigDecimal old_rent = new BigDecimal(0); + BigDecimal old_corpus = new BigDecimal(0); + if(dataFactList.size()>0){ + old_rent = new BigDecimal(dataFactList.get(0).get("RENT")); + old_corpus = new BigDecimal(dataFactList.get(0).get("CORPUS")); + } + over_rent=plan_rent.setScale(2,BigDecimal.ROUND_HALF_UP).subtract(old_rent); + over_corpus=plan_corpus.setScale(2,BigDecimal.ROUND_HALF_UP).subtract(old_corpus); + //提交结清收取逾期利息,强制结清不收利息 + if("SETTLE_METHOD02".equals(SettleMethod)){ + over_interest=over_rent.subtract(over_corpus); + }else{ + over_rent=over_corpus; + } + } + + + if(over_rent.compareTo(BigDecimal.ZERO)!=0){ + BizObject lritBo = lritBm.newObject(); + lritBo.setAttributeValue("PROJECT_ID",lrptBo2.getAttribute("PROJECT_ID")); + lritBo.setAttributeValue("PROJECT_PLAN_NUMBER",lrptBo2.getAttribute("PROJECT_PLAN_NUMBER")); + lritBo.setAttributeValue("CONTRACT_ID",lrptBo2.getAttribute("CONTRACT_ID")); + lritBo.setAttributeValue("CONTRACT_PLAN_NUMBER",lrptBo2.getAttribute("CONTRACT_PLAN_NUMBER")); + lritBo.setAttributeValue("PAYMENT_NUMBER",lrptBo2.getAttribute("PAYMENT_NUMBER")); + lritBo.setAttributeValue("PLAN_LIST",PLAN_LIST); + lritBo.setAttributeValue("PLAN_ID",PLAN_ID); + lritBo.setAttributeValue("RENT",over_rent.toString()); + lritBo.setAttributeValue("CORPUS",over_corpus.toString()); + lritBo.setAttributeValue("INTEREST",over_interest.toString()); + lritBo.setAttributeValue("PENALTY",over_penalty); + lritBo.setAttributeValue("HIRE_LIST",getHireList(lrptBo2.getAttribute("PAYMENT_NUMBER").toString(),PLAN_LIST,Sqlca)); + lritBo.setAttributeValue("HIRE_DATE",FACT_DATE); + lritBo.setAttributeValue("CORPUS_ADJUST","0.00"); + lritBo.setAttributeValue("INTEREST_ADJUST","0.00"); + lritBo.setAttributeValue("PENALTY_ADJUST","0.00"); + lritBo.setAttributeValue("SETTLE_METHOD","settlemethod6"); + lritBo.setAttributeValue("DEDUCTION_ID",""); + lritBo.setAttributeValue("ACCOUNTING_DATE",paydayAdjust); + lritBo.setAttributeValue("ROLL_BACK","0"); + lritBo.setAttributeValue("FLOWUNID",flowunid); + lritBo.setAttributeValue("IS_FLOWING","0"); + lritBo.setAttributeValue("INPUTTIME",INPUTTIME); + lritBo.setAttributeValue("EBANK_NUMBER",EBANK_NUMBER); + lritBm.saveObject(lritBo); + } + } + + + /** + * 处理保证金未抵扣的留购价款 + */ + BizObject boLFP = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_PLAN",tx).createQuery("CONTRACT_ID='"+CONTRACT_ID+"' and FEE_TYPE='feetype4'").getSingleResult(false); + if(!"coerce_terminate".equals(adjustType)){ + if(REPURCHASE_MONEY.compareTo(BigDecimal.ZERO)!=0){ + BizObject lfitBo2 = lfitBm.newObject(); + lfitBo2.setAttributeValue("ID", UUIDUtil.getUUID()); + lfitBo2.setAttributeValue("PROJECT_ID",boLFP.getAttribute("PROJECT_ID").getString()); + lfitBo2.setAttributeValue("PROJECT_PLAN_NUMBER",boLFP.getAttribute("PROJECT_PLAN_NUMBER").getString()); + lfitBo2.setAttributeValue("CONTRACT_ID",boLFP.getAttribute("CONTRACT_ID").getString()); + lfitBo2.setAttributeValue("CONTRACT_PLAN_NUMBER",boLFP.getAttribute("CONTRACT_PLAN_NUMBER").getString()); + lfitBo2.setAttributeValue("PAYMENT_NUMBER",boLFP.getAttribute("PAYMENT_NUMBER").getString()); + lfitBo2.setAttributeValue("PLAN_ID",boLFP.getAttribute("ID").getString()); + lfitBo2.setAttributeValue("PLAN_LIST","1"); + lfitBo2.setAttributeValue("PAY_TYPE","pay_type_in"); + lfitBo2.setAttributeValue("FEE_TYPE","feetype4"); + lfitBo2.setAttributeValue("SETTLE_METHOD","settlemethod6"); + lfitBo2.setAttributeValue("CHARGE_LIST","1"); + lfitBo2.setAttributeValue("FACT_DATE",paydayAdjust); + lfitBo2.setAttributeValue("FACT_MONEY",REPURCHASE_MONEY); + lfitBo2.setAttributeValue("FEE_ADJUST","0.00"); + lfitBo2.setAttributeValue("ACCOUNTING_DATE",paydayAdjust); + lfitBo2.setAttributeValue("ROLL_BACK","0"); + lfitBo2.setAttributeValue("FLOWUNID",flowunid); + lfitBo2.setAttributeValue("IS_FLOWING","0"); + lfitBo2.setAttributeValue("INPUTTIME", DateAssistant.getTodayNow()); + lfitBo2.setAttributeValue("EBANK_NUMBER",EBANK_NUMBER); + lfitBm.saveObject(lfitBo2); + } + } + /** + * 处理保证金未抵扣的其他应收 + */ + if(OTHER_IN.compareTo(BigDecimal.ZERO)!=0){ + BizObject lfitBo2 = lfitBm.newObject(); + lfitBo2.setAttributeValue("ID", UUIDUtil.getUUID()); + lfitBo2.setAttributeValue("PROJECT_ID",boLFP.getAttribute("PROJECT_ID").getString()); + lfitBo2.setAttributeValue("PROJECT_PLAN_NUMBER",boLFP.getAttribute("PROJECT_PLAN_NUMBER").getString()); + lfitBo2.setAttributeValue("CONTRACT_ID",boLFP.getAttribute("CONTRACT_ID").getString()); + lfitBo2.setAttributeValue("CONTRACT_PLAN_NUMBER",boLFP.getAttribute("CONTRACT_PLAN_NUMBER").getString()); + lfitBo2.setAttributeValue("PAYMENT_NUMBER",boLFP.getAttribute("PAYMENT_NUMBER").getString()); + lfitBo2.setAttributeValue("PLAN_ID",OTHER_IN_ID); + lfitBo2.setAttributeValue("PLAN_LIST","1"); + lfitBo2.setAttributeValue("PAY_TYPE","pay_type_in"); + lfitBo2.setAttributeValue("FEE_TYPE","feetype8"); + lfitBo2.setAttributeValue("SETTLE_METHOD","settlemethod6"); + lfitBo2.setAttributeValue("CHARGE_LIST","1"); + lfitBo2.setAttributeValue("FACT_DATE",paydayAdjust); + lfitBo2.setAttributeValue("FACT_MONEY",OTHER_IN); + lfitBo2.setAttributeValue("FEE_ADJUST","0.00"); + lfitBo2.setAttributeValue("ACCOUNTING_DATE",paydayAdjust); + lfitBo2.setAttributeValue("ROLL_BACK","0"); + lfitBo2.setAttributeValue("FLOWUNID",flowunid); + lfitBo2.setAttributeValue("IS_FLOWING","0"); + lfitBo2.setAttributeValue("INPUTTIME", DateAssistant.getTodayNow()); + lfitBo2.setAttributeValue("EBANK_NUMBER",EBANK_NUMBER); + lfitBm.saveObject(lfitBo2); + } + + /** + * 租金计划临时表变更回笼状态 + */ + List lrptBoList2 = lrptBm.createQuery("FLOWUNID='"+flowunid+"' and v.ifnull(PLAN_STATUS,'未回笼')<>'已回笼' order by plan_list desc").getResultList(false); + for(int i=0;i="+RENT+" THEN '已回笼' WHEN (ifnull(LFIT.RENT,0)+ifnull(LRI.RENT,0))> 0 AND (ifnull(LFIT.RENT,0)+ifnull(LRI.RENT,0))<"+RENT+" THEN '部分回笼' ELSE '未回笼' END FROM (SELECT MAX(CONTRACT_ID) AS CONTRACT_ID, SUM(ifnull(RENT,0)) AS RENT FROM LC_RENT_INCOME_TEMP WHERE FLOWUNID='"+flowunid+"' AND PLAN_LIST='"+PLAN_LIST+"' )LFIT LEFT JOIN (SELECT MAX(CONTRACT_ID) AS CONTRACT_ID, SUM(ifnull(RENT,0)) AS RENT FROM LC_RENT_INCOME WHERE CONTRACT_ID='"+CONTRACT_ID+"' AND PLAN_LIST='"+PLAN_LIST+"' )LRI ON LRI.CONTRACT_ID=LFIT.CONTRACT_ID ) WHERE FLOWUNID='"+flowunid+"' AND PLAN_LIST='"+PLAN_LIST+"'", tx); + } + + BizObjectManager lcctBom = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP", Sqlca); + + BizObject lcctBo = lcctBom.createQuery("flowunid=:flowunid").setParameter("flowunid", flowunid).getSingleResult(false); + BigDecimal clean_lease_money = new BigDecimal(lcctBo.getAttribute("CLEAN_LEASE_MONEY").toString()); //融资额 + List lrptBList = lrptBm.createQuery("flowunid=:flowunid order by plan_list").setParameter("flowunid", flowunid).getResultList(true); + for(BizObject lrptB : lrptBList) { + String corpus = lrptB.getAttribute("CORPUS").toString(); + BigDecimal bdCorpus = new BigDecimal(corpus); + lrptB.setAttributeValue("ALL_REMAIN_CORPUS", clean_lease_money.subtract(bdCorpus).toString()); + clean_lease_money = clean_lease_money.subtract(bdCorpus); + lrptBm.saveObject(lrptB); + } + Sqlca.commit(); + }catch(Exception e){ + e.printStackTrace(); + try { + Sqlca.rollback(); + } catch (JBOException jboException) { + jboException.printStackTrace(); + } + return "操作失败"; + } finally { + try { + if(Sqlca!=null) { + Sqlca.disConnect(); + } + } catch (JBOException e) { + e.printStackTrace(); + } + } + + return "操作成功"; + } + + /** + * 获取回笼期项 + */ + public String getHireList(String paymentNumber,String planList,com.amarsoft.awe.util.Transaction Sqlca) throws Exception{ + String hireList = Sqlca.getString("select max(HIRE_LIST) HIRE_LIST from (select max(HIRE_LIST) HIRE_LIST from LC_RENT_INCOME_TEMP where ROLL_BACK='0' and IS_FLOWING='0' and PAYMENT_NUMBER='"+paymentNumber+"' and PLAN_LIST='"+planList+"' union all select max(HIRE_LIST) HIRE_LIST from LC_RENT_INCOME where ROLL_BACK='0' and PAYMENT_NUMBER='"+paymentNumber+"' and PLAN_LIST='"+planList+"') aa"); + if(hireList==null){ + return "1"; + } + int hireList2 = Integer.valueOf(hireList); + return hireList2+1+""; + } + + +} diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/InsertVoucherRentCompensatory.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/InsertVoucherRentCompensatory.java index d9f7d5ac5..94cd1b4ad 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/InsertVoucherRentCompensatory.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/InsertVoucherRentCompensatory.java @@ -2,15 +2,17 @@ package com.tenwa.voucher.CreateVoucherProcess; import java.util.List; import java.util.Map; + +import com.amarsoft.are.jbo.JBOException; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; import com.amarsoft.dict.als.cache.CacheLoaderFactory; import com.tenwa.comm.util.jboutil.DataOperatorUtil; +import com.tenwa.flow.util.FlowUtil; /** * 自动及定时任务自动生成代偿凭证 - * @author xiezhiwen */ public class InsertVoucherRentCompensatory { /** @@ -35,50 +37,120 @@ public class InsertVoucherRentCompensatory { * 查询租金实收表, 将需要生成凭证的数据存入中间表 * @throws Exception */ - public void initLVRentIncome() throws Exception{ + public void initLVRentIncome(){ Transaction Sqlca =null; - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); - /** - * 查询数据, 判断是否需要执行插入中间表 - */ - // 查询是否有当月的, 未生成凭证的数据(经销商代偿) - String sqls11 = "SELECT O.ID FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID=O.RENT_PLAN_ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND DATE_FORMAT(O.INPUTTIME, '%Y-%m') = DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m') AND LV.INCOME_ID IS NULL AND IFNULL(O.CORPUS, 0) + IFNULL(O.INTEREST, 0) > 0"; - // 查询跨月的, 未生成凭证的数据(经销商代偿) - String sqls22 = "SELECT O.ID FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID=O.RENT_PLAN_ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND DATE_FORMAT(O.INPUTTIME, '%Y-%m') <> DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m') AND LV.INCOME_ID IS NULL AND IFNULL(O.CORPUS, 0) + IFNULL(O.INTEREST, 0) > 0"; - // 查询当前数据是否有逾期利息(经销商代偿) - String sqls33 = "SELECT O.ID FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID = O.RENT_PLAN_ID LEFT JOIN (SELECT INCOME_ID FROM LV_PENALTY_PLAN GROUP BY INCOME_ID) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND LV.INCOME_ID IS NULL AND IFNULL(O.PENALTY, 0) > 0"; - List> dataList11=DataOperatorUtil.getDataBySql(Sqlca, sqls11, null); - List> dataList22=DataOperatorUtil.getDataBySql(Sqlca, sqls22, null); - List> dataList33=DataOperatorUtil.getDataBySql(Sqlca, sqls33, null); - - /** - * 将数据插入中间表的SQL - */ - // 未逾期及逾期未过月(经销商代偿) - String sql11 = "INSERT INTO LV_RENT_PLAN ( SELECT REPLACE(UUID(), '-', ''), CONCAT('k', getSerialNumber ('凭证号')), CI.CUSTOMER_NUM, CI.CUSTOMERNAME, LCI.ID, LCI.CONTRACT_NUMBER, O.ID, DATE_FORMAT(O.INPUTTIME, '%Y/%m/%d') AS HIRE_DATE, LRP.PLAN_LIST, (IFNULL(O.CORPUS,0)+IFNULL(O.INTEREST,0)) AS RENT, IFNULL(O.CORPUS,0) AS CORPUS, IFNULL(O.INTEREST,0) AS INTEREST, 0.00 AS PENALTY, '' OWN_BANK, '' OWN_ACCOUNT, '' OWN_NUMBER, '' EBANK_NUMBER, '' CARDDEDUCT_ID, DATE_FORMAT(O.INPUTTIME, '%Y/%m/%d') AS ACCOUNTING_DATE, LRP.COLLECT_STATUS, LCI.BUSINESSTYPE, LCI.LEAS_FORM FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID=O.RENT_PLAN_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID AND LUL.IS_MAIN='Y' LEFT JOIN CUSTOMER_INFO CI ON CI.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID ) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND DATE_FORMAT(O.INPUTTIME, '%Y-%m') = DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m') AND LV.INCOME_ID IS NULL AND IFNULL(O.CORPUS, 0) + IFNULL(O.INTEREST, 0) > 0)"; - // 逾期过月(经销商代偿) - String sql22 = "INSERT INTO LV_RENT_PLAN2 ( SELECT REPLACE(UUID(), '-', ''), CONCAT('k', getSerialNumber ('凭证号')), CI.CUSTOMER_NUM, CI.CUSTOMERNAME, LCI.ID, LCI.CONTRACT_NUMBER, O.ID, DATE_FORMAT(O.INPUTTIME, '%Y/%m/%d') AS HIRE_DATE, LRP.PLAN_LIST, (IFNULL(O.CORPUS,0)+IFNULL(O.INTEREST,0)) AS RENT, IFNULL(O.CORPUS,0) AS CORPUS, IFNULL(O.INTEREST,0) AS INTEREST, 0.00 AS PENALTY, '' OWN_BANK, '' OWN_ACCOUNT, '' OWN_NUMBER, '' EBANK_NUMBER, '' CARDDEDUCT_ID, DATE_FORMAT(O.INPUTTIME, '%Y/%m/%d') AS ACCOUNTING_DATE, LRP.COLLECT_STATUS, LCI.BUSINESSTYPE, LCI.LEAS_FORM FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID=O.RENT_PLAN_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID AND LUL.IS_MAIN='Y' LEFT JOIN CUSTOMER_INFO CI ON CI.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID ) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND DATE_FORMAT(O.INPUTTIME, '%Y-%m') <> DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m') AND LV.INCOME_ID IS NULL AND IFNULL(O.CORPUS, 0) + IFNULL(O.INTEREST, 0) > 0) "; - // 逾期利息(经销商代偿) - String sql33 = "INSERT INTO LV_PENALTY_PLAN ( SELECT REPLACE(UUID(), '-', ''), CONCAT('k', getSerialNumber ('凭证号')) AS VOUCHER_F3, CI.CUSTOMER_NUM, CI.CUSTOMERNAME, LCI.ID, LCI.CONTRACT_NUMBER, O.ID, DATE_FORMAT(O.INPUTTIME, '%Y/%m/%d') AS HIRE_DATE, LRP.PLAN_LIST, 0.00 AS RENT, 0.00 AS CORPUS, 0.00 AS INTEREST, IFNULL(O.PENALTY,0) AS PENALTY, '' OWN_BANK, '' OWN_ACCOUNT, '' OWN_NUMBER, '' EBANK_NUMBER, '' CARDDEDUCT_ID, DATE_FORMAT(O.INPUTTIME, '%Y/%m/%d') AS ACCOUNTING_DATE, LRP.COLLECT_STATUS, LCI.BUSINESSTYPE, LCI.LEAS_FORM FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID=O.RENT_PLAN_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID AND LUL.IS_MAIN='Y' LEFT JOIN CUSTOMER_INFO CI ON CI.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN (SELECT INCOME_ID FROM LV_PENALTY_PLAN GROUP BY INCOME_ID ) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND LV.INCOME_ID IS NULL AND IFNULL(O.PENALTY,0) > 0)"; - /** - * 根据查询语句判断, 有值才执行插入SQL - */ - if(dataList11 != null && !dataList11.isEmpty()) { - SqlObject sqlss11 = new SqlObject(sql11); - Sqlca.executeSQL(sqlss11); - } - if(dataList22 != null && !dataList22.isEmpty()) { - SqlObject sqlss22 = new SqlObject(sql22); - Sqlca.executeSQL(sqlss22); - } - if(dataList33 != null && !dataList33.isEmpty()) { - SqlObject sqlss33 = new SqlObject(sql33); - Sqlca.executeSQL(sqlss33); - } - Sqlca.commit(); - - if(Sqlca!=null){ - Sqlca.disConnect(); + try { + Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); + /** + * 查询数据, 判断是否需要执行插入中间表 + */ + // 查询是否有当月的, 未生成凭证的数据(经销商代偿) + String sqls11 = "SELECT O.ID FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID=O.RENT_PLAN_ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND DATE_FORMAT(O.INPUTTIME, '%Y-%m') = DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m') AND LV.INCOME_ID IS NULL AND IFNULL(O.CORPUS, 0) + IFNULL(O.INTEREST, 0) > 0"; + // 查询跨月的, 未生成凭证的数据(经销商代偿) + String sqls22 = "SELECT O.ID FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID=O.RENT_PLAN_ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND DATE_FORMAT(O.INPUTTIME, '%Y-%m') <> DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m') AND LV.INCOME_ID IS NULL AND IFNULL(O.CORPUS, 0) + IFNULL(O.INTEREST, 0) > 0"; + // 查询当前数据是否有逾期利息(经销商代偿) + String sqls33 = "SELECT O.ID FROM D_DEPOSITRETURN_INFO O LEFT JOIN LC_RENT_PLAN LRP ON LRP.ID = O.RENT_PLAN_ID LEFT JOIN (SELECT INCOME_ID FROM LV_PENALTY_PLAN GROUP BY INCOME_ID) LV ON LV.INCOME_ID = O.ID WHERE O.MONEY_TYPE = 'bondRepay' AND DATE_FORMAT(O.INPUTTIME, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND LV.INCOME_ID IS NULL AND IFNULL(O.PENALTY, 0) > 0"; + /** + * 将数据插入中间表 + */ + String insertSql=""; + SqlObject sqlObj=null; + String F3=""; + String ID=""; + // 当月代偿租金 + List> dataList11=DataOperatorUtil.getDataBySql(Sqlca, sqls11, null); + if(dataList11 != null && !dataList11.isEmpty()) { + for(int i=0;i> dataList22=DataOperatorUtil.getDataBySql(Sqlca, sqls22, null); + if(dataList22 != null && !dataList22.isEmpty()) { + for(int i=0;i> dataList33=DataOperatorUtil.getDataBySql(Sqlca, sqls33, null); + if(dataList33 != null && !dataList33.isEmpty()) { + for(int i=0;i> dataListqh11=DataOperatorUtil.getDataBySql(Sqlca, sqlqh11, null); - List> dataListqh22=DataOperatorUtil.getDataBySql(Sqlca, sqlqh22, null); - List> dataListqh33=DataOperatorUtil.getDataBySql(Sqlca, sqlqh33, null); - /** - * 汽车直租 - */ - List> dataListqz11=DataOperatorUtil.getDataBySql(Sqlca, sqlqz11, null); - List> dataListqz22=DataOperatorUtil.getDataBySql(Sqlca, sqlqz22, null); - List> dataListqz33=DataOperatorUtil.getDataBySql(Sqlca, sqlqz33, null); - - /** - * 汽车类-回租 - */ - // 收到的租金--经销商代偿-当月的-(汽车回租) - String sql_whereqh11 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到代偿的租金-',LVRI.PLAN_LIST) ELSE '收到代偿的租金' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT WHEN LV.SORT_NUMBER='2' THEN LVRI.INTEREST ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='3' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='4' THEN LVRI.INTEREST WHEN LV.SORT_NUMBER='5' THEN ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='6' THEN (LVRI.INTEREST-ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' OR LV.SORT_NUMBER='6' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='6' THEN '' WHEN LV.SORT_NUMBER='1' THEN DI.DISTRIBUTOR_NAME ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='6' THEN '' WHEN LV.SORT_NUMBER='1' THEN DI.DISTRIBUTOR_CODING ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='5' THEN '0604' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='6' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_PLAN LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019053000000001') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=LVRI.INCOME_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND IFNULL(LVRI.RENT,0)>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - // 收到的租金--经销商代偿-跨月的-(汽车回租) - String sql_whereqh22 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到代偿的租金-',LVRI.PLAN_LIST) ELSE '收到代偿的租金' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='3' THEN LVRI.INTEREST ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN DI.DISTRIBUTOR_NAME ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN DI.DISTRIBUTOR_CODING ELSE LVRI.CUST_ID END AS F65, '' AS F73, '' AS F74, '' AS F75, '' AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_PLAN2 LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019053000000002') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=LVRI.INCOME_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND IFNULL(LVRI.RENT,0)>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - //收到的逾期利息--经销商代偿-(汽车回租) - String sql_whereqh33 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('代偿逾期利息-',LVRI.PLAN_LIST) ELSE '代偿逾期利息' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.PENALTY ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN LVRI.PENALTY ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='2' THEN LCI.CONTRACT_NUMBER ELSE '' END AS F60, DI.DISTRIBUTOR_NAME AS F61, LV.LOAN_SUBJECT AS F62, DI.DISTRIBUTOR_CODING AS F65, '' AS F73, '' AS F74, '' AS F75, '' AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_PENALTY_PLAN LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019053000000003') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-代偿逾期利息' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=LVRI.INCOME_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND IFNULL(LVRI.PENALTY,0)>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - /** - * 汽车类-直租 - */ - // 收到的租金--经销商代偿-当月的-(汽车直租) - String sql_whereqz11 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到代偿的租金-',LVRI.PLAN_LIST) ELSE '收到代偿的租金' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT WHEN LV.SORT_NUMBER='2' THEN LVRI.INTEREST WHEN LV.SORT_NUMBER='3' THEN (LVRI.CORPUS-ROUND(LVRI.CORPUS/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='4' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='5' THEN LVRI.INTEREST WHEN LV.SORT_NUMBER='6' THEN ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='7' THEN ((LVRI.CORPUS-ROUND(LVRI.CORPUS/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) +(LVRI.INTEREST-ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'利息',LCCT.START_DATE),2))) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' OR LV.SORT_NUMBER='7' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='7' THEN '' WHEN LV.SORT_NUMBER='1' THEN DI.DISTRIBUTOR_NAME ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='7' THEN '' WHEN LV.SORT_NUMBER='1' THEN DI.DISTRIBUTOR_CODING ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='6' THEN '0604' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='7' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_PLAN LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019070100000012') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=LVRI.INCOME_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND IFNULL(LVRI.RENT,0)>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='01' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - // 收到的租金--经销商代偿-跨月的-(汽车直租) - String sql_whereqz22 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到代偿的租金-',LVRI.PLAN_LIST) ELSE '收到代偿的租金' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='3' THEN LVRI.INTEREST ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN DI.DISTRIBUTOR_NAME ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN DI.DISTRIBUTOR_CODING ELSE LVRI.CUST_ID END AS F65, '' AS F73, '' AS F74, '' AS F75, '' AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_PLAN2 LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019070100000013') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-07', '%Y-%m-%d') GROUP BY F58 ) V8 ON V8.F58=LVRI.INCOME_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND IFNULL(LVRI.RENT,0)>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='01' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - //收到的逾期利息--经销商代偿-(汽车直租) - String sql_whereqz33 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('代偿逾期利息-',LVRI.PLAN_LIST) ELSE '代偿逾期利息' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.PENALTY ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN LVRI.PENALTY ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='2' THEN LCI.CONTRACT_NUMBER ELSE '' END AS F60, DI.DISTRIBUTOR_NAME AS F61, LV.LOAN_SUBJECT AS F62, DI.DISTRIBUTOR_CODING AS F65, '' AS F73, '' AS F74, '' AS F75, '' AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_PENALTY_PLAN LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019070100000011') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME='代偿-代偿逾期利息' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=LVRI.INCOME_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-07', '%Y-%m-%d') AND IFNULL(LVRI.PENALTY,0)>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='01' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - - /** - * 根据查询语句判断, 有值才执行插入SQL - */ - /** - * 汽车回租 - */ - if(dataListqh11 != null && !dataListqh11.isEmpty()) { - SqlObject sqlsqh11 = new SqlObject(sql_whereqh11); - Sqlca.executeSQL(sqlsqh11); - } - if(dataListqh22 != null && !dataListqh22.isEmpty()) { - SqlObject sqlsqh22 = new SqlObject(sql_whereqh22); - Sqlca.executeSQL(sqlsqh22); - } - if(dataListqh33 != null && !dataListqh33.isEmpty()) { - SqlObject sqlsqh33 = new SqlObject(sql_whereqh33); - Sqlca.executeSQL(sqlsqh33); - } - - /** - * 汽车直租 - */ - if(dataListqz11 != null && !dataListqz11.isEmpty()) { - SqlObject sqlsqz11 = new SqlObject(sql_whereqz11); - Sqlca.executeSQL(sqlsqz11); - } - if(dataListqz22 != null && !dataListqz22.isEmpty()) { - SqlObject sqlsqz22 = new SqlObject(sql_whereqz22); - Sqlca.executeSQL(sqlsqz22); - } - if(dataListqz33 != null && !dataListqz33.isEmpty()) { - SqlObject sqlsqz33 = new SqlObject(sql_whereqz33); - Sqlca.executeSQL(sqlsqz33); - } - Sqlca.commit(); - System.out.println("***********************************************************"); - System.out.println("**********************已生成代偿凭证**************************"); - System.out.println("***********************************************************"); - - if(Sqlca!=null){ - Sqlca.disConnect(); + try { + Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); + /** + * 查询中间表, 判断是否有数据需要执行 + */ + /** + * 汽车回租 + */ + // 当月的租金(经销商代偿)-(汽车回租) + String sqlqh11 = "SELECT O.ID FROM LV_RENT_PLAN O LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=O.INCOME_ID WHERE DATE_FORMAT(O.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND IFNULL(O.RENT,0)>0 AND O.BUSINESSTYPE='1' AND O.LEAS_FORM='02' AND V8.F58 IS NULL"; + // 本月以前的租金(经销商代偿)-(汽车回租) + String sqlqh22 = "SELECT O.ID FROM LV_RENT_PLAN2 O LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=O.INCOME_ID WHERE DATE_FORMAT(O.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND IFNULL(O.RENT,0)>0 AND O.BUSINESSTYPE='1' AND O.LEAS_FORM='02' AND V8.F58 IS NULL"; + // 逾期利息(经销商代偿)-(汽车回租) + String sqlqh33 = "SELECT O.ID,O.PENALTY FROM LV_PENALTY_PLAN O LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-代偿逾期利息' AND F58 IS NOT NULL AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-22', '%Y-%m-%d') GROUP BY F58 ) V8 ON V8.F58=O.INCOME_ID WHERE DATE_FORMAT(O.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND IFNULL(O.PENALTY,0)>0 AND O.BUSINESSTYPE='1' AND O.LEAS_FORM='02' AND V8.F58 IS NULL"; + + /** + * 汽车直租 + */ + // 当月的租金(经销商代偿)-(汽车直租) + String sqlqz11 = "SELECT O.ID FROM LV_RENT_PLAN O LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=O.INCOME_ID WHERE DATE_FORMAT(O.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND IFNULL(O.RENT,0)>0 AND O.BUSINESSTYPE='1' AND O.LEAS_FORM='01' AND V8.F58 IS NULL"; + // 本月以前的租金(经销商代偿)-(汽车直租) + String sqlqz22 = "SELECT O.ID FROM LV_RENT_PLAN2 O LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-收到代偿的租金' AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND F58 IS NOT NULL GROUP BY F58 ) V8 ON V8.F58=O.INCOME_ID WHERE DATE_FORMAT(O.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND IFNULL(O.RENT,0)>0 AND O.BUSINESSTYPE='1' AND O.LEAS_FORM='01' AND V8.F58 IS NULL"; + // 逾期利息(经销商代偿)-(汽车直租) + String sqlqz33 = "SELECT O.ID,O.PENALTY FROM LV_PENALTY_PLAN O LEFT JOIN ( SELECT F58 FROM VOUCHER_V8 WHERE MODULE_NAME = '代偿-代偿逾期利息' AND F58 IS NOT NULL AND DATE_FORMAT(GENERATE_DATE,'%Y-%m-%d')>DATE_FORMAT('2022-02-22', '%Y-%m-%d') GROUP BY F58 ) V8 ON V8.F58=O.INCOME_ID WHERE DATE_FORMAT(O.HIRE_DATE, '%Y-%m-%d') > DATE_FORMAT('2022-02-22', '%Y-%m-%d') AND IFNULL(O.PENALTY,0)>0 AND O.BUSINESSTYPE='1' AND O.LEAS_FORM='01' AND V8.F58 IS NULL"; + + /** + * 根据查询语句判断, 有值才执行插入SQL + * 汽车回租 + */ + String insertSql=""; + SqlObject sqlObj=null; + String ID=""; + // 收到的租金--经销商代偿-当月的-(汽车回租) + List> dataListqh11=DataOperatorUtil.getDataBySql(Sqlca, sqlqh11, null); + if(dataListqh11 != null && !dataListqh11.isEmpty()) { + for(int i=0;i> dataListqh22=DataOperatorUtil.getDataBySql(Sqlca, sqlqh22, null); + if(dataListqh22 != null && !dataListqh22.isEmpty()) { + for(int i=0;i> dataListqh33=DataOperatorUtil.getDataBySql(Sqlca, sqlqh33, null); + if(dataListqh33 != null && !dataListqh33.isEmpty()) { + for(int i=0;i> dataListqz11=DataOperatorUtil.getDataBySql(Sqlca, sqlqz11, null); + if(dataListqz11 != null && !dataListqz11.isEmpty()) { + for(int i=0;i> dataListqz22=DataOperatorUtil.getDataBySql(Sqlca, sqlqz22, null); + if(dataListqz22 != null && !dataListqz22.isEmpty()) { + for(int i=0;i> dataListqz33=DataOperatorUtil.getDataBySql(Sqlca, sqlqz33, null); + if(dataListqz33 != null && !dataListqz33.isEmpty()) { + for(int i=0;i> dataList1=DataOperatorUtil.getDataBySql(Sqlca, sqls1, null); - List> dataList2=DataOperatorUtil.getDataBySql(Sqlca, sqls2, null); - List> dataList3=DataOperatorUtil.getDataBySql(Sqlca, sqls3, null); - List> dataList4=DataOperatorUtil.getDataBySql(Sqlca, sqls4, null); - List> dataList5=DataOperatorUtil.getDataBySql(Sqlca, slqs5, null); - List> dataList6=DataOperatorUtil.getDataBySql(Sqlca, sqls6, null); - List> dataList7=DataOperatorUtil.getDataBySql(Sqlca, slqs7, null); - logger.info("InsertVoucherRentIncome 20210906 新增fc_yc_overdue_repay_plan联表查询代码【结束】"); - /** - * 将数据插入中间表的SQL - */ - // 未逾期及逾期未过月(卡扣) - String sql1="INSERT INTO LV_RENT_INCOME ( SELECT REPLACE(UUID(),'-',''), CONCAT('k',GETSERIALNUMBER('凭证号')), CIF.CUSTOMER_NUM, CIF.CUSTOMERNAME, LCI.ID, LCI.CONTRACT_NUMBER, LRP.ID, LRI.HIRE_DATE, LRP.PLAN_LIST, LRI.RENT, LRI.CORPUS, LRI.INTEREST, 0.00, LRI.OWN_BANK, LRI.OWN_ACCOUNT, LRI.OWN_NUMBER, LRI.EBANK_NUMBER, LRI.CARDDEDUCT_ID, LRI.ACCOUNTING_DATE, LRI.CHARGE_WAY AS COLLECT_STATUS, LCI.BUSINESSTYPE, LCI.LEAS_FORM, LRI.ID FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID AND LUL.IS_MAIN='Y' LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN ( SELECT INCOME_ID, LRI_ID FROM LV_RENT_INCOME GROUP BY INCOME_ID, LRI_ID ) LV1 ON LV1.INCOME_ID=LRI.PLAN_ID AND LV1.LRI_ID=LRI.ID LEFT JOIN ( SELECT INCOME_ID, LRI_ID FROM LV_RENT_INCOME2 GROUP BY INCOME_ID, LRI_ID ) LV2 ON LV2.INCOME_ID=LRI.PLAN_ID AND LV2.LRI_ID=LRI.ID LEFT JOIN ( SELECT RENT_PLAN_ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN FC_YC_OVERDUE_REPAY_PLAN FYORP ON FYORP.RENT_PLAN_ID=LRI.PLAN_ID WHERE DATE_FORMAT(LRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay','TLCollect') AND LRI.RENT>0 AND FYORP.ID IS NULL AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND DDI.RENT_PLAN_ID IS NULL) AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m') )"; - // 逾期过月(卡扣) - String sql2="INSERT INTO LV_RENT_INCOME2 ( SELECT REPLACE(UUID(),'-',''), CONCAT('k',GETSERIALNUMBER('凭证号')), CIF.CUSTOMER_NUM, CIF.CUSTOMERNAME, LCI.ID, LCI.CONTRACT_NUMBER, LRP.ID, LRI.HIRE_DATE, LRP.PLAN_LIST, LRI.RENT, LRI.CORPUS, LRI.INTEREST, 0.00, LRI.OWN_BANK, LRI.OWN_ACCOUNT, LRI.OWN_NUMBER, LRI.EBANK_NUMBER, LRI.CARDDEDUCT_ID, LRI.ACCOUNTING_DATE, LRI.CHARGE_WAY AS COLLECT_STATUS, LCI.BUSINESSTYPE, LCI.LEAS_FORM, LRI.ID FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID AND LUL.IS_MAIN='Y' LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN ( SELECT INCOME_ID, LRI_ID FROM LV_RENT_INCOME GROUP BY INCOME_ID, LRI_ID ) LV1 ON LV1.INCOME_ID=LRI.PLAN_ID AND LV1.LRI_ID=LRI.ID LEFT JOIN ( SELECT INCOME_ID, LRI_ID FROM LV_RENT_INCOME2 GROUP BY INCOME_ID, LRI_ID ) LV2 ON LV2.INCOME_ID=LRI.PLAN_ID AND LV2.LRI_ID=LRI.ID LEFT JOIN ( SELECT RENT_PLAN_ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN FC_YC_OVERDUE_REPAY_PLAN FYORP ON FYORP.RENT_PLAN_ID=LRI.PLAN_ID WHERE DATE_FORMAT(LRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay','TLCollect') AND LRI.RENT>0 AND FYORP.ID IS NULL AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND DDI.RENT_PLAN_ID IS NULL) AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m') )"; - // 逾期利息(卡扣) - String sql3="INSERT INTO LV_PENALTY_INCOME ( SELECT REPLACE(UUID(),'-',''), CONCAT('k',GETSERIALNUMBER('凭证号')), CIF.CUSTOMER_NUM, CIF.CUSTOMERNAME, LCI.ID, LCI.CONTRACT_NUMBER, LRP.ID, LRI.HIRE_DATE, LRP.PLAN_LIST, 0.00, 0.00, 0.00, LRI.PENALTY, LRI.OWN_BANK, LRI.OWN_ACCOUNT, LRI.OWN_NUMBER, LRI.EBANK_NUMBER, LRI.CARDDEDUCT_ID, LRI.ACCOUNTING_DATE, LRI.CHARGE_WAY AS COLLECT_STATUS, LCI.BUSINESSTYPE, LCI.LEAS_FORM, LRI.ID FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LRI.CONTRACT_ID AND LRP.PLAN_LIST=LRI.PLAN_LIST LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LRP.CONTRACT_ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID AND LUL.IS_MAIN='Y' LEFT JOIN CUSTOMER_INFO CIF ON CIF.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN ( SELECT INCOME_ID, LRI_ID FROM LV_PENALTY_INCOME GROUP BY INCOME_ID, LRI_ID ) LV1 ON LV1.INCOME_ID=LRI.PLAN_ID AND LV1.LRI_ID=LRI.ID LEFT JOIN ( SELECT RENT_PLAN_ID FROM D_DEPOSITRETURN_INFO WHERE MONEY_TYPE='bondRepay' AND IFNULL(PENALTY,0)>0 GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID LEFT JOIN FC_YC_OVERDUE_REPAY_PLAN FYORP ON FYORP.RENT_PLAN_ID=LRI.PLAN_ID WHERE DATE_FORMAT(LRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay','TLCollect') AND IFNULL(LRI.PENALTY,0)>0 AND FYORP.ID IS NULL AND (LV1.INCOME_ID IS NULL AND DDI.RENT_PLAN_ID IS NULL) )"; - /** - * 根据查询语句判断, 有值才执行插入SQL - */ - if(dataList1 != null && !dataList1.isEmpty()) { - SqlObject sqlss1 = new SqlObject(sql1); - a = Sqlca.executeSQL(sqlss1); - System.out.println("本次当月需生成卡扣租金凭证数据:"+a+"条 !"); - } - if(dataList2 != null && !dataList2.isEmpty()) { - SqlObject sqlss2 = new SqlObject(sql2); - b = Sqlca.executeSQL(sqlss2); - System.out.println("本次跨月需生成卡扣租金凭证数据:"+b+"条 !"); - } - if(dataList3 != null && !dataList3.isEmpty()) { - SqlObject sqlss3 = new SqlObject(sql3); - c = Sqlca.executeSQL(sqlss3); - System.out.println("本次需生成卡扣逾期利息凭证数据:"+c+"条 !"); - } - Sqlca.commit(); - - /** - * 收取租金时, 如果已经经销商代偿, 生成反冲代偿凭证; 将租金id存入集合, 遍历结合, 通过id生成凭证 - */ - CreateVoucherRedCompensatory cvrc = new CreateVoucherRedCompensatory(); - List list = new ArrayList(); - for (Map map1 : dataList4) { - if(!list.contains(map1.get("F56"))){ - list.add(map1.get("F56")); + /** + * 将数据插入中间表的SQL + * 根据查询语句判断, 有值才执行插入SQL + */ + String insertSql=""; + String ID=""; + String F3=""; + SqlObject sqlObj=null; + // 未逾期及逾期未过月(卡扣) + List> dataList1=DataOperatorUtil.getDataBySql(Sqlca, sqls1, null); + if(dataList1 != null && !dataList1.isEmpty()) { + for(int i=0; i map2 : dataList5) { - if(!list.contains(map2.get("F56"))){ - list.add(map2.get("F56")); + // 逾期过月(卡扣) + List> dataList2=DataOperatorUtil.getDataBySql(Sqlca, sqls2, null); + if(dataList2 != null && !dataList2.isEmpty()) { + for(int i=0; i list2 = new ArrayList(); - for (Map map1 : dataList6) { - if(!list2.contains(map1.get("F56"))){ - list2.add(map1.get("F56")); + // 逾期利息(卡扣) + List> dataList3=DataOperatorUtil.getDataBySql(Sqlca, sqls3, null); + if(dataList3 != null && !dataList3.isEmpty()) { + for(int i=0; i0 GROUP BY RENT_PLAN_ID ) DDI ON DDI.RENT_PLAN_ID=LRP.ID WHERE LRI.ID='"+ID+"' AND (LV1.INCOME_ID IS NULL AND DDI.RENT_PLAN_ID IS NULL) )"; + sqlObj = new SqlObject(insertSql); + Sqlca.executeSQL(sqlObj); + Sqlca.commit(); + } catch (Exception e) { + Sqlca.rollback(); + e.printStackTrace(); + } + } + System.out.println("本次需生成卡扣逾期利息凭证数据:"+dataList3.size()+"条 !"); } - } - for (Map map2 : dataList7) { - if(!list2.contains(map2.get("F56"))){ - list2.add(map2.get("F56")); - } - } + List> dataList4=DataOperatorUtil.getDataBySql(Sqlca, sqls4, null); + List> dataList5=DataOperatorUtil.getDataBySql(Sqlca, slqs5, null); + List> dataList6=DataOperatorUtil.getDataBySql(Sqlca, sqls6, null); + List> dataList7=DataOperatorUtil.getDataBySql(Sqlca, slqs7, null); + logger.info("InsertVoucherRentIncome 20210906 新增fc_yc_overdue_repay_plan联表查询代码【结束】"); + Sqlca.commit(); - for (String F56 : list) { - // 判断当期是否已生成经销商代偿凭证, 如已生成, 反冲 - cvrc.CreateVoucher("PZ2019071500000030", "admin",F56);// 代偿反冲-收到的租金 - cvrc.CreateVoucher("PZ2019071500000031", "admin",F56);// 代偿反冲-收到的逾期利息 - System.out.println("***********************************************************"); - System.out.println("**********************代偿反冲凭证收成**************************"); - System.out.println("***********************************************************"); - } - for (String F56 : list2) { - // 判断当期是否已生成经销商代偿凭证, 如已生成, 反冲 - cvrc.CreateVoucher("PZ2020070600000001", "admin",F56);// 代偿反冲-收到的租金(微信) - cvrc.CreateVoucher("PZ2020070600000002", "admin",F56);// 代偿反冲-收到的逾期利息(微信) - System.out.println("***********************************************************"); - System.out.println("**********************代偿反冲凭证收成**************************"); - System.out.println("***********************************************************"); - } + /** + * 收取租金时, 如果已经经销商代偿, 生成反冲代偿凭证; 将租金id存入集合, 遍历结合, 通过id生成凭证 + */ + CreateVoucherRedCompensatory cvrc = new CreateVoucherRedCompensatory(); + List list = new ArrayList(); + + for (Map map1 : dataList4) { + if(!list.contains(map1.get("F56"))){ + list.add(map1.get("F56")); + } + } + for (Map map2 : dataList5) { + if(!list.contains(map2.get("F56"))){ + list.add(map2.get("F56")); + } + } + List list2 = new ArrayList(); + for (Map map1 : dataList6) { + if(!list2.contains(map1.get("F56"))){ + list2.add(map1.get("F56")); + } + } + for (Map map2 : dataList7) { + if(!list2.contains(map2.get("F56"))){ + list2.add(map2.get("F56")); + } + } - if(Sqlca!=null){ - Sqlca.disConnect(); + for (String F56 : list) { + // 判断当期是否已生成经销商代偿凭证, 如已生成, 反冲 + cvrc.CreateVoucher("PZ2019071500000030", "admin",F56);// 代偿反冲-收到的租金 + cvrc.CreateVoucher("PZ2019071500000031", "admin",F56);// 代偿反冲-收到的逾期利息 + System.out.println("***********************************************************"); + System.out.println("**********************代偿反冲凭证收成**************************"); + System.out.println("***********************************************************"); + } + for (String F56 : list2) { + // 判断当期是否已生成经销商代偿凭证, 如已生成, 反冲 + cvrc.CreateVoucher("PZ2020070600000001", "admin",F56);// 代偿反冲-收到的租金(微信) + cvrc.CreateVoucher("PZ2020070600000002", "admin",F56);// 代偿反冲-收到的逾期利息(微信) + System.out.println("***********************************************************"); + System.out.println("**********************代偿反冲凭证收成**************************"); + System.out.println("***********************************************************"); + } + } catch (Exception e) { + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + }finally { + if(Sqlca!=null){ + try { + Sqlca.commit(); + } catch (JBOException e) { + e.printStackTrace(); + } + try { + Sqlca.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + } } } @@ -150,184 +218,296 @@ public class InsertVoucherRentIncome { * @param VOUCHERNO * @throws Exception */ - public void CreateVoucher() throws Exception{ + public void CreateVoucher() { Transaction Sqlca =null; - Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); - /** - * 查询中间表, 判断是否有数据需要执行 - */ - /** - * 汽车回租-卡扣 - */ - // 当月的租金(卡扣)-(汽车回租) - String sqlqh1="SELECT LVRI.RENT, LVRI.INCOME_ID AS F58 FROM LV_RENT_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; - // 本月以前的租金(卡扣)-(汽车回租) - String sqlqh2="SELECT LVRI.RENT, LVRI.INCOME_ID AS F58 FROM LV_RENT_INCOME2 LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; - // 逾期利息(卡扣)-(汽车回租) - String sqlqh3="SELECT LVRI.PENALTY, LVRI.INCOME_ID AS F58 FROM LV_PENALTY_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.PENALTY>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL"; - /** - * 汽车直租-卡扣 - */ - // 当月的租金(卡扣)-(汽车直租) - String sqlqz1="SELECT LVRI.RENT, LVRI.INCOME_ID AS F58 FROM LV_RENT_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='01' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; - // 本月以前的租金(卡扣)-(汽车直租) - String sqlqz2="SELECT LVRI.RENT, LVRI.INCOME_ID AS F58 FROM LV_RENT_INCOME2 LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='01' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; - // 逾期利息(卡扣)-(汽车直租) - String sqlqz3="SELECT LVRI.PENALTY, LVRI.INCOME_ID AS F58 FROM LV_PENALTY_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.PENALTY>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='01' AND V8.F58 IS NULL"; - /** - * 汽车回租-微信 - */ - // 当月的租金(微信)-(汽车回租) - String sqlWh1="SELECT LVRI.RENT, LVRI.INCOME_ID AS F58 FROM LV_RENT_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; - // 本月以前的租金(微信)-(汽车回租) - String sqlWh2="SELECT LVRI.RENT, LVRI.INCOME_ID AS F58 FROM LV_RENT_INCOME2 LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; - // 逾期利息(微信)-(汽车回租) - String sqlWh3="SELECT LVRI.PENALTY, LVRI.INCOME_ID AS F58 FROM LV_PENALTY_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND LVRI.PENALTY>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL"; - /** - * 汽车回租-微信银联 - */ - // 当月的租金(微信)-(汽车直租) - String sqlWYh1="SELECT LVRI.RENT, LVRI.INCOME_ID AS F58 FROM LV_RENT_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXUnionPay' AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; - // 本月以前的租金(微信)-(汽车直租) - String sqlWYh2="SELECT LVRI.RENT, LVRI.INCOME_ID AS F58 FROM LV_RENT_INCOME2 LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXUnionPay' AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; - // 逾期利息(微信)-(汽车直租) - String sqlWYh3="SELECT LVRI.PENALTY, LVRI.INCOME_ID AS F58 FROM LV_PENALTY_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXUnionPay' AND LVRI.PENALTY>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL"; + try { + Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); + /** + * 查询中间表, 判断是否有数据需要执行 + */ + /** + * 汽车回租-卡扣 + */ + // 当月的租金(卡扣)-(汽车回租) + String sqlqh1="SELECT LVRI.ID FROM LV_RENT_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; + // 本月以前的租金(卡扣)-(汽车回租) + String sqlqh2="SELECT LVRI.ID FROM LV_RENT_INCOME2 LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; + // 逾期利息(卡扣)-(汽车回租) + String sqlqh3="SELECT LVRI.ID FROM LV_PENALTY_INCOME LVRI LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.PENALTY>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL"; + /** + * 汽车直租-卡扣 + */ + // 当月的租金(卡扣)-(汽车直租) + String sqlqz1="SELECT LVRI.ID FROM LV_RENT_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='01' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; + // 本月以前的租金(卡扣)-(汽车直租) + String sqlqz2="SELECT LVRI.ID FROM LV_RENT_INCOME2 LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='01' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; + // 逾期利息(卡扣)-(汽车直租) + String sqlqz3="SELECT LVRI.ID FROM LV_PENALTY_INCOME LVRI LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.PENALTY>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='01' AND V8.F58 IS NULL"; + /** + * 汽车回租-微信 + */ + // 当月的租金(微信)-(汽车回租) + String sqlWh1="SELECT LVRI.ID FROM LV_RENT_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; + // 本月以前的租金(微信)-(汽车回租) + String sqlWh2="SELECT LVRI.ID FROM LV_RENT_INCOME2 LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; + // 逾期利息(微信)-(汽车回租) + String sqlWh3="SELECT LVRI.ID FROM LV_PENALTY_INCOME LVRI LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND LVRI.PENALTY>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL"; + /** + * 汽车回租-微信银联 + */ + // 当月的租金(微信)-(汽车直租) + String sqlWYh1="SELECT LVRI.ID FROM LV_RENT_INCOME LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXUnionPay' AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')=DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; + // 本月以前的租金(微信)-(汽车直租) + String sqlWYh2="SELECT LVRI.ID FROM LV_RENT_INCOME2 LVRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID=LVRI.CONTRACT_ID AND LRP.ID=LVRI.INCOME_ID LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXUnionPay' AND LVRI.RENT>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL AND DATE_FORMAT(NOW(),'%Y-%m')<>DATE_FORMAT(LRP.PLAN_DATE,'%Y-%m')"; + // 逾期利息(微信)-(汽车直租) + String sqlWYh3="SELECT LVRI.ID FROM LV_PENALTY_INCOME LVRI LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-22','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXUnionPay' AND LVRI.PENALTY>0 AND LVRI.BUSINESSTYPE='1' AND LVRI.LEAS_FORM='02' AND V8.F58 IS NULL"; + + /** + * 根据查询语句判断, 有值才执行插入SQL + * 汽车回租-卡扣 + */ + String insertSql=""; + SqlObject sqlObj=null; + String ID=""; + // 收到的租金--卡扣-当月的-(汽车回租) + List> dataListqh1=DataOperatorUtil.getDataBySql(Sqlca, sqlqh1, null); + if(dataListqh1 != null && !dataListqh1.isEmpty()) { + for(int i=0; i> dataListqh2=DataOperatorUtil.getDataBySql(Sqlca, sqlqh2, null); + if(dataListqh2 != null && !dataListqh2.isEmpty()) { + for(int i=0; i> dataListqh3=DataOperatorUtil.getDataBySql(Sqlca, sqlqh3, null); + if(dataListqh3 != null && !dataListqh3.isEmpty()) { + for(int i=0; i> dataListqz1= DataOperatorUtil.getDataBySql(Sqlca, sqlqz1, null); + if(dataListqz1 != null && !dataListqz1.isEmpty()) { + for(int i=0; i> dataListqz2= DataOperatorUtil.getDataBySql(Sqlca, sqlqz2, null); + if(dataListqz2 != null && !dataListqz2.isEmpty()) { + for(int i=0; i> dataListqz3= DataOperatorUtil.getDataBySql(Sqlca, sqlqz3, null); + //收到的逾期利息--卡扣-(汽车直租) + if(dataListqz3 != null && !dataListqz3.isEmpty()) { + for(int i=0; i> dataListqh1=DataOperatorUtil.getDataBySql(Sqlca, sqlqh1, null); - List> dataListqh2=DataOperatorUtil.getDataBySql(Sqlca, sqlqh2, null); - List> dataListqh3=DataOperatorUtil.getDataBySql(Sqlca, sqlqh3, null); - /** - * 汽车直租-卡扣 - */ - List> dataListqz1= DataOperatorUtil.getDataBySql(Sqlca, sqlqz1, null); - List> dataListqz2= DataOperatorUtil.getDataBySql(Sqlca, sqlqz2, null); - List> dataListqz3= DataOperatorUtil.getDataBySql(Sqlca, sqlqz3, null); - - /** - * 汽车回租-微信 - */ - List> dataListWh1=DataOperatorUtil.getDataBySql(Sqlca, sqlWh1, null); - List> dataListWh2=DataOperatorUtil.getDataBySql(Sqlca, sqlWh2, null); - List> dataListWh3=DataOperatorUtil.getDataBySql(Sqlca, sqlWh3, null); - /** - * 汽车直租-微信 - */ - List> dataListWYh1= DataOperatorUtil.getDataBySql(Sqlca, sqlWYh1, null); - List> dataListWYh2= DataOperatorUtil.getDataBySql(Sqlca, sqlWYh2, null); - List> dataListWYh3= DataOperatorUtil.getDataBySql(Sqlca, sqlWYh3, null); - - /** - * 汽车类-回租-卡扣 - */ - // 收到的租金--卡扣-当月的-(汽车回租) - String sql_whereqh1 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的租金-卡扣-',LVRI.PLAN_LIST) ELSE '收到的租金-卡扣' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT WHEN LV.SORT_NUMBER='2' THEN LVRI.INTEREST ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='3' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='4' THEN LVRI.INTEREST WHEN LV.SORT_NUMBER='5' THEN ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='6' THEN (LVRI.INTEREST-ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' OR LV.SORT_NUMBER='6' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '汽车C端待查客户' WHEN LV.SORT_NUMBER='6' THEN '' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN 'APZL00000000DC' WHEN LV.SORT_NUMBER='6' THEN '' ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='5' THEN '0604' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='6' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_INCOME LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2018082100000142') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - // 收到的租金--卡扣-跨月的-(汽车回租) - String sql_whereqh2 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的租金-卡扣-',LVRI.PLAN_LIST) ELSE '收到的租金-卡扣' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='3' THEN LVRI.INTEREST ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '汽车C端待查客户' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN 'APZL00000000DC' ELSE LVRI.CUST_ID END AS F65, '' AS F73, '' AS F74, '' AS F75, '' AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_INCOME2 LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2018082100000143') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - //收到的逾期利息--卡扣-(汽车回租) - String sql_whereqh3 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的逾期利息-卡扣-',LVRI.PLAN_LIST) ELSE '收到的逾期利息-卡扣' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.PENALTY ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN ROUND(LVRI.PENALTY/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='3' THEN LVRI.PENALTY-(ROUND(LVRI.PENALTY/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2)) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='2' THEN LCI.CONTRACT_NUMBER ELSE '' END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '汽车C端待查客户' WHEN LV.SORT_NUMBER='3' THEN '' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN 'APZL00000000DC' WHEN LV.SORT_NUMBER='3' THEN '' ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='2' THEN '0603' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='3' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_PENALTY_INCOME LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2018082100000144') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.PENALTY>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - /** - * 汽车类-直租-卡扣 - */ - // 收到的租金--卡扣-当月的-(汽车直租) - String sql_whereqz1 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的租金-卡扣-',LVRI.PLAN_LIST) ELSE '收到的租金-卡扣' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT WHEN LV.SORT_NUMBER='2' THEN LVRI.INTEREST WHEN LV.SORT_NUMBER='3' THEN (LVRI.CORPUS-ROUND(LVRI.CORPUS/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='4' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='5' THEN LVRI.INTEREST WHEN LV.SORT_NUMBER='6' THEN ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='7' THEN ((LVRI.CORPUS-ROUND(LVRI.CORPUS/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) +(LVRI.INTEREST-ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'利息',LCCT.START_DATE),2))) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' OR LV.SORT_NUMBER='7' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '汽车C端待查客户' WHEN LV.SORT_NUMBER='7' THEN '' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN 'APZL00000000DC' WHEN LV.SORT_NUMBER='7' THEN '' ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='6' THEN '0604' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='7' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_INCOME LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019070100000008') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='01' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - // 收到的租金--卡扣-跨月的-(汽车直租) - String sql_whereqz2 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的租金-卡扣-',LVRI.PLAN_LIST) ELSE '收到的租金-卡扣' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='3' THEN LVRI.INTEREST ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '汽车C端待查客户' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN 'APZL00000000DC' ELSE LVRI.CUST_ID END AS F65, '' AS F73, '' AS F74, '' AS F75, '' AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_INCOME2 LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019070100000009') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.RENT>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='01' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - //收到的逾期利息--卡扣-(汽车直租) - String sql_whereqz3 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的逾期利息-卡扣-',LVRI.PLAN_LIST) ELSE '收到的逾期利息-卡扣' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.PENALTY ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN ROUND(LVRI.PENALTY/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='3' THEN LVRI.PENALTY-(ROUND(LVRI.PENALTY/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2)) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='2' THEN LCI.CONTRACT_NUMBER ELSE '' END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '汽车C端待查客户' WHEN LV.SORT_NUMBER='3' THEN '' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN 'APZL00000000DC' WHEN LV.SORT_NUMBER='3' THEN '' ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='2' THEN '0603' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='3' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_PENALTY_INCOME LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019070100000007') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(卡扣)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS IN ('AutoBuckle','TLCollect') AND LVRI.PENALTY>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='01' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - /** - * 汽车类-回租-微信 - */ - // 收到的租金--卡扣-当月的-(汽车回租) - String sql_whereWh1 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的租金-微信-',LVRI.PLAN_LIST) ELSE '收到的租金-微信' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT WHEN LV.SORT_NUMBER='2' THEN LVRI.INTEREST ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='3' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='4' THEN LVRI.INTEREST WHEN LV.SORT_NUMBER='5' THEN ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='6' THEN (LVRI.INTEREST-ROUND(LVRI.INTEREST/GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' OR LV.SORT_NUMBER='6' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '北京安鹏昌达资产管理有限公司' WHEN LV.SORT_NUMBER='6' THEN '' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN '807001002013' WHEN LV.SORT_NUMBER='6' THEN '' ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='5' THEN '0604' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='6' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_INCOME LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019120900000160') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND LVRI.RENT>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - // 收到的租金--卡扣-跨月的-(汽车回租) - String sql_whereWh2 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的租金-微信-',LVRI.PLAN_LIST) ELSE '收到的租金-微信' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='3' THEN LVRI.INTEREST ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '北京安鹏昌达资产管理有限公司' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN '807001002013' ELSE LVRI.CUST_ID END AS F65, '' AS F73, '' AS F74, '' AS F75, '' AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_INCOME2 LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019120900000161') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND IFNULL(LVRI.RENT,0)>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL AND LVRI.RENT>0 ORDER BY LVRI.VOUCHER_F3"; - //收到的逾期利息--卡扣-(汽车回租) - String sql_whereWh3 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的逾期利息-微信-',LVRI.PLAN_LIST) ELSE '收到的逾期利息-微信' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.PENALTY ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN ROUND(LVRI.PENALTY/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='3' THEN LVRI.PENALTY-(ROUND(LVRI.PENALTY/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2)) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='2' THEN LCI.CONTRACT_NUMBER ELSE '' END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '北京安鹏昌达资产管理有限公司' WHEN LV.SORT_NUMBER='3' THEN '' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN '807001002013' WHEN LV.SORT_NUMBER='3' THEN '' ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='2' THEN '0603' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='3' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_PENALTY_INCOME LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019120900000159') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(微信)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXPay' AND IFNULL(LVRI.PENALTY,0)>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - /** - * 汽车类-回租-微信银联 - */ - // 收到的租金--卡扣-当月的-(汽车回租) - String sql_whereWYh1 = "INSERT INTO VOUCHER_V8 ( ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(), '-', '') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR( CASE WHEN ( LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE = '' ) THEN DATE_FORMAT(NOW(), '%Y/%m/%d') ELSE DATE_FORMAT( LVRI.ACCOUNTING_DATE, '%Y/%m/%d' ) END, 1, 4 ) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT( '收到的租金-微信银联-', LVRI.PLAN_LIST ) ELSE '收到的租金-微信银联' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER = '1' THEN LVRI.RENT WHEN LV.SORT_NUMBER = '2' THEN LVRI.INTEREST ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER = '3' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER = '4' THEN LVRI.INTEREST WHEN LV.SORT_NUMBER = '5' THEN ROUND( LVRI.INTEREST / GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) WHEN LV.SORT_NUMBER = '6' THEN ( LVRI.INTEREST - ROUND( LVRI.INTEREST / GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ), 2 ) ) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN ( LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE = '' ) THEN DATE_FORMAT(NOW(), '%Y/%m/%d') ELSE DATE_FORMAT( LVRI.ACCOUNTING_DATE, '%Y/%m/%d' ) END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR( CASE WHEN ( LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE = '' ) THEN DATE_FORMAT(NOW(), '%Y/%m/%d') ELSE DATE_FORMAT( LVRI.ACCOUNTING_DATE, '%Y/%m/%d' ) END, 1, 4 ) AS F51, SUBSTR( CASE WHEN ( LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE = '' ) THEN DATE_FORMAT(NOW(), '%Y/%m/%d') ELSE DATE_FORMAT( LVRI.ACCOUNTING_DATE, '%Y/%m/%d' ) END, 6, 2 ) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER = '1' OR LV.SORT_NUMBER = '6' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER = '1' THEN '汽车C端待查客户' WHEN LV.SORT_NUMBER = '6' THEN '' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER = '1' THEN 'APZL00000000DC' WHEN LV.SORT_NUMBER = '6' THEN '' ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER = '5' THEN '0604' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER = '6' THEN (SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER = ROUND( ( GETTAX ( LCI.LEAS_FORM, '租息', LCCT.START_DATE ) - 1 ) * 100, 0 )) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION = '1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_INCOME LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER) OI ON OI.OWN_NAME = LCI.SUBJECTNAME LEFT JOIN (SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID = LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID = LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019120500000153')) LV ON LV.PROJ_TYPE = LCI.LEAS_FORM LEFT JOIN (SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58,F56) V8 ON V8.F58 = LVRI.INCOME_ID AND V8.F56 = LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE, '%Y/%m/%d') > DATE_FORMAT('2022-02-07', '%Y/%m/%d') AND LVRI.COLLECT_STATUS = 'WXUnionPay' AND IFNULL(LVRI.RENT, 0) > 0 AND LCI.BUSINESSTYPE = '1' AND LCI.LEAS_FORM = '02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - // 收到的租金--卡扣-跨月的-(汽车回租) - String sql_whereWYh2 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的租金-微信银联-',LVRI.PLAN_LIST) ELSE '收到的租金-微信银联' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.RENT ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN LVRI.CORPUS WHEN LV.SORT_NUMBER='3' THEN LVRI.INTEREST ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='1' THEN '' ELSE LCI.CONTRACT_NUMBER END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '汽车C端待查客户' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN 'APZL00000000DC' ELSE LVRI.CUST_ID END AS F65, '' AS F73, '' AS F74, '' AS F75, '' AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_RENT_INCOME2 LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019120500000154') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%-收到的租金(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXUnionPay' AND LVRI.RENT>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - //收到的逾期利息--卡扣-(汽车回租) - String sql_whereWYh3 = "INSERT INTO VOUCHER_V8 (ID, EVIDENCE_MESSAGE, PERIODYEAR, F15, F2, F3, F5, F6, F7, F8, F12, F1, F49, F50, F51, F52, F56, F59, F60, F61, F62, F65, F73, F74, F75, F76, V8_STATUS, GENERATE_DATE, V8_FLAG, MODULE_NAME, ENTRYDC, INPUTUSERID, F58, F67, F47, F48 ) SELECT REPLACE(UUID(),'-','') AS ID, '凭证输出' AS EVIDENCE_MESSAGE, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS PERIODYEAR, LVRI.HIRE_DATE AS F15, LV.SUBJECTS_CODE AS F2, LVRI.VOUCHER_F3 AS F3, CASE WHEN LVRI.PLAN_LIST IS NOT NULL THEN CONCAT('收到的逾期利息-微信银联-',LVRI.PLAN_LIST) ELSE '收到的逾期利息-微信银联' END AS F5, LV.LOAN_SUBJECT AS F6, CASE WHEN LV.SORT_NUMBER='1' THEN LVRI.PENALTY ELSE 0.00 END AS F7, CASE WHEN LV.SORT_NUMBER='2' THEN ROUND(LVRI.PENALTY/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2) WHEN LV.SORT_NUMBER='3' THEN LVRI.PENALTY-(ROUND(LVRI.PENALTY/GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE),2)) ELSE 0.00 END AS F8, '定时任务-每天生成租金实收凭证' AS F12, CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END AS F1, LCI.SUBJECTID AS F49, LCI.SUBJECTNAME AS F50, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,1,4) AS F51, SUBSTR(CASE WHEN (LVRI.ACCOUNTING_DATE IS NULL OR LVRI.ACCOUNTING_DATE='') THEN DATE_FORMAT(NOW(),'%Y/%m/%d') ELSE DATE_FORMAT(LVRI.ACCOUNTING_DATE,'%Y/%m/%d') END,6,2) AS F52, LVRI.LRI_ID AS F56, LV.SORT_NUMBER AS F59, CASE WHEN LV.SORT_NUMBER='2' THEN LCI.CONTRACT_NUMBER ELSE '' END AS F60, CASE WHEN LV.SORT_NUMBER='1' THEN '汽车C端待查客户' WHEN LV.SORT_NUMBER='3' THEN '' ELSE LVRI.CUST_NAME END AS F61, LV.LOAN_SUBJECT AS F62, CASE WHEN LV.SORT_NUMBER='1' THEN 'APZL00000000DC' WHEN LV.SORT_NUMBER='3' THEN '' ELSE LVRI.CUST_ID END AS F65, CASE WHEN LV.SORT_NUMBER='2' THEN '0603' ELSE '' END AS F73, '' AS F74, '' AS F75, CASE WHEN LV.SORT_NUMBER='3' THEN ( SELECT TAX_CODES FROM TAX_CODE WHERE TAX_NUMBER=ROUND((GETTAX(LCI.LEAS_FORM,'逾期利息',LCCT.START_DATE)-1)*100,0) ) ELSE '' END AS F76, '已完整' AS V8_STATUS, DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') AS GENERATE_DATE, '0' AS V8_FLAG, LV.MODULAR_NUMBER AS MODULE_NAME, CASE WHEN LV.LOAN_DIRECTION='1' THEN '1' ELSE '-1' END AS ENTRYDC, 'admin' AS INPUTUSERID, LVRI.INCOME_ID AS F58, LCI.LEAS_FORM AS F67, LCI.CONTRACT_NUMBER, OI.OWN_NUMBER FROM LV_PENALTY_INCOME LVRI LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LVRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN ( SELECT OWN_NUMBER, MAX(OWN_NAME) AS OWN_NAME FROM OWN_INFO GROUP BY OWN_NUMBER ) OI ON OI.OWN_NAME=LCI.SUBJECTNAME LEFT JOIN ( SELECT LVC.PROJ_TYPE, LVL.ID, LVL.LOAN_DIRECTION, LVC.OWNED_COMPANY, LVL.SORT_NUMBER, LVL.LOAN_SUBJECT, LVC.MODULAR_NUMBER, LSC.SUBJECTS_CODE FROM LV_VOUCHER_CONFIG LVC LEFT JOIN LV_VOUCHER_LOAN LVL ON LVL.VOUCHER_ID=LVC.ID LEFT JOIN LV_STACTS_CONFIG LSC ON LSC.ID=LVL.LOAN_SUBJECT WHERE LVC.VOUCHER_NO IN ('PZ2019120500000155') ) LV ON LV.PROJ_TYPE=LCI.LEAS_FORM LEFT JOIN ( SELECT F58, F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%收到的逾期利息(微信银联)%' AND F58 IS NOT NULL AND F56 IS NOT NULL GROUP BY F58, F56 ) V8 ON V8.F58=LVRI.INCOME_ID AND V8.F56=LVRI.LRI_ID WHERE DATE_FORMAT(LVRI.HIRE_DATE,'%Y/%m/%d')>DATE_FORMAT('2022-02-07','%Y/%m/%d') AND LVRI.COLLECT_STATUS='WXUnionPay' AND LVRI.PENALTY>0 AND LCI.BUSINESSTYPE='1' AND LCI.LEAS_FORM='02' AND V8.F58 IS NULL ORDER BY LVRI.VOUCHER_F3"; - - /** - * 根据查询语句判断, 有值才执行插入SQL - */ - /** - * 汽车回租-卡扣 - */ - if(dataListqh1 != null && !dataListqh1.isEmpty()) { - SqlObject sqlsqh1 = new SqlObject(sql_whereqh1); - Sqlca.executeSQL(sqlsqh1); + /** + * 汽车回租-微信 + */ + // 收到的租金--卡扣-当月的-(汽车回租) + List> dataListWh1=DataOperatorUtil.getDataBySql(Sqlca, sqlWh1, null); + if(dataListWh1 != null && !dataListWh1.isEmpty()) { + for(int i=0; i> dataListWh2=DataOperatorUtil.getDataBySql(Sqlca, sqlWh2, null); + if(dataListWh2 != null && !dataListWh2.isEmpty()) { + for(int i=0; i> dataListWh3=DataOperatorUtil.getDataBySql(Sqlca, sqlWh3, null); + if(dataListWh3 != null && !dataListWh3.isEmpty()) { + for(int i=0; i> dataListWYh1= DataOperatorUtil.getDataBySql(Sqlca, sqlWYh1, null); + if(dataListWYh1 != null && !dataListWYh1.isEmpty()) { + for(int i=0; i> dataListWYh2= DataOperatorUtil.getDataBySql(Sqlca, sqlWYh2, null); + if(dataListWYh2 != null && !dataListWYh2.isEmpty()) { + for(int i=0; i> dataListWYh3= DataOperatorUtil.getDataBySql(Sqlca, sqlWYh3, null); + if(dataListWYh3 != null && !dataListWYh3.isEmpty()) { + for(int i=0; i */ public static final String uu_id = "uu_id"; + /** + * 标识租赁物是否结清 STRING(32)
+ */ + public static final String TERMINATE_TYPE = "TERMINATE_TYPE"; } \ No newline at end of file diff --git a/src_jbo/jbo/app/LB_EQUIPMENT_CAR_TEMP.java b/src_jbo/jbo/app/LB_EQUIPMENT_CAR_TEMP.java index 834ccf04e..3bde31cb8 100644 --- a/src_jbo/jbo/app/LB_EQUIPMENT_CAR_TEMP.java +++ b/src_jbo/jbo/app/LB_EQUIPMENT_CAR_TEMP.java @@ -457,4 +457,10 @@ public interface LB_EQUIPMENT_CAR_TEMP{ * 标识 STRING(32)
*/ public static final String uu_id = "uu_id"; + + /** + * 标识租赁物是否结清 STRING(32)
+ */ + public static final String TERMINATE_TYPE = "TERMINATE_TYPE"; + } \ No newline at end of file diff --git a/src_jbo/jbo/app/tenwa/calc/LC_FUND_RENT_ADJUST.java b/src_jbo/jbo/app/tenwa/calc/LC_FUND_RENT_ADJUST.java index f32eed54a..5ed1d7715 100644 --- a/src_jbo/jbo/app/tenwa/calc/LC_FUND_RENT_ADJUST.java +++ b/src_jbo/jbo/app/tenwa/calc/LC_FUND_RENT_ADJUST.java @@ -177,4 +177,24 @@ public interface LC_FUND_RENT_ADJUST{ * 商定还款日息差 STRING(32)
*/ public static final String AGREED_DATEPENALTY = "AGREED_DATEPENALTY"; + /** + * 结清方式 STRING(32)
+ */ + public static final String SETTLE_METHOD = "SETTLE_METHOD"; + /** + * 租赁物比重 STRING(32)
+ */ + public static final String PROPROTION_NUMBER = "PROPROTION_NUMBER"; + /** + * 融资金额(元) STRING(32)
+ */ + public static final String CLEAN_LEASE_MONEY = "CLEAN_LEASE_MONEY"; + /** + * 部分结清车辆未到期本金 STRING(32)
+ */ + public static final String PREMATURE_MONEY = "PREMATURE_MONEY"; + /** + * 剩余车辆未到期本金 STRING(32)
+ */ + public static final String RESIDUE_MONEY = "RESIDUE_MONEY"; } \ No newline at end of file diff --git a/src_jbo/jbo/app/tenwa/calc/LC_FUND_RENT_ADJUST_TEMP.java b/src_jbo/jbo/app/tenwa/calc/LC_FUND_RENT_ADJUST_TEMP.java index 641f22090..bda1c7aa1 100644 --- a/src_jbo/jbo/app/tenwa/calc/LC_FUND_RENT_ADJUST_TEMP.java +++ b/src_jbo/jbo/app/tenwa/calc/LC_FUND_RENT_ADJUST_TEMP.java @@ -181,4 +181,24 @@ public interface LC_FUND_RENT_ADJUST_TEMP{ * 商定还款日息差 STRING(32)
*/ public static final String AGREED_DATEPENALTY = "AGREED_DATEPENALTY"; + /** + * 结清方式 STRING(32)
+ */ + public static final String SETTLE_METHOD = "SETTLE_METHOD"; + /** + * 租赁物比重 STRING(32)
+ */ + public static final String PROPROTION_NUMBER = "PROPROTION_NUMBER"; + /** + * 融资金额(元) STRING(32)
+ */ + public static final String CLEAN_LEASE_MONEY = "CLEAN_LEASE_MONEY"; + /** + * 部分结清车辆未到期本金 STRING(32)
+ */ + public static final String PREMATURE_MONEY = "PREMATURE_MONEY"; + /** + * 剩余车辆未到期本金 STRING(32)
+ */ + public static final String RESIDUE_MONEY = "RESIDUE_MONEY"; } \ No newline at end of file diff --git a/src_jbo/jbo/com/tenwa/entity/comm/flow/D_DEPOSITRETURN_INFO.java b/src_jbo/jbo/com/tenwa/entity/comm/flow/D_DEPOSITRETURN_INFO.java index 0ec48664d..32fd844d4 100644 --- a/src_jbo/jbo/com/tenwa/entity/comm/flow/D_DEPOSITRETURN_INFO.java +++ b/src_jbo/jbo/com/tenwa/entity/comm/flow/D_DEPOSITRETURN_INFO.java @@ -101,4 +101,16 @@ public interface D_DEPOSITRETURN_INFO{ * 连续代偿期数 STRING(32)
*/ public static final String COMPENSATORY_CON = "COMPENSATORY_CON"; + /** + * 本金 DOUBLE(22)
+ */ + public static final String CORPUS = "CORPUS"; + /** + * 利息 DOUBLE(22)
+ */ + public static final String INTEREST = "INTEREST"; + /** + * 罚息 DOUBLE(22)
+ */ + public static final String PENALTY = "PENALTY"; } \ No newline at end of file diff --git a/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR.java b/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR.java index 0f15e85a9..b2f32d2be 100644 --- a/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR.java +++ b/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR.java @@ -325,4 +325,8 @@ public interface LB_EQUIPMENT_CAR{ * 标识 STRING(32)
*/ public static final String uu_id = "uu_id"; + /** + * 标识租赁物是否结清 STRING(32)
+ */ + public static final String TERMINATE_TYPE = "TERMINATE_TYPE"; } \ No newline at end of file diff --git a/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR_HIS.java b/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR_HIS.java index 07d9c6315..6582d2ed5 100644 --- a/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR_HIS.java +++ b/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR_HIS.java @@ -321,4 +321,8 @@ public interface LB_EQUIPMENT_CAR_HIS{ * 标识 STRING(32)
*/ public static final String uu_id = "uu_id"; + /** + * 标识租赁物是否结清 STRING(32)
+ */ + public static final String TERMINATE_TYPE = "TERMINATE_TYPE"; } \ No newline at end of file diff --git a/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR_TEMP.java b/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR_TEMP.java index f99908653..26bbe222d 100644 --- a/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR_TEMP.java +++ b/src_jbo/jbo/com/tenwa/lease/comm/LB_EQUIPMENT_CAR_TEMP.java @@ -457,4 +457,8 @@ public interface LB_EQUIPMENT_CAR_TEMP{ * 标识 STRING(32)
*/ public static final String uu_id = "uu_id"; + /** + * 标识租赁物是否结清 STRING(32)
+ */ + public static final String TERMINATE_TYPE = "TERMINATE_TYPE"; } \ No newline at end of file diff --git a/src_jbo/jbo/sys/VI_CUSTOMER_DISTRIBUTOR.java b/src_jbo/jbo/sys/VI_CUSTOMER_DISTRIBUTOR.java new file mode 100644 index 000000000..a83c59eb1 --- /dev/null +++ b/src_jbo/jbo/sys/VI_CUSTOMER_DISTRIBUTOR.java @@ -0,0 +1,28 @@ +package jbo.sys; + +import java.lang.String; + +/** +* 客户和经销商名称 - JBO命名常量类

+* Note: This file is generated by ADE tools, dont modify it.
+ +*/ +public interface VI_CUSTOMER_DISTRIBUTOR{ + /** + * 客户和经销商名称

+ * 代表本类映射的BizObjectClass + */ + public static final String CLASS_NAME = "jbo.sys.VI_CUSTOMER_DISTRIBUTOR"; + /** + * 对象编号 STRING(20)
+ */ + public static final String flow_unid = "flow_unid"; + /** + * 客户名称 STRING(20)
+ */ + public static final String CUSTOMER_NAME = "CUSTOMER_NAME"; + /** + * 经销商名称 STRING(20)
+ */ + public static final String DISTRIBUTOR_NAME = "DISTRIBUTOR_NAME"; +} \ No newline at end of file diff --git a/src_sql/view/vi_rent_collect.sql b/src_sql/view/vi_rent_collect.sql index 372d5326f..efeac69a3 100644 --- a/src_sql/view/vi_rent_collect.sql +++ b/src_sql/view/vi_rent_collect.sql @@ -51,7 +51,7 @@ WHERE ((`lci`.`CONTRACT_STATUS` = '31') WHERE ((`lorl`.`PAYMENT_NUMBER` = `lrp`.`PAYMENT_NUMBER`) AND ((lorl.plan_id=lrp.id AND (`lorl`.`FLOW_NAME` IN('微信银联收款','微信支付收款','网银收款'))) - OR lorl.flow_name IN ('合同中途终止') + OR lorl.flow_name IN ('合同中途终止','提前结清申请') ) ))))) ); \ No newline at end of file diff --git a/src_sql/鎶曚骇SQL/v20211231/tft_20211231.sql b/src_sql/鎶曚骇SQL/v20211231/tft_20211231.sql index cfe67e827..e0030d79f 100644 --- a/src_sql/鎶曚骇SQL/v20211231/tft_20211231.sql +++ b/src_sql/鎶曚骇SQL/v20211231/tft_20211231.sql @@ -24,3 +24,10 @@ Insert Into AWE_Role_Menu (roleid,menuid) Values ('399','130'); Insert Into AWE_Role_Menu (roleid,menuid) Values ('800R00000021','130'); Insert Into AWE_Role_Menu (roleid,menuid) Values ('800R00000030','130'); Insert Into AWE_Role_Menu (roleid,menuid) Values ('800R00000034','130'); + +-- 休眠流程添加休眠前和休眠后的本金是否一致 +Insert Into SCENARIO_CATALOG (scenarioid,scenarioname,scenariodescribe,defaultsubtypeno,initiateclass,inputuser,inputorg,inputtime,updateuser,updatetime,remark,isriskwarn) Values ('租金休眠流程','租金休眠流程','','10','',null,null,null,null,null,'',null); +Insert Into SCENARIO_MODEL (scenarioid,modelid,sortno,modelname,modeldescribe,modeltype,subtypeno,runcondition,status,nopassdeal,passdeal,passmessage,nopassmessage,executescript,remark,inputuser,inputorg,inputtime,updateuser,updatetime,groupid,modelkind,bizviewer) Values ('租金休眠流程','0010','0010','融资金额','','20','','','1','10',null,'通过','休眠后的本金与原本金不相等!','select case when lcc.CLEAN_LEASE_MONEY-a.CORPUS=0 then "true" else "false" end from (select sum(CORPUS) as CORPUS,CONTRACT_ID from LC_RENT_PLAN_TEMP where FLOWUNID =''#{ObjectNo}'' group by CONTRACT_ID ) a left join lc_calc_condition lcc on a.contract_id =lcc.CONTRACT_ID','',null,null,null,null,null,null,null,null); +Insert Into SCENARIO_GROUP (scenarioid,groupid,sortno,groupname,remark,inputuser,inputorg,inputtime,updateuser,updatetime) Values ('租金休眠流程','0010','0010','休眠申请','',null,null,null,null,null); +Insert Into SCENARIO_RELATIVE (scenarioid,groupid,modelid) Values ('租金休眠流程','0010','0010'); + diff --git a/src_sys/com/tenwa/flow/action/comm/SelectBalance.java b/src_sys/com/tenwa/flow/action/comm/SelectBalance.java index 870f97ee7..7a45fbfce 100644 --- a/src_sys/com/tenwa/flow/action/comm/SelectBalance.java +++ b/src_sys/com/tenwa/flow/action/comm/SelectBalance.java @@ -57,7 +57,7 @@ public class SelectBalance { return "ERROR@剩余额度不足"; } } - return "ERROR@网络异常……"; + return "ERROR@经销商没有保证金"; } } \ No newline at end of file diff --git a/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCache.java b/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCache.java index 76a562fb8..8d2c4be53 100644 --- a/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCache.java +++ b/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCache.java @@ -14,6 +14,7 @@ import com.gnete.security.crypt.CryptException; import com.tenwa.comm.util.date.DateAssistant; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.lease.app.allinpay.service.impl.AllinpayPaymentDo; +import com.tenwa.lease.app.quartzmession.AutoRefresh; import com.tenwa.quartz.DateUtil; import jbo.app.tenwa.calc.LC_COLLECT_MANUAL_INFO; import jbo.app.tenwa.calc.LC_RENT_INCOME; @@ -38,11 +39,16 @@ import java.text.DecimalFormat; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CollectAuditInfoCache { + private static final Lock lock = new ReentrantLock(); + private static Log log = LogFactory.getLog(CollectAuditInfoCache.class); private String id; @@ -55,6 +61,7 @@ public class CollectAuditInfoCache { private String collectStyle; private String datas; private String jobName; + private String operateFrom; public String getDatas() { return datas; @@ -729,12 +736,29 @@ public class CollectAuditInfoCache { bod.setAttributeValue("PLAN_LIST",bom.getAttribute("plan_list").toString()); bod.setAttributeValue("RENT_PLAN_ID",bom.getAttribute("id").toString()); bod.setAttributeValue("COMPENSATORY_CON",COMPENSATORY_CON); + moneyHandle(bom.getAttribute("id").toString(),bod,tx); bd.saveObject(bod); //修改经销商信息表里的金额 bdi.createQuery("update O set O.sums='"+account_balance+"' where O.distributor_no=:distributor_id").setParameter("distributor_id", distributor_id).executeUpdate(); } return "总共有 "+i+" 笔租金收款成功\n"+j+" 笔租金收款失败"; } + + /** + * 处理本金,利息,罚息 + * @param planId + * @param bo + */ + private void moneyHandle(String planId, BizObject bo, JBOTransaction tx) throws Exception { + ASResultSet as2 = Transaction.createTransaction(tx).getASResultSet2("select * from vi_repay_money where plan_id = '" + planId + "';"); + if (as2.next()) { + bo.setAttributeValue("corpus", as2.getStringValue("corpus")); + bo.setAttributeValue("interest", as2.getStringValue("interest")); + bo.setAttributeValue("penalty", as2.getStringValue("penalty")); + } + as2.close(); + } + private BigDecimal BigDecimal(String string) { // TODO Auto-generated method stub return null; @@ -835,37 +859,43 @@ public class CollectAuditInfoCache { * @throws Exception */ public String batchCollectManageManual(JBOTransaction tx) throws Exception{ - String[] ids = id.split("@"); - String datas_json = datas.replaceAll("@", ","); - JSONObject object = JSON.parseObject(datas_json); - StringBuffer parms = new StringBuffer(); - for (String str : ids) { - if (parms.length()==0) { - parms.append("'"+str+"'"); - }else{ - parms.append(",'"+str+"'"); + boolean lockHoldStatus = lock.tryLock(); + try { + if (lockHoldStatus) { + String[] ids = id.split("@"); + String datas_json = datas.replaceAll("@", ","); + JSONObject object = JSON.parseObject(datas_json); + StringBuffer parms = new StringBuffer(); + for (String str : ids) { + if (parms.length()==0) { + parms.append("'"+str+"'"); + }else{ + parms.append(",'"+str+"'"); + } + } + BizObjectManager bm = JBOFactory.getFactory().getManager(VI_LC_AUDIT_RENT_PLAN.CLASS_NAME); + List bolistTL = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent,O.project_id from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and collect_type='TLcollect' and O.id in ("+parms.toString()+")").getResultList(false); + List bolistYL = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and collect_type='YLcollect' and O.id in ("+parms.toString()+")").getResultList(false); + if (bolistTL.size() != 0) { + AllinpayPaymentDo apd = new AllinpayPaymentDo(); + for(BizObject bo:bolistTL){ + String plan_id = bo.getAttribute("id").toString(); + bo.setAttributeValue("rent", object.get(plan_id)); + } + apd.BatchCollectMoeny(tx, bolistTL); + } + if (bolistYL.size() != 0) { + for(BizObject bo:bolistYL){ + String plan_id = bo.getAttribute("id").toString(); + bo.setAttributeValue("rent", object.get(plan_id)); + } + singleBatchCollectMoeny(tx, bolistYL); + } } + } finally { + if (lockHoldStatus) lock.unlock(); } - BizObjectManager bm = JBOFactory.getFactory().getManager(VI_LC_AUDIT_RENT_PLAN.CLASS_NAME); - List bolistTL = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent,O.project_id from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and collect_type='TLcollect' and O.id in ("+parms.toString()+")").getResultList(false); - List bolistYL = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and collect_type='YLcollect' and O.id in ("+parms.toString()+")").getResultList(false); - if (bolistTL.size() != 0) { - AllinpayPaymentDo apd = new AllinpayPaymentDo(); - for(BizObject bo:bolistTL){ - String plan_id = bo.getAttribute("id").toString(); - bo.setAttributeValue("rent", object.get(plan_id)); - } - apd.BatchCollectMoeny(tx, bolistTL); - } - if (bolistYL.size() != 0) { - for(BizObject bo:bolistYL){ - String plan_id = bo.getAttribute("id").toString(); - bo.setAttributeValue("rent", object.get(plan_id)); - } - singleBatchCollectMoeny(tx, bolistYL); - } - - return "发起扣款申请成功!"; + return lockHoldStatus ? "发起扣款申请成功!" : "禁止重复发起扣款"; } /** * 检查定时任务是否正在运行 @@ -922,6 +952,11 @@ public class CollectAuditInfoCache { * @throws Exception */ public String queryBatchCollectStatus(JBOTransaction tx) throws Exception{ + if(!Objects.isNull(operateFrom)){ + if(AutoRefresh.getHoldLockStatus()){ + return "定时任务回盘中,禁止手工操作!"; + } + } Transaction Sqlca = Transaction.createTransaction(tx); BizObjectManager bm = JBOFactory.getFactory().getManager(VI_LC_AUDIT_RENT_PLAN.CLASS_NAME); BizObjectManager bc = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME); @@ -2011,5 +2046,13 @@ public class CollectAuditInfoCache { public void setJobName(String jobName) { this.jobName = jobName; } - + + + public String getOperateFrom() { + return operateFrom; + } + + public void setOperateFrom(String operateFrom) { + this.operateFrom = operateFrom; + } } diff --git a/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCacheTj.java b/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCacheTj.java index 9811957a5..a7ff05baa 100644 --- a/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCacheTj.java +++ b/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCacheTj.java @@ -11,6 +11,7 @@ import com.amarsoft.awe.util.Transaction; import com.gnete.security.crypt.CryptException; import com.tenwa.comm.util.date.DateAssistant; import com.tenwa.lease.app.allinpay.service.impl.AllinpayPaymentDo; +import com.tenwa.lease.app.quartzmession.AutoRefresh; import com.tenwa.quartz.DateUtil; import jbo.app.tenwa.calc.LC_COLLECT_MANUAL_INFO; import jbo.app.tenwa.calc.LC_RENT_INCOME; @@ -36,11 +37,16 @@ import java.text.DecimalFormat; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CollectAuditInfoCacheTj { + private static final Lock lock = new ReentrantLock(); + private static Log log = LogFactory.getLog(CollectAuditInfoCacheTj.class); private String id; @@ -53,6 +59,7 @@ public class CollectAuditInfoCacheTj { private String collectStyle; private String datas; private String jobName; + private String operateFrom; public String getDatas() { return datas; @@ -833,38 +840,44 @@ public class CollectAuditInfoCacheTj { * @return * @throws Exception */ - public String batchCollectManageManual(JBOTransaction tx) throws Exception{ - String[] ids = id.split("@"); - String datas_json = datas.replaceAll("@", ","); - JSONObject object = JSON.parseObject(datas_json); - StringBuffer parms = new StringBuffer(); - for (String str : ids) { - if (parms.length()==0) { - parms.append("'"+str+"'"); - }else{ - parms.append(",'"+str+"'"); + public String batchCollectManageManual(JBOTransaction tx) throws Exception { + boolean lockHoldStatus = lock.tryLock(); + try { + if (lockHoldStatus) { + String[] ids = id.split("@"); + String datas_json = datas.replaceAll("@", ","); + JSONObject object = JSON.parseObject(datas_json); + StringBuffer parms = new StringBuffer(); + for (String str : ids) { + if (parms.length()==0) { + parms.append("'"+str+"'"); + }else{ + parms.append(",'"+str+"'"); + } + } + BizObjectManager bm = JBOFactory.getFactory().getManager(VI_LC_AUDIT_RENT_PLAN.CLASS_NAME); + List bolistTL = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent,O.project_id from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and collect_type='TLcollect' and O.id in ("+parms.toString()+")").getResultList(false); + List bolistYL = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and collect_type='YLcollect' and O.id in ("+parms.toString()+")").getResultList(false); + if (bolistTL.size() != 0) { + AllinpayPaymentDo apd = new AllinpayPaymentDo(); + for(BizObject bo:bolistTL){ + String plan_id = bo.getAttribute("id").toString(); + bo.setAttributeValue("rent", object.get(plan_id)); + } + apd.BatchCollectMoeny(tx, bolistTL); + } + if (bolistYL.size() != 0) { + for(BizObject bo:bolistYL){ + String plan_id = bo.getAttribute("id").toString(); + bo.setAttributeValue("rent", object.get(plan_id)); + } + singleBatchCollectMoeny(tx, bolistYL); + } } + } finally { + if (lockHoldStatus) lock.unlock(); } - BizObjectManager bm = JBOFactory.getFactory().getManager(VI_LC_AUDIT_RENT_PLAN.CLASS_NAME); - List bolistTL = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent,O.project_id from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and collect_type='TLcollect' and O.id in ("+parms.toString()+")").getResultList(false); - List bolistYL = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and collect_type='YLcollect' and O.id in ("+parms.toString()+")").getResultList(false); - if (bolistTL.size() != 0) { - AllinpayPaymentDo apd = new AllinpayPaymentDo(); - for(BizObject bo:bolistTL){ - String plan_id = bo.getAttribute("id").toString(); - bo.setAttributeValue("rent", object.get(plan_id)); - } - apd.BatchCollectMoeny(tx, bolistTL); - } - if (bolistYL.size() != 0) { - for(BizObject bo:bolistYL){ - String plan_id = bo.getAttribute("id").toString(); - bo.setAttributeValue("rent", object.get(plan_id)); - } - singleBatchCollectMoeny(tx, bolistYL); - } - - return "发起扣款申请成功!"; + return lockHoldStatus ? "发起扣款申请成功!" : "禁止重复发起扣款"; } /** * 检查定时任务是否正在运行 @@ -922,6 +935,11 @@ public class CollectAuditInfoCacheTj { * @throws Exception */ public String queryBatchCollectStatus(JBOTransaction tx) throws Exception{ + if(!Objects.isNull(operateFrom)){ + if(AutoRefresh.getHoldLockStatus()){ + return "定时任务回盘中,禁止手工操作!"; + } + } Transaction Sqlca = Transaction.createTransaction(tx); BizObjectManager bm = JBOFactory.getFactory().getManager(VI_LC_AUDIT_RENT_PLAN.CLASS_NAME); BizObjectManager bc = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME); @@ -1631,7 +1649,7 @@ public class CollectAuditInfoCacheTj { try{ trans = JBOFactory.createJBOTransaction(); Transaction transaction = Transaction.createTransaction(trans); - BizObjectManager bm = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME); + BizObjectManager bm = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME,trans); BizObject bo = bm.createQuery("O.id=:id").setParameter("id", planId).getSingleResult(false); String itemsn0 = ""; if (bo !=null) { @@ -2018,6 +2036,12 @@ public class CollectAuditInfoCacheTj { public void setJobName(String jobName) { this.jobName = jobName; } - - + + public String getOperateFrom() { + return operateFrom; + } + + public void setOperateFrom(String operateFrom) { + this.operateFrom = operateFrom; + } } diff --git a/src_tenwa/com/tenwa/customer/controller/company/NewCustomerCompanyController.java b/src_tenwa/com/tenwa/customer/controller/company/NewCustomerCompanyController.java index f8a46bf6e..722d0e591 100644 --- a/src_tenwa/com/tenwa/customer/controller/company/NewCustomerCompanyController.java +++ b/src_tenwa/com/tenwa/customer/controller/company/NewCustomerCompanyController.java @@ -174,15 +174,7 @@ public class NewCustomerCompanyController{ if(customernum!="" && customernum!=null && customernum.length()>0){ newCustomer.setAttributeValue("customer_num", customernum); }else{ - //获取编码规则 - String serinum=FlowUtil.getCustomer_Id(tx); - String serin=""; - if(serinum.length()<15){ - for(int i=0;i<15-serinum.length();i++){ - serin+="0"; - } - } - newCustomer.setAttributeValue("customer_num", "APZLC"+serin+serinum); + newCustomer.setAttributeValue("customer_num", FlowUtil.getCustomer_Number(true,"C")); } newCustomer.setAttributeValue("inputtime", DateAssistant.getTodayNow()); custManager.saveObject(newCustomer); diff --git a/src_tenwa/com/tenwa/lease/app/message/SmsController.java b/src_tenwa/com/tenwa/lease/app/message/SmsController.java index 619b171d9..3ee0fd4ce 100644 --- a/src_tenwa/com/tenwa/lease/app/message/SmsController.java +++ b/src_tenwa/com/tenwa/lease/app/message/SmsController.java @@ -81,8 +81,8 @@ public class SmsController { String sendPassword = messageConfig.getAttribute("SENDER_PASSWORD_").getString(); String sendUrl = messageConfig.getAttribute("SEND_MESSAGE_URL_").getString(); HttpClient httpClient = new HttpClient(); - //余额查询的接口url - String url = sendUrl+"?pwd="+sendPassword+"&username="+sendUsername; + //余额查询的接口url,查询余额连接不一样,不能从页面配置的获取 + String url = "http://api.rcs6g.com/getBalance.api.php?pwd="+sendPassword+"&username="+sendUsername; GetMethod getMethod = new GetMethod(url); int statusCode = httpClient.executeMethod(getMethod); System.out.println("状态码:"+statusCode); diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClass.java b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClass.java index fddb3610c..f1f8ce098 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClass.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClass.java @@ -1,31 +1,32 @@ package com.tenwa.lease.app.quartzmession; -import org.quartz.JobExecutionContext; - import com.amarsoft.are.util.StringFunction; import com.base.util.QuartzUtil; public class AutoFiveGradeClass { - public String execute(JobExecutionContext arg0){ + private String curUserId; + + public void setCurUserId(String curUserId) { + this.curUserId = curUserId; + } + + public String execute() { AutoFiveGradeClassification autoFive = new AutoFiveGradeClassification(); String startime = StringFunction.getTodayNow(); - Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); - String curUserId = userId == null? "system" : userId.toString(); - try { - - String result= autoFive.autoFiveGradeClassification(); - if(result=="success"){ - QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.AutoFiveGradeClass", "success", "成功", curUserId); - return "success"; - }else{ - QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.AutoFiveGradeClass", "error", "失败", curUserId); - return "error"; - } - } catch (Exception e) { - e.printStackTrace(); - QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.AutoFiveGradeClass", "error", "失败", curUserId); + try { + String result = autoFive.autoFiveGradeClassification(); + if (result == "success") { + QuartzUtil.insertLog(startime, "com.tenwa.lease.app.quartzmession.AutoFiveGradeClass", "success", "成功", curUserId); + return "success"; + } else { + QuartzUtil.insertLog(startime, "com.tenwa.lease.app.quartzmession.AutoFiveGradeClass", "error", "失败", curUserId); return "error"; - } + } + } catch (Exception e) { + e.printStackTrace(); + QuartzUtil.insertLog(startime, "com.tenwa.lease.app.quartzmession.AutoFiveGradeClass", "error", "失败", curUserId); + return "error"; + } } } diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java index f514d5707..32b7210ec 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java @@ -93,8 +93,12 @@ public class AutoFiveGradeClassification implements Job { //更新合同状态为100,105 分类状态 sqlca.executeSQL("update LC_CALC_CONDITION_STATUS LCCS join lb_contract_info lci on LCCS.CONTRACT_ID = lci.ID set LCCS.FIVE_GRADE='ClassifyResult01',LCCS.FIVE_GRADE_DATE= date_format(curdate(),'%Y/%m/%d'),LCCS.FIVE_GRADE_DEMO=concat(date_format(curdate(),'%Y/%m/%d'),'日自动跑批') where lci.CONTRACT_STATUS in ('100','105') and LCCS.FIVE_GRADE <> 'ClassifyResult01'"); - //更新合同状态为31分类状态 + //更新合同状态为31分类状态(逾期) sqlca.executeSQL("{call proc_autoFiveClassify()}"); + + //更新合同状态为31分类状态(未逾期,刚起租) 2022/03/15 + sqlca.executeSQL("{call proc_autoFiveClassify_normal()}"); + sqlca.commit(); List diList = JBOFactory.getBizObjectManager(DISTRIBUTOR_INFO.CLASS_NAME).createQuery("1=1").getResultList(false); for (BizObject bo : diList) { diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoRefresh.java b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoRefresh.java index b288a4639..f5860c549 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoRefresh.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoRefresh.java @@ -24,6 +24,15 @@ import java.util.concurrent.locks.ReentrantLock; public class AutoRefresh implements Job { private static final Lock lock = new ReentrantLock(); + private static boolean isHoldLock = false; + + public static boolean getHoldLockStatus() { + return isHoldLock; + } + + public static Lock getQuartzLock() { + return lock; + } @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { @@ -33,6 +42,7 @@ public class AutoRefresh implements Job { boolean lockHoldStatus = lock.tryLock(); try { if (lockHoldStatus) { + isHoldLock = true; CollectAuditInfoCache ca = new CollectAuditInfoCache(); JBOTransaction tx = null; try { @@ -85,7 +95,10 @@ public class AutoRefresh implements Job { } catch (Exception e) { e.printStackTrace(); } finally { - if (lockHoldStatus) lock.unlock(); + if (lockHoldStatus) { + lock.unlock(); + isHoldLock = false; + } } } } diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceFundIncomeCreateVoucherJob.java b/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceFundIncomeCreateVoucherJob.java index 72bbf2465..5abfbbe19 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceFundIncomeCreateVoucherJob.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceFundIncomeCreateVoucherJob.java @@ -24,9 +24,9 @@ public class CorpusSourceFundIncomeCreateVoucherJob implements Job { VoucherInfoService voucher = new FundIncomeVoucherPSBC(); voucher.run(); - QuartzUtil.insertLog(startime,"com.tenwa.comm.message.controller.BusinessCancelJob", "success", "成功", curUserId); + QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CorpusSourceFundIncomeCreateVoucherJob", "success", "成功", curUserId); } catch (Exception e) { - QuartzUtil.insertLog(startime,"com.tenwa.comm.message.controller.BusinessCancelJob", "error", "失败", curUserId); + QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CorpusSourceFundIncomeCreateVoucherJob", "error", "失败", curUserId); } } diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/CreateVoucherRentIncomeMission.java b/src_tenwa/com/tenwa/lease/app/quartzmession/CreateVoucherRentIncomeMission.java index eaf865943..07792a107 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/CreateVoucherRentIncomeMission.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/CreateVoucherRentIncomeMission.java @@ -1,5 +1,6 @@ package com.tenwa.lease.app.quartzmession; +import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -11,6 +12,7 @@ import com.tenwa.voucher.CreateVoucherProcess.InsertVoucherRentIncome; * 生成卡扣凭证明细-定时任务 * @author xiezhiwen */ +@DisallowConcurrentExecution public class CreateVoucherRentIncomeMission implements Job { @Override @@ -29,9 +31,9 @@ public class CreateVoucherRentIncomeMission implements Job { InsertVoucherRentIncome ivri=new InsertVoucherRentIncome(); ivri.execute(); - QuartzUtil.insertLog(startime,"com.tenwa.comm.message.controller.BusinessCancelJob", "success", "成功", curUserId); + QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CreateVoucherRentIncomeMission", "success", "成功", curUserId); } catch (Exception e) { - QuartzUtil.insertLog(startime,"com.tenwa.comm.message.controller.BusinessCancelJob", "error", "失败", curUserId); + QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CreateVoucherRentIncomeMission", "error", "失败", curUserId); } } diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java b/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java index 318f9205f..152ed0106 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java @@ -44,11 +44,11 @@ public class MarginDeduction implements Job{ BizObjectManager lfiBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_INCOME"); BizObjectManager lfpBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_PLAN"); BizObjectManager vlrpBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.VI_LC_RENT_PLAN_NEW"); - List> listData = DataOperatorUtil.getDataBySql("select cast(lfp.PLAN_MONEY as decimal(18,2))-cast(ifnull(lfit.fact_money,'0') as decimal(18,2))-cast(IfNULL(lfi.fact_money,'0') as decimal(18,2)) as fact_money,lci.id as contractId " + + List> listData = DataOperatorUtil.getDataBySql("select cast(sum(lfp.PLAN_MONEY) as decimal(18,2))-cast(ifnull(lfit.fact_money,'0') as decimal(18,2))-cast(IfNULL(lfi.fact_money,'0') as decimal(18,2)) as fact_money,lci.id as contractId " + "from lc_fund_plan lfp left join lb_contract_info lci on lci.id=lfp.CONTRACT_ID " + " left join (select sum(fact_money) fact_money,PAYMENT_NUMBER from lc_fund_income_temp where FEE_TYPE='feetype16' and is_flowing='0' and ROLL_BACK='0' group by PAYMENT_NUMBER) lfit on lfp.PAYMENT_NUMBER=lfit.PAYMENT_NUMBER " + " LEFT JOIN (SELECT SUM(fact_money) fact_money,PAYMENT_NUMBER FROM lc_fund_income WHERE FEE_TYPE='feetype16' AND ROLL_BACK='0' group by PAYMENT_NUMBER) lfi on lfp.PAYMENT_NUMBER=lfi.PAYMENT_NUMBER " + - "where lci.BUSINESSTYPE='1' and lci.CONTRACT_STATUS='31' and lfp.FEE_TYPE='feetype16' and lfp.SETTLE_METHOD is not null "); + "where lci.BUSINESSTYPE='1' and lci.CONTRACT_STATUS='31' and lfp.FEE_TYPE='feetype16' and lfp.SETTLE_METHOD is not null AND NOT EXISTS (SELECT 1 FROM lc_occupy_rent_list lorl WHERE lfp.PAYMENT_NUMBER = lorl.PAYMENT_NUMBER AND lorl.flow_name IN ('合同中途终止','微信银联收款','微信支付收款','网银收款','提前结清申请')) group by lci.id HAVING fact_money>0"); if(listData!=null && listData.size() > 0 ){ for (int i = 0; i < listData.size(); i++) { try { diff --git a/src_tenwa/com/tenwa/lease/flow/contract/commbusiness/LBInitContractStatusBusiness.java b/src_tenwa/com/tenwa/lease/flow/contract/commbusiness/LBInitContractStatusBusiness.java index c9ea03b95..d1952cd04 100644 --- a/src_tenwa/com/tenwa/lease/flow/contract/commbusiness/LBInitContractStatusBusiness.java +++ b/src_tenwa/com/tenwa/lease/flow/contract/commbusiness/LBInitContractStatusBusiness.java @@ -2,7 +2,10 @@ package com.tenwa.lease.flow.contract.commbusiness; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.JBOFactory; +import com.amarsoft.awe.util.ASResultSet; +import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; +import com.amarsoft.context.ASUser; import com.tenwa.flow.baseBussion.BaseBussiness; import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO; @@ -12,12 +15,38 @@ public class LBInitContractStatusBusiness extends BaseBussiness { @Override public Object run(Transaction Sqlca) throws Exception { this.initBussinessParam(Sqlca); + String flowname=(String)this.getAttribute("FlowName"); String contractId=this.getAttribute("ContractId").toString(); + String settletype=this.getAttribute("settletype").toString(); String contractStatus=this.getAttribute("ContractStatus").toString(); + String FlowUnid=this.getAttribute("FlowUnid").toString(); BizObjectManager bom=JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME); + String part = Sqlca.getString(" select case when min(TERMINATE_TYPE)=1 or min(TERMINATE_TYPE) is null then 'Y' else 'N' end from lb_equipment_car_temp lect where FLOWUNID = '"+FlowUnid+"' group by FLOWUNID"); Sqlca.join(bom); + if("提前结清".equals(flowname)&&"Y".equals(settletype)&&"Y".equals(part)) { + contractStatus = "31"; + }else if("提前结清".equals(flowname)) { + settle(Sqlca); + } bom.createQuery("update O set CONTRACT_STATUS=:contractstatus where id=:contractid").setParameter("contractstatus", contractStatus).setParameter("contractid", contractId).executeUpdate(); + String sMessage="true"; return sMessage; } + + public void settle(Transaction Sqlca) throws Exception { + this.initBussinessParam(Sqlca); + String contractid = this.getAttribute("ContractId").toString();//当前用户对象 + String CurUser = this.getAttribute("CurUserID").toString(); //当前用户对象 + String flowunid = this.getAttribute("ObjectNo").toString(); //获取流程编号 + String insertSql = "insert into lb_contract_settlement select :contractId,:flowunid,curdate(),now(),:userId,max(lrp.PLAN_LIST)" + +" from lb_contract_info lci left join lc_rent_plan lrp on lci.id = lrp.CONTRACT_ID " + +" where lci.id=:contractId"; + SqlObject sqlObject = new SqlObject(insertSql) + .setParameter("contractId", contractid) + .setParameter("flowunid", flowunid) + .setParameter("userId", CurUser); + Sqlca.executeSQL(sqlObject); + } + } diff --git a/src_tenwa/com/tenwa/lease/flow/contract/onhirechange/OnhireChangeFlowStartAction.java b/src_tenwa/com/tenwa/lease/flow/contract/onhirechange/OnhireChangeFlowStartAction.java index 86e480259..81014e83a 100644 --- a/src_tenwa/com/tenwa/lease/flow/contract/onhirechange/OnhireChangeFlowStartAction.java +++ b/src_tenwa/com/tenwa/lease/flow/contract/onhirechange/OnhireChangeFlowStartAction.java @@ -1,21 +1,17 @@ package com.tenwa.lease.flow.contract.onhirechange; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - +import com.amarsoft.are.jbo.*; +import com.amarsoft.dict.als.manage.CodeManager; +import com.tenwa.comm.exception.BusinessException; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; +import com.tenwa.flow.action.comm.BaseFlowStartAction; import jbo.app.tenwa.calc.LC_CALC_CONDITION; import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT; import jbo.com.tenwa.lease.comm.LC_OCCUPY_RENT_LIST; -import com.amarsoft.are.jbo.BizObject; -import com.amarsoft.are.jbo.BizObjectManager; -import com.amarsoft.are.jbo.JBOException; -import com.amarsoft.are.jbo.JBOFactory; -import com.amarsoft.are.jbo.JBOTransaction; -import com.tenwa.comm.exception.BusinessException; -import com.tenwa.comm.util.jboutil.DataOperatorUtil; -import com.tenwa.flow.action.comm.BaseFlowStartAction; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** */ public class OnhireChangeFlowStartAction extends BaseFlowStartAction { @@ -77,15 +73,16 @@ public class OnhireChangeFlowStartAction extends BaseFlowStartAction { } } - public void createCheck(JBOTransaction tx,BizObject flowBussiness) throws JBOException{ + public void createCheck(JBOTransaction tx,BizObject flowBussiness) throws Exception{ String contractId=flowBussiness.getAttribute("contract_id").getString(); + String applyType=this.FlowParam.get("applyType"); List conditions=JBOFactory.createBizObjectQuery(LC_CALC_CONDITION.CLASS_NAME,"contract_id=:contractid").setParameter("contractid", contractId).getResultList(false); BizObjectManager bm=JBOFactory.getBizObjectManager(LC_OCCUPY_RENT_LIST.CLASS_NAME, tx); for(BizObject condition:conditions) { BizObject bo=bm.newObject(); bo.setAttributeValue("payment_number", condition.getAttribute("payment_number").getString()); - bo.setAttributeValue("flow_name","起租后合同变更"); + bo.setAttributeValue("flow_name",CodeManager.getItemName("ApplyType", applyType)); bo.setAttributeValue("flowunid", flowBussiness.getAttribute("flow_unid").toString()); bm.saveObject(bo); } diff --git a/src_tenwa/com/tenwa/lease/flow/contract/terminate/TerminateFlowStartAction.java b/src_tenwa/com/tenwa/lease/flow/contract/terminate/TerminateFlowStartAction.java index 9a9260826..897561e97 100644 --- a/src_tenwa/com/tenwa/lease/flow/contract/terminate/TerminateFlowStartAction.java +++ b/src_tenwa/com/tenwa/lease/flow/contract/terminate/TerminateFlowStartAction.java @@ -3,6 +3,7 @@ package com.tenwa.lease.flow.contract.terminate; import java.util.HashMap; import java.util.Map; +import com.amarsoft.dict.als.manage.CodeManager; import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT; import jbo.com.tenwa.lease.comm.LC_OCCUPY_RENT_LIST; @@ -70,15 +71,16 @@ public class TerminateFlowStartAction extends BaseFlowStartAction { return "true"; } } - - public void createCheck(JBOTransaction tx,BizObject flowBussiness) throws JBOException{ - BizObjectManager bm=JBOFactory.getBizObjectManager(LC_OCCUPY_RENT_LIST.CLASS_NAME, tx); - String payment_number=this.getFlowParam().get("payment_number"); - BizObject bo=bm.newObject(); - bo.setAttributeValue("payment_number", payment_number); - bo.setAttributeValue("flow_name","合同中途终止"); - bo.setAttributeValue("flowunid", flowBussiness.getAttribute("flow_unid").toString()); - bm.saveObject(bo); + + public void createCheck(JBOTransaction tx, BizObject flowBussiness) throws Exception { + BizObjectManager bm = JBOFactory.getBizObjectManager(LC_OCCUPY_RENT_LIST.CLASS_NAME, tx); + String payment_number = this.getFlowParam().get("payment_number"); + String applyType = this.FlowParam.get("applyType"); + BizObject bo = bm.newObject(); + bo.setAttributeValue("payment_number", payment_number); + bo.setAttributeValue("flow_name", CodeManager.getItemName("ApplyType", applyType)); + bo.setAttributeValue("flowunid", flowBussiness.getAttribute("flow_unid").toString()); + bm.saveObject(bo); } } diff --git a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/AdvanceSettleChangRent.java b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/AdvanceSettleChangRent.java index 5114ffeec..13587b793 100644 --- a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/AdvanceSettleChangRent.java +++ b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/AdvanceSettleChangRent.java @@ -1,28 +1,41 @@ package com.tenwa.lease.flow.project.commbusiness; - -import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT; - -import com.amarsoft.are.jbo.BizObject; -import com.amarsoft.are.jbo.BizObjectManager; -import com.amarsoft.are.jbo.BizObjectQuery; -import com.amarsoft.are.jbo.JBOFactory; +import java.util.HashMap; +import java.util.Map; import com.amarsoft.awe.util.ASResultSet; import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; import com.amarsoft.context.ASUser; import com.tenwa.flow.baseBussion.BaseBussiness; +import com.tenwa.lease.flow.comm.service.LeaseFlowBaseService; +import com.tenwa.lease.flow.comm.service.ServiceOperatorEnum; +import com.tenwa.lease.flow.comm.serviceImp.LeaseFlowBaseServiceImp; public class AdvanceSettleChangRent extends BaseBussiness{ @Override public Object run(Transaction tx) throws Exception { this.initBussinessParam(tx.getTransaction()); + String flowname=(String)this.getAttribute("FlowName"); + String settletype=this.getAttribute("settletype").toString(); + String FlowUnid=this.getAttribute("FlowUnid").toString(); + String part = tx.getString(" select case when min(TERMINATE_TYPE)=1 or min(TERMINATE_TYPE) is null then 'Y' else 'N' end from lb_equipment_car_temp lect where FLOWUNID = '"+FlowUnid+"' group by FLOWUNID"); ASUser CurUser = ASUser.getUser(this.getAttribute("CurUserID").toString(), tx); //当前用户对象 - String SQL="{call proc_terminate_bill_income('"+this.getAttribute("ContractId").toString()+"','"+this.getAttribute("ObjectNo").toString()+"','"+this.getAttribute("CurUserID").toString()+"','"+CurUser.getOrgID()+"')} "; - SqlObject asql = new SqlObject(SQL); - ASResultSet rs = null; - rs = tx.getASResultSet(asql); + if("提前结清".equals(flowname)&&"Y".equals(settletype)&&"Y".equals(part)) { + Map fromCondtion = new HashMap(); + fromCondtion.put("FLOWUNID", FlowUnid); + Map otherProperty = new HashMap(); + otherProperty.put("FLOWUNID", ""); + LeaseFlowBaseService service=new LeaseFlowBaseServiceImp(); + SqlObject sqlObject = new SqlObject("update lc_rent_income_temp set IS_FLOWING = '1' where FLOWUNID = '"+FlowUnid+"'"); + tx.executeSQL(sqlObject); + service.copyRentIncomeInfo(tx, fromCondtion, null , otherProperty, ServiceOperatorEnum.TempToFormal,null); + }else{ + String SQL="{call proc_terminate_bill_income('"+this.getAttribute("ContractId").toString()+"','"+this.getAttribute("ObjectNo").toString()+"','"+this.getAttribute("CurUserID").toString()+"','"+CurUser.getOrgID()+"')} "; + SqlObject asql = new SqlObject(SQL); + ASResultSet rs = null; + rs = tx.getASResultSet(asql); + } return "true"; } } diff --git a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBCustomerRelaTempToFormalBusiness.java b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBCustomerRelaTempToFormalBusiness.java index 6892f03fe..3610ebc40 100644 --- a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBCustomerRelaTempToFormalBusiness.java +++ b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBCustomerRelaTempToFormalBusiness.java @@ -1,30 +1,5 @@ package com.tenwa.lease.flow.project.commbusiness; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import jbo.app.tenwa.customer.CUSTOMER_ADDRESS; -import jbo.app.tenwa.customer.CUSTOMER_ADDRESS_TEMP; -import jbo.app.tenwa.customer.CUSTOMER_CERT; -import jbo.app.tenwa.customer.CUSTOMER_CERT_TEMP; -import jbo.app.tenwa.customer.CUSTOMER_COMPANY; -import jbo.app.tenwa.customer.CUSTOMER_COMPANY_TEMP; -import jbo.app.tenwa.customer.CUSTOMER_FAMILY; -import jbo.app.tenwa.customer.CUSTOMER_FAMILY_TEMP; -import jbo.app.tenwa.customer.CUSTOMER_INFO; -import jbo.app.tenwa.customer.CUSTOMER_INFO_TEMP; -import jbo.app.tenwa.customer.CUSTOMER_PERSON; -import jbo.app.tenwa.customer.CUSTOMER_PERSON_TEMP; -import jbo.app.tenwa.customer.CUSTOMER_TYPE; -import jbo.app.tenwa.customer.CUSTOMER_TYPE_TEMP; -import jbo.com.tenwa.lease.comm.VI_CUST_TENANT; -import jbo.com.tenwa.lease.comm.CUST_PERSON_HIS; -import jbo.com.tenwa.lease.comm.LB_GUARANTEE_UNIT; -import jbo.com.tenwa.lease.comm.LB_UNION_LESSEE; -import jbo.com.tenwa.lease.comm.LB_UNION_LESSEE_TEMP; - import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.JBOFactory; @@ -32,22 +7,34 @@ import com.amarsoft.awe.util.Transaction; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.flow.baseBussion.BaseBussiness; import com.tenwa.lease.flow.project.businessapply.CustomerCompare; +import jbo.app.tenwa.customer.*; +import jbo.com.tenwa.lease.comm.CUST_PERSON_HIS; +import jbo.com.tenwa.lease.comm.LB_UNION_LESSEE; +import jbo.com.tenwa.lease.comm.LB_UNION_LESSEE_TEMP; +import jbo.com.tenwa.lease.comm.VI_CUST_TENANT; +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; public class LBCustomerRelaTempToFormalBusiness extends BaseBussiness { + @SuppressWarnings("unchecked") @Override public Object run(Transaction Sqlca) throws Exception { this.initBussinessParam(Sqlca); String custType1 = ""; String customeridForCust = ""; -// String custType = this.getAttribute("custType").toString(); String ProjectId = this.getAttribute("ProjectId").toString(); - // String CustomerId = this.getAttribute("CustomerId").toString(); String flowunid = this.getAttribute("FlowUnid").toString(); - //String certType = this.getAttribute("certType").toString(); String certType = this.getAttribute("certtype").toString(); - //String certId = this.getAttribute("certNo").toString(); - String certId = this.getAttribute("certid").toString(); + String certId = this.getAttribute("certid").toString(); + + /** + * 查询证件表与客户类型表, 如果已经有客户类型, 拷表时替换, 否则新增 + */ BizObjectManager bomCT1 = JBOFactory.getBizObjectManager(CUSTOMER_CERT.CLASS_NAME,Sqlca); BizObjectManager bomCTT1 = JBOFactory.getBizObjectManager(CUSTOMER_TYPE.CLASS_NAME,Sqlca); //客户类型临时表 List boCT1 = bomCT1.createQuery("certtype='"+certType+"' and certid='"+certId+"'").getResultList(false); @@ -63,62 +50,111 @@ public class LBCustomerRelaTempToFormalBusiness extends BaseBussiness { } } } + MapfromCondtion=new HashMap(); - fromCondtion.put("flowunid",this.getAttribute("FlowUnid").toString()); MapotherProperty=new HashMap(); + MapinfoProperty=new HashMap(); + MappersonProperty=new HashMap(); + MapcompanyProperty=new HashMap(); //1.处理存量客户 还是用之前的客户id 存到 关联表中(只有自然人能做存量客户) if("cust_type.cust".equals(custType1)){ + /** + * 承租人临时表到正式表 + */ + fromCondtion.put("flowunid",this.getAttribute("FlowUnid").toString()); String CustId1 = customeridForCust; otherProperty.put(LB_UNION_LESSEE.CUSTOMER_ID, CustId1); otherProperty.put(LB_UNION_LESSEE.PROJECT_ID, ProjectId); DataOperatorUtil.copySingleJBO(LB_UNION_LESSEE_TEMP.CLASS_NAME, fromCondtion, LB_UNION_LESSEE.CLASS_NAME, null, otherProperty, Sqlca); - //VI_CUST_PERSON视图查出来6张表的所有信息 + + /** + * VI_CUST_PERSON视图查出来6张表的所有信息 + * 正式表中只存储客户的最新的信息 所以通过 CustomerId 会查到唯一的一条 承租人 + * 将客户上一次的信息导入历史表之后,正式表做update操作 + */ fromCondtion.clear(); fromCondtion.put("customerid",CustId1); - //正式表中只存储客户的最新的信息 所以通过 CustomerId 会查到唯一的一条 承租人 otherProperty.clear(); otherProperty.put("STATUS","02"); DataOperatorUtil.copySingleJBO(VI_CUST_TENANT.CLASS_NAME, fromCondtion, CUST_PERSON_HIS.CLASS_NAME, null, otherProperty, Sqlca); - //将客户上一次的信息导入历史表之后,正式表做update操作 - //更新CUSTOMER_INFO信息 - fromCondtion.clear(); - fromCondtion.put("flowunid",flowunid); - BizObject cibo = DataOperatorUtil.getJBOBySQL("flowunid=:flowunid", LB_UNION_LESSEE_TEMP.CLASS_NAME, fromCondtion, Sqlca); - String custid2 = cibo.getAttribute("customer_id").toString(); - String custName = cibo.getAttribute("customer_name").toString(); - fromCondtion.put("customerid", custid2);//区别担保人和承租人 - otherProperty.clear(); - otherProperty.put("customerid", CustId1); - - //修改CUSTOMER_INFO、CUSTOMER_CERT - MapinfoProperty=new HashMap(); - infoProperty.put("customerid", CustId1); - infoProperty.put("customername", custName); - //修改CUSTOMER_PERSON - MappersonProperty=new HashMap(); - personProperty.put("customerid", CustId1); - personProperty.put("FULLNAME", custName); - //更新CUSTOMER_COMPANY - MapcompanyProperty=new HashMap(); - companyProperty.put("customerid", CustId1); - companyProperty.put("enterprisename", custName); - - DataOperatorUtil.copySingleJBO(CUSTOMER_INFO_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_INFO.CLASS_NAME, otherProperty, infoProperty, Sqlca); - if("03".equals(this.getAttribute("CustomerType"))){ // 自然人 - DataOperatorUtil.copySingleJBO(CUSTOMER_PERSON_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_PERSON.CLASS_NAME, otherProperty, personProperty, Sqlca); - }else{ - DataOperatorUtil.copySingleJBO(CUSTOMER_COMPANY_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_COMPANY.CLASS_NAME, otherProperty, companyProperty, Sqlca); - } - DataOperatorUtil.copySingleJBO(CUSTOMER_ADDRESS_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_ADDRESS.CLASS_NAME, otherProperty, otherProperty, Sqlca); - DataOperatorUtil.copySingleJBO(CUSTOMER_CERT_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_CERT.CLASS_NAME, otherProperty, infoProperty, Sqlca); -// DataOperatorUtil.copySingleJBO(CUSTOMER_FAMILY_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_FAMILY.CLASS_NAME, otherProperty, otherProperty, Sqlca); - DataOperatorUtil.copySingleJBO(CUSTOMER_TYPE_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_TYPE.CLASS_NAME, otherProperty, otherProperty, Sqlca); - /* CustomerCompare cc= new CustomerCompare(); - otherProperty.clear(); - otherProperty.put(LB_GUARANTEE_UNIT.PROJECT_ID,ProjectId); - //将担保人信息导入正式表,担保人和承租人在相同的表中,为了保证这些表中的数据的唯一,每一次都校验身份证。并将信息存储在历史表中 - this.copyGuarantee(Sqlca, flowunid, cc, otherProperty);*/ -// return "true"; + /** + * 查询客户正式表, 如果识别号有正式表数据, copy表用FLOWUNID做来源 + */ + BizObjectManager bomCet = JBOFactory.getBizObjectManager("jbo.app.tenwa.customer.CUSTOMER_INFO",Sqlca); + BizObject bo = bomCet.createQuery("certid='"+certId+"'").getSingleResult(false); + if(bo!=null) { + String CUSTOMERNAME = bo.getAttribute("CUSTOMERNAME").getString(); + /** + * 更新表: + * CUSTOMER_INFO_TEMP--> CUSTOMER_INFO + */ + fromCondtion.clear(); + fromCondtion.put("flowunid",flowunid); + otherProperty.clear(); + otherProperty.put("customerid", CustId1); + infoProperty.clear(); + infoProperty.put("customerid", CustId1); + infoProperty.put("customername", CUSTOMERNAME); + DataOperatorUtil.copySingleJBO(CUSTOMER_INFO_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_INFO.CLASS_NAME, otherProperty, infoProperty, Sqlca); + /** + * 更新表: + * CUSTOMER_PERSON_TEMP-->CUSTOMER_PERSON + * CUSTOMER_COMPANY_TEMP-->CUSTOMER_COMPANY + */ + personProperty.clear(); + personProperty.put("customerid", CustId1); + personProperty.put("FULLNAME", CUSTOMERNAME); + companyProperty.clear(); + companyProperty.put("customerid", CustId1); + companyProperty.put("enterprisename", CUSTOMERNAME); + if("03".equals(this.getAttribute("CustomerType"))){ // 自然人 + DataOperatorUtil.copySingleJBO(CUSTOMER_PERSON_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_PERSON.CLASS_NAME, otherProperty, personProperty, Sqlca); + }else{ + DataOperatorUtil.copySingleJBO(CUSTOMER_COMPANY_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_COMPANY.CLASS_NAME, otherProperty, companyProperty, Sqlca); + } + /** + * 更新表: + * CUSTOMER_ADDRESS_TEMP-->CUSTOMER_ADDRESS + * CUSTOMER_CERT_TEMP-->CUSTOMER_CERT + * CUSTOMER_TYPE_TEMP-->CUSTOMER_TYPE + */ + DataOperatorUtil.copySingleJBO(CUSTOMER_ADDRESS_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_ADDRESS.CLASS_NAME, otherProperty, otherProperty, Sqlca); + DataOperatorUtil.copySingleJBO(CUSTOMER_CERT_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_CERT.CLASS_NAME, otherProperty, infoProperty, Sqlca); + DataOperatorUtil.copySingleJBO(CUSTOMER_TYPE_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_TYPE.CLASS_NAME, otherProperty, otherProperty, Sqlca); + }else { + //更新CUSTOMER_INFO信息 + fromCondtion.clear(); + fromCondtion.put("flowunid",flowunid); + BizObject cibo = DataOperatorUtil.getJBOBySQL("flowunid=:flowunid", LB_UNION_LESSEE_TEMP.CLASS_NAME, fromCondtion, Sqlca); + String custid2 = cibo.getAttribute("customer_id").toString(); + String custName = cibo.getAttribute("customer_name").toString(); + fromCondtion.put("customerid", custid2);//区别担保人和承租人 + otherProperty.clear(); + otherProperty.put("customerid", CustId1); + + //修改CUSTOMER_INFO、CUSTOMER_CERT + infoProperty.clear(); + infoProperty.put("customerid", CustId1); + infoProperty.put("customername", custName); + //修改CUSTOMER_PERSON + personProperty.clear(); + personProperty.put("customerid", CustId1); + personProperty.put("FULLNAME", custName); + //更新CUSTOMER_COMPANY + companyProperty.clear(); + companyProperty.put("customerid", CustId1); + companyProperty.put("enterprisename", custName); + + DataOperatorUtil.copySingleJBO(CUSTOMER_INFO_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_INFO.CLASS_NAME, otherProperty, infoProperty, Sqlca); + if("03".equals(this.getAttribute("CustomerType"))){ // 自然人 + DataOperatorUtil.copySingleJBO(CUSTOMER_PERSON_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_PERSON.CLASS_NAME, otherProperty, personProperty, Sqlca); + }else{ + DataOperatorUtil.copySingleJBO(CUSTOMER_COMPANY_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_COMPANY.CLASS_NAME, otherProperty, companyProperty, Sqlca); + } + DataOperatorUtil.copySingleJBO(CUSTOMER_ADDRESS_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_ADDRESS.CLASS_NAME, otherProperty, otherProperty, Sqlca); + DataOperatorUtil.copySingleJBO(CUSTOMER_CERT_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_CERT.CLASS_NAME, otherProperty, infoProperty, Sqlca); + DataOperatorUtil.copySingleJBO(CUSTOMER_TYPE_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_TYPE.CLASS_NAME, otherProperty, otherProperty, Sqlca); + } }else{ fromCondtion.clear(); fromCondtion.put("flowunid",this.getAttribute("FlowUnid").toString()); @@ -141,41 +177,22 @@ public class LBCustomerRelaTempToFormalBusiness extends BaseBussiness { DataOperatorUtil.copyJBOSet(CUSTOMER_COMPANY_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_COMPANY.CLASS_NAME, toCondtion, null, cc, Sqlca); } DataOperatorUtil.copyJBOSet(CUSTOMER_CERT_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_CERT.CLASS_NAME, toCondtion, null, cc, Sqlca); -// DataOperatorUtil.copyJBOSet(CUSTOMER_FAMILY_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_FAMILY.CLASS_NAME, toCondtion, null, cc, Sqlca); DataOperatorUtil.copyJBOSet(CUSTOMER_ADDRESS_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_ADDRESS.CLASS_NAME, toCondtion, null, cc, Sqlca); } otherProperty.clear(); - //otherProperty.put(LB_UNION_LESSEE.CUSTOMER_ID, custid); - //otherProperty.put(LB_UNION_LESSEE.PROJECT_ID, ProjectId); otherProperty = this.getDefaultOtherProperty(); fromCondtion.clear(); fromCondtion.put(LB_UNION_LESSEE_TEMP.FLOWUNID,this.getAttribute("FlowUnid").toString()); DataOperatorUtil.copySingleJBO(LB_UNION_LESSEE_TEMP.CLASS_NAME, fromCondtion, LB_UNION_LESSEE.CLASS_NAME, null, otherProperty, Sqlca); - //List unitList=DataOperatorUtil.getSetJBO(LB_GUARANTEE_UNIT_TEMP.CLASS_NAME, fromCondtion, Sqlca); - /* for(BizObject unit:unitList){ - fromCondtion.clear(); - fromCondtion.put("id",unit.getAttribute("id").toString()); - DataOperatorUtil.copySingleJBO(LB_GUARANTEE_UNIT_TEMP.CLASS_NAME, fromCondtion, LB_GUARANTEE_UNIT.CLASS_NAME, null, null, Sqlca); - - fromCondtion.clear(); - fromCondtion.put("customerid",unit.getAttribute("ASSUROR").getString()); - fromCondtion.put("flowunid",this.getAttribute("FlowUnid").toString()); - toCondtion.clear(); - toCondtion.put("customerid", unit.getAttribute("ASSUROR").getString()); - DataOperatorUtil.copyJBOSet(CUSTOMER_PERSON_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_PERSON.CLASS_NAME, toCondtion, null, cc, Sqlca); - DataOperatorUtil.copyJBOSet(CUSTOMER_CERT_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_CERT.CLASS_NAME, toCondtion, null, cc, Sqlca); - DataOperatorUtil.copyJBOSet(CUSTOMER_FAMILY_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_FAMILY.CLASS_NAME, toCondtion, null, cc, Sqlca); - DataOperatorUtil.copyJBOSet(CUSTOMER_ADDRESS_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_ADDRESS.CLASS_NAME, toCondtion, null, cc, Sqlca); - }*/ } //配偶信息不考虑存量客户 fromCondtion.clear(); fromCondtion.put("flowunid",this.getAttribute("FlowUnid").toString()); otherProperty.clear(); otherProperty.put("project_id",this.getAttribute("ProjectId").toString()); - + otherProperty.put("customerid",StringUtils.isNotEmpty(customeridForCust) ? customeridForCust : Sqlca.getString("select customer_id from LB_UNION_LESSEE_TEMP where FLOWUNID = '" + this.getAttribute("FlowUnid").toString() + "'")); DataOperatorUtil.copyJBOSet(CUSTOMER_FAMILY_TEMP.CLASS_NAME, fromCondtion, CUSTOMER_FAMILY.CLASS_NAME, null, otherProperty, null, Sqlca); - String sMessage="true"; - return sMessage; + String sMessage="true"; + return sMessage; } } \ No newline at end of file diff --git a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBEquipmentFormalToTempBusiness.java b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBEquipmentFormalToTempBusiness.java index 9ee47da6d..1fc6e2373 100644 --- a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBEquipmentFormalToTempBusiness.java +++ b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBEquipmentFormalToTempBusiness.java @@ -1,8 +1,13 @@ package com.tenwa.lease.flow.project.commbusiness; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.util.List; import java.util.Map; import com.amarsoft.app.lc.workflow.action.GetFlowAction; +import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.flow.baseBussion.BaseBussiness; import com.tenwa.lease.flow.comm.service.LeaseFlowBaseService; import com.tenwa.lease.flow.comm.service.ServiceOperatorEnum; @@ -23,7 +28,38 @@ public class LBEquipmentFormalToTempBusiness extends BaseBussiness { MapotherProperty=this.getDefaultOtherProperty(); otherProperty.put("IS_FLOW","Y"); service.copyOrLoadLBEquipment(Sqlca,fromCondtion,null,otherProperty,ServiceOperatorEnum.FormalToTemp, null); + ratio(Sqlca); String sMessage="true"; return sMessage; } + + + public void ratio(Transaction Sqlca) throws Exception { + String PROPROTION_NUMBER; + BigDecimal ratio = new BigDecimal(0); + String id01; + String id02; + String flowUnid=this.getAttribute("ObjectNo").toString(); + String sql="select ifnull(round(round(lect.EQUIP_PRICE / ifnull(t.num, 1), 4), 4),0) as PROPROTION_NUMBER,f.id as id01,lect.id as id02 from lb_equipment_car_temp lect left join (select CONTRACT_ID,sum(ifnull(EQUIP_PRICE, 0)) as num from apzl.lb_equipment_car where (TERMINATE_TYPE = '1' or TERMINATE_TYPE is null) group by CONTRACT_ID ) t on t.CONTRACT_ID = lect.CONTRACT_ID left join (select id from apzl.lb_equipment_car_temp a where FLOWUNID = '"+flowUnid+"' and (TERMINATE_TYPE = '1' or TERMINATE_TYPE is null) order by id desc limit 1) f on 1=1 where (TERMINATE_TYPE = '1' or TERMINATE_TYPE is null) and lect.FLOWUNID = '"+flowUnid+"' order by lect.id"; + List> list=DataOperatorUtil.getDataBySql(Sqlca, sql, null); + for (Map let : list) { + PROPROTION_NUMBER = let.get("PROPROTION_NUMBER"); + id01 = let.get("id01"); + id02 = let.get("id02"); + if("".equals(id01) || id01 == null) { + id01 = "0"; + } + if(!id01.equals(id02)) { + BigDecimal bd = new BigDecimal(let.get("PROPROTION_NUMBER")); + ratio = ratio.add(bd); + Sqlca.executeSQL(new SqlObject("update lb_equipment_car_temp set retainfield2 = '"+PROPROTION_NUMBER+"' where id = '"+id02+"'")); + }else { + BigDecimal gread = new BigDecimal(1); + gread = gread.subtract(ratio); + PROPROTION_NUMBER = gread.toString(); + Sqlca.executeSQL(new SqlObject("update lb_equipment_car_temp set retainfield2 = '"+PROPROTION_NUMBER+"' where id = '"+id02+"'")); + } + } + } + } \ No newline at end of file diff --git a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBEquipmentTempToFormalBusiness.java b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBEquipmentTempToFormalBusiness.java index 4cfa8e9ff..651f08819 100644 --- a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBEquipmentTempToFormalBusiness.java +++ b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBEquipmentTempToFormalBusiness.java @@ -1,13 +1,22 @@ package com.tenwa.lease.flow.project.commbusiness; +import java.util.List; import java.util.Map; + +import com.amarsoft.are.jbo.BizObject; +import com.amarsoft.are.jbo.BizObjectManager; +import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.flow.baseBussion.BaseBussiness; import com.tenwa.lease.flow.comm.service.LeaseFlowBaseService; import com.tenwa.lease.flow.comm.service.ServiceOperatorEnum; import com.tenwa.lease.flow.comm.serviceImp.LeaseFlowBaseServiceImp; +import jbo.com.tenwa.lease.comm.LB_EQUIPMENT_CAR; +import jbo.com.tenwa.lease.comm.LB_EQUIPMENT_CAR_TEMP; + public class LBEquipmentTempToFormalBusiness extends BaseBussiness { @Override @@ -15,15 +24,30 @@ public class LBEquipmentTempToFormalBusiness extends BaseBussiness { this.initBussinessParam(Sqlca); String flowname=(String)this.getAttribute("FlowName"); String flowunid=(String)this.getAttribute("FlowUnid"); + String settletype= this.getAttribute("settletype") == null ? "" : this.getAttribute("settletype").toString(); LeaseFlowBaseService service=new LeaseFlowBaseServiceImp(); MapfromCondtion=this.getDefaultTempToFormalFromCondtion(); MaptoCondtion=this.getDefaultTempToFormalToCondtion(); MapotherProperty=this.getDefaultOtherProperty(); + if("合同起租流程".equals(flowname)){ otherProperty.put("status", "0010"); } + if("提前结清".equals(flowname) && "Y".equals(settletype) ) { +// Sqlca.executeSQL(new SqlObject("update LB_EQUIPMENT_CAR_TEMP set TERMINATE_TYPE='2' where TERMINATE_TYPE = '3' and FLOWUNID='"+flowunid+"'")); + fromCondtion.put("TERMINATE_TYPE", "3"); + otherProperty.put("TERMINATE_TYPE", "2"); + BizObjectManager lectManage = JBOFactory.getBizObjectManager(LB_EQUIPMENT_CAR_TEMP.CLASS_NAME); + List lects = lectManage.createQuery(" TERMINATE_TYPE='3' and FLOWUNID=:FLOWUNID ").setParameter("FLOWUNID", flowunid).getResultList(false); + for (BizObject lect : lects) { + fromCondtion.put("FRAME_NUMBER", lect.getAttribute("FRAME_NUMBER").toString() ); + toCondtion.put("FRAME_NUMBER", lect.getAttribute("FRAME_NUMBER").toString() ); + DataOperatorUtil.copySingleJBO(LB_EQUIPMENT_CAR_TEMP.CLASS_NAME, fromCondtion,LB_EQUIPMENT_CAR.CLASS_NAME, toCondtion, otherProperty, Sqlca); + } + }else { + service.copyOrLoadLBEquipment(Sqlca, fromCondtion, toCondtion, otherProperty, ServiceOperatorEnum.TempToFormal, null); + } Sqlca.executeSQL(new SqlObject("update LB_EQUIPMENT_CAR_TEMP set IS_FLOW='N' where FLOWUNID='"+flowunid+"'")); - service.copyOrLoadLBEquipment(Sqlca, fromCondtion, toCondtion, otherProperty, ServiceOperatorEnum.TempToFormal, null); String sMessage="true"; return sMessage; } diff --git a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBProjectIntoTempInitCarBusiness.java b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBProjectIntoTempInitCarBusiness.java index 9dcea529c..433c2962d 100644 --- a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBProjectIntoTempInitCarBusiness.java +++ b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/LBProjectIntoTempInitCarBusiness.java @@ -24,20 +24,17 @@ import jbo.com.tenwa.lease.comm.LB_UNION_LESSEE; import jbo.com.tenwa.lease.comm.LB_UNION_LESSEE_TEMP; import jbo.prd.LB_PRODUCT_CORPUS_SOURCE; import jbo.prd.PRD_SPECIFIC_LIBRARY; - import java.util.*; - import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.JBOException; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.are.util.StringFunction; -import com.amarsoft.awe.dw.ui.page.body.imp.Integer; import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; import com.amarsoft.context.ASUser; -import com.mchange.v2.async.StrandedTaskReporting; +import com.tenwa.comm.util.date.DateAssistant; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.flow.baseBussion.BaseBussiness; import com.tenwa.flow.util.FlowUtil; @@ -97,6 +94,7 @@ public class LBProjectIntoTempInitCarBusiness extends BaseBussiness { BizObjectManager bmLULT = JBOFactory.getBizObjectManager(LB_UNION_LESSEE_TEMP.CLASS_NAME,tx); BizObjectManager bmLECT = JBOFactory.getBizObjectManager(LB_EQUIPMENT_CAR_TEMP.CLASS_NAME,tx); BizObjectManager bmCI = JBOFactory.getBizObjectManager(CUSTOMER_INFO_TEMP.CLASS_NAME,tx); + BizObjectManager bomcct = JBOFactory.getBizObjectManager(CUSTOMER_CERT_TEMP.CLASS_NAME,tx); BizObjectManager bsbom = JBOFactory.getBizObjectManager(BUSINESS_STATUS.CLASS_NAME, tx); String deptid = asUser.getOrgID(); String distributoIid=""; @@ -169,12 +167,16 @@ public class LBProjectIntoTempInitCarBusiness extends BaseBussiness { MapfromCondtion=new HashMap(); fromCondtion.put("CUSTOMERID",customerId); + //存量客户,目前只考虑为配偶的进行考表操作 + Map familyFromCondtion =new HashMap(); + familyFromCondtion.put("CUSTOMERID",customerId); + familyFromCondtion.put("Spouse_","Y"); //otherProperty.put(CUSTOMER_INFO_TEMP.distributor_id, distributoIid); //拷到临时表 DataOperatorUtil.copySingleJBO(CUSTOMER_INFO.CLASS_NAME, fromCondtion, CUSTOMER_INFO_TEMP.CLASS_NAME, null, infoProperty, tx); DataOperatorUtil.copySingleJBO(CUSTOMER_CERT.CLASS_NAME, fromCondtion, CUSTOMER_CERT_TEMP.CLASS_NAME, null, infoProperty, tx); - DataOperatorUtil.copySingleJBO(CUSTOMER_FAMILY.CLASS_NAME, fromCondtion, CUSTOMER_FAMILY_TEMP.CLASS_NAME, null, familyProperty, tx); + DataOperatorUtil.copySingleJBO(CUSTOMER_FAMILY.CLASS_NAME, familyFromCondtion, CUSTOMER_FAMILY_TEMP.CLASS_NAME, null, familyProperty, tx); DataOperatorUtil.copySingleJBO(CUSTOMER_ADDRESS.CLASS_NAME, fromCondtion, CUSTOMER_ADDRESS_TEMP.CLASS_NAME, null, otherProperty, tx); if("03".equals(this.getAttribute("CustomerType"))){ // 自然人 DataOperatorUtil.copySingleJBO(CUSTOMER_PERSON.CLASS_NAME, fromCondtion, CUSTOMER_PERSON_TEMP.CLASS_NAME, null, personProperty, tx); @@ -212,7 +214,7 @@ public class LBProjectIntoTempInitCarBusiness extends BaseBussiness { } } } - BizObject bmC = this.saveCustomerInfo(bmCI, tx, asUser,distributoIid);//新增主表客户信息 + BizObject bmC = this.saveCustomerInfo(bmCI,bomcct, tx, asUser,distributoIid);//新增主表客户信息 customerId = bmC.getAttribute("customerid").getString(); this.saveCustomerType(bmCTT, tx, customerId,asUser);//证件类型临时表 this.savePersonOrCompany(bomC, tx, colName,customerId,asUser,lbat);//自然人||法人 @@ -229,33 +231,35 @@ public class LBProjectIntoTempInitCarBusiness extends BaseBussiness { return sMessage; } - private BizObject saveCustomerInfo(BizObjectManager bomCI,JBOTransaction tx,ASUser asUser,String distributoIid)throws JBOException{ + private BizObject saveCustomerInfo(BizObjectManager bomCI,BizObjectManager bomcct,JBOTransaction tx,ASUser asUser,String distributoIid)throws Exception{ BizObject bmC = bomCI.newObject();//保存客户信息 - try { - //客户信息表 - String custty="03".equals(this.getAttribute("CustomerType"))? "Z":"F"; - String serinum=FlowUtil.getCustomer_Number(tx); - String serin=""; - if(serinum.length()<15){ - for(int i=0;i<15-serinum.length();i++){ - serin+="0"; - } - } - bmC.setAttributeValue("customername", this.getAttribute("custname"));//自然人名称 - bmC.setAttributeValue("customer_num", "APZL"+custty+serin+serinum);//自然人名称 - bmC.setAttributeValue("customertype", this.getAttribute("CustomerType"));//客户类型 - bmC.setAttributeValue("distributor_id", distributoIid); - bmC.setAttributeValue("certtype", this.getAttribute("certtype"));//证件类型 - bmC.setAttributeValue("certid", this.getAttribute("certid"));//证件号 - bmC.setAttributeValue("inputuserid", asUser.getUserID());//登记人 - bmC.setAttributeValue("inputorgid", asUser.getOrgID());//登记部门 - bmC.setAttributeValue("flowunid", this.getAttribute("FlowUnid"));//流程ID - bmC.setAttributeValue("inputtime", StringFunction.getTodayNow());//登记时间,系统当前时间 - bomCI.saveObject(bmC); - } catch (Exception e) { - tx.rollback(); - e.printStackTrace(); - } + //客户信息表 + String custty="03".equals(this.getAttribute("CustomerType"))? "Z":"F"; + bmC.setAttributeValue("customername", this.getAttribute("custname"));//自然人名称 + bmC.setAttributeValue("customer_num", FlowUtil.getCustomer_Number(false,custty));//自然人序号 + bmC.setAttributeValue("customertype", this.getAttribute("CustomerType"));//客户类型 + bmC.setAttributeValue("distributor_id", distributoIid); + bmC.setAttributeValue("certtype", this.getAttribute("certtype"));//证件类型 + bmC.setAttributeValue("certid", this.getAttribute("certid"));//证件号 + bmC.setAttributeValue("inputuserid", asUser.getUserID());//登记人 + bmC.setAttributeValue("inputorgid", asUser.getOrgID());//登记部门 + bmC.setAttributeValue("flowunid", this.getAttribute("FlowUnid"));//流程ID + bmC.setAttributeValue("inputtime", StringFunction.getTodayNow());//登记时间,系统当前时间 + bomCI.saveObject(bmC); + + //将注册证件添加到证件表中 + BizObject newCert = bomcct.newObject(); + newCert.setAttributeValue("customerid", bmC.getAttribute("customerid").getString()); + newCert.setAttributeValue("issuecountry","CHN");// 证件国别-没有选项,默认中国吧 + newCert.setAttributeValue("certtype",this.getAttribute("certtype").toString()); + newCert.setAttributeValue("certid",this.getAttribute("certid").toString()); + newCert.setAttributeValue("status","valid"); + newCert.setAttributeValue("customername",this.getAttribute("custname")); + newCert.setAttributeValue("flowunid", this.getAttribute("FlowUnid"));//流程ID + newCert.setAttributeValue("inputuserid", asUser.getUserID()); + newCert.setAttributeValue("inputorgid", asUser.getOrgID()); + newCert.setAttributeValue("inputtime", DateAssistant.getTodayNow()); + bomcct.saveObject(newCert); return bmC; } private void savePersonOrCompany(BizObjectManager bomC,JBOTransaction tx,String colName,String customerId,ASUser asUser,BizObject lbat)throws JBOException{