diff --git a/WebContent/Accounting/LoanSimulation_change/LCRentChangeInfo.jsp b/WebContent/Accounting/LoanSimulation_change/LCRentChangeInfo.jsp index e630b962f..bfff08bcf 100644 --- a/WebContent/Accounting/LoanSimulation_change/LCRentChangeInfo.jsp +++ b/WebContent/Accounting/LoanSimulation_change/LCRentChangeInfo.jsp @@ -83,7 +83,7 @@ }else{ url="/Accounting/LoanSimulation_change/LoanBasicInfoBusiness.jsp"; } - dwTemp.replaceColumn("pay_condition", "", CurPage.getObjectWindowOutput()); + dwTemp.replaceColumn("pay_condition", "", CurPage.getObjectWindowOutput()); String sButtons[][] = { {"true","","Button","租金变更","租金变更","saveRecord()","","","","btn_icon_rentchange"}, {"true","","Button","变更撤销","变更撤销","cancelChange()","","","","btn_icon_delete"} diff --git a/WebContent/Accounting/LoanSimulation_change/RentPlanList.jsp b/WebContent/Accounting/LoanSimulation_change/RentPlanList.jsp index 869e43bae..d6311e2d7 100644 --- a/WebContent/Accounting/LoanSimulation_change/RentPlanList.jsp +++ b/WebContent/Accounting/LoanSimulation_change/RentPlanList.jsp @@ -106,7 +106,11 @@ importCondition["plannumber"] = "<%=plannumber%>"; var sUrl = "/Tenwa/Core/OfficeTemplate/TemplateManager/BFTemplateTest/uploadExcel.jsp"; var sparam = JSON.stringify(importCondition).replace(/,/g,"@");//生成模板的参数据 - AsDialog.PopView(sUrl,"importparam="+sparam,{width:"350px",height:"40px",title:"导入租金计划"},function(){reloadSelf();}); + AsDialog.PopView(sUrl,"importparam="+sparam,{width:"350px",height:"40px",title:"导入租金计划"},function(retVal){ + if('fail'!=retVal){ + self.location.reload(); + } + }); } function downloadTemplate(){ diff --git a/WebContent/Logon.jsp b/WebContent/Logon.jsp index f98574db6..b7d53599f 100644 --- a/WebContent/Logon.jsp +++ b/WebContent/Logon.jsp @@ -1,18 +1,21 @@ -<%@page import="com.amarsoft.dict.als.manage.NameManager"%> +<%@page import="com.amarsoft.are.util.SpecialTools"%> <%@page contentType="text/html; charset=GBK" session="false"%> -<%@page import="com.amarsoft.are.util.*"%> -<%@page import="com.amarsoft.awe.util.*"%> -<%@page import="com.amarsoft.context.*"%> -<%@page import="com.amarsoft.web.*"%> -<%@page import="com.amarsoft.web.dw.*"%> -<%@page import="java.util.*"%> -<%@page import="com.amarsoft.awe.*"%><%@ -page import="com.amarsoft.awe.control.SessionListener"%><%@ -page import="com.amarsoft.awe.control.model.*"%><%@ -page import="com.amarsoft.awe.util.*"%><%@ -page import="com.amarsoft.awe.Configure"%><%@ -page import="com.amarsoft.awe.security.*"%><%@ -page import="com.amarsoft.awe.security.pwdrule.*"%><%! +<%@page import="com.amarsoft.are.util.StringFunction"%> +<%@page import="com.amarsoft.awe.Configure"%> +<%@page import="com.amarsoft.awe.RuntimeContext"%> +<%@page import="com.amarsoft.awe.control.SessionListener"%> +<%@page import="com.amarsoft.awe.control.model.ComponentSession"%> +<%@page import="com.amarsoft.awe.security.*"%> +<%@page import="com.amarsoft.awe.security.pwdrule.ALSPWDRules"%><%@ +page import="com.amarsoft.awe.security.pwdrule.IsPasswordOverdueRule"%><%@ +page import="com.amarsoft.awe.security.pwdrule.PasswordRuleManager"%><%@ +page import="com.amarsoft.awe.util.ASResultSet"%><%@ +page import="com.amarsoft.awe.util.SqlObject"%><%@ +page import="com.amarsoft.awe.util.Transaction"%><%@ +page import="com.amarsoft.context.ASPreference"%> +<%@ page import="com.amarsoft.context.ASUser" %> +<%@ page import="com.amarsoft.dict.als.manage.NameManager" %> +<%! //检验验证码 public boolean vaildCheckCode(HttpServletRequest request, HttpSession session) { String sCheckCode = request.getParameter("CheckCode"); @@ -179,6 +182,7 @@ public boolean validUserPassword(HttpServletRequest request, Transaction Sqlca,S so.setOriginalSql(so.getOriginalSql().replaceAll("△", ":")); so.setRunSql(so.getRunSql().replaceAll("△", ":")); Sqlca.executeSQL(so); + Sqlca.commit(); } //设置运行上下文参数 CurARC 在IncludeBegin.jsp中使用 @@ -194,26 +198,26 @@ public boolean validUserPassword(HttpServletRequest request, Transaction Sqlca,S //用户登陆成功,记录登陆信息 SessionListener sessionListener=new SessionListener(request,session,CurUser,CurConfig.getConfigure("DataSource")); session.setAttribute("listener",sessionListener); -%> + + <% } catch (Exception e) { - //e.printStackTrace(); - //e.fillInStackTrace(); - //e.printStackTrace(new java.io.PrintWriter(System.out)); %> <% - return; } finally { if(Sqlca!=null) { //断掉当前数据连接 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"%> <% } diff --git a/WebContent/Tenwa/Lease/App/AutoFiveGradeClassification/AutoFiveGradeClassificationList.jsp b/WebContent/Tenwa/Lease/App/AutoFiveGradeClassification/AutoFiveGradeClassificationList.jsp index 7b5050909..83a0f2c88 100644 --- a/WebContent/Tenwa/Lease/App/AutoFiveGradeClassification/AutoFiveGradeClassificationList.jsp +++ b/WebContent/Tenwa/Lease/App/AutoFiveGradeClassification/AutoFiveGradeClassificationList.jsp @@ -29,7 +29,7 @@ %><%@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/PenaltyReduction/PenaltyReductionApplyList.jsp b/WebContent/Tenwa/Lease/Flow/Rent/PenaltyReduction/PenaltyReductionApplyList.jsp index cf046705c..845ee9735 100644 --- a/WebContent/Tenwa/Lease/Flow/Rent/PenaltyReduction/PenaltyReductionApplyList.jsp +++ b/WebContent/Tenwa/Lease/Flow/Rent/PenaltyReduction/PenaltyReductionApplyList.jsp @@ -19,10 +19,11 @@ return; } } - AsDialog.OpenSelector("SelectPaymentHavePenalty","businessType,"+businessType,"dialogWidth=" + parseInt(window.screen.width * 0.8) + "px dialogHeight=" + parseInt(window.screen.height * 0.6) + "px",function(sReturn){ - if(!sReturn||sReturn=="_CANCEL_"){ + + AsDialog.OpenSelector("SelectPaymentHavePenaltyNew","businessType,"+businessType,"dialogWidth=" + parseInt(window.screen.width * 0.8) + "px dialogHeight=" + parseInt(window.screen.height * 0.6) + "px",function(sReturn){ + if(!sReturn||sReturn=="_CANCEL_"){ //alert(getHtmlMessage('1'));//请选择一条信息! - return; + return; } sReturn = sReturn.split("@"); var contractId = sReturn[0]; @@ -44,11 +45,11 @@ } else { - var mes=sReturnInfos[1]; + var mes=sReturnInfos[0]; alert(mes); } reloadSelf(); - },"请选择合同"); + },"请选择合同"); } <%@ include file="/Tenwa/Core/FlowManager/BaseFlowList/BaseFlowApplyListEnd.jspf"%> 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/Tenwa/Lease/voucher/voucherass_detail.jsp b/WebContent/Tenwa/Lease/voucher/voucherass_detail.jsp index e7476437d..faf2cc290 100644 --- a/WebContent/Tenwa/Lease/voucher/voucherass_detail.jsp +++ b/WebContent/Tenwa/Lease/voucher/voucherass_detail.jsp @@ -10,7 +10,8 @@ String sFileSavePath = CurConfig.getConfigure("FileSavePath"); String sFileNameType = CurConfig.getConfigure("FileNameType"); String isTM = CurPage.getAttribute("isTM");//是否显示定时任务数据 - String sTempletNo = "VOUCHER_V8" ; + //String sTempletNo = "VOUCHER_V8" ; + String sTempletNo = "VOUCHER_V8_LIST" ; if( isTM!=null && "true".equals(isTM)){ sTempletNo = "VOUCHER_V8_NEW"; } 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 15e42feff..678446fb3 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 @@ + + + + + @@ -543,6 +553,28 @@ + + + + + + + + + + + + + + + + + + + + + + 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..6ba0723d5 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_lease.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_lease.xml @@ -808,6 +808,7 @@ + @@ -1080,6 +1081,7 @@ + @@ -1511,6 +1513,7 @@ + @@ -2092,6 +2095,7 @@ + @@ -2827,6 +2831,7 @@ + @@ -3676,6 +3681,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/WebContent/WEB-INF/etc/jbo/jbo_voucher.xml b/WebContent/WEB-INF/etc/jbo/jbo_voucher.xml index 49d8abd83..b95085768 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_voucher.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_voucher.xml @@ -298,6 +298,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + 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/LBRentPlanTempCallBack.java b/src_core/com/tenwa/officetempalte/importcallback/impl/LBRentPlanTempCallBack.java index d3f3bdc8b..fe49baf32 100644 --- a/src_core/com/tenwa/officetempalte/importcallback/impl/LBRentPlanTempCallBack.java +++ b/src_core/com/tenwa/officetempalte/importcallback/impl/LBRentPlanTempCallBack.java @@ -1,10 +1,6 @@ package com.tenwa.officetempalte.importcallback.impl; -import java.math.BigDecimal; -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; @@ -17,9 +13,11 @@ import com.amarsoft.context.ASUser; import com.tenwa.comm.exception.BusinessException; import com.tenwa.reckon.util.DateUtil; import com.tenwa.reckon.util.NumberUtils; - import jbo.app.tenwa.calc.LC_RENT_PLAN_TEMP; -import jbo.app.tenwa.calc.VI_LC_RENT_PLAN; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; public class LBRentPlanTempCallBack extends BaseImportExcelCallBack { @@ -33,22 +31,19 @@ public class LBRentPlanTempCallBack extends BaseImportExcelCallBack { BigDecimal rent=new BigDecimal(NumberUtils.round(importObject.getAttribute("rent").getDouble(),2)+""); BigDecimal CORPUS=new BigDecimal(NumberUtils.round(importObject.getAttribute("CORPUS").getDouble(),2)+""); BigDecimal INTEREST=new BigDecimal(NumberUtils.round(importObject.getAttribute("INTEREST").getDouble(),2)+""); - - BizObject virent=JBOFactory.createBizObjectQuery(VI_LC_RENT_PLAN.CLASS_NAME,"payment_number=:paymentnumber and plan_list=:planlist").setParameter("paymentnumber", paymentnumber).setParameter("planlist", planlist).getSingleResult(false); - if(virent!=null&&!virent.getAttribute("planstatus").getString().equals("未回笼")){ - BigDecimal DB_CORPUS=new BigDecimal(NumberUtils.round(virent.getAttribute("CORPUS").getDouble(),2)+""); - BigDecimal DB_INTEREST=new BigDecimal(NumberUtils.round(virent.getAttribute("INTEREST").getDouble(),2)+""); - if (CORPUS.compareTo(DB_CORPUS) != 0) { - throw new RuntimeException(" 第" + planlist + "期租金计划【已回笼】导入本金与系统不一致!"); - } - if (INTEREST.compareTo(DB_INTEREST) != 0) { - throw new RuntimeException(" 第" + planlist + "期租金计划【已回笼】导入利息与系统不一致!"); - } - } - + if(rent.compareTo(CORPUS.add(INTEREST))!=0){ throw new BusinessException("租金计划期次:"+planlist+"租金不等于本金加利息,请检查后再导入"); } + + ASResultSet as = Sqlca.getASResultSet(new SqlObject("select RENT from lc_rent_plan where PAYMENT_NUMBER= :paymentNum and PLAN_LIST= :planList and getRentOver(PAYMENT_NUMBER, PLAN_LIST) < rent") + .setParameter("paymentNum", paymentnumber).setParameter("planList", planlist)); + if (as.next()) { + if (BigDecimal.valueOf(as.getDouble("RENT")).compareTo(rent) != 0) { + throw new RuntimeException(" 第" + planlist + "期租金计划导入【回笼】数据与系统数据比较异常,请检查!"); + } + } + BizObjectManager bm=JBOFactory.getBizObjectManager(LC_RENT_PLAN_TEMP.CLASS_NAME,tx); BizObject rentBo=bm.createQuery("flowunid=:flowunid and payment_number=:paymentnumber and plan_list=:planlist") .setParameter("flowunid", flowunid) 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/CreateVoucherEbankMoney.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherEbankMoney.java index dc4d28c4f..95a9ef765 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherEbankMoney.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherEbankMoney.java @@ -46,7 +46,7 @@ public class CreateVoucherEbankMoney { // 回款-多余回款分解 if("PZ2019070100000018".equals(VOUCHERNO) || "PZ2019073000000146".equals(VOUCHERNO)){ //sql= "SELECT IFNULL(LE.MAYOPE_MONEY, 0) AS MONEY,DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(NOW(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,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 CUSTOMERID,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 CUSTOMERNAME,LPI.BUSINESSTYPE,LE.EBANK_SN FROM (SELECT MAX(CONTRACT_ID) AS CONTRACT_ID,EBANK_NUMBER FROM LC_RENT_INCOME WHERE RENT > 0 GROUP BY EBANK_NUMBER) LRI LEFT JOIN (SELECT FLOWUNID,CONTRACT_ID FROM LC_RENT_INCOME_TEMP GROUP BY FLOWUNID,CONTRACT_ID) LRIT ON LRIT.CONTRACT_ID = LRI.CONTRACT_ID LEFT JOIN LC_EBANK LE ON LE.ID = LRI.EBANK_NUMBER LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRI.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 LUL.IS_MAIN = 'Y' AND IFNULL(LE.MAYOPE_MONEY, 0) > 0 AND LE.EBANK_SN NOT IN (SELECT MAX(F57) AS F57 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%回款-多余回款分解%' GROUP BY F3) AND LRIT.FLOWUNID = '"+flowunid+"' "; - sql= "SELECT IFNULL(LE.MAYOPE_MONEY, 0) AS MONEY,DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(NOW(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,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 ID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE ID = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID,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 ID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE ID = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME,LPI.BUSINESSTYPE,LE.EBANK_SN FROM (SELECT FLOWUNID,MAX(CONTRACT_ID) AS CONTRACT_ID,EBANK_NUMBER FROM LC_RENT_INCOME_TEMP GROUP BY FLOWUNID,EBANK_NUMBER) LRIT 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 LUL.IS_MAIN = 'Y' AND IFNULL(LE.MAYOPE_MONEY, 0) > 0 AND LE.EBANK_SN NOT IN (SELECT MAX(F57) AS F57 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%回款-多余回款分解%' GROUP BY F3) AND LRIT.FLOWUNID = '"+flowunid+"' "; + sql= "SELECT IFNULL(LE.MAYOPE_MONEY,0) AS MONEY, DATE_FORMAT(NOW(),'%Y/%m/%d') AS ACCOUNT_DATE, DATE_FORMAT(NOW(),'%Y/%m/%d') AS FACT_DATE, LCCT.CONTRACT_ID, LCI.CONTRACT_NUMBER, LCI.LEAS_FORM, DI.DISTRIBUTOR_CODING AS DISTRIBUTOR_ID, DI.DISTRIBUTOR_NAME, 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 ID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE ID=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID, 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 ID=LE.CUSTOMER_ID ) IS NOT NULL THEN ( SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE ID=LE.CUSTOMER_ID ) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME, LPI.BUSINESSTYPE, LE.EBANK_SN FROM ( SELECT FLOWUNID, MAX(CONTRACT_ID) AS CONTRACT_ID, EBANK_NUMBER FROM LC_RENT_INCOME_TEMP GROUP BY FLOWUNID, EBANK_NUMBER ) LRIT 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 LUL.IS_MAIN='Y' AND IFNULL(LE.MAYOPE_MONEY,0)>0 AND LRIT.FLOWUNID='"+flowunid+"'"; }else if("PZ2019070100000024".equals(VOUCHERNO) || "PZ2019073000000147".equals(VOUCHERNO)){ //sql= "SELECT -IFNULL(LE.MAYOPE_MONEY, 0) AS MONEY,DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(NOW(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,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 CUSTOMERID,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 CUSTOMERNAME,LPI.BUSINESSTYPE,LE.EBANK_SN FROM (SELECT LRI.EBANK_NUMBER,MAX(LRI.CONTRACT_ID) AS CONTRACT_ID,MAX(LRIT.FLOWUNID) AS FLOWUNID FROM LC_RENT_INCOME LRI LEFT JOIN LC_RENT_INCOME_TEMP LRIT ON LRIT.CONTRACT_ID=LRI.CONTRACT_ID AND LRIT.PLAN_LIST=LRI.PLAN_LIST AND LRIT.HIRE_LIST=LRI.HIRE_LIST WHERE LRI.RENT < 0 GROUP BY LRI.EBANK_NUMBER)LRIT 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 LUL.IS_MAIN = 'Y' AND IFNULL(LE.MAYOPE_MONEY, 0) > 0 AND LE.EBANK_SN NOT IN (SELECT MAX(F57) AS F57 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%回款反冲-多余回款分解%' GROUP BY F3) AND LRIT.FLOWUNID = '"+flowunid+"' "; sql= "SELECT - IFNULL(LE.MAYOPE_MONEY, 0) AS MONEY,DATE_FORMAT(NOW(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(NOW(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,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 ID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_CODING FROM DISTRIBUTOR_INFO WHERE ID = LE.CUSTOMER_ID) ELSE CIF.CUSTOMER_NUM END AS CUSTOMERID,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 ID = LE.CUSTOMER_ID) IS NOT NULL THEN (SELECT DISTRIBUTOR_NAME FROM DISTRIBUTOR_INFO WHERE ID = LE.CUSTOMER_ID) ELSE CIF.CUSTOMERNAME END AS CUSTOMERNAME,LPI.BUSINESSTYPE,LE.EBANK_SN,LRIT.FLOWUNID FROM (SELECT FLOWUNID,EBANK_NUMBER,MAX(CONTRACT_ID) AS CONTRACT_ID FROM LC_RENT_INCOME_TEMP GROUP BY FLOWUNID,EBANK_NUMBER) LRIT 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 LUL.IS_MAIN = 'Y' AND IFNULL(LE.MAYOPE_MONEY, 0) > 0 AND LE.EBANK_SN NOT IN (SELECT MAX(F57) AS F57 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%回款反冲-多余回款分解%' GROUP BY F3) AND LRIT.FLOWUNID = '"+flowunid+"'"; 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..ffb0b29dc 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; @@ -236,6 +234,15 @@ public class CreateVoucherLoanDistributor { String isBalance4 = ProductParamUtil.getProductParameterValue(PRODUCT_ID, "PRD0315", "PERSONAL_INSURANCE","isBalance"); // 判断贴息是否差额 String isBalance5 = ProductParamUtil.getProductParameterValue(PRODUCT_ID, "PRD0315", "DISCOUNT_INTEREST","isBalance"); + + if(isBalance5==null || "".equals(isBalance5)) { + Map>> isBalance5List = ProductParamUtil.getProductComponentDecisionTable(PRODUCT_ID, "PRD0301", "segmented_financing","IsBalanceLending"); + if(isBalance5List.get("segmented_financing")!=null && isBalance5List.get("segmented_financing").get(0)!=null) { + isBalance5 = isBalance5List.get("segmented_financing").get(0).get("IsBalanceLending"); + } + } + + /** * -----------------------------------------修改结束-------------------------------------------------------------------- */ @@ -492,10 +499,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..40b6f015e 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/IncomeVoucher.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherMethodSettle/IncomeVoucher.java @@ -2,17 +2,21 @@ package com.tenwa.voucher.CreateVoucherProcess.CreateVoucherMethodSettle; import com.amarsoft.awe.util.Transaction; import com.tenwa.flow.baseBussion.BaseBussiness; +import com.tenwa.jbo.manager.DataUtil; import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherCustCautionMoneyIncome; import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherEbankMoney; import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherRedCompensatory; import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherRentIncome; import com.tenwa.voucher.serviceImp.OverdueRepayPlanVoucherPSBC; + +import java.util.List; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 网银收款流程结束后生成相应的凭证 - * @author xiezhiwen */ public class IncomeVoucher extends BaseBussiness { private static final Logger logger = LoggerFactory.getLogger(IncomeVoucher.class); @@ -34,35 +38,50 @@ 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); //回款-收到客户手续费(按月) --回租 + String sql="SELECT FEE_TYPE FROM LC_FUND_INCOME_TEMP WHERE FLOWUNID='"+FlowUnid+"' GROUP BY FEE_TYPE"; + List> queryList = DataUtil.query(sql); + for (Map map : queryList) { + String FEE_TYPE = map.get("FEE_TYPE"); + if("feetype30".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000026", "feetype30",userid);//收到的违约金/罚款 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000015", "feetype30",userid);//收到的违约金/罚款 --直租 + }else if("feetype4".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000031", "feetype4",userid); //收到名义货价 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000019", "feetype4",userid); //收到名义货价--直租 + }else if("feetype2".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121600000162", "feetype2",userid); //回款-收到客户保证金 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2020041000000003", "feetype2",userid); //直租-收到客户保证金-直租 + }else if("feetype1".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121600000163", "feetype1",userid); //回款-收到客户手续费(一次性)--回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121700000164", "feetype1",userid); //回款-收到客户手续费(按月) --回租 + }else if("feetype32".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2021032400000006", "feetype32",userid); //回款-收到个人意外险(网银来款)--回租 + }else if("feetype27".equals(FEE_TYPE)||"feetype33".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2021032400000005", FEE_TYPE,userid); //回款-收到客户贴息 --回租 + } + } - cvci.CreateVoucher(FlowUnid, "PZ2021032400000006", "feetype32",userid); //回款-收到个人意外险(网银来款)--回租 - cvci.CreateVoucher(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, "PZ2020080400000003", "feetype5",userid); //直租-收到客户首付款 /** * 汽车网银回款-租金部分 */ CreateVoucherRentIncome cvri=new CreateVoucherRentIncome(); - // 汽车回租 - cvri.CreateVoucher(FlowUnid,"PZ2018072100000024",userid);//回款-收到的租金(网银)--当月(回租) - cvri.CreateVoucher(FlowUnid,"PZ2018080400000081",userid);//回款-收到的租金(网银)--跨月(回租) - cvri.CreateVoucher(FlowUnid,"PZ2018072100000025",userid);//回款-收到的逾期利息(网银)--(回租) - - // 汽车直租 - cvri.CreateVoucher(FlowUnid,"PZ2019070100000016",userid);//回款-收到的租金(网银)--当月(直租) - cvri.CreateVoucher(FlowUnid,"PZ2019070100000017",userid);//回款-收到的租金(网银)--跨月(直租) - cvri.CreateVoucher(FlowUnid,"PZ2019070100000014",userid);//回款-收到的逾期利息(网银)--(直租) - + sql="SELECT LCI.LEAS_FORM FROM LC_RENT_INCOME_TEMP LFIT LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LFIT.CONTRACT_ID WHERE LFIT.FLOWUNID='"+FlowUnid+"' GROUP BY LCI.LEAS_FORM"; + List> queryList2 = DataUtil.query(sql); + for (Map map : queryList2) { + // 汽车回租 + if("02".equals(map.get("LEAS_FORM"))) { + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018072100000024",userid);//回款-收到的租金(网银)--当月(回租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018080400000081",userid);//回款-收到的租金(网银)--跨月(回租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018072100000025",userid);//回款-收到的逾期利息(网银)--(回租) + // 汽车直租 + }else { + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000016",userid);//回款-收到的租金(网银)--当月(直租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000017",userid);//回款-收到的租金(网银)--跨月(直租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000014",userid);//回款-收到的逾期利息(网银)--(直租) + } + } /** * 代偿反冲 */ @@ -71,7 +90,11 @@ public class IncomeVoucher extends BaseBussiness { cvrcs.CreateVoucher(FlowUnid,"PZ2019071500000031",userid,Sqlca);//代偿逾期利息 CreateVoucherEbankMoney cvem = new CreateVoucherEbankMoney(); - cvem.CreateVoucher(FlowUnid, "PZ2019070100000018", userid,Sqlca);// 回款-多余回款分解 + sql="SELECT LE.ID FROM LC_EBANK_TEMP LE LEFT JOIN (SELECT MAX(F57) AS F57 FROM VOUCHER_V8 WHERE MODULE_NAME = '回款-多余回款分解' GROUP BY F3)V8 ON V8.F57=LE.EBANK_SN WHERE LE.FLOWUNID='"+FlowUnid+"' AND V8.F57 IS NULL"; + List> queryList3 = DataUtil.query(sql); + if(queryList3.size()>0) { + cvem.CreateVoucher(FlowUnid, "PZ2019070100000018", userid,Sqlca);// 回款-多余回款分解 + } return "true"; } 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..a9ccedb7e 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 CRM.RENT_LIST AS PLAN_LIST, 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 AS 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 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 CRM.RENT_LIST AS PLAN_LIST, 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 AS 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 ((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'"; }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..3f07a1654 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; @@ -54,11 +50,11 @@ public class CreateVoucherRentIncome { map.put("FLOWUNID", flowunid); if (("PZ2018072100000024".equals(VOUCHERNO)) || ("PZ2019070100000016".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, (IFNULL(LRIT.CORPUS,0)-ROUND(IFNULL(LRIT.CORPUS,0)/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) AS CORPUS_TAX, ((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))) AS CORPUS_ADD_INTEREST_TAX, 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"; + 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, (IFNULL(LRIT.CORPUS,0)-ROUND(IFNULL(LRIT.CORPUS,0)/GETTAX(LCI.LEAS_FORM,'本金',LCCT.START_DATE),2)) AS CORPUS_TAX, ((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))) AS CORPUS_ADD_INTEREST_TAX, 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 LEFT JOIN (SELECT DDI.RENT_PLAN_ID FROM D_DEPOSITRETURN_INFO DDI WHERE DDI.MONEY_TYPE='bondRepay' GROUP BY DDI.RENT_PLAN_ID )DDI ON DDI.RENT_PLAN_ID=LRP.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 DDI.RENT_PLAN_ID IS NULL AND LRIT.FLOWUNID=:FLOWUNID"; } 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"; + 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 LEFT JOIN (SELECT DDI.RENT_PLAN_ID FROM D_DEPOSITRETURN_INFO DDI WHERE DDI.MONEY_TYPE='bondRepay' GROUP BY DDI.RENT_PLAN_ID )DDI ON DDI.RENT_PLAN_ID=LRP.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 DDI.RENT_PLAN_ID IS NULL 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 LEFT JOIN (SELECT DDI.RENT_PLAN_ID FROM D_DEPOSITRETURN_INFO DDI WHERE DDI.MONEY_TYPE='bondRepay' GROUP BY DDI.RENT_PLAN_ID )DDI ON DDI.RENT_PLAN_ID=LRP.ID WHERE LPI.BUSINESSTYPE='1' AND LUL.IS_MAIN='Y' AND IFNULL(LRIT.PENALTY,0)>0 AND DDI.RENT_PLAN_ID IS NULL 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_CONTRACT_INFO.java b/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO.java index 8ce98454d..d492016cd 100644 --- a/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO.java +++ b/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO.java @@ -345,4 +345,8 @@ public interface LB_CONTRACT_INFO{ * 资方名称 STRING(10)
*/ public static final String CORPUS_SOURCE = "CORPUS_SOURCE"; + /** + * 合同状态 STRING(30)
+ */ + public static final String ap_contract_status = "ap_contract_status"; } \ No newline at end of file diff --git a/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO_HIS.java b/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO_HIS.java index 9b6b12fa0..ef8984757 100644 --- a/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO_HIS.java +++ b/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO_HIS.java @@ -333,4 +333,8 @@ public interface LB_CONTRACT_INFO_HIS{ * 资方名称 STRING(10)
*/ public static final String CORPUS_SOURCE = "CORPUS_SOURCE"; + /** + * 合同状态 STRING(30)
+ */ + public static final String ap_contract_status = "ap_contract_status"; } \ No newline at end of file diff --git a/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO_TEMP.java b/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO_TEMP.java index bae40922b..232b87216 100644 --- a/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO_TEMP.java +++ b/src_jbo/jbo/com/tenwa/lease/comm/LB_CONTRACT_INFO_TEMP.java @@ -337,4 +337,8 @@ public interface LB_CONTRACT_INFO_TEMP{ * 资方名称 STRING(10)
*/ public static final String CORPUS_SOURCE = "CORPUS_SOURCE"; + /** + * 合同状态 STRING(30)
+ */ + public static final String ap_contract_status = "ap_contract_status"; } \ 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_jbo/jbo/voucher/VOUCHER_LIST.java b/src_jbo/jbo/voucher/VOUCHER_LIST.java new file mode 100644 index 000000000..344879580 --- /dev/null +++ b/src_jbo/jbo/voucher/VOUCHER_LIST.java @@ -0,0 +1,80 @@ +package jbo.voucher; + +import java.lang.String; + +/** +* 凭证列表 - JBO命名常量类

+* Note: This file is generated by ADE tools, dont modify it.
+ +*/ +public interface VOUCHER_LIST{ + /** + * 凭证列表

+ * 代表本类映射的BizObjectClass + */ + public static final String CLASS_NAME = "jbo.voucher.VOUCHER_LIST"; + /** + * 排序 INT(32)
+ */ + public static final String SORT_NO = "SORT_NO"; + /** + * 凭证编号 STRING(32)
+ */ + public static final String F3 = "F3"; + /** + * 凭证名称 STRING(200)
+ */ + public static final String MODULE_NAME = "MODULE_NAME"; + /** + * 合同编号 STRING(60)
+ */ + public static final String CONTRACT_NUMBER = "CONTRACT_NUMBER"; + /** + * 摘要 STRING(200)
+ */ + public static final String F5 = "F5"; + /** + * 记账日期 STRING(32)
+ */ + public static final String F1 = "F1"; + /** + * 到账日期 STRING(32)
+ */ + public static final String F15 = "F15"; + /** + * 金额 STRING(32)
+ */ + public static final String MONEYS = "MONEYS"; + /** + * NC传输状态 STRING(32)
+ */ + public static final String NC_FLAG = "NC_FLAG"; + /** + * NC传输批次号 STRING(32)
+ */ + public static final String NC_BATCH = "NC_BATCH"; + /** + * NC传输日期 STRING(32)
+ */ + public static final String NC_DATE = "NC_DATE"; + /** + * 生成时间 STRING(32)
+ */ + public static final String GENERATE_DATE = "GENERATE_DATE"; + /** + * 账套 STRING(50)
+ */ + public static final String F48 = "F48"; + /** + * 主体名称 STRING(260)
+ */ + public static final String F50 = "F50"; + /** + * 会计年 STRING(10)
+ */ + public static final String F51 = "F51"; + /** + * 会计月 STRING(10)
+ */ + public static final String F52 = "F52"; +} \ 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_sql/棰勬姇SQL/v20220627/xzw20220627.sql b/src_sql/棰勬姇SQL/v20220627/xzw20220627.sql new file mode 100644 index 000000000..780ded771 --- /dev/null +++ b/src_sql/棰勬姇SQL/v20220627/xzw20220627.sql @@ -0,0 +1,21 @@ +-- 新增模板VOUCHER_V8_LIST +DELETE FROM AWE_DO_CATALOG WHERE DONO='VOUCHER_V8_LIST'; +DELETE FROM AWE_DO_LIBRARY WHERE DONO='VOUCHER_V8_LIST'; + +INSERT INTO apzl.awe_do_catalog (dono, doname, dodescribe, dotype, doclass, isinuse, colcount, modeid, jboclass, jbofrom, jbowhere, jbogroup, jboorder, businessprocess, exportflag, inputuser, inputtime, updateuser, updatetime, remark, isvalidate, parent) VALUES ('VOUCHER_V8_LIST', 'V8凭证表', null, '30250', null, '1', '1', 'default', 'jbo.voucher.VOUCHER_LIST', 'O', '', '', 'SORT_NO desc', '', null, 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '', '1', ''); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1040', '1040', '1', 'O', 'f1', 'f1', 'String', '', '记账日期', '', '1', 'Date', '1', '1', '', '', '', '20', '1', '0', '0', '1', '1', 1, '0', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '0', '', '1', '', '', '', 'Like'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1045', '1045', '1', 'O', 'f15', 'f15', 'String', '', '到账日期', '', '1', 'Text', '1', '1', '', '', '', '20', '1', '0', '0', '1', '0', 1, '0', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '', '', '1', '', '', '', ''); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1046', '1046', '1', 'O', 'MONEYS', 'MONEYS', 'Number', '', '金额', '', '1', 'Text', '2', '1', '', '', '', '20', '1', '0', '0', '1', '0', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '', '', '1', '', '', '', ''); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1060', '1010', '1', 'O', 'f3', 'f3', 'String', '', '凭证号', '', '1', 'Text', '1', '1', '', '', '', '20', '1', '0', '0', '1', '1', 1, '0', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '0', '', '1', '', '', '', 'Like'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1076', '1076', '1', 'O', 'NC_FLAG', 'NC_FLAG', 'String', '', 'NC传输状态', '', '1', 'Text', '1', '1', '', '', '', '20', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:35', '0', '', '1', '', '', '', 'Like'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1077', '1077', '1', 'O', 'NC_BATCH', 'NC_BATCH', 'String', '', 'NC传输批次号', '', '1', 'Text', '1', '1', '', '', '', '20', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:35', '0', '', '1', '', '', '', 'Like'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1078', '1078', '1', 'O', 'NC_DATE', 'NC_DATE', 'String', '', 'NC传输日期', '', '1', 'Text', '1', '1', '', '', '', '20', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:35', '0', '', '1', '', '', '', 'Like'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1275', '1015', '1', 'O', 'contract_number', 'contract_number', 'String', '', '合同编号', '', '1', 'Text', '1', '1', '', '', '', '32', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '0', '', '1', '', '', '', 'Like'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1280', '1016', '1', 'O', 'f5', 'f5', 'String', '', '摘要', '', '1', 'Text', '1', '1', '', '', '', '900', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '0', '', '1', '', '', '', 'Equals,Like'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1300', '1085', '1', 'O', 'GENERATE_DATE', 'GENERATE_DATE', 'String', '', '生成日期', '', '1', 'Date', '3', '1', '', '', '', '20', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:35', '0', '', '1', '', '', '', 'BigEqualsThan,Area'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1360', '1360', '1', 'O', 'f48', 'f48', 'String', '', '账套', '', '1', 'Text', '1', '1', '', '', '', '20', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:35', '0', '', '1', '', '', '', 'Like,Equals'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1380', '1380', '1', 'O', 'f50', 'f50', 'String', '', '主体名称', '', '1', 'Text', '1', '1', '', '', '', '20', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:35', '0', '', '1', '', '', '', 'Like,Equals'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '1970', '1011', '1', 'O', 'module_name', 'module_name', 'String', '', '凭证名称', '', '1', 'Text', '1', '1', '', '', '', '500', '1', '0', '0', '1', '1', 1, '0', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '0', '', '1', '', '', '', 'Like'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '2110', '1072', '1', '', '''''', 'detail', 'String', '', '明细', '', '1', 'Text', '1', '1', '', '', '', null, '1', '0', '0', '0', '0', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:34', '', '', '1', '', '', '', ''); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '2120', '2120', '1', 'O', 'f51', 'f51', 'String', '', '会计年', '', '1', 'Text', '1', '1', '', '', '', '30', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:35', '0', '', '1', '', '', '', 'Like,Equals'); +INSERT INTO apzl.awe_do_library (dono, colindex, sortno, isinuse, coltablename, colactualname, colname, coltype, coldefaultvalue, colheader, colunit, colcolumntype, coleditstyle, colcheckformat, colalign, coleditsourcetype, coleditsource, colhtmlstyle, collimit, colvisible, colreadonly, colrequired, colsortable, isfilter, colspan, isautocomplete, groupid, colfilterrefid, inputuser, inputtime, updateuser, updatetime, isaudit, colfilterattrs, isupdate, parentcolindex, tips, colinnerbtevent, colfilteroptions) VALUES ('VOUCHER_V8_LIST', '2130', '2130', '1', 'O', 'f52', 'f52', 'String', '', '会计月', '', '1', 'Text', '1', '1', '', '', '', '30', '1', '0', '0', '1', '1', 0, '', '', '', 'SYS_Designer', '2022/06/27 13:15:54', 'SYS_Designer', '2022/06/27 13:19:35', '0', '', '1', '', '', '', 'Like,Equals'); 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/flow/fund/flowpayment/CopyFundPaymentToTemp.java b/src_tenwa/com/tenwa/flow/fund/flowpayment/CopyFundPaymentToTemp.java index 63bd27e38..3d628289e 100644 --- a/src_tenwa/com/tenwa/flow/fund/flowpayment/CopyFundPaymentToTemp.java +++ b/src_tenwa/com/tenwa/flow/fund/flowpayment/CopyFundPaymentToTemp.java @@ -50,6 +50,21 @@ public class CopyFundPaymentToTemp extends BaseBussiness{ } } } + //分段融 + String settleMethod = Sqlca.getString("select SETTLE_METHOD from lc_calc_condition where CONTRACT_ID='"+contractId+"'"); + if(settleMethod!=null && settleMethod.equals("segmented_financing")) { + Map>> configs = ProductParamUtil.getProductComponentDecisionTable( productId, "PRD0301","IsBalanceLending"); + if(configs!=null && configs.size()>0 ) { + List> list = configs.get("segmented_financing"); + if( list!=null && list.size()>0 ) { + String IsBalanceLending = list.get(0).get("IsBalanceLending"); + if(IsBalanceLending!=null && IsBalanceLending.equals("Y")) { + fundList += ",'feetype27'"; + } + } + } + } + //安鹏贴息不抵扣 //北汽的有的产品可以贴息差额放款 /*if(fundList.length() > 0) { diff --git a/src_tenwa/com/tenwa/flow/fund/flowpayment/FundPaymentCar.java b/src_tenwa/com/tenwa/flow/fund/flowpayment/FundPaymentCar.java index a233150bf..3b8e06a73 100644 --- a/src_tenwa/com/tenwa/flow/fund/flowpayment/FundPaymentCar.java +++ b/src_tenwa/com/tenwa/flow/fund/flowpayment/FundPaymentCar.java @@ -178,12 +178,12 @@ public class FundPaymentCar { if(outOverMoney.compareTo(new BigDecimal(inOvermoney)) < 0){ inOvermoney = outOverMoney.toString(); } - if("feetype27".equals(boLFPs.get(i).getAttribute("fee_type").toString())){ + /*if( "feetype27".equals(boLFPs.get(i).getAttribute("fee_type").toString())){ deductMoney = deductMoney.subtract(new BigDecimal(inOvermoney)); }else{ deductMoney = deductMoney.add(new BigDecimal(inOvermoney)); - } - + }*/ + deductMoney = deductMoney.add(new BigDecimal(inOvermoney)); outOverMoney = outOverMoney.subtract(new BigDecimal(inOvermoney)); BizObject boLFP = JBOFactory.createBizObjectQuery(LC_FUND_PLAN.CLASS_NAME, "id=:PlanID").setParameter("PlanID", planID).getSingleResult(false); BizObject boLFITOut = bomLFIT.newObject();//抵扣车辆款 diff --git a/src_tenwa/com/tenwa/handler/LCFundPaymentTempInfoHandler.java b/src_tenwa/com/tenwa/handler/LCFundPaymentTempInfoHandler.java index f94a493c1..c6339c8c1 100644 --- a/src_tenwa/com/tenwa/handler/LCFundPaymentTempInfoHandler.java +++ b/src_tenwa/com/tenwa/handler/LCFundPaymentTempInfoHandler.java @@ -7,6 +7,8 @@ import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.awe.dw.handler.impl.CommonHandler; import com.amarsoft.dict.als.cache.CodeCache; import com.amarsoft.dict.als.object.Item; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; + import jbo.app.tenwa.calc.LC_FUND_INCOME_TEMP; import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO_TEMP; @@ -60,6 +62,24 @@ public class LCFundPaymentTempInfoHandler extends CommonHandler { if(fundList==null||"".equals(fundList)){ fundList="0"; } + String contractId = bo.getAttribute("CONTRACT_ID").getString(); + //分段融 + List> dataBySql = DataOperatorUtil.getDataBySql("select SETTLE_METHOD from lc_calc_condition where CONTRACT_ID='"+bo.getAttribute("CONTRACT_ID").getString()+"'"); + if(dataBySql!=null && dataBySql.size()>0 ) { + String settleMethod = dataBySql.get(0).get("SETTLE_METHOD"); + if(settleMethod!=null && settleMethod.equals("segmented_financing")) { + Map>> configs = ProductParamUtil.getProductComponentDecisionTable( productId, "PRD0301","IsBalanceLending"); + if(configs!=null && configs.size()>0 ) { + List> list = configs.get("segmented_financing"); + if( list!=null && list.size()>0 ) { + String IsBalanceLending = list.get(0).get("IsBalanceLending"); + if(IsBalanceLending!=null && IsBalanceLending.equals("Y")) { + fundList += ",'feetype27'"; + } + } + } + } + } //安鹏贴息不抵扣 //北汽的有的产品可以贴息差额放款 /*if(fundList.length() > 0) { @@ -73,6 +93,7 @@ public class LCFundPaymentTempInfoHandler extends CommonHandler { "flowunid = '" + flowunid + "' and fee_type in (" + fundList + ") ").getResultList(false); BigDecimal cleanLeaseMoney = new BigDecimal("0"); cleanLeaseMoney = cleanLeaseMoney.add(new BigDecimal(bo.getAttribute("FACT_MONEY").getString())); + BigDecimal deductMoney = new BigDecimal(0);//分段融有可能多个贴息计划 for(BizObject boLFIT : boLFITs) { BigDecimal factMoney = new BigDecimal(boLFIT.getAttribute("FACT_MONEY").getString()); String feeType = boLFIT.getAttribute("FEE_TYPE").getString(); @@ -94,9 +115,12 @@ public class LCFundPaymentTempInfoHandler extends CommonHandler { this.asDataObject.setVisible("GPS_FEE", true); break; case "feetype27": - cleanLeaseMoney = cleanLeaseMoney.subtract(factMoney); - bo.setAttributeValue("DEALER_DISCOUNT", factMoney); - this.asDataObject.setVisible("DEALER_DISCOUNT", true); + cleanLeaseMoney = cleanLeaseMoney.add(factMoney); + deductMoney = deductMoney.add(factMoney); +// bo.setAttributeValue("DEALER_DISCOUNT", deductMoney); +// this.asDataObject.setVisible("DEALER_DISCOUNT", true); + bo.setAttributeValue("DISCOUNT_INTEREST", deductMoney); + this.asDataObject.setVisible("DISCOUNT_INTEREST", true); break; case "feetype5": cleanLeaseMoney = cleanLeaseMoney.add(factMoney); 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..6b4090551 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/CreateVoucherRentIncomeMission.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/CreateVoucherRentIncomeMission.java @@ -1,18 +1,36 @@ package com.tenwa.lease.app.quartzmession; +import java.util.List; +import java.util.Map; + +import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.amarsoft.are.jbo.JBOException; import com.amarsoft.are.util.StringFunction; +import com.amarsoft.awe.util.SqlObject; +import com.amarsoft.awe.util.Transaction; import com.base.util.QuartzUtil; +import com.tenwa.jbo.manager.DataUtil; +import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherCustCautionMoneyIncome; +import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherEbankMoney; +import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherRedCompensatory; +import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherRentIncome; import com.tenwa.voucher.CreateVoucherProcess.InsertVoucherRentCompensatory; import com.tenwa.voucher.CreateVoucherProcess.InsertVoucherRentIncome; +import com.tenwa.voucher.serviceImp.OverdueRepayPlanVoucherPSBC; /** * 生成卡扣凭证明细-定时任务 * @author xiezhiwen */ +@DisallowConcurrentExecution public class CreateVoucherRentIncomeMission implements Job { + private static final Logger logger = LoggerFactory.getLogger(CreateVoucherRentIncomeMission.class); @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { String startime = StringFunction.getTodayNow(); @@ -29,10 +47,117 @@ public class CreateVoucherRentIncomeMission implements Job { InsertVoucherRentIncome ivri=new InsertVoucherRentIncome(); ivri.execute(); - QuartzUtil.insertLog(startime,"com.tenwa.comm.message.controller.BusinessCancelJob", "success", "成功", curUserId); + //生成网银凭证 + this.recordBank(); + + 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); } } + + + + public void recordBank() throws Exception { + Transaction Sqlca =null; + String querySql="SELECT ID,FLOWUNID,USERID FROM t_wyhx_middle WHERE STATUS='Y' "; + List> recordBankList = DataUtil.query(querySql); + if(recordBankList!=null && recordBankList.size() > 0 ) { + for (Map recordBank : recordBankList) { + try { + Sqlca = Transaction.createTransaction("als"); + String FlowUnid=recordBank.get("FLOWUNID"); + logger.info("IncomeVoucher 20210906 新增判断代码【开始】"); + OverdueRepayPlanVoucherPSBC overdueRepayPlanVoucherPSBC = new OverdueRepayPlanVoucherPSBC(); + if(overdueRepayPlanVoucherPSBC.findFcPSBCOverduce(FlowUnid)){ + logger.info("IncomeVoucher 网银收款流程结束后生成相应的凭证,当前是邮储相关订单凭证不执行以下操作。【结束】,未通过。"); + continue; + } + logger.info("IncomeVoucher 20210906 新增判断代码【结束】,通过。"); + String userid = recordBank.get("USERID"); + + /** + * 汽车网银回款-资金部分 + */ + CreateVoucherCustCautionMoneyIncome cvci=new CreateVoucherCustCautionMoneyIncome(); + // 汽车回租 + String sql="SELECT FEE_TYPE FROM LC_FUND_INCOME_TEMP WHERE FLOWUNID='"+FlowUnid+"' GROUP BY FEE_TYPE"; + List> queryList = DataUtil.query(sql); + for (Map map : queryList) { + String FEE_TYPE = map.get("FEE_TYPE"); + if("feetype30".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000026", "feetype30",userid);//收到的违约金/罚款 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000015", "feetype30",userid);//收到的违约金/罚款 --直租 + }else if("feetype4".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2018072100000031", "feetype4",userid); //收到名义货价 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019070100000019", "feetype4",userid); //收到名义货价--直租 + }else if("feetype2".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121600000162", "feetype2",userid); //回款-收到客户保证金 --回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2020041000000003", "feetype2",userid); //直租-收到客户保证金-直租 + }else if("feetype1".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121600000163", "feetype1",userid); //回款-收到客户手续费(一次性)--回租 + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2019121700000164", "feetype1",userid); //回款-收到客户手续费(按月) --回租 + }else if("feetype32".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2021032400000006", "feetype32",userid); //回款-收到个人意外险(网银来款)--回租 + }else if("feetype27".equals(FEE_TYPE)||"feetype33".equals(FEE_TYPE)) { + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2021032400000005", FEE_TYPE,userid); //回款-收到客户贴息 --回租 + } + } + + cvci.CreateVoucher(Sqlca,FlowUnid, "PZ2020080400000003", "feetype5",userid); //直租-收到客户首付款 + + /** + * 汽车网银回款-租金部分 + */ + CreateVoucherRentIncome cvri=new CreateVoucherRentIncome(); + sql="SELECT LCI.LEAS_FORM FROM LC_RENT_INCOME_TEMP LFIT LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LFIT.CONTRACT_ID WHERE LFIT.FLOWUNID='"+FlowUnid+"' GROUP BY LCI.LEAS_FORM"; + List> queryList2 = DataUtil.query(sql); + for (Map map : queryList2) { + // 汽车回租 + if("02".equals(map.get("LEAS_FORM"))) { + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018072100000024",userid);//回款-收到的租金(网银)--当月(回租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018080400000081",userid);//回款-收到的租金(网银)--跨月(回租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2018072100000025",userid);//回款-收到的逾期利息(网银)--(回租) + // 汽车直租 + }else { + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000016",userid);//回款-收到的租金(网银)--当月(直租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000017",userid);//回款-收到的租金(网银)--跨月(直租) + cvri.CreateVoucher(Sqlca,FlowUnid,"PZ2019070100000014",userid);//回款-收到的逾期利息(网银)--(直租) + } + } + /** + * 代偿反冲 + */ + CreateVoucherRedCompensatory cvrcs = new CreateVoucherRedCompensatory(); + cvrcs.CreateVoucher(FlowUnid,"PZ2019071500000030",userid,Sqlca);//代偿租金 + cvrcs.CreateVoucher(FlowUnid,"PZ2019071500000031",userid,Sqlca);//代偿逾期利息 + + CreateVoucherEbankMoney cvem = new CreateVoucherEbankMoney(); + sql="SELECT LE.ID FROM LC_EBANK_TEMP LE LEFT JOIN (SELECT MAX(F57) AS F57 FROM VOUCHER_V8 WHERE MODULE_NAME = '回款-多余回款分解' GROUP BY F3)V8 ON V8.F57=LE.EBANK_SN WHERE LE.FLOWUNID='"+FlowUnid+"' AND V8.F57 IS NULL"; + List> queryList3 = DataUtil.query(sql); + if(queryList3.size()>0) { + cvem.CreateVoucher(FlowUnid, "PZ2019070100000018", userid,Sqlca);// 回款-多余回款分解 + } + Sqlca.executeSQL(new SqlObject("UPDATE t_wyhx_middle SET STATUS='N' WHERE id='"+recordBank.get("ID")+"'")); + + } catch (Exception e) { + try { + Sqlca.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + }finally { + try { + Sqlca.commit(); + Sqlca.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + + } + } + } + + } } diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/GenerateVoucherSumJob.java b/src_tenwa/com/tenwa/lease/app/quartzmession/GenerateVoucherSumJob.java index 99962da55..bb9f45d5a 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/GenerateVoucherSumJob.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/GenerateVoucherSumJob.java @@ -5,8 +5,11 @@ import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.are.sql.Connection; import com.amarsoft.are.util.StringFunction; +import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; import com.base.util.QuartzUtil; + +import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -19,6 +22,7 @@ import java.sql.CallableStatement; * @author: 李超杰 * @create: 2021-11-03 15:38 */ +@DisallowConcurrentExecution public class GenerateVoucherSumJob implements Job { @Override @@ -32,19 +36,42 @@ public class GenerateVoucherSumJob implements Job { tx = JBOFactory.createJBOTransaction(); tran = Transaction.createTransaction(tx); - // 获取当前日期 -// String todayDateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")); - - Connection connection = tran.getConnection(tran); - CallableStatement callableStatement = connection.prepareCall("{call PROC_CALC_VOUCHER_SUM()}"); - callableStatement.execute(); - callableStatement.close(); + /** + * 将所有未插入中间表的凭证插入中间表 + */ + String sql="INSERT INTO VOUCHER_LIST( F3, MODULE_NAME, CONTRACT_NUMBER, F5, F1, F15, MONEYS, NC_FLAG, NC_BATCH, NC_DATE, GENERATE_DATE, F48, F50, F51, F52) SELECT V8.F3, MAX(V8.MODULE_NAME) AS MODULE_NAME, MAX(V8.F47) AS CONTRACT_NUMBER, MAX(V8.F5) AS F5, MAX(V8.F1) AS F1, MAX(V8.F15) AS F15, SUM(IFNULL(V8.F7,0))+SUM(IFNULL(V8.F8,0)) AS MONEYS, (SELECT CASE IFNULL(MAX(FLAG),'2') WHEN '1' THEN '传输成功' WHEN '2' THEN '未传输' ELSE '传输失败' END FROM NCXML_DETAIL_RECORDS O WHERE O.XML_TYPE='voucher' AND O.TABLE_NUM=V8.F3) AS NC_FLAG, (SELECT MAX(BATCH) FROM NCXML_DETAIL_RECORDS O WHERE O.XML_TYPE='voucher' AND O.TABLE_NUM=V8.F3) AS NC_BATCH, (SELECT MAX(O.CREATE_TIME) FROM NCXML_DETAIL_RECORDS O WHERE O.XML_TYPE='voucher' AND O.TABLE_NUM=V8.F3) AS NC_DATE, MAX(LEFT(V8.GENERATE_DATE,19)) AS GENERATE_DATE, MAX(V8.F48) AS F48, MAX(V8.F50) AS F50, MAX(V8.F51) AS F51, MAX(V8.F52) AS F52 FROM VOUCHER_V8 V8 WHERE V8.F9 IS NULL GROUP BY V8.F3 ORDER BY MAX(LEFT(V8.GENERATE_DATE,19))"; + int con = tran.executeSQL(new SqlObject(sql)); + System.out.println("插入凭证列表: "+con+"条!!!"); + System.out.println("插入凭证列表: "+con+"条!!!"); + System.out.println("插入凭证列表: "+con+"条!!!"); + /** + * 将所有已插入中间表的凭证, 变更状态 + */ + sql="UPDATE VOUCHER_V8 V8,VOUCHER_LIST VL SET V8.F9='Y' WHERE V8.F9 IS NULL AND V8.F3=VL.F3"; + con = tran.executeSQL(new SqlObject(sql)); + System.out.println("更新凭证明细是否入中间表: "+con+"条!!!"); + System.out.println("更新凭证明细是否入中间表: "+con+"条!!!"); + System.out.println("更新凭证明细是否入中间表: "+con+"条!!!"); + + /** + * 更新传输状态 + */ + sql="UPDATE VOUCHER_LIST VL,NCXML_DETAIL_RECORDS NDR SET VL.NC_FLAG=CASE IFNULL(NDR.FLAG,'2') WHEN '1' THEN '传输成功' WHEN '2' THEN '未传输' ELSE '传输失败' END, VL.NC_BATCH=NDR.BATCH,VL.NC_DATE=DATE_FORMAT(NDR.CREATE_TIME,'%Y/%m/%d') WHERE NDR.XML_TYPE='voucher' AND NDR.TABLE_NUM=VL.F3 AND VL.NC_FLAG<>'传输成功'"; + con = tran.executeSQL(new SqlObject(sql)); + System.out.println("更新凭证列表传输状态: "+con+"条!!!"); + System.out.println("更新凭证列表传输状态: "+con+"条!!!"); + System.out.println("更新凭证列表传输状态: "+con+"条!!!"); + /*Connection connection = tran.getConnection(tran); + CallableStatement callableStatement = connection.prepareCall("{call PROC_CALC_VOUCHER_SUM()}"); + callableStatement.execute(); + callableStatement.close(); + */ tran.commit(); - QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CalcPenaltyJob", "success", "成功", curUserId); + QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.GenerateVoucherSumJob", "success", "成功", curUserId); } catch (Exception e) { e.printStackTrace(); - QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CalcPenaltyJob", "error", "失败", curUserId); + QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.GenerateVoucherSumJob", "error", "失败", curUserId); try { if (tran != null) { tran.rollback(); 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{ diff --git a/src_tenwa/quartz/ObtainUpdataContractStatus.java b/src_tenwa/quartz/ObtainUpdataContractStatus.java new file mode 100644 index 000000000..1a2f89f03 --- /dev/null +++ b/src_tenwa/quartz/ObtainUpdataContractStatus.java @@ -0,0 +1,64 @@ +package quartz; + +import java.util.List; +import java.util.Map; + +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import com.amarsoft.are.jbo.JBOException; +import com.amarsoft.are.util.StringFunction; +import com.amarsoft.awe.util.SqlObject; +import com.amarsoft.awe.util.Transaction; +import com.base.util.QuartzUtil; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; +import com.tenwa.lease.app.quartzmession.JobInitUserName; + +public class ObtainUpdataContractStatus implements Job{ + private JobInitUserName jboName; + @Override + public void execute(JobExecutionContext arg0) throws JobExecutionException { + String startime = StringFunction.getTodayNow(); + + Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); + String curUserId = userId == null? "system" : userId.toString(); + Transaction sqlca = null ; + try { + sqlca = Transaction.createTransaction("als"); + sqlca.getConnection().setAutoCommit(true); + /*String sql = "update lb_contract_info lci set lci.ap_contract_status="+ + " (SELECT cl.itemname FROM " + + " ( SELECT contract_number, MAX( inputtime ) AS inputtime, business_status FROM business_status WHERE contract_number LIKE 'BQAP(%' GROUP BY contract_number ) bs " + + " LEFT JOIN business_status cs ON bs.contract_number = cs.contract_number " + + " AND bs.inputtime = cs.inputtime " + + " LEFT JOIN ( SELECT itemno, itemname FROM code_library WHERE codeno = 'BusinessStatus' ) cl ON cs.business_status = cl.itemno " + + " where bs.contract_number=lci.CONTRACT_NO) " + + " where ((ap_contract_status<>'正常结清' and ap_contract_status<>'提前结清') or ap_contract_status is null) "; + List> list = DataOperatorUtil.getDataBySql("select ID,CONTRACT_NO from lb_contract_info where BUSINESSTYPE ='1' and ((ap_contract_status<>'正常结清' and ap_contract_status<>'提前结清') or ap_contract_status is null) "); + String contractStatus = null ; + if(list!=null && list.size()>0) { + System.out.println("gengxindeshuju="+list.size()); + for (Map map : list) { + contractStatus = sqlca.getString("select getAPBusinessStatus('"+map.get("CONTRACT_NO")+"') from dual"); + sqlca.executeSQL(new SqlObject("update lb_contract_info set ap_contract_status = '"+contractStatus+"' where id='"+map.get("ID")+"'")); + sqlca.commit(); + } + }*/ + sqlca.executeSQL(new SqlObject("call proc_update_contract_status() ")); + QuartzUtil.insertLog(startime, "quartz.ObtainUpdataContractStatus", "success", "成功", curUserId); + } catch (Exception e) { + QuartzUtil.insertLog(startime, "quartz.ObtainUpdataContractStatus", "error", "失败", curUserId); + e.printStackTrace(); + }finally{ + try { + if(sqlca !=null){ + sqlca.disConnect(); + } + } catch (JBOException e) { + e.printStackTrace(); + } + } + } + +}