package com.tenwa.collectaudit.cache; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.amarsoft.app.awe.config.InitCollectConfig; import com.amarsoft.app.util.StringUtil; import com.amarsoft.are.jbo.*; import com.amarsoft.are.util.StringFunction; import com.amarsoft.awe.util.ASResultSet; import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; import com.gnete.security.crypt.Crypt; 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; import jbo.app.tenwa.calc.LC_RENT_PLAN; import jbo.app.tenwa.customer.CUSTOMER_ACCOUNT; import jbo.app.tenwa.customer.DISTRIBUTOR_INFO; import jbo.com.tenwa.entity.comm.flow.D_DEPOSITCHARGE_INFO; import jbo.com.tenwa.entity.comm.flow.D_DEPOSITRETURN_INFO; import jbo.com.tenwa.lease.comm.*; import jbo.sys.CODE_LIBRARY; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.JobExecutionContext; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.impl.StdSchedulerFactory; import java.io.File; import java.math.BigDecimal; import java.sql.SQLException; 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; private String fileSavePath = "d:/tmp/als/InterFace"; private String inputuserid; private String inputorgid; private String clearDate; private String distributor_id; private String penaltys; private String collectStyle; private String datas; private String jobName; private String operateFrom; public String getDatas() { return datas; } public void setDatas(String datas) { this.datas = datas; } /** * 经销商保证金代偿后红冲 * 租金计划表ID,在保证金收取表中为depositcharge_id,在退回表中为RENT_PLAN_ID * @param depositcharge_id,tx * @return * @throws Exception */ public void writeBackDistributor(String rentPlanId,String money,Transaction Sqlca) throws JBOException{ //查询是否有代偿记录 BizObject boDRI=JBOFactory.createBizObjectQuery(D_DEPOSITRETURN_INFO.CLASS_NAME,"RENT_PLAN_ID=:rentPlanId").setParameter("rentPlanId", rentPlanId).getSingleResult(false); if(boDRI!=null&&boDRI.getAttribute("CAUTION_MONEY")!=null){ //代偿操作 BigDecimal dci_money = new BigDecimal("0"); BizObjectManager bmDCI = JBOFactory.getFactory().getManager(D_DEPOSITCHARGE_INFO.CLASS_NAME); List boDCI=bmDCI.createQuery("RENT_PLAN_ID=:rentPlanId").setParameter("rentPlanId", rentPlanId).getResultList(false); if(boDCI.size()>0){ for(BizObject bo_dci : boDCI){ dci_money = dci_money.add(new BigDecimal(bo_dci.getAttribute("CAUTION_MONEY").toString())); } } if(dci_money.compareTo(new BigDecimal(boDRI.getAttribute("CAUTION_MONEY").toString()))==-1){ BizObjectManager bmDI = JBOFactory.getFactory().getManager(DISTRIBUTOR_INFO.CLASS_NAME); //D_DEPOSITCHARGE_INFO插入新数据 BizObject bDCI_N = bmDCI.newObject(); String distributorId = boDRI.getAttribute("DISTRIBUTOR_ID").toString(); bDCI_N.setAttributeValue("DISTRIBUTOR_ID", distributorId); bDCI_N.setAttributeValue("CAUTION_MONEY", money); bDCI_N.setAttributeValue("MONEY_TYPE","bondBack"); bDCI_N.setAttributeValue("INPUTTIME",StringFunction.getTodayNow()); bDCI_N.setAttributeValue("INPUTUSERID",inputuserid); bDCI_N.setAttributeValue("INPUTORGID",inputorgid); bDCI_N.setAttributeValue("RENT_PLAN_ID",rentPlanId); bmDCI.saveObject(bDCI_N); //修改经销商信息表里的金额 BizObject bDI = bmDI.createQuery("distributor_no=:distributor_id").setParameter("distributor_id", distributorId).getSingleResult(true); String sum = new BigDecimal(bDI.getAttribute("sums").getString()).add(new BigDecimal(money)).toString(); bDI.setAttributeValue("sums", sum); bmDI.saveObject(bDI); System.out.println("红冲成功"); } } } //获取存盘文件 public static String getCollectIntface(String id) throws Exception{ String sql="select lr.filename from LB_INTFACE_FILE_RECORD lr " + "where lr.id=:id"; Map map=new HashMap(); map.put("id", id); JBOTransaction tx = null; String filename=""; tx=JBOFactory.createJBOTransaction(); List> list=DataOperatorUtil.getDataBySql(tx, sql, map); if(list.size()>0){ filename=StringUtil.nullToString(list.get(0).get("FILENAME")) ; } tx.commit(); return filename; } //校验是否已经收款 public String checkRentIsIncome(JBOTransaction tx) throws JBOException{ String[] ids = id.split("@"); 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,tx); List bolist = bm.createQuery("select v.getCustomerName(O.customer_id) as v.customer_name,O.account,O.acc_number,O.mobile,O.contract_id,O.plan_list,O.plan_date,O.COLLECT_STATUS,O.BATCH_STATUS,O.rent from O where O.id in ("+parms.toString()+")").getResultList(false); for (BizObject bo : bolist) { String name = bo.getAttribute("customer_name").toString().trim(); String plan_list = bo.getAttribute("plan_list").toString(); String plan_date = bo.getAttribute("plan_date").toString(); String batchstatus = bo.getAttribute("BATCH_STATUS").toString(); String rent = bo.getAttribute("rent").toString(); if ("process".equals(batchstatus)) {//判断是否在批量处理中 return "error@"+name+"的"+plan_list+"日期为"+plan_date+"的租金正在进行扣款处理中,请稍后".trim(); } if ("".equals(rent) || "0".equals(rent) || "0.0".equals(rent)) {//判断剩余收款金额 return "error@"+name+"的"+plan_list+"日期为"+plan_date+"的租金已经全部收取,无法再次扣款".trim(); } } return "sucess"; } //上传清算文件 public String uploadClearFile(JBOTransaction tx) throws JBOException{ String currentDateTime = DateAssistant.getTodayNow(); String currenttime=currentDateTime.replaceAll("/", ""); currenttime=currenttime.replaceAll(":", ""); currenttime=currenttime.replaceAll(" ", ""); //String SETT_DATE = "20170920"; String SETT_DATE = this.getClearDate() != null ? this.getClearDate().replace("/", "") : ""; String SETT_NO = "01"; String SF_TYPE = InitCollectConfig.FLAG; String USER_NAME = InitCollectConfig.USERNAME; String MERCHANT_ID = InitCollectConfig.MERCHANTID; String REQ_TIME = currenttime; //String URL = "http://59.41.103.98:333/gzdsf/GetSettFile.do?"; String URL = InitCollectConfig.CLEARREQUESTURL+"?"; String SIGNED_MSG = ""; try { Crypt crypt = new Crypt("gbk"); String pathPfx = InitCollectConfig.PRIVATEKEYURL; //"D:\\BaiduNetdisk\\Download\\代收付系统接口文档和JAVA版测试demo及测试相关参数\\JAVA版测试DEMO及测试参数_20170825\\测试商户证书\\ORA@TEST1.p12"; SIGNED_MSG = SETT_DATE+"|"+SETT_NO+"|"+USER_NAME+"|"+MERCHANT_ID+"|"+REQ_TIME; SIGNED_MSG = crypt.sign(SIGNED_MSG, pathPfx, "123456"); URL += "SETT_DATE="+SETT_DATE+"&SETT_NO="+SETT_NO+"&SF_TYPE="+SF_TYPE+"&USER_NAME="+USER_NAME+"&MERCHANT_ID="+MERCHANT_ID+"&REQ_TIME="+REQ_TIME+"&SIGNED_MSG="+SIGNED_MSG; System.out.println(URL); } catch (CryptException e) { e.printStackTrace(); } BizObjectManager bm = JBOFactory.getFactory().getManager(LB_CLEAR_FILE_RECORD.CLASS_NAME); bm.createQuery("update O set O.FULLPATH=:FULLPATH where O.id=:id").setParameter("FULLPATH", URL) .setParameter("id", this.getId()).executeUpdate(); return "sucess"; } //初审 public String fristCollectAudit(JBOTransaction tx) throws JBOException{ String[] ids = id.split("@"); StringBuffer buff = new StringBuffer(); for (String str : ids) { if (buff.length() == 0) { buff.append("'"+str+"'"); }else{ buff.append(",'"+str+"'"); } } String parm = buff.toString(); BizObjectManager bm = JBOFactory.getFactory().getManager(VI_LC_AUDIT_RENT_PLAN.CLASS_NAME); BizObjectManager acc = JBOFactory.getFactory().getManager(CUSTOMER_ACCOUNT.CLASS_NAME); List bolist = bm.createQuery("select v.getCustomerName(O.customer_id) as v.customer_name,O.account,O.acc_number,O.mobile,O.contract_id,O.plan_list,O.plan_date,O.COLLECT_STATUS,O.BATCH_STATUS,O.rent from O where O.id in ("+parm.toString()+")").getResultList(false); for (BizObject bo : bolist) { System.out.println("银行账户:"+bo.getAttribute("account")+",银行卡号:"+bo.getAttribute("acc_number") +",手机号:"+bo.getAttribute("mobile")+"合同ID:"+bo.getAttribute("contract_id")); String name = bo.getAttribute("customer_name").toString().trim(); BizObject ac = acc.createQuery("O.account=:account and O.acc_type = 'Debit' and O.sign_status ='Y' and O.acc_number=:acc_number and O.mobile=:mobile and O.contract_id=:contract_id") .setParameter("account", bo.getAttribute("account").toString()) .setParameter("acc_number", bo.getAttribute("acc_number").toString()) .setParameter("mobile", bo.getAttribute("mobile").toString()) .setParameter("contract_id", bo.getAttribute("contract_id").toString()) .getSingleResult(false); if (ac == null) { return "error@客户"+name+"尚未签约,请先进行签约".trim(); } } BizObjectManager bmr = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME); //String today=DateTool.getToday(); bmr.createQuery("update O set O.AUDIT_STATE = 'Y' where id in ("+parm+")").executeUpdate(); //bmr.createQuery("update O set O.AUDIT_STATE = 'Y',CollectTime='"+today+"' where id in ("+parm+")").executeUpdate(); return "success"; } //复审退回 public String rebackCollectAudit(JBOTransaction tx) throws JBOException{ String[] ids = id.split("@"); 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 bolist = bm.createQuery("select v.getCustomerName(O.customer_id) as v.customer_name,O.fact_rent,O.account,O.acc_number,O.mobile,O.contract_id,O.plan_list,O.plan_date,O.COLLECT_STATUS,O.BATCH_STATUS,O.rent from O where O.id in ("+parms.toString()+")").getResultList(false); for (BizObject bo : bolist) { String name = bo.getAttribute("customer_name").toString().trim(); String plan_list = bo.getAttribute("plan_list").toString(); String plan_date = bo.getAttribute("plan_date").toString(); String batchstatus = bo.getAttribute("BATCH_STATUS").toString(); String rent = bo.getAttribute("rent").toString(); double fact_rent = bo.getAttribute("fact_rent").getDouble();//实际租金 double income_rent = bo.getAttribute("rent").getDouble();//已收租金 if ("process".equals(batchstatus)) {//判断是否在批量处理中 return "error@"+name+"的"+plan_list+"日期为"+plan_date+"的租金正在进行批量扣款处理中,无法退回初审".trim(); } if ("".equals(rent) || "0".equals(rent) || "0.0".equals(rent)) {//判断剩余收款金额 return "error@"+name+"的"+plan_list+"日期为"+plan_date+"的租金已经全部收取,无法退回初审".trim(); } if (income_rent > 0 && (fact_rent > income_rent)) {//部分收款 return "error@"+name+"的"+plan_list+"日期为"+plan_date+"的租金已经部分收取,无法退回初审".trim(); } } BizObjectManager bmlrp = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME); bmlrp.createQuery("update O set O.AUDIT_STATE = 'N' where id in ("+parms.toString()+")").executeUpdate(); return "success"; } /** * 实时代收 * @param tx * @return * @throws Exception */ public String barchCollectManage(JBOTransaction tx) throws Exception{ int i = 0,j = 0; String[] ids = id.split("@"); 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); BizObjectManager bc = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME); List bolist = bm.createQuery("select distinct O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,ca.ACCOUNT_PROVINCE,ca.BANK_DEPOSIT,O.rent from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and ca.acc_info = 'Debit' and O.id in ("+parms.toString()+")").getResultList(false); for (BizObject bo : bolist) { List codelist = JBOFactory.getFactory().getBizObjectManager(CODE_LIBRARY.CLASS_NAME).createQuery("O.codeno = 'bankType' and O.itemdescribe is not null ").getResultList(false); for (BizObject code : codelist) { String itemname = code.getAttribute("itemname").toString().trim(); double itemdescribe = code.getAttribute("itemdescribe").getDouble(); if (bo.getAttribute("BANK_NAME") != null && bo.getAttribute("bank_name").toString().indexOf(itemname) !=-1 && Double.parseDouble(bo.getAttribute("rent").toString()) > itemdescribe) { BigDecimal m = new BigDecimal(bo.getAttribute("rent").toString()); int rent = m.multiply(new BigDecimal(100)).intValue(); BigDecimal mi = new BigDecimal(itemdescribe); long divide = mi.multiply(new BigDecimal(100)).longValue(); int k = (int) Math.floor(rent/divide); int l = (int) Math.ceil(rent%divide); int im = 0; for (int k2 = 1; k2 <= k; k2++) { Map map = singleCollectMoeny(tx,bc,bo,itemdescribe+"",k2+""); if ("0000".equals(map.get("RET_CODE"))) { i++; im++; }else{ j++; } } if (l != 0) { String surprent = String.valueOf(new DecimalFormat("#.00").format(bo.getAttribute("rent").getDouble() - k*itemdescribe)); String hire_list = (k+1)+""; Map map = singleCollectMoeny(tx,bc,bo,surprent,hire_list); if ("0000".equals(map.get("RET_CODE"))) { i++; im++; }else{ j++; } } if(im > 1 && ((l != 0 && im != (k+1))||(l == 0 && im != k))){ //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS where O.id=:id") .setParameter("COLLECT_STATUS", "部分收款") .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); } }else { Map map = singleCollectMoeny(tx,bc,bo,bo.getAttribute("rent").toString(),"1"); if ("0000".equals(map.get("RET_CODE"))) { i++; }else{ j++; } } } /*if (bo.getAttribute("BANK_NAME") != null && bo.getAttribute("bank_name").toString().indexOf("建设银行") !=-1 && Double.parseDouble(bo.getAttribute("rent").toString()) > 5000) { BigDecimal m = new BigDecimal(bo.getAttribute("rent").toString()); int rent = m.multiply(new BigDecimal(100)).intValue(); int k = (int) Math.floor(rent/500000); int l = (int) Math.ceil(rent%500000); int im = 0; for (int k2 = 1; k2 <= k; k2++) { Map map = singleCollectMoeny(tx,bc,bo,"5000.00",k2+""); if ("0000".equals(map.get("RET_CODE"))) { i++; im++; }else{ j++; } } if (l != 0) { String surprent = String.valueOf(new DecimalFormat("#.00").format(bo.getAttribute("rent").getDouble() - k*5000)); String hire_list = (k+1)+""; Map map = singleCollectMoeny(tx,bc,bo,surprent,hire_list); if ("0000".equals(map.get("RET_CODE"))) { i++; im++; }else{ j++; } } if(im > 1 && ((l != 0 && im != (k+1))||(l == 0 && im != k))){ //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS where O.id=:id") .setParameter("COLLECT_STATUS", "部分收款") .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); } }else { Map map = singleCollectMoeny(tx,bc,bo,bo.getAttribute("rent").toString(),"1"); if ("0000".equals(map.get("RET_CODE"))) { i++; }else{ j++; } }*/ } return "总共有 "+i+" 笔租金收款成功\n"+j+" 笔租金收款失败"; } /** * 接口代付 * @param tx * @param bc * @param bo * @param rent * @return * @throws Exception */ public Map singleCollectMoeny(JBOTransaction tx,BizObjectManager bc,BizObject bo,String rent,String hire_list) throws Exception{ CollectAuditProcess cp = new CollectAuditProcess(); //创建文件名称 String currentDateTime = DateAssistant.getTodayNow(); String currentYear = currentDateTime.substring(0,4); String month = currentDateTime.substring(5,7); String day = currentDateTime.substring(8,10); String merchantNumber = InitCollectConfig.MERCHANTID; String flag = InitCollectConfig.FLAG; String version = InitCollectConfig.C_VERSION; String date = currentYear+month+day;//提交日期 String batch_title = ""; int i = 0,j = 0; //创建文件路径 String rootDir = this.fileSavePath; File file = new File(rootDir + File.separator + currentYear + File.separator + month + File.separator + day); System.out.println(file.getAbsolutePath()); if(!file.exists()){//目录不存在则直接创建 file.mkdirs(); } String req_sn = System.currentTimeMillis()+"";//当日批次号 batch_title = merchantNumber+"_"+flag+version+date+"_"+req_sn; BigDecimal m = new BigDecimal(rent); String fact_rent = String.valueOf(m.multiply(new BigDecimal(100)).intValue()); String acc_number = bo.getAttribute("ACC_NUMBER").toString(); String account = bo.getAttribute("ACCOUNT").toString(); String bank_code = bo.getAttribute("BANK_DEPOSIT").toString(); String province = bo.getAttribute("ACCOUNT_PROVINCE").toString(); StringBuffer strbuff = collectTimely(fact_rent, acc_number, account,bank_code,province, req_sn); //响应报文 String strResp = cp.CollectAuditPayReq(strbuff,file.getAbsolutePath(), batch_title); Map map = getRetAndCode(strResp); if ("0000".equals(map.get("RET_CODE"))) { i++; }else{ j++; } if (map.containsKey("RET_CODE") && "0000".equals(map.get("RET_CODE"))) { Transaction Sqlca =null; String cerrentDate = DateAssistant.getToday(); JBOTransaction transaction = JBOFactory.createJBOTransaction(); BizObjectManager bmi = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME,transaction); BizObject boi = bmi.createQuery("select v.sys_guid() as v.id,O.QUOT_ID as v.QUOT_ID,O.CUST_ID as v.CUST_ID,O.PROJECT_ID as v.PROJECT_ID,O.PROJECT_PLAN_NUMBER as v.PROJECT_PLAN_NUMBER," + "O.CONTRACT_ID as v.CONTRACT_ID,O.CONTRACT_PLAN_NUMBER as v.CONTRACT_PLAN_NUMBER,O.PAYMENT_NUMBER as v.PAYMENT_NUMBER,'' as v.EBANK_NUMBER,O.id as v.PLAN_ID,O.PLAN_LIST as v.PLAN_LIST," + "'0' as v.INTEREST_ADJUST,'settlemethod6' as v.SETTLE_METHOD,'"+hire_list+"' as v.HIRE_LIST,'"+cerrentDate+"' as v.HIRE_DATE,'"+rent+"' as v.RENT,case when ("+rent+" - vl.interest_over) > 0 then ("+rent+" - vl.interest_over) else 0 end as v.CORPUS,case when ("+rent+" - vl.interest_over) > 0 then (vl.interest_over) else "+rent+" end as v.INTEREST,vl.penalty_over as v.PENALTY," + "'0' as v.CORPUS_ADJUST,'0' as v.PENALTY_ADJUST,'0' as v.ROLL_BACK,O.COIN as v.COIN from O, jbo.app.tenwa.calc.VI_LC_RENT_PLAN vl where O.id = vl.id" + " and vl.contract_id =:contract_id and vl.plan_date =:plan_date") .setParameter("contract_id", bo.getAttribute("contract_id").toString()) .setParameter("plan_date", bo.getAttribute("plan_date").toString()).getSingleResult(false); if (boi != null) { //插入数据 String sql = "insert into LC_RENT_INCOME (ID, QUOT_ID, CUST_ID, PROJECT_ID, PROJECT_PLAN_NUMBER, CONTRACT_ID, CONTRACT_PLAN_NUMBER, PAYMENT_NUMBER,EBANK_NUMBER,PLAN_ID, PLAN_LIST," + " INTEREST_ADJUST,SETTLE_METHOD,HIRE_LIST,HIRE_DATE, RENT,CORPUS,INTEREST,PENALTY,CORPUS_ADJUST,PENALTY_ADJUST,ROLL_BACK,COIN)" + "values ('"+boi.getAttribute("id")+"','"+boi.getAttribute("QUOT_ID")+"','"+boi.getAttribute("CUST_ID")+"','"+boi.getAttribute("PROJECT_ID")+"','"+boi.getAttribute("PROJECT_PLAN_NUMBER")+"'," + "'"+boi.getAttribute("CONTRACT_ID")+"','"+boi.getAttribute("CONTRACT_PLAN_NUMBER")+"','"+boi.getAttribute("PAYMENT_NUMBER")+"','"+boi.getAttribute("EBANK_NUMBER")+"','"+boi.getAttribute("PLAN_ID")+"'," + "'"+boi.getAttribute("PLAN_LIST")+"','"+boi.getAttribute("INTEREST_ADJUST")+"','"+boi.getAttribute("SETTLE_METHOD")+"','"+boi.getAttribute("HIRE_LIST")+"','"+boi.getAttribute("HIRE_DATE")+"','"+boi.getAttribute("RENT")+"','"+boi.getAttribute("CORPUS")+"'," + "'"+boi.getAttribute("INTEREST")+"','"+boi.getAttribute("PENALTY")+"','"+boi.getAttribute("CORPUS_ADJUST")+"','"+boi.getAttribute("PENALTY_ADJUST")+"','"+boi.getAttribute("ROLL_BACK")+"','"+boi.getAttribute("COIN")+"')"; Sqlca = Transaction.createTransaction(transaction); SqlObject asql = new SqlObject(sql); Sqlca.executeSQL(asql); } transaction.commit(); Sqlca.commit(); } BizObject bco = bc.createQuery("id=:id").setParameter("id", bo.getAttribute("id").toString()).getSingleResult(false); String batch_number = bco.getAttribute("batch_number").toString(); if ("0000".equals(map.get("RET_CODE"))){ if (batch_number.length() == 0) { batch_number += "交易成功流水为:"+req_sn; }else{ batch_number += ";交易成功流水为:"+req_sn; } }else{ if (batch_number.length() == 0) { batch_number += "交易失败流水为:"+req_sn; }else{ batch_number += ";交易失败流水为:"+req_sn; } } //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_NUMBER=:BATCH_NUMBER where O.id=:id") .setParameter("COLLECT_STATUS", "0000".equals(map.get("RET_CODE")) ? "收款成功" : "未收款") .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("BATCH_NUMBER", batch_number) .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); //生成存盘、回盘文件 savaFile(tx, strResp,batch_title,bo); return map; } /** * 手动回笼租金 * @param tx * @param bc * @param bo * @param rent * @return * @throws JBOException * @throws SQLException * @throws Exception */ public Map handcraftsingleCollectMoeny(JBOTransaction tx,BizObjectManager bc,BizObject bo,String rent,String hire_list) throws JBOException, SQLException { String cerrentDate = DateAssistant.getToday();//获取当前日期,格式为:yyyy/MM/dd Map map = new HashMap(); //改为存储过程实现 /*JBOTransaction transaction = JBOFactory.createJBOTransaction(); BizObjectManager bmi = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME,transaction); BizObject boi = bmi.createQuery("select v.replace(v.uuid(),'-','') as v.id,O.QUOT_ID as v.QUOT_ID,O.CUST_ID as v.CUST_ID,O.PROJECT_ID as v.PROJECT_ID,O.PROJECT_PLAN_NUMBER as v.PROJECT_PLAN_NUMBER," + "O.CONTRACT_ID as v.CONTRACT_ID,O.CONTRACT_PLAN_NUMBER as v.CONTRACT_PLAN_NUMBER,O.PAYMENT_NUMBER as v.PAYMENT_NUMBER,'' as v.EBANK_NUMBER,O.id as v.PLAN_ID,O.PLAN_LIST as v.PLAN_LIST," + "'0' as v.INTEREST_ADJUST,'settlemethod6' as v.SETTLE_METHOD,'"+hire_list+"' as v.HIRE_LIST,'"+cerrentDate+"' as v.HIRE_DATE,vl.rent_over as v.RENT,vl.corpus_over as v.CORPUS,vl.interest_over as v.INTEREST,("+rent+"-vl.corpus_over-vl.interest_over) as v.PENALTY," + "'0' as v.CORPUS_ADJUST,'0' as v.PENALTY_ADJUST,'0' as v.ROLL_BACK,O.COIN as v.COIN from O, jbo.app.tenwa.calc.VI_LC_RENT_PLAN vl where O.id = vl.id" + " and vl.contract_id =:contract_id and vl.plan_date =:plan_date") .setParameter("contract_id", bo.getAttribute("contract_id").toString()) .setParameter("plan_date", bo.getAttribute("plan_date").toString()).getSingleResult(false); if (boi != null) { //插入数据 String sql = "insert into LC_RENT_INCOME (ID, QUOT_ID, CUST_ID, PROJECT_ID, PROJECT_PLAN_NUMBER, CONTRACT_ID, CONTRACT_PLAN_NUMBER, PAYMENT_NUMBER,EBANK_NUMBER,PLAN_ID, PLAN_LIST," + " INTEREST_ADJUST,SETTLE_METHOD,HIRE_LIST,HIRE_DATE, RENT,CORPUS,INTEREST,PENALTY,CORPUS_ADJUST,PENALTY_ADJUST,ROLL_BACK,COIN)" + "values ('"+boi.getAttribute("id")+"','"+boi.getAttribute("QUOT_ID")+"','"+boi.getAttribute("CUST_ID")+"','"+boi.getAttribute("PROJECT_ID")+"','"+boi.getAttribute("PROJECT_PLAN_NUMBER")+"'," + "'"+boi.getAttribute("CONTRACT_ID")+"','"+boi.getAttribute("CONTRACT_PLAN_NUMBER")+"','"+boi.getAttribute("PAYMENT_NUMBER")+"','"+boi.getAttribute("EBANK_NUMBER")+"','"+boi.getAttribute("PLAN_ID")+"'," + "'"+boi.getAttribute("PLAN_LIST")+"','"+boi.getAttribute("INTEREST_ADJUST")+"','"+boi.getAttribute("SETTLE_METHOD")+"','"+boi.getAttribute("HIRE_LIST")+"','"+boi.getAttribute("HIRE_DATE")+"','"+boi.getAttribute("RENT")+"','"+boi.getAttribute("CORPUS")+"'," + "'"+boi.getAttribute("INTEREST")+"','"+boi.getAttribute("PENALTY")+"','"+boi.getAttribute("CORPUS_ADJUST")+"','"+boi.getAttribute("PENALTY_ADJUST")+"','"+boi.getAttribute("ROLL_BACK")+"','"+boi.getAttribute("COIN")+"')"; Transaction Sqlca =null; Sqlca = Transaction.createTransaction(transaction); SqlObject asql = new SqlObject(sql); Sqlca.executeSQL(asql); Sqlca.commit(); } transaction.commit();*/ Transaction Sqlca =null; ASResultSet rs = null; try { Sqlca = Transaction.createTransaction(tx); String ln_contract_id = bo.getAttribute("contract_id").toString(); String ln_plan_date = bo.getAttribute("plan_date").toString(); String in_rent = rent; String in_hire_list = hire_list; String in_type = "1"; String SQL="{call proc_insert_hexiao('"+ln_contract_id+"','"+ln_plan_date+"','"+in_rent+"','"+in_hire_list+"','"+in_type+"')} "; SqlObject asql = new SqlObject(SQL); rs = Sqlca.getASResultSet(asql); } catch (Exception e) { e.printStackTrace(); }finally{ if(rs != null) rs.close(); if(Sqlca!=null)Sqlca.commit(); } /*BizObject bco = bc.createQuery("id=:id").setParameter("id", bo.getAttribute("id").toString()).getSingleResult(false); String batch_number = bco.getAttribute("BATCH_NO").toString(); if (batch_number.length() == 0) { batch_number += "手工付款金额:"+rent; }else{ batch_number += ";手工付款金额:"+rent; }*/ //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG where O.id=:id") .setParameter("COLLECT_STATUS", "收款成功") .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); map.put("RET_CODE", "0000"); return map; } /** * 手动回笼租金(经销商代偿) * @param tx * @param bc * @param bo * @param rent * @return * @throws JBOException * @throws SQLException * @throws Exception */ public Map handcraftsingleCollectMoenyDistrbutor(JBOTransaction tx,BizObjectManager bc,BizObject bo,String rent,String hire_list) throws JBOException, SQLException { String cerrentDate = DateAssistant.getToday();//获取当前日期,格式为:yyyy/MM/dd Map map = new HashMap(); //改为存储过程实现 /*JBOTransaction transaction = JBOFactory.createJBOTransaction(); BizObjectManager bmi = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME,transaction); BizObject boi = bmi.createQuery("select v.replace(v.uuid(),'-','') as v.id,O.QUOT_ID as v.QUOT_ID,O.CUST_ID as v.CUST_ID,O.PROJECT_ID as v.PROJECT_ID,O.PROJECT_PLAN_NUMBER as v.PROJECT_PLAN_NUMBER," + "O.CONTRACT_ID as v.CONTRACT_ID,O.CONTRACT_PLAN_NUMBER as v.CONTRACT_PLAN_NUMBER,O.PAYMENT_NUMBER as v.PAYMENT_NUMBER,'' as v.EBANK_NUMBER,O.id as v.PLAN_ID,O.PLAN_LIST as v.PLAN_LIST," + "'0' as v.INTEREST_ADJUST,'settlemethod6' as v.SETTLE_METHOD,'"+hire_list+"' as v.HIRE_LIST,'"+cerrentDate+"' as v.HIRE_DATE,vl.rent_over as v.RENT,vl.corpus_over as v.CORPUS,vl.interest_over as v.INTEREST,("+rent+"-vl.corpus_over-vl.interest_over) as v.PENALTY," + "'0' as v.CORPUS_ADJUST,'0' as v.PENALTY_ADJUST,'0' as v.ROLL_BACK,O.COIN as v.COIN from O, jbo.app.tenwa.calc.VI_LC_RENT_PLAN vl where O.id = vl.id" + " and vl.contract_id =:contract_id and vl.plan_date =:plan_date") .setParameter("contract_id", bo.getAttribute("contract_id").toString()) .setParameter("plan_date", bo.getAttribute("plan_date").toString()).getSingleResult(false); if (boi != null) { //插入数据 String sql = "insert into LC_RENT_INCOME (ID, QUOT_ID, CUST_ID, PROJECT_ID, PROJECT_PLAN_NUMBER, CONTRACT_ID, CONTRACT_PLAN_NUMBER, PAYMENT_NUMBER,EBANK_NUMBER,PLAN_ID, PLAN_LIST," + " INTEREST_ADJUST,SETTLE_METHOD,HIRE_LIST,HIRE_DATE, RENT,CORPUS,INTEREST,PENALTY,CORPUS_ADJUST,PENALTY_ADJUST,ROLL_BACK,COIN)" + "values ('"+boi.getAttribute("id")+"','"+boi.getAttribute("QUOT_ID")+"','"+boi.getAttribute("CUST_ID")+"','"+boi.getAttribute("PROJECT_ID")+"','"+boi.getAttribute("PROJECT_PLAN_NUMBER")+"'," + "'"+boi.getAttribute("CONTRACT_ID")+"','"+boi.getAttribute("CONTRACT_PLAN_NUMBER")+"','"+boi.getAttribute("PAYMENT_NUMBER")+"','"+boi.getAttribute("EBANK_NUMBER")+"','"+boi.getAttribute("PLAN_ID")+"'," + "'"+boi.getAttribute("PLAN_LIST")+"','"+boi.getAttribute("INTEREST_ADJUST")+"','"+boi.getAttribute("SETTLE_METHOD")+"','"+boi.getAttribute("HIRE_LIST")+"','"+boi.getAttribute("HIRE_DATE")+"','"+boi.getAttribute("RENT")+"','"+boi.getAttribute("CORPUS")+"'," + "'"+boi.getAttribute("INTEREST")+"','"+boi.getAttribute("PENALTY")+"','"+boi.getAttribute("CORPUS_ADJUST")+"','"+boi.getAttribute("PENALTY_ADJUST")+"','"+boi.getAttribute("ROLL_BACK")+"','"+boi.getAttribute("COIN")+"')"; Transaction Sqlca =null; Sqlca = Transaction.createTransaction(transaction); SqlObject asql = new SqlObject(sql); Sqlca.executeSQL(asql); Sqlca.commit(); } transaction.commit();*/ Transaction Sqlca =null; ASResultSet rs = null; try { Sqlca = Transaction.createTransaction(tx); String ln_contract_id = bo.getAttribute("contract_id").toString(); String ln_plan_date = bo.getAttribute("plan_date").toString(); String in_rent = rent; String in_hire_list = hire_list; String in_type = "3"; String SQL="{call proc_insert_hexiao('"+ln_contract_id+"','"+ln_plan_date+"','"+in_rent+"','"+in_hire_list+"','"+in_type+"')} "; SqlObject asql = new SqlObject(SQL); rs = Sqlca.getASResultSet(asql); } catch (Exception e) { e.printStackTrace(); }finally{ if(rs != null) rs.close(); if(Sqlca!=null)Sqlca.commit(); } /*BizObject bco = bc.createQuery("id=:id").setParameter("id", bo.getAttribute("id").toString()).getSingleResult(false); String batch_number = bco.getAttribute("BATCH_NO").toString(); if (batch_number.length() == 0) { batch_number += "手工付款金额:"+rent; }else{ batch_number += ";手工付款金额:"+rent; }*/ //更新收付状态 /*bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG where O.id=:id") .setParameter("COLLECT_STATUS", "收款成功") .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("id", bo.getAttribute("id").toString()).executeUpdate();*/ map.put("RET_CODE", "0000"); return map; } /** * 手动收款修改状态,回笼租金 * @param tx * @return * @throws Exception */ public String afterCollectManage(JBOTransaction tx) throws Exception{ int i = 0,j = 0; String[] ids = id.split("@"); StringBuffer parms = new StringBuffer(); for (String str : ids) { if (parms.length()==0) { parms.append("'"+str+"'"); }else{ parms.append(",'"+str+"'"); } } 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); List bolist = bm.createQuery("select distinct O.contract_id,O.id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,O.rent,O.PENALTY from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and ca.acc_type = 'Debit' and O.id in ("+parms.toString()+")").getResultList(false); for (BizObject bo : bolist) { Map map = handcraftsingleCollectMoeny(tx,bc,bo,bo.getAttribute("rent").toString(),"1"); i++; //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG where O.id=:id") .setParameter("COLLECT_STATUS", "手工收款") .setParameter("COLLECT_MSG", "手工扣款") .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); //红冲代偿的数据(由于视图里的rent包含罚息,所以要先减去罚息) String rent = new BigDecimal(bo.getAttribute("rent").toString()).subtract( new BigDecimal(bo.getAttribute("PENALTY").toString())).toString(); this.writeBackDistributor(bo.getAttribute("id").toString(),rent, Sqlca); } return "总共有 "+i+" 笔租金收款成功\n"+j+" 笔租金收款失败"; } /** * 手动收款修改状态,回笼租金,经销商保证金代偿 * @param tx * @return * @throws Exception */ public String afterCollectManageDistributor(JBOTransaction tx) throws Exception{ int i = 0,j = 0; String[] ids = id.split("@"); //String[] penaltyArray = penaltys.split("@"); String COMPENSATORY_CON=null; BizObjectManager bm = JBOFactory.getFactory().getManager(VI_BOND_COMPENSATORY.CLASS_NAME,tx); BizObjectManager bc = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME,tx); BizObjectManager bd = JBOFactory.getFactory().getManager(D_DEPOSITRETURN_INFO.CLASS_NAME,tx); BizObjectManager bdi = JBOFactory.getFactory().getManager(DISTRIBUTOR_INFO.CLASS_NAME,tx); for(int c=0;c map = handcraftsingleCollectMoenyDistrbutor(tx,bc,bom,t_rent,penaltyArray[c]); i++; //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG where O.id=:id") .setParameter("COLLECT_STATUS", "代偿") .setParameter("COLLECT_MSG", "经销商保证金代偿") //.setParameter("PENALTY", penaltyArray[c]) .setParameter("id", bom.getAttribute("id").toString()).executeUpdate(); //在这里插入经销商保证金退回表的数据 BizObject bobdi = bdi.createQuery("distributor_no=:distributor_id").setParameter("distributor_id", distributor_id).getSingleResult(false); BigDecimal sum = new BigDecimal(bobdi.getAttribute("sums") == null ? "0" : bobdi.getAttribute("sums").getString() ); double account_balance = sum.subtract(t_rent).doubleValue(); BizObject bod = bd.newObject(); bod.setAttributeValue("DISTRIBUTOR_ID", distributor_id); bod.setAttributeValue("CAUTION_MONEY", t_rent.toString() ); bod.setAttributeValue("ACCOUNT_BALANCE", account_balance); bod.setAttributeValue("MONEY_TYPE","bondRepay"); bod.setAttributeValue("INPUTTIME",StringFunction.getTodayNow()); bod.setAttributeValue("INPUTUSERID",inputuserid); bod.setAttributeValue("INPUTORGID",inputorgid); bod.setAttributeValue("CONTRACT_ID",bom.getAttribute("contract_id").toString()); 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; } private Double Double(String string) { // TODO Auto-generated method stub return null; } /** * 实时代收 * @param rent 租金 * @param acc_number 银行卡号 * @param account 开户名 * @param bankcode 银行代码 * @param province 银行卡所属省份 * @param req_sn 请求流水号 * @return */ public StringBuffer collectTimely(String rent,String acc_number,String account,String bankcode,String province,String req_sn){ //拼接XML报文 String req = System.currentTimeMillis()+""; StringBuffer strbuff = new StringBuffer(); strbuff.append(""); strbuff.append(""); strbuff.append(""); Info info = new Info(); info.setTRX_CODE(InitCollectConfig.C_TRXCODE); info.setVERSION(InitCollectConfig.C_VERSION); info.setDATA_TYPE(InitCollectConfig.C_DATATYPE); info.setLEVEL(InitCollectConfig.C_LEVEL); info.setUSER_NAME(InitCollectConfig.USERNAME); info.setUSER_PASS(InitCollectConfig.USERPASS); info.setREQ_SN(req_sn); info.setSIGNED_MSG(""); strbuff.append(EntityTransform.toXml(info)); strbuff.append(""); strbuff.append(""); strbuff.append(""); Trans_Sum trans_sum = new Trans_Sum(); trans_sum.setBUSINESS_CODE(InitCollectConfig.BUSSINESSCODE); trans_sum.setMERCHANT_ID(InitCollectConfig.MERCHANTID); trans_sum.setEXPECT_SEND_TIME(""); trans_sum.setTOTAL_ITEM("1"); trans_sum.setTOTAL_SUM(rent); strbuff.append(EntityTransform.toXml(trans_sum)); strbuff.append(""); strbuff.append(""); Trans_Detail trans_detail = new Trans_Detail(); trans_detail.setSN("0001"); trans_detail.setBANK_CODE(bankcode);//银行代码 trans_detail.setACCOUNT_TYPE("00"); trans_detail.setACCOUNT_NO(acc_number); trans_detail.setACCOUNT_NAME(account); trans_detail.setPROVINCE(province);//银行卡所属省份 trans_detail.setACCOUNT_PROP("0"); trans_detail.setAMOUNT(rent); trans_detail.setCURRENCY("CNY"); trans_detail.setRECKON_ACCOUNT(""); strbuff.append(EntityTransform.toXmlByLotCollect(trans_detail)); strbuff.delete(strbuff.lastIndexOf(""), strbuff.length()); strbuff.append(""); strbuff.append(""); strbuff.append(""); return strbuff; } /** * 批量代收-发送请求(定时任务--银联卡扣) * @param tx * @return * @throws Exception */ public String batchCollectManage(JBOTransaction tx) throws Exception{ String[] ids = id.split("@"); 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 bolist = 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 ca.acc_type = 'Debit' and O.id in (" + parms.toString() + ")").getResultList(false); if (bolist.size() > 0) { singleBatchCollectMoeny(tx, bolist); } return "系统正在处理中,请稍后"; } /** * 手动批量代收-发送请求 * @param tx * @return * @throws Exception */ 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(); } return lockHoldStatus ? "发起扣款申请成功!" : "禁止重复发起扣款"; } /** * 检查定时任务是否正在运行 * @param jobName * @return */ public String isRunning(){ try { Scheduler defaultScheduler = StdSchedulerFactory.getDefaultScheduler(); List jobContexts = defaultScheduler.getCurrentlyExecutingJobs(); for (JobExecutionContext context : jobContexts) { System.out.println(context.getTrigger().getJobKey().getName()); if (jobName.equals(context.getTrigger().getJobKey().getName())) { return "using"; } } } catch (SchedulerException e) { e.printStackTrace(); return "using"; } System.out.println("定时任务未在运行中,可以发起!"); return "unUse"; } /** * 获取当日扣款数量是否超过指定次数 * @param jobName * @return */ public String getCollectCount(){ String flag = "false"; try { BizObjectManager bmlcmi = JBOFactory.getFactory().getManager(LC_COLLECT_MANUAL_INFO.CLASS_NAME); String curDate = DateUtil.getSystemTimeByFormat("yyyy/MM/dd"); String[] ids = id.split("@"); for(int i=0;i=2){ return flag; } } } catch (JBOException e) { e.printStackTrace(); return "error"; } return "true"; } /** * 查询批量收款状态 * @return * @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); BizObjectManager bmlri = JBOFactory.getFactory().getManager(LC_RENT_INCOME.CLASS_NAME); BizObjectManager blcmi = JBOFactory.getFactory().getManager(LC_COLLECT_MANUAL_INFO.CLASS_NAME); String[] ids = id.split("@"); StringBuffer parms = new StringBuffer(); for (String str : ids) { if (parms.length()==0) { parms.append("'"+str+"'"); }else{ parms.append(",'"+str+"'"); } } List bolist = bm.createQuery("select distinct O.BATCH_NO,O.BATCH_SN,O.contract_id,O.plan_date,O.id,ca.ACC_NUMBER,ca.ACCOUNT,ca.BANK_NAME,O.rent,O.PENALTY from O , jbo.app.tenwa.customer.CUSTOMER_ACCOUNT ca where O.contract_id=ca.contract_id and ca.acc_type = 'Debit' and O.collect_type='YLcollect' and O.id in ("+parms.toString()+")").getResultList(false); for (BizObject bo : bolist) { String query_sn = bo.getAttribute("BATCH_NO").toString(); String sn = bo.getAttribute("BATCH_SN").toString(); String rent = bo.getAttribute("rent").toString(); String plan_id = bo.getAttribute("id").toString(); //如果此合同是手工发起,则把暂时租金替换为扣款金额(query_sn从lc_rent_plan读取,所以下面batch_no的查询为最新需要回盘的) String collectType = "AutoBuckle"; BizObject bolcmi = blcmi.createQuery("select v.sum(money) as v.moneys from O where O.batch_no=:batch_no and O.plan_id=:plan_id group by plan_id,batch_no").setParameter("batch_no", query_sn).setParameter("plan_id", plan_id).getSingleResult(false); if(bolcmi!=null&&bolcmi.getAttribute("moneys")!=null){ rent = bolcmi.getAttribute("moneys").toString(); bo.setAttributeValue("rent", rent); collectType = "Manual"; } String bank_name = bo.getAttribute("BANK_NAME").toString(); String penalty = bo.getAttribute("PENALTY").toString(); BigDecimal penalty_over = new BigDecimal(penalty); int m = 0; String[] singleRent = null; List codelist = JBOFactory.getFactory().getBizObjectManager(CODE_LIBRARY.CLASS_NAME).createQuery("O.codeno = 'bankType' and O.itemdescribe is not null ").getResultList(false); for (BizObject code : codelist) { String itemname = code.getAttribute("itemname").toString().trim(); double itemdescribe = code.getAttribute("itemdescribe").getDouble(); if (bank_name.indexOf(itemname) !=-1 && Double.parseDouble(rent) > itemdescribe) { BigDecimal mi = new BigDecimal(rent); int singlerent = mi.multiply(new BigDecimal(100)).intValue(); BigDecimal mj = new BigDecimal(itemdescribe); long divide = mj.multiply(new BigDecimal(100)).longValue(); if(divide!=0){ int k = (int) Math.floor(singlerent/divide); int l = (int) Math.ceil(singlerent%divide); for (int j = 0; j < k; j++) { m++; } if (l!=0) { m++; } singleRent = new String[m]; for (int i = 0; i < k; i++) { singleRent[i] = itemdescribe+""; } if(l!=0){ singleRent[m-1] = String.format("%.2f",Double.parseDouble(rent) - k*itemdescribe); } break;//如果匹配到,则跳出循环 } } } String[] snArray = sn.split(","); int n = 0;//拆分租金,扣款成功记录 BizObject bolrp = bc.createQuery("O.id=:id").setParameter("id", bo.getAttribute("id").toString()).getSingleResult(false); String collectStatus = "未收款"; String collectStatusPart = "部分收款"; //防止报空指针 if(bolrp.getAttribute("COLLECT_STATUS")!=null){ //判断如果为空或为null等则跳过(如果是“代偿”则为“代偿”状态) if(bolrp.getAttribute("COLLECT_STATUS").toString().length()>1){ collectStatus = bolrp.getAttribute("COLLECT_STATUS").toString(); collectStatusPart = bolrp.getAttribute("COLLECT_STATUS").toString(); } } for (int i = 1; i <= snArray.length; i++) { log.warn("ShenZhen counteroffer batch_no:"+query_sn+" batch_sn:"+snArray[(i-1)]+" rentid:"+bo.getAttribute("id").toString()); Map map = querySingleBatchCollect(tx, bo, query_sn, snArray[(i-1)]); if(map == null ) { continue; } if (snArray.length == 1) { if (map.containsKey("RET_CODE") && "0000".equals(map.get("RET_CODE"))) { //核销 querysingleCollectMoeny(tx, bc, bo, rent,i+""); //红冲代偿的数据(由于视图里的rent包含罚息,所以要先减去罚息) String redRent = new BigDecimal(rent).subtract(new BigDecimal(penalty)).toString(); //更新收付状态 String COLLECT_STATUS = ""; String COLLECT_MSG = ""; //自动扣款 if("AutoBuckle".equals(collectType)){ COLLECT_STATUS = "批量收款"; COLLECT_MSG = "批量代收,收款成功"; //手动扣款 }else{ String rent_p = bolrp.getAttribute("rent").toString(); BizObject bolri = bmlri.createQuery("select v.sum(rent) as v.rent from O where plan_id=:plan_id group by plan_id").setParameter("plan_id", plan_id).getSingleResult(false); String rent_i = bolri.getAttribute("rent").toString(); if(Double.parseDouble(rent_p)>Double.parseDouble(rent_i)){ COLLECT_STATUS = collectStatusPart; COLLECT_MSG = "手动卡扣,部分收款"; BigDecimal singleRent_over = new BigDecimal(rent); if(singleRent_over.compareTo(penalty_over)==1){ redRent = new BigDecimal(rent).subtract(penalty_over).toString(); }else{ redRent = "NoRedback"; } }else{ COLLECT_STATUS = "批量收款"; COLLECT_MSG = "批量代收,收款成功"; } } if(!"NoRedback".equals(redRent)&&!redRent.isEmpty()){ this.writeBackDistributor(bo.getAttribute("id").toString(),redRent,Sqlca); } bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id") .setParameter("COLLECT_STATUS", COLLECT_STATUS) .setParameter("COLLECT_MSG", COLLECT_MSG) .setParameter("BATCH_STATUS", "complete")//更新批量处理状态-完成 .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); bo.setAttributeValue("COLLECT_STATUS", COLLECT_STATUS); bo.setAttributeValue("COLLECT_MSG", COLLECT_MSG); bo.setAttributeValue("BATCH_STATUS", "complete"); saveBuckle(bo,tx,sn,rent); }else if (map.containsKey("RET_CODE") && ("2007".equals(map.get("RET_CODE")) || "2005".equals(map.get("RET_CODE")) || "2003".equals(map.get("RET_CODE")) || "2001".equals(map.get("RET_CODE")) || "2000".equals(map.get("RET_CODE")))){ //更新银联处理中的反馈信息 bc.createQuery("update O set O.COLLECT_MSG=:COLLECT_MSG where O.id=:id") .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG")); saveBuckle(bo,tx,sn,"0.00"); }else{ //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id") .setParameter("COLLECT_STATUS", collectStatus) .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("BATCH_STATUS", "")//清空批量处理状态 .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); bo.setAttributeValue("COLLECT_STATUS", "未收款"); bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG")); bo.setAttributeValue("BATCH_STATUS", ""); saveBuckle(bo,tx,sn,"0.00"); } }else if (snArray.length > 1) { if (map.containsKey("RET_CODE") && "0000".equals(map.get("RET_CODE"))) { querysingleCollectMoeny(tx, bc, bo, singleRent[i-1],i+""); //红冲代偿的数据(由于视图里的rent包含罚息,所以要先减去罚息) BigDecimal singleRent_over = new BigDecimal(singleRent[i-1]); if(singleRent_over.compareTo(penalty_over)==1){ String redRent = new BigDecimal(singleRent[i-1]).subtract(penalty_over).toString(); penalty_over = new BigDecimal("0"); this.writeBackDistributor(bo.getAttribute("id").toString(),redRent,Sqlca); }else{ penalty_over = penalty_over.subtract(singleRent_over); } n++; if (n == snArray.length) { n = 0;//将扣款成功项 置为 0 //更新收付状态 String rent_p = bolrp.getAttribute("rent").toString(); BizObject bolri = bmlri.createQuery("select v.sum(rent) as v.rent from O where plan_id=:plan_id group by plan_id").setParameter("plan_id", plan_id).getSingleResult(false); String rent_i = bolri.getAttribute("rent").toString(); if("Manual".equals(collectType)&&Double.parseDouble(rent_p)>Double.parseDouble(rent_i)){ bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id") .setParameter("COLLECT_STATUS", collectStatusPart) .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("BATCH_STATUS", "complete")//清空批量处理状态-完成 .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); bo.setAttributeValue("COLLECT_STATUS", "部分收款"); bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG")); bo.setAttributeValue("BATCH_STATUS", "complete"); saveBuckle(bo,tx,sn,singleRent[i-1]); }else{ bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id") .setParameter("COLLECT_STATUS", "批量收款") .setParameter("COLLECT_MSG", "批量代收,收款成功") .setParameter("BATCH_STATUS", "complete")//更新批量处理状态-完成 .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); bo.setAttributeValue("COLLECT_STATUS", "批量收款"); bo.setAttributeValue("COLLECT_MSG", "批量代收,收款成功"); bo.setAttributeValue("BATCH_STATUS", "complete"); //bo.setAttributeValue("rent", bo.getAttribute("rent").toString()); saveBuckle(bo,tx,sn,singleRent[i-1]); } }else{ //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id") .setParameter("COLLECT_STATUS", collectStatusPart) .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("BATCH_STATUS", "complete")//清空批量处理状态-完成 .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); bo.setAttributeValue("COLLECT_STATUS", "部分收款"); bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG")); bo.setAttributeValue("BATCH_STATUS", "complete"); saveBuckle(bo,tx,sn,singleRent[i-1]); } }else if (map.containsKey("RET_CODE") && ("2007".equals(map.get("RET_CODE")) || "2005".equals(map.get("RET_CODE")) || "2003".equals(map.get("RET_CODE")) || "2001".equals(map.get("RET_CODE")) || "2000".equals(map.get("RET_CODE")))){ //更新银联处理中的反馈信息 bc.createQuery("update O set O.COLLECT_MSG=:COLLECT_MSG where O.id=:id") .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG")); saveBuckle(bo,tx,sn,"0.00"); }else{//批量拆分多笔扣款,如果扣款成功条数未 0 ,则更新扣款状态为 未扣款 if (i == snArray.length && n == 0) { //更新收付状态 bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id") .setParameter("COLLECT_STATUS", collectStatus) .setParameter("COLLECT_MSG", map.get("ERR_MSG")) .setParameter("BATCH_STATUS", "")//清空批量处理状态 .setParameter("id", bo.getAttribute("id").toString()).executeUpdate(); bo.setAttributeValue("COLLECT_STATUS", "未收款"); bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG")); bo.setAttributeValue("BATCH_STATUS", ""); saveBuckle(bo,tx,sn,"0.00"); } } } if (i == snArray.length) {//循环结束,将n置为 0 n = 0; } } } return "success"; } public void saveBuckle(BizObject bo,JBOTransaction tx,String batch_sn,String rent) throws JBOException{ BizObjectManager blog = JBOFactory.getBizObjectManager(LB_BUCKLE_LOG.CLASS_NAME, tx); BizObject blbo = blog.newObject(); String collect = bo.getAttribute("COLLECT_STATUS").getString(); if(collect!=""){ blbo.setAttributeValue("COLLECT_STATUS", bo.getAttribute("COLLECT_STATUS").getString()); blbo.setAttributeValue("COLLECT_MSG", bo.getAttribute("COLLECT_MSG").getString()); blbo.setAttributeValue("BATCH_STATUS", bo.getAttribute("BATCH_STATUS").getString()); } DecimalFormat format = new DecimalFormat("0.00"); rent = format.format(new BigDecimal(rent )); blbo.setAttributeValue(LB_BUCKLE_LOG.BATCH_SN, batch_sn); blbo.setAttributeValue(LB_BUCKLE_LOG.BATCH_NO, bo.getAttribute("BATCH_NO").getString()); blbo.setAttributeValue(LB_BUCKLE_LOG.RENT_ID, bo.getAttribute("ID").getString()); blbo.setAttributeValue(LB_BUCKLE_LOG.cut_money,rent); blbo.setAttributeValue(LB_BUCKLE_LOG.inputuserid, "syetem"); blbo.setAttributeValue(LB_BUCKLE_LOG.inputorgid, "system"); blbo.setAttributeValue(LB_BUCKLE_LOG.inputtime, StringFunction.getTodayNow()); blbo.setAttributeValue(LB_BUCKLE_LOG.updatetime, System.currentTimeMillis()); blbo.setAttributeValue(LB_BUCKLE_LOG.deduction_type, "银联扣款"); blog.saveObject(blbo); } /** * 批量代收查询接口 * @param tx * @param bo * @param list * @return * @throws Exception */ public Map querySingleBatchCollect(JBOTransaction tx,BizObject bo,String query_sn,String sn) throws Exception{ CollectAuditProcess cp = new CollectAuditProcess(); //创建文件名称 String currentDateTime = DateAssistant.getTodayNow(); String currentYear = currentDateTime.substring(0,4); String month = currentDateTime.substring(5,7); String day = currentDateTime.substring(8,10); String merchantNumber = InitCollectConfig.MERCHANTID; String flag = InitCollectConfig.FLAG; String version = InitCollectConfig.C_VERSION; String date = currentYear+month+day;//提交日期 String batch_title = ""; int i = 0,j = 0; //创建文件路径 String rootDir = this.fileSavePath; File file = new File(rootDir + File.separator + currentYear + File.separator + month + File.separator + day); System.out.println(file.getAbsolutePath()); if(!file.exists()){//目录不存在则直接创建 file.mkdirs(); } String req_sn = System.currentTimeMillis()+"";//当日批次号 batch_title = merchantNumber+"_"+flag+version+date+"_"+req_sn; StringBuffer strbuff = queryBatchXML(req_sn, query_sn,sn); // queryBatchXML(req_sn, query_sn, sn); //响应报文 String strResp = cp.CollectAuditPayReq(strbuff,file.getAbsolutePath(), batch_title); if(strResp==null || strResp.isEmpty()) { return null; } Map map = getRetAndCode(strResp); //生成存盘、回盘文件 savaFile(tx, strResp,batch_title,bo); return map; } /** * 批量查询接口--回笼租金 * @param tx * @param bc * @param bo * @param rent * @return * @throws Exception */ public Map querysingleCollectMoeny(JBOTransaction tx,BizObjectManager bc,BizObject bo,String rent,String hire_list) throws Exception{ String cerrentDate = DateAssistant.getToday(); Map map = new HashMap(); //改为存储过程实现 /*JBOTransaction transaction = JBOFactory.createJBOTransaction(); BizObjectManager bmi = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME,transaction); BizObject boi = bmi.createQuery("select v.replace(v.uuid(),'-','') as v.id,O.QUOT_ID as v.QUOT_ID,O.CUST_ID as v.CUST_ID,O.PROJECT_ID as v.PROJECT_ID,O.PROJECT_PLAN_NUMBER as v.PROJECT_PLAN_NUMBER," + "O.CONTRACT_ID as v.CONTRACT_ID,O.CONTRACT_PLAN_NUMBER as v.CONTRACT_PLAN_NUMBER,O.PAYMENT_NUMBER as v.PAYMENT_NUMBER,'' as v.EBANK_NUMBER,O.id as v.PLAN_ID,O.PLAN_LIST as v.PLAN_LIST," + "'0' as v.INTEREST_ADJUST,'settlemethod6' as v.SETTLE_METHOD,'"+hire_list+"' as v.HIRE_LIST,'"+cerrentDate+"' as v.HIRE_DATE,vl.rent_over as v.RENT,vl.corpus_over as v.CORPUS,vl.interest_over as v.INTEREST,("+rent+"-vl.rent_over) as v.PENALTY," + "'0' as v.CORPUS_ADJUST,'0' as v.PENALTY_ADJUST,'0' as v.ROLL_BACK,O.COIN as v.COIN from O, jbo.app.tenwa.calc.VI_LC_RENT_PLAN vl where O.id = vl.id" + " and vl.contract_id =:contract_id and vl.plan_date =:plan_date") .setParameter("contract_id", bo.getAttribute("contract_id").toString()) .setParameter("plan_date", bo.getAttribute("plan_date").toString()).getSingleResult(false); if (boi != null) { //插入数据 String sql = "insert into LC_RENT_INCOME (ID, QUOT_ID, CUST_ID, PROJECT_ID, PROJECT_PLAN_NUMBER, CONTRACT_ID, CONTRACT_PLAN_NUMBER, PAYMENT_NUMBER,EBANK_NUMBER,PLAN_ID, PLAN_LIST," + " INTEREST_ADJUST,SETTLE_METHOD,HIRE_LIST,HIRE_DATE, RENT,CORPUS,INTEREST,PENALTY,CORPUS_ADJUST,PENALTY_ADJUST,ROLL_BACK,COIN)" + "values ('"+boi.getAttribute("id")+"','"+boi.getAttribute("QUOT_ID")+"','"+boi.getAttribute("CUST_ID")+"','"+boi.getAttribute("PROJECT_ID")+"','"+boi.getAttribute("PROJECT_PLAN_NUMBER")+"'," + "'"+boi.getAttribute("CONTRACT_ID")+"','"+boi.getAttribute("CONTRACT_PLAN_NUMBER")+"','"+boi.getAttribute("PAYMENT_NUMBER")+"','"+boi.getAttribute("EBANK_NUMBER")+"','"+boi.getAttribute("PLAN_ID")+"'," + "'"+boi.getAttribute("PLAN_LIST")+"','"+boi.getAttribute("INTEREST_ADJUST")+"','"+boi.getAttribute("SETTLE_METHOD")+"','"+boi.getAttribute("HIRE_LIST")+"','"+boi.getAttribute("HIRE_DATE")+"','"+boi.getAttribute("RENT")+"','"+boi.getAttribute("CORPUS")+"'," + "'"+boi.getAttribute("INTEREST")+"','"+boi.getAttribute("PENALTY")+"','"+boi.getAttribute("CORPUS_ADJUST")+"','"+boi.getAttribute("PENALTY_ADJUST")+"','"+boi.getAttribute("ROLL_BACK")+"','"+boi.getAttribute("COIN")+"')"; Transaction Sqlca =null; Sqlca = Transaction.createTransaction(transaction); SqlObject asql = new SqlObject(sql); Sqlca.executeSQL(asql); } transaction.commit();*/ Transaction Sqlca =null; ASResultSet rs = null; try { Sqlca = Transaction.createTransaction(tx); String ln_contract_id = bo.getAttribute("contract_id").toString(); String ln_plan_date = bo.getAttribute("plan_date").toString(); String in_rent = rent; String in_hire_list = hire_list; String in_type = "2"; String SQL="{call proc_insert_hexiao('"+ln_contract_id+"','"+ln_plan_date+"','"+in_rent+"','"+in_hire_list+"','"+in_type+"')} "; SqlObject asql = new SqlObject(SQL); rs = Sqlca.getASResultSet(asql); } catch (Exception e) { e.printStackTrace(); }finally{ if(rs != null) rs.close(); if(Sqlca!=null)Sqlca.commit(); } return map; } /** * 批量查询接口报文-xml * @param req_sn 请求流水号 * @param query_sn 查询流水号 * @param sn 查询明细项 * @return */ public StringBuffer queryBatchXML(String req_sn,String query_sn,String sn){ StringBuffer strbuff = new StringBuffer(); strbuff.append(""); strbuff.append(""); strbuff.append(""); Info info = new Info(); info.setTRX_CODE("200001"); info.setVERSION(InitCollectConfig.C_VERSION); info.setDATA_TYPE(InitCollectConfig.C_DATATYPE); info.setREQ_SN(req_sn); info.setUSER_NAME(InitCollectConfig.USERNAME); info.setUSER_PASS(InitCollectConfig.USERPASS); info.setSIGNED_MSG(""); strbuff.append(EntityTransform.toXml(info)); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(query_sn);//要查询的交易流水 strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(sn);//交易明细号 strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); return strbuff; } /** * 批量代收-发送请求(报文组装,调用银联100001接口,更新租金计划batch_status状态) * @param tx * @param bc * @param bo * @param rent * @return * @throws Exception */ public Map singleBatchCollectMoeny(JBOTransaction tx,List list) throws Exception{ CollectAuditProcess cp = new CollectAuditProcess(); //创建文件名称 String currentDateTime = DateAssistant.getTodayNow(); String currentYear = currentDateTime.substring(0,4); String month = currentDateTime.substring(5,7); String day = currentDateTime.substring(8,10); String merchantNumber = InitCollectConfig.MERCHANTID;//银联商户号 String flag = InitCollectConfig.FLAG;//银联接口--代收标识 String version = InitCollectConfig.C_VERSION;//接口版本号 String date = currentYear+month+day;//提交日期 //创建卡扣文件路径 File file = new File( this.fileSavePath+ File.separator + currentYear + File.separator + month + File.separator + day); //目录不存在则直接创建 if(!file.exists()) file.mkdirs(); String req_sn = System.currentTimeMillis()+"";//卡扣批次号 REQ_SN //卡扣文件名称 String batch_title = merchantNumber+"_"+flag+version+date+"_"+req_sn; //卡扣报文 StringBuffer strbuff = collectBatch(req_sn,list); //接口调用,返回响应报文 String strResp = ""; try { strResp = cp.CollectAuditPayReq(strbuff,file.getAbsolutePath(), batch_title); }catch (Exception e){ JBOTransaction jboTransaction = null; try { String rentIds = getRentIds(list); jboTransaction = JBOFactory.createJBOTransaction(); Transaction.createTransaction(jboTransaction).executeSQL("update lc_rent_plan set batch_sn=null where id in ('" + rentIds + "')"); jboTransaction.commit(); }catch (Exception e1){ if (jboTransaction != null) jboTransaction.rollback(); e1.printStackTrace(); } throw new RuntimeException("深圳银联接口调用异常:", e); } //生成存盘、回盘文件(批量卡扣,日志表LB_INTFACE_FILE_RECORD.RELA_ID 存储卡扣批次号) BizObject bo = new BizObject("jbo.app.tenwa.calc.LC_RENT_PLAN"); bo.setAttributeValue("id",req_sn); savaFile(tx, strResp,batch_title,bo); //解析银联响应报文 Map map = getRetAndCodeByBatch(strResp); if (map.containsKey("RET_CODE")) {//清空批量代收状态 String updateIdsStr = getRentIds(list); //清空批量处理状态 BizObjectManager bm = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME); bm.createQuery("update O set O.BATCH_STATUS=null,O.BATCH_NO=:BATCH_NO,O.BATCH_SN=null where O.id in ('" + updateIdsStr + "')") .setParameter("BATCH_NO", req_sn).executeUpdate(); }else{ int m = 0;//统计发送的代收的批数 for (int n = 1; n <= map.size(); n++) { if (map.containsKey("SN"+n)) { m++; } } for (int k = 1; k <= m; k++) { JBOTransaction trans = null; try { trans = JBOFactory.createJBOTransaction(); Transaction sqlCa = Transaction.createTransaction(trans); SqlObject sqlObject = new SqlObject("update lc_rent_plan lrp join lb_union_middle lum on lrp.id = lum.rent_id set lrp.batch_status = 'process' " + " where lum.batch_no =:batchNo and lum.batch_sn =:batchSn") .setParameter("batchNo",map.get("REQ_SN")).setParameter("batchSn", map.get("SN" + k)); sqlCa.executeSQL(sqlObject); } catch (Exception e) { log.error("ShenZhenBuckle process status update exception ",e); if (trans != null) trans.rollback(); } finally { log.warn("ShenZhenBuckle process status update -- batch_no:"+map.get("REQ_SN")+" batch_sn:"+map.get("SN" + k)); if (trans != null) trans.commit(); } } } return map; } /** * 获取租金计划ids * @param list * @return * @throws JBOException */ private String getRentIds(List list) throws JBOException { StringBuilder updateIds = new StringBuilder(); for (BizObject biz : list) { updateIds.append(biz.getAttribute("id").toString()).append("','"); } return updateIds.delete(updateIds.length() - 3, updateIds.length()).toString(); } /** * 批量代收--报文拼接 * @param rent * @param acc_number * @param account * @param req_sn * @return * @throws JBOException */ public StringBuffer collectBatch(String req_sn,List list) throws JBOException{ //拼接XML报文 StringBuffer strbuff = new StringBuffer(); strbuff.append(""); strbuff.append(""); strbuff.append(""); Info info = new Info(); info.setTRX_CODE(InitCollectConfig.BATCH_TRXCODE); info.setVERSION(InitCollectConfig.C_VERSION); info.setDATA_TYPE(InitCollectConfig.C_DATATYPE); info.setLEVEL(InitCollectConfig.C_LEVEL); info.setUSER_NAME(InitCollectConfig.USERNAME); info.setUSER_PASS(InitCollectConfig.USERPASS); info.setREQ_SN(req_sn); info.setSIGNED_MSG(""); strbuff.append(EntityTransform.toXml(info)); strbuff.append(""); strbuff.append(""); strbuff.append(""); BigDecimal mutly = new BigDecimal("0");//卡扣总金额 int i = 0; //查询银行限额 itemname<银行名称> itemdescribe<限额设置> List codelist = JBOFactory.getFactory().getBizObjectManager(CODE_LIBRARY.CLASS_NAME).createQuery("O.codeno = 'bankType' and O.itemdescribe is not null ").getResultList(false); //计算卡扣总金额,卡扣总数量 for (BizObject bo : list) { String single = bo.getAttribute("rent").toString(); BigDecimal m = new BigDecimal(single); mutly = mutly.add(m); String bank_name = bo.getAttribute("BANK_NAME").toString(); BigDecimal itemdescribe = new BigDecimal("0"); boolean flag = false; for (BizObject code : codelist) { String itemnameTmp = code.getAttribute("itemname").toString().trim(); String itemdescribeTmp1 = code.getAttribute("itemdescribe").toString(); if (bank_name.indexOf(itemnameTmp) != -1 && itemdescribeTmp1 != null && !"".equals(itemdescribeTmp1)) { itemdescribe = new BigDecimal(itemdescribeTmp1).setScale(2, BigDecimal.ROUND_HALF_UP); flag = true; break; } } if (flag == true && m.compareTo(itemdescribe) == 1) { BigDecimal mi = new BigDecimal(bo.getAttribute("rent").toString()); int singlerent = mi.multiply(new BigDecimal(100)).intValue(); int singleitem = itemdescribe.multiply(new BigDecimal(100)).intValue(); int k = (int) Math.floor(singlerent/singleitem); int l = (int) Math.ceil(singlerent%singleitem); for (int j = 0; j < k; j++) { i++; } if (l!=0) { i++; } }else{ i++; } } String totalSum = String.valueOf(mutly.multiply(new BigDecimal(100)).longValue()); String totalItem = String.valueOf(i); Trans_Sum trans_sum = new Trans_Sum(); trans_sum.setBUSINESS_CODE(InitCollectConfig.BUSSINESSCODE); trans_sum.setMERCHANT_ID(InitCollectConfig.MERCHANTID); trans_sum.setEXPECT_SEND_TIME(""); trans_sum.setTOTAL_ITEM(totalItem); trans_sum.setTOTAL_SUM(totalSum); strbuff.append(EntityTransform.toXml(trans_sum)); strbuff.append(""); strbuff.append(""); int item = 0; for (BizObject biz : list) { BigDecimal m = new BigDecimal(biz.getAttribute("rent").toString()); String rent = String.valueOf(m.multiply(new BigDecimal(100)).longValue()); String acc_number = biz.getAttribute("acc_number").toString(); String account = biz.getAttribute("account").toString(); String bank_name = biz.getAttribute("BANK_NAME").toString(); String planId = biz.getAttribute("id").toString(); BigDecimal itemdescribe = new BigDecimal("0"); boolean flag = false; for (BizObject code : codelist) { String itemnameTmp = code.getAttribute("itemname").toString().trim(); String itemdescribeTmp1 = code.getAttribute("itemdescribe").toString(); if (bank_name.indexOf(itemnameTmp) != -1 && itemdescribeTmp1 != null && !"".equals(itemdescribeTmp1)) { itemdescribe = new BigDecimal(itemdescribeTmp1).setScale(2, BigDecimal.ROUND_HALF_UP); flag = true; break; } } if (flag == true && m.compareTo(itemdescribe) == 1) { BigDecimal mi = new BigDecimal(biz.getAttribute("rent").toString()); int singlerent = mi.multiply(new BigDecimal(100)).intValue(); int singleitem = itemdescribe.multiply(new BigDecimal(100)).intValue(); int k = (int) Math.floor(singlerent/singleitem); int l = (int) Math.ceil(singlerent%singleitem); for (int k2 = 1; k2 <= k; k2++) { Trans_Detail trans_detail = new Trans_Detail(); String sn = ""; if (item >= 9&&item<99) { sn = "000"+ (++item); }else if(item >= 99){ sn = "00"+ (++item); }else{ sn = "0000"+ (++item); } rentPlanHandle(planId,req_sn,sn,biz,k2,String.valueOf(singleitem));//追加批量处理状态 trans_detail.setSN(sn); trans_detail.setACCOUNT_TYPE(""); trans_detail.setACCOUNT_NO(acc_number); trans_detail.setACCOUNT_NAME(account); trans_detail.setACCOUNT_PROP("0"); trans_detail.setAMOUNT(String.valueOf(singleitem)); trans_detail.setCURRENCY("CNY"); trans_detail.setRECKON_ACCOUNT(""); strbuff.append(EntityTransform.toXmlByBatchCollect(trans_detail)); } if (l != 0) { BigDecimal mj = mi.subtract(itemdescribe.multiply(new BigDecimal(k))).setScale(2, BigDecimal.ROUND_HALF_UP); String singlerent0 = String.valueOf(mj.multiply(new BigDecimal(100)).longValue()); Trans_Detail trans_detail = new Trans_Detail(); String sn = ""; if (item >= 9&&item<99) { sn = "000"+ (++item); }else if(item >= 99){ sn = "00"+ (++item); }else{ sn = "0000"+ (++item); } rentPlanHandle(planId,req_sn,sn,biz,99,singlerent0);//追加批量处理状态 trans_detail.setSN(sn); trans_detail.setACCOUNT_TYPE(""); trans_detail.setACCOUNT_NO(acc_number); trans_detail.setACCOUNT_NAME(account); trans_detail.setACCOUNT_PROP("0"); trans_detail.setAMOUNT(singlerent0); trans_detail.setCURRENCY("CNY"); trans_detail.setRECKON_ACCOUNT(""); strbuff.append(EntityTransform.toXmlByBatchCollect(trans_detail)); } }else{ Trans_Detail trans_detail = new Trans_Detail(); String sn = ""; if (item >= 9&&item<99) { sn = "000"+ (++item); }else if(item >= 99){ sn = "00"+ (++item); }else{ sn = "0000"+ (++item); } rentPlanHandle(planId,req_sn,sn,biz,1,rent);//追加批量处理状态 trans_detail.setSN(sn); trans_detail.setACCOUNT_TYPE(""); trans_detail.setACCOUNT_NO(acc_number); trans_detail.setACCOUNT_NAME(account); trans_detail.setACCOUNT_PROP("0"); trans_detail.setAMOUNT(rent); trans_detail.setCURRENCY("CNY"); trans_detail.setRECKON_ACCOUNT(""); strbuff.append(EntityTransform.toXmlByBatchCollect(trans_detail)); } } strbuff.delete(strbuff.lastIndexOf(""), strbuff.length()); strbuff.append(""); strbuff.append(""); strbuff.append(""); collectStyle=null; return strbuff; } /** * 更新租金计划表 batch_no batch_sn ,手工卡扣的,添加手工卡扣记录 * @param planId 租金计划id * @param req_sn 批次号 * @param sn 序号 * @param biz * @param k2 k2==1 手工卡扣插入新数据,其余更新手工卡扣表数据 * @throws Exception */ private void rentPlanHandle(String planId,String req_sn,String sn,BizObject biz,int k2,String amount) throws JBOException{ //追加批量处理状态 JBOTransaction trans = null; try{ trans = JBOFactory.createJBOTransaction(); Transaction transaction = Transaction.createTransaction(trans); BizObjectManager bm = JBOFactory.getFactory().getManager(LC_RENT_PLAN.CLASS_NAME); BizObject bo = bm.createQuery("O.id=:id").setParameter("id", planId).getSingleResult(false); String itemsn0 = ""; if (bo !=null) { String itemsn = bo.getAttribute("batch_sn").toString(); if (itemsn.length() == 0) { itemsn0 += sn; }else{ itemsn0 += itemsn+","+sn; } } //更新租金批次号 序号 bm.createQuery("update O set O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO=:BATCH_NO,O.BATCH_SN=:BATCH_SN where O.id=:id") .setParameter("BATCH_STATUS", "")//处理状态-为空 .setParameter("BATCH_NO", req_sn) .setParameter("BATCH_SN", itemsn0) .setParameter("id", planId).executeUpdate(); //记录中间表 lb_union_middle SqlObject sqlObject = new SqlObject("insert into lb_union_middle (id,batch_no,batch_sn,rent_id,amount,input_time) values (replace(uuid(),'-',''),:batchNo,:batchSn,:rentId,:amount,SYSDATE()) ") .setParameter("batchNo", req_sn).setParameter("batchSn", sn) .setParameter("rentId", planId).setParameter("amount",amount); transaction.executeSQL(sqlObject); //手动卡扣添加到手动表 if("manual".equals(collectStyle)){ BizObjectManager bmlcmi = JBOFactory.getFactory().getManager(LC_COLLECT_MANUAL_INFO.CLASS_NAME,trans); if(k2==1){ BizObject bolmci = bmlcmi.newObject(); bolmci.setAttributeValue("contract_id",biz.getAttribute("contract_id").toString()); bolmci.setAttributeValue("plan_id",planId); bolmci.setAttributeValue("BATCH_NO",req_sn); bolmci.setAttributeValue("BATCH_SN",itemsn0); bolmci.setAttributeValue("money",biz.getAttribute("rent").toString()); bolmci.setAttributeValue("hire_date",DateUtil.getSystemTimeByFormat("yyyy/MM/dd")); bmlcmi.saveObject(bolmci); }else{ bmlcmi.createQuery("update O set O.BATCH_SN=:BATCH_SN where O.plan_id=:id and O.BATCH_NO=:BATCH_NO") .setParameter("BATCH_SN", itemsn0) .setParameter("BATCH_NO", req_sn) .setParameter("id", planId).executeUpdate(); } } trans.commit(); }catch (Exception e){ if (trans != null) trans.rollback(); throw new JBOException(e.getMessage()); } } /** * 保存存盘、回盘文件 * @param tx * @param strResp * @param batch_title * @throws Exception */ public void savaFile(JBOTransaction tx,String strResp,String batch_title,BizObject bo) 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 rootDir = this.fileSavePath; File file = new File(rootDir + File.separator + currentYear + File.separator + month + File.separator + day); //目录不存在则直接创建 if(!file.exists())file.mkdirs(); //保存存盘文件 BizObjectManager bm = JBOFactory.getFactory().getManager(LB_INTFACE_FILE_RECORD.CLASS_NAME); BizObject send = bm.newObject(); send.setAttributeValue("filepath", (file.getAbsoluteFile().toString().substring(rootDir.length())+"/"+batch_title+".txt").replace("\\", "/")); send.setAttributeValue("fullpath", (file.getAbsoluteFile().toString()+"/"+batch_title+".txt").replace("\\", "/")); send.setAttributeValue("filename", batch_title+".txt"); send.setAttributeValue("FILE_TYPE", "S"); send.setAttributeValue("RELA_ID", bo.getAttribute("id")); send.setAttributeValue("inputuserid", this.inputuserid); send.setAttributeValue("inputorgid", this.inputorgid); send.setAttributeValue("inputtime", currentDateTime); bm.saveObject(send); //筛选响应信息 Map map = getRetAndCode(strResp); //保存回盘文件 BizObject reply = bm.newObject(); reply.setAttributeValue("filepath", (file.getAbsoluteFile().toString().substring(rootDir.length())+"/"+batch_title+".rnt").replace("\\", "/")); reply.setAttributeValue("fullpath", (file.getAbsoluteFile().toString()+"/"+batch_title+".rnt").replace("\\", "/")); reply.setAttributeValue("filename", batch_title+".rnt"); reply.setAttributeValue("feedback_code", map.get("RET_CODE")); reply.setAttributeValue("feedback_message", map.get("ERR_MSG")); reply.setAttributeValue("FILE_TYPE", "B"); reply.setAttributeValue("RELA_ID", bo.getAttribute("id")); reply.setAttributeValue("inputuserid", this.inputuserid); reply.setAttributeValue("inputorgid", this.inputorgid); reply.setAttributeValue("inputtime", currentDateTime); bm.saveObject(reply); } /** * 实时代收,响应文件处理 * @param strXML * @return */ public Map getRetAndCode(String strXML){ Map map = new HashMap(); Map res = new HashMap(); Pattern pm = Pattern.compile("(?<=)([\\S\\s]*?)(?=)"); Matcher mm = pm.matcher(strXML); int i = 0; while (mm.find()) { map.put("RET_CODE"+i++, mm.group()); } Pattern pc = Pattern.compile("(?<=)([\\S\\s]*?)(?=)"); Matcher mc = pc.matcher(strXML); int j = 0; while (mc.find()) { map.put("ERR_MSG"+j++, mc.group()); } if (map.containsKey("RET_CODE0") && "0000".equals(map.get("RET_CODE0"))) { if (map.containsKey("RET_CODE1") && "0000".equals(map.get("RET_CODE1"))) { res.put("RET_CODE", map.get("RET_CODE1")); res.put("ERR_MSG", map.get("ERR_MSG1")); }else{ res.put("RET_CODE", map.get("RET_CODE1")); res.put("ERR_MSG", map.get("ERR_MSG1")); } }else{ res.put("RET_CODE", map.get("RET_CODE0")); res.put("ERR_MSG", map.get("ERR_MSG0")); } return res; } /** * 批量代收-返回报文处理 * @param strXML * @return */ public Map getRetAndCodeByBatch(String strXML){ Map map = new HashMap(); Map res = new HashMap(); int iStart = strXML.indexOf(""); if (iStart != -1) { int end = strXML.indexOf(""); String errMsg = strXML.substring(iStart+9, end); map.put("ERR_MSG", errMsg); } int kStart = strXML.indexOf(""); if (kStart != -1) { int end = strXML.indexOf(""); String reqSn = strXML.substring(kStart+8, end); map.put("REQ_SN", reqSn); } Pattern pm = Pattern.compile("(?<=)([\\S\\s]*?)(?=)"); Matcher mm = pm.matcher(strXML); int i = 0; while (mm.find()) { map.put("RET_CODE"+i++, mm.group()); } Pattern pc = Pattern.compile("(?<=)([\\S\\s]*?)(?=)"); Matcher mc = pc.matcher(strXML); int j = 1; while (mc.find()) { map.put("SN"+j++, mc.group()); } if (map.containsKey("RET_CODE0") && "0000".equals(map.get("RET_CODE0"))) { res.putAll(map); res.remove("RET_CODE0"); res.remove("ERR_MSG"); }else{ res.put("RET_CODE", map.get("RET_CODE0")); res.put("ERR_MSG", map.get("ERR_MSG0")); } return res; } public Map getMsgAndCode(String strXML){ Map map = new HashMap(); int iStart = strXML.indexOf(""); if (iStart != -1) { int end = strXML.indexOf(""); String strMsg = strXML.substring(iStart+9, end); map.put("ERR_MSG", strMsg); } int jStart = strXML.indexOf(""); if (jStart != -1) { int end = strXML.indexOf(""); String strMsg = strXML.substring(jStart+10, end); map.put("RET_CODE", strMsg); } return map; } /** * 获取响应码 * @param strXML * @return */ public Map getInfoAndStatus(String strXML){ Map map = new HashMap(); Map res = new HashMap(); int jStart = strXML.indexOf(""); if (jStart != -1) { int end = strXML.indexOf(""); String retCode = strXML.substring(jStart+10, end); map.put("RET_CODE", retCode); } int iStart = strXML.indexOf(""); if (iStart != -1) { int end = strXML.indexOf(""); String errMsg = strXML.substring(iStart+9, end); map.put("ERR_MSG", errMsg); } int kStart = strXML.indexOf(""); if (kStart != -1) { int end = strXML.indexOf(""); String errMsg = strXML.substring(kStart+14, end); map.put("TRANS_STATUS", errMsg); } int lStart = strXML.indexOf(""); if (lStart != -1) { int end = strXML.indexOf(""); String retCode = strXML.substring(lStart+12, end); map.put("TRANS_INFO", retCode); } if (map.containsKey("RET_CODE") && map.get("RET_CODE").equals("0000")) { if (map.containsKey("TRANS_STATUS") && map.get("TRANS_STATUS").equals("0000")) { res.put("RET_CODE", map.get("TRANS_STATUS")); res.put("ERR_MSG", map.get("TRANS_INFO")); }else{ res.put("RET_CODE", map.get("TRANS_STATUS")); res.put("ERR_MSG", map.get("TRANS_INFO")); } }else{ res.put("RET_CODE", map.get("RET_CODE")); res.put("ERR_MSG", map.get("ERR_MSG")); } return res; } //验证银行卡四要素 public Map vitfyCollectManage(Map map) throws CryptException{ CollectAuditProcess cp = new CollectAuditProcess(); String currentDateTime = DateAssistant.getTodayNow(); String currenttime=currentDateTime.replaceAll("/", ""); currenttime=currenttime.replaceAll(":", ""); //发送时间 currenttime=currenttime.replaceAll(" ", ""); //验证银行卡二、三、四要素 //流水号 String req = System.currentTimeMillis()+""; StringBuffer strbuff = new StringBuffer(); strbuff.append(""); strbuff.append(""); strbuff.append(""); Info info = new Info(); /*info.setTRX_CODE("100039"); info.setVERSION("03"); info.setDATA_TYPE("2"); info.setLEVEL("5"); info.setUSER_NAME("00019140020764901"); info.setUSER_PASS("TPSHauto123.");*/ info.setTRX_CODE(InitCollectConfig.B_TRXCODE); info.setVERSION(InitCollectConfig.B_VERSION); info.setDATA_TYPE(InitCollectConfig.B_DATATYPE); info.setLEVEL(InitCollectConfig.B_LEVEL); info.setUSER_NAME(InitCollectConfig.USERNAME); info.setUSER_PASS(InitCollectConfig.USERPASS); info.setREQ_SN(req); info.setSIGNED_MSG(""); strbuff.append(EntityTransform.toXml(info)); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(currenttime);//请求时间 strbuff.append(""); strbuff.append(""); strbuff.append(InitCollectConfig.MERCHANTID);//商户号 /*strbuff.append("000191400207649");//商户号 */ strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(map.get("ACCOUNT_NO"));//卡号 strbuff.append(""); strbuff.append(""); strbuff.append(map.get("ACCOUNT_NAME"));//户名 strbuff.append(""); //判断是否存在 if (map.containsKey("ID_TYPE")) { strbuff.append(""); strbuff.append(map.get("ID_TYPE"));//开户证件类型 strbuff.append(""); } if (map.containsKey("ID")) { strbuff.append(""); strbuff.append(map.get("ID"));//证件号 strbuff.append(""); } if (map.containsKey("TEL")) { strbuff.append(""); strbuff.append(map.get("TEL"));//手机号 strbuff.append(""); } strbuff.append(""); strbuff.append("");//贷记卡有效期 strbuff.append(""); strbuff.append(""); strbuff.append("");//贷记卡CV2 strbuff.append(""); strbuff.append(""); strbuff.append(""); strbuff.append(""); String strResp = cp.CollectAuditVerifyReq(strbuff); return getInfoAndStatus(strResp); } public String getInputuserid() { return inputuserid; } public void setInputuserid(String inputuserid) { this.inputuserid = inputuserid; } public String getInputorgid() { return inputorgid; } public void setInputorgid(String inputorgid) { this.inputorgid = inputorgid; } public String getFileSavePath() { return fileSavePath; } public void setFileSavePath(String fileSavePath) { this.fileSavePath = fileSavePath; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getClearDate() { return clearDate; } public void setClearDate(String clearDate) { this.clearDate = clearDate; } public String getDistributor_id() { return distributor_id; } public void setDistributor_id(String distributor_id) { this.distributor_id = distributor_id; } public String getPenaltys() { return penaltys; } public void setPenaltys(String penaltys) { this.penaltys = penaltys; } public String getCollectStyle() { return collectStyle; } public void setCollectStyle(String collectStyle) { this.collectStyle = collectStyle; } public String getJobName() { return jobName; } public void setJobName(String jobName) { this.jobName = jobName; } public String getOperateFrom() { return operateFrom; } public void setOperateFrom(String operateFrom) { this.operateFrom = operateFrom; } }