apzl_leasing/src_tenwa/com/tenwa/lease/app/quartzmession/SurplusMoneyMakeSureIn.java
2020-06-15 17:24:19 +08:00

173 lines
8.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}
}