合同结清183天之后, 自动将该合同核销租金用过的网银可核销金额还有值的转入收入,并生成凭证
This commit is contained in:
parent
a0bf1314a0
commit
b52cfa89d0
@ -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<Map<String, String>> date_list = DataOperatorUtil.getDataBySql(date_sql);
|
||||
for(int i=0;i<date_list.size();i++){
|
||||
List<String> list = new ArrayList<String>();
|
||||
/**
|
||||
* 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<Map<String, String>> 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<Map<String, String>> s1 = DataOperatorUtil.getDataBySql(sql);
|
||||
for (Map<String , String> map : s1) {
|
||||
if (!list.contains(map.get("EBANK_SN"))) {
|
||||
list.add(map.get("EBANK_SN"));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 4: 循环网银信息,将多余还款金额确认收入
|
||||
*/
|
||||
for(int a=0; a<list.size();a++) {
|
||||
EBANK_SN = list.get(a);
|
||||
sql="UPDATE LC_EBANK SET CONFIRM_MONEY=IFNULL(CONFIRM_MONEY,0)+IFNULL(MAYOPE_MONEY,0),MAYOPE_MONEY=0 WHERE EBANK_SN='"+EBANK_SN+"'";
|
||||
Sqlca.executeSQL(sql);
|
||||
this.CreateVoucher("PZ2018072100000052",contractId,EBANK_SN,Sqlca);
|
||||
}
|
||||
}
|
||||
Sqlca.commit();
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
try {
|
||||
if(tx !=null){
|
||||
|
||||
tx.commit();
|
||||
Sqlca.rollback();
|
||||
} catch (JBOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}finally {
|
||||
try {
|
||||
if(Sqlca != null) {
|
||||
Sqlca.commit();
|
||||
Sqlca.disConnect();
|
||||
}
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
@ -76,4 +81,82 @@ public class SurplusMoneyMakeSureIn implements Job{
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateVoucher(String VOUCHERNO,String CONTRACT_ID,String EBANK_SN,Transaction Sqlca) throws Exception {
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
Map<String, String> param = new HashMap<String, String>();
|
||||
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<Map<String, String>> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user