diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/SurplusMoneyMakeSureIn.java b/src_tenwa/com/tenwa/lease/app/quartzmession/SurplusMoneyMakeSureIn.java index 2265da917..204a15ab7 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/SurplusMoneyMakeSureIn.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/SurplusMoneyMakeSureIn.java @@ -1,74 +1,79 @@ package com.tenwa.lease.app.quartzmession; - -import java.text.SimpleDateFormat; -import java.util.Date; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; - -import jbo.app.tenwa.calc.LC_RENT_INCOME; -import jbo.app.tenwa.calc.VI_LC_RENT_PLAN; -import jbo.com.tenwa.lease.comm.CONFIGURATE; -import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO; - import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; - 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.util.Transaction; import com.amarsoft.dict.als.cache.CacheLoaderFactory; import com.tenwa.comm.util.jboutil.DataOperatorUtil; -import com.tenwa.reckon.util.UUIDUtil; - +import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; +import jbo.voucher.LV_VOUCHER_CONFIG; +import jbo.voucher.TAX_CODE; /** * 结清半年后网银自动确认收入 * @author tangfutang */ -public class SurplusMoneyMakeSureIn implements Job{ +public class SurplusMoneyMakeSureIn implements Job { + @SuppressWarnings("deprecation") public void execute(JobExecutionContext arg0) throws JobExecutionException { - JBOTransaction tx=null; Transaction Sqlca = null; + String sql = ""; + String EBANK_SN = ""; try { Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); - tx = Sqlca.getTransaction(); - String date_sql = "SELECT DATE_ADD(STR_TO_DATE(lri.hire_date,'%Y/%m/%d'),INTERVAL 183 DAY) as hire_date,contract_id FROM lb_contract_info lci LEFT JOIN (SELECT lria.hire_date, lria.contract_id FROM lc_rent_income lria WHERE lria.hire_date = (SELECT MAX(lrib.hire_date) FROM lc_rent_income lrib WHERE lria.contract_id = lrib.contract_id) GROUP BY contract_id) lri ON lri.contract_id = lci.id WHERE lci.contract_status ='100' OR lci.contract_status ='105'"; - List> date_list = DataOperatorUtil.getDataBySql(date_sql); - for(int i=0;i list = new ArrayList(); + /** + * 1:获取当前已经结清, 并且结清大于等于183天的合同 + */ + sql = "SELECT contract_id FROM lb_contract_info lci LEFT JOIN (SELECT lria.hire_date,lria.contract_id FROM lc_rent_income lria LEFT JOIN LC_EBANK LE ON LE.ID=LRIA.EBANK_NUMBER WHERE lria.hire_date = (SELECT MAX(lrib.hire_date) FROM lc_rent_income lrib WHERE lria.contract_id = lrib.contract_id) AND IFNULL(LE.MAYOPE_MONEY,0)<>0 GROUP BY contract_id) lri ON lri.contract_id = lci.id WHERE (lci.contract_status = '100' OR lci.contract_status = '105') AND DATE_FORMAT(NOW(), '%Y/%m/%d') >= DATE_ADD(STR_TO_DATE(lri.hire_date, '%Y/%m/%d'),INTERVAL 183 DAY) "; + List> date_list = DataOperatorUtil.getDataBySql(sql); + /** + *:2:循环获取合同租金核销用到过并且还有可核销金额的网银信息,将网银流水号存入list集合 + */ + for (int i = 0; i < date_list.size(); i++) { String contractId = date_list.get(i).get("contract_id"); - String hireDate = date_list.get(i).get("hire_date"); - Date nowDate=new Date(); - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - Date old=df.parse(hireDate); - if(!nowDate.before(old)){ - //多余的网银收款进行确认收入 - } - } - - } catch (JBOException e) { - if (tx != null) { - try { - tx.rollback(); - tx=null; - } catch (JBOException e1) { - e1.printStackTrace(); + /** + * 3:获取该合同相关租金收款,资金收款用过的网银, 未核销完的网银数据, + */ + sql = "SELECT LE.ID AS EBANK_ID,LE.EBANK_SN FROM (SELECT EBANK_NUMBER FROM LC_RENT_INCOME WHERE CONTRACT_ID = '"+contractId+"' AND (EBANK_NUMBER IS NOT NULL AND EBANK_NUMBER <> '') GROUP BY EBANK_NUMBER )LRI LEFT JOIN LC_EBANK LE ON LE.ID=LRI.EBANK_NUMBER WHERE IFNULL(LE.MAYOPE_MONEY,0)<>0 "; + List> s1 = DataOperatorUtil.getDataBySql(sql); + for (Map map : s1) { + if (!list.contains(map.get("EBANK_SN"))) { + list.add(map.get("EBANK_SN")); + } + } + /** + * 4: 循环网银信息,将多余还款金额确认收入 + */ + for(int a=0; a map = new HashMap(); + Map param = new HashMap(); + CreateVoucherServiceImpl vs = new CreateVoucherServiceImpl(); + String VOUCHER_TYPE = "1"; + String userid="admin"; + String MONEY = null; + String MONEYNOTAX = null; + String MONEYTAX = null; + String ACCOUNT_DATE = null; + String FACT_DATE = 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 CUSTOMERTYPE = null; + String BUSINESSTYPE = null; + String TAX_NUM = null; + + String sql = "SELECT ROUND((getTax (lci.LEAS_FORM,'租金',LCCT.START_DATE) - 1) * 100,0) AS TAX_NUM,IFNULL(LE.CONFIRM_MONEY,0) AS MONEY,IFNULL(ROUND(IFNULL(LE.CONFIRM_MONEY,0)/getTax(LCI.LEAS_FORM,'租金',LCCT.START_DATE),2),0) AS MONEYNOTAX,IFNULL(IFNULL(LE.CONFIRM_MONEY,0)-ROUND(IFNULL(LE.CONFIRM_MONEY,0)/getTax(LCI.LEAS_FORM,'租金',LCCT.START_DATE),2),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,IFNULL(CI1.CUSTOMER_NUM,CI2.CUSTOMER_NUM) AS CUSTOMERID,IFNULL(CI1.CUSTOMERNAME,CI2.CUSTOMERNAME) AS CUSTOMERNAME,IFNULL(CI1.CUSTOMERTYPE,CI2.CUSTOMERTYPE) AS CUSTOMERTYPE,LPI.BUSINESSTYPE FROM LC_EBANK LE LEFT JOIN (SELECT EBANK_NUMBER,MAX(CONTRACT_ID) AS CONTRACT_ID FROM LC_RENT_INCOME WHERE CONTRACT_ID='"+CONTRACT_ID+"' AND (EBANK_NUMBER IS NOT NULL AND EBANK_NUMBER <> '') GROUP BY CONTRACT_ID,EBANK_NUMBER)LRI ON LRI.EBANK_NUMBER=LE.ID 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 LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID=LCI.ID LEFT JOIN CUSTOMER_INFO CI1 ON CI1.CUSTOMERID=LUL.CUSTOMER_ID LEFT JOIN CUSTOMER_INFO CI2 ON CI2.CUSTOMERID=LE.CUSTOMER_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE LE.EBANK_SN='"+EBANK_SN+"' AND IFNULL(LE.CONFIRM_MONEY,0)>0"; + List> dataList = DataOperatorUtil.getDataBySql(Sqlca, sql, map); + + for (int i = 0; i < dataList.size(); i++) { + MONEY = dataList.get(i).get("MONEY"); + MONEYNOTAX = dataList.get(i).get("MONEYNOTAX"); + MONEYTAX = dataList.get(i).get("MONEYTAX"); + ACCOUNT_DATE = dataList.get(i).get("ACCOUNT_DATE"); + FACT_DATE = dataList.get(i).get("FACT_DATE"); + CONTRACT_ID = dataList.get(i).get("CONTRACT_ID"); + CONTRACT_NUMBER = dataList.get(i).get("CONTRACT_NUMBER"); + PROJECT_NAME = dataList.get(i).get("PROJECT_NAME"); + leas_form = "02"; + DISTRIBUTOR_ID = dataList.get(i).get("DISTRIBUTOR_ID"); + DISTRIBUTOR_NAME = dataList.get(i).get("DISTRIBUTOR_NAME"); + CUSTID = dataList.get(i).get("CUSTOMERID"); + CUSTNAME = dataList.get(i).get("CUSTOMERNAME"); + CUSTOMERTYPE = dataList.get(i).get("CUSTOMERTYPE"); + BUSINESSTYPE = dataList.get(i).get("BUSINESSTYPE"); + TAX_NUM = dataList.get(i).get("TAX_NUM"); + // 通过税率获取编码 + BizObject TAX_CODES = null; + if (TAX_NUM != null && !"".equals(TAX_NUM)) { + TAX_CODES = JBOFactory.createBizObjectQuery(TAX_CODE.CLASS_NAME, "TAX_NUMBER='" + TAX_NUM + "'").getSingleResult(false); + } + + 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("CONTRACT_NUMBER", CONTRACT_NUMBER); + param.put("PROJECT_NAME", PROJECT_NAME); + param.put("LEAS_FORM", leas_form); + param.put("DISTRIBUTOR_ID", DISTRIBUTOR_ID); + param.put("DISTRIBUTOR_NAME", DISTRIBUTOR_NAME); + param.put("CUSTID", CUSTID); + param.put("CUSTNAME", CUSTNAME); + param.put("CUSTOMERTYPE", CUSTOMERTYPE); + param.put("BUSINESSTYPE", BUSINESSTYPE); + param.put("F57", EBANK_SN); + param.put("VOUCHERNO", VOUCHERNO); + if (TAX_CODES != null) { + param.put("TAX_CODE", TAX_CODES.getAttribute("TAX_CODES").getString()); + } + + 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); + } + } + } }