173 lines
8.8 KiB
Java
173 lines
8.8 KiB
Java
package com.tenwa.lease.app.quartzmession;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.HashMap;
|
||
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.BizObject;
|
||
import com.amarsoft.are.jbo.JBOException;
|
||
import com.amarsoft.are.jbo.JBOFactory;
|
||
import com.amarsoft.are.util.StringFunction;
|
||
import com.amarsoft.awe.util.Transaction;
|
||
import com.amarsoft.dict.als.cache.CacheLoaderFactory;
|
||
import com.base.util.QuartzUtil;
|
||
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
|
||
import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl;
|
||
|
||
import jbo.voucher.LV_VOUCHER_CONFIG;
|
||
import jbo.voucher.TAX_CODE;
|
||
|
||
/**
|
||
* 结清半年后网银自动确认收入
|
||
* @author tangfutang
|
||
*/
|
||
public class SurplusMoneyMakeSureIn implements Job {
|
||
|
||
@SuppressWarnings("deprecation")
|
||
public void execute(JobExecutionContext arg0) throws JobExecutionException {
|
||
Transaction Sqlca = null;
|
||
String sql = "";
|
||
String EBANK_SN = "";
|
||
String startime = StringFunction.getTodayNow();
|
||
Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId");
|
||
String curUserId = userId == null? "system" : userId.toString();
|
||
try {
|
||
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
|
||
List<String> list = new ArrayList<String>();
|
||
/**
|
||
* 1:获取当前已经结清, 并且结清大于等于183天的合同
|
||
*/
|
||
sql = "SELECT LCI.ID AS CONTRACT_ID FROM LB_CONTRACT_INFO LCI LEFT JOIN (SELECT LRIA.CONTRACT_ID,MAX(LRIA.HIRE_DATE) AS HIRE_DATE FROM LC_RENT_INCOME LRIA WHERE LRIA.HIRE_DATE=(SELECT MAX(LRIB.HIRE_DATE) AS HIRE_DATE FROM LC_RENT_INCOME LRIB WHERE LRIB.CONTRACT_ID=LRIA.CONTRACT_ID) GROUP BY LRIA.CONTRACT_ID)LRI ON LRI.CONTRACT_ID=LCI.ID LEFT JOIN (SELECT LRI.CONTRACT_ID FROM (SELECT EBANK_NUMBER,CONTRACT_ID FROM LC_RENT_INCOME WHERE (EBANK_NUMBER IS NOT NULL OR EBANK_NUMBER<>'') GROUP BY CONTRACT_ID,EBANK_NUMBER) LRI LEFT JOIN LC_EBANK LE ON LE.ID=LRI.EBANK_NUMBER WHERE IFNULL(LE.MAYOPE_MONEY, 0) <> 0 GROUP BY LRI.CONTRACT_ID)LRI2 ON LRI2.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) AND LRI2.CONTRACT_ID IS NOT NULL ";
|
||
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");
|
||
/**
|
||
* 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();
|
||
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.SurplusMoneyMakeSureIn", "success", "成功", curUserId);
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.SurplusMoneyMakeSureIn", "error", "失败", curUserId);
|
||
try {
|
||
Sqlca.rollback();
|
||
} catch (JBOException e1) {
|
||
e1.printStackTrace();
|
||
}
|
||
}finally {
|
||
try {
|
||
if(Sqlca != null) {
|
||
Sqlca.commit();
|
||
Sqlca.disConnect();
|
||
}
|
||
} catch (JBOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
}
|
||
|
||
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);
|
||
}
|
||
}
|
||
}
|
||
}
|