apzl_leasing/src_tenwa/com/tenwa/collectaudit/cache/CollectAuditInfoCache.java
2022-06-09 07:57:19 +08:00

2059 lines
91 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.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;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>ID<49><44><EFBFBD>ڱ<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ϊdepositcharge_id<69><64><EFBFBD><EFBFBD><EFBFBD>˻ر<CBBB><D8B1><EFBFBD>ΪRENT_PLAN_ID
* @param depositcharge_id,tx
* @return
* @throws Exception
*/
public void writeBackDistributor(String rentPlanId,String money,Transaction Sqlca) throws JBOException{
//<2F><>ѯ<EFBFBD>Ƿ<EFBFBD><C7B7>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>¼
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){
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BigDecimal dci_money = new BigDecimal("0");
BizObjectManager bmDCI = JBOFactory.getFactory().getManager(D_DEPOSITCHARGE_INFO.CLASS_NAME);
List<BizObject> 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<46><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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);
//<2F>޸ľ<DEB8><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
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("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>");
}
}
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
public static String getCollectIntface(String id) throws Exception{
String sql="select lr.filename from LB_INTFACE_FILE_RECORD lr "
+ "where lr.id=:id";
Map<String,String> map=new HashMap<String, String>();
map.put("id", id);
JBOTransaction tx = null;
String filename="";
tx=JBOFactory.createJBOTransaction();
List<Map<String,String>> list=DataOperatorUtil.getDataBySql(tx, sql, map);
if(list.size()>0){
filename=StringUtil.nullToString(list.get(0).get("FILENAME")) ;
}
tx.commit();
return filename;
}
//У<><D0A3><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE>տ<EFBFBD>
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<BizObject> 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)) {//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return "error@"+name+"<EFBFBD><EFBFBD>"+plan_list+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ"+plan_date+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>пۿ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD>".trim();
}
if ("".equals(rent) || "0".equals(rent) || "0.0".equals(rent)) {//<2F>ж<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD>
return "error@"+name+"<EFBFBD><EFBFBD>"+plan_list+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ"+plan_date+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ,<2C>޷<EFBFBD><DEB7>ٴοۿ<CEBF>".trim();
}
}
return "sucess";
}
//<2F>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
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\\<5C><><EFBFBD>ո<EFBFBD>ϵͳ<CFB5>ӿ<EFBFBD><D3BF>ĵ<EFBFBD><C4B5><EFBFBD>JAVA<56><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>demo<6D><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>\\JAVA<56><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DEMO<4D><4F><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>_20170825\\<5C><><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD>֤<EFBFBD><D6A4>\\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";
}
//<2F><><EFBFBD><EFBFBD>
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<BizObject> 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("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD>:"+bo.getAttribute("account")+",<2C><><EFBFBD>п<EFBFBD><D0BF><EFBFBD>:"+bo.getAttribute("acc_number")
+",<2C>ֻ<EFBFBD><D6BB><EFBFBD>:"+bo.getAttribute("mobile")+"<EFBFBD><EFBFBD>ͬ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@<40>ͻ<EFBFBD>"+name+"<EFBFBD><EFBFBD>δǩԼ,<2C><><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>ǩԼ".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";
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD>
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<BizObject> 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();//ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double income_rent = bo.getAttribute("rent").getDouble();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ("process".equals(batchstatus)) {//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return "error@"+name+"<EFBFBD><EFBFBD>"+plan_list+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ"+plan_date+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>޷<EFBFBD><DEB7>˻س<CBBB><D8B3><EFBFBD>".trim();
}
if ("".equals(rent) || "0".equals(rent) || "0.0".equals(rent)) {//<2F>ж<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD>
return "error@"+name+"<EFBFBD><EFBFBD>"+plan_list+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ"+plan_date+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ,<2C>޷<EFBFBD><DEB7>˻س<CBBB><D8B3><EFBFBD>".trim();
}
if (income_rent > 0 && (fact_rent > income_rent)) {//<2F><><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>
return "error@"+name+"<EFBFBD><EFBFBD>"+plan_list+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ"+plan_date+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ,<2C>޷<EFBFBD><DEB7>˻س<CBBB><D8B3><EFBFBD>".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";
}
/**
* ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
* @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<BizObject> 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<BizObject> 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<String, String> 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<String, String> 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))){
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS where O.id=:id")
.setParameter("COLLECT_STATUS", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>")
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
}
}else {
Map<String, String> 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("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") !=-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<String, String> 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<String, String> 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))){
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS where O.id=:id")
.setParameter("COLLECT_STATUS", "<22><><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>")
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
}
}else {
Map<String, String> map = singleCollectMoeny(tx,bc,bo,bo.getAttribute("rent").toString(),"1");
if ("0000".equals(map.get("RET_CODE"))) {
i++;
}else{
j++;
}
}*/
}
return "<EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD> "+i+" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD><D5BF>ɹ<EFBFBD>\n"+j+" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>ʧ<EFBFBD><CAA7>";
}
/**
* <20>ӿڴ<D3BF><DAB4><EFBFBD>
* @param tx
* @param bc
* @param bo
* @param rent
* @return
* @throws Exception
*/
public Map<String, String> singleCollectMoeny(JBOTransaction tx,BizObjectManager bc,BizObject bo,String rent,String hire_list) throws Exception{
CollectAuditProcess cp = new CollectAuditProcess();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
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;//<2F><EFBFBD><E1BDBB><EFBFBD><EFBFBD>
String batch_title = "";
int i = 0,j = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
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()){//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>
file.mkdirs();
}
String req_sn = System.currentTimeMillis()+"";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>
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);
//<2F><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
String strResp = cp.CollectAuditPayReq(strbuff,file.getAbsolutePath(), batch_title);
Map<String, String> 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) {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 += "<EFBFBD><EFBFBD><EFBFBD>׳ɹ<EFBFBD><EFBFBD><EFBFBD>ˮΪ:"+req_sn;
}else{
batch_number += ";<3B><><EFBFBD>׳ɹ<D7B3><C9B9><EFBFBD>ˮΪ:"+req_sn;
}
}else{
if (batch_number.length() == 0) {
batch_number += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮΪ:"+req_sn;
}else{
batch_number += ";<3B><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>ˮΪ:"+req_sn;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
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")) ? "<EFBFBD>տ<EFBFBD><EFBFBD>ɹ<EFBFBD>" : "δ<EFBFBD>տ<EFBFBD>")
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("BATCH_NUMBER", batch_number)
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
//<2F><><EFBFBD>ɴ<EFBFBD><C9B4>̡<EFBFBD><CCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
savaFile(tx, strResp,batch_title,bo);
return map;
}
/**
* <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param tx
* @param bc
* @param bo
* @param rent
* @return
* @throws JBOException
* @throws SQLException
* @throws Exception
*/
public Map<String, String> handcraftsingleCollectMoeny(JBOTransaction tx,BizObjectManager bc,BizObject bo,String rent,String hire_list) throws JBOException, SQLException {
String cerrentDate = DateAssistant.getToday();//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>,<2C><>ʽΪ:yyyy/MM/dd
Map<String, String> map = new HashMap<String, String>();
//<2F><>Ϊ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/*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) {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 += "<22>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"+rent;
}else{
batch_number += ";<3B>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"+rent;
}*/
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG where O.id=:id")
.setParameter("COLLECT_STATUS", "<EFBFBD>տ<EFBFBD><EFBFBD>ɹ<EFBFBD>")
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
map.put("RET_CODE", "0000");
return map;
}
/**
* <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>)
* @param tx
* @param bc
* @param bo
* @param rent
* @return
* @throws JBOException
* @throws SQLException
* @throws Exception
*/
public Map<String, String> handcraftsingleCollectMoenyDistrbutor(JBOTransaction tx,BizObjectManager bc,BizObject bo,String rent,String hire_list) throws JBOException, SQLException {
String cerrentDate = DateAssistant.getToday();//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>,<2C><>ʽΪ:yyyy/MM/dd
Map<String, String> map = new HashMap<String, String>();
//<2F><>Ϊ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/*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) {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 += "<22>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"+rent;
}else{
batch_number += ";<3B>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"+rent;
}*/
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
/*bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG where O.id=:id")
.setParameter("COLLECT_STATUS", "<22>տ<EFBFBD><D5BF>ɹ<EFBFBD>")
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();*/
map.put("RET_CODE", "0000");
return map;
}
/**
* <20>ֶ<EFBFBD><D6B6>տ<EFBFBD><D5BF>޸<EFBFBD>״̬,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @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<BizObject> 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<String, String> map = handcraftsingleCollectMoeny(tx,bc,bo,bo.getAttribute("rent").toString(),"1");
i++;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG where O.id=:id")
.setParameter("COLLECT_STATUS", "<EFBFBD>ֹ<EFBFBD><EFBFBD>տ<EFBFBD>")
.setParameter("COLLECT_MSG", "<EFBFBD>ֹ<EFBFBD><EFBFBD>ۿ<EFBFBD>")
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>rent<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȼ<EFBFBD>ȥ<EFBFBD><C8A5>Ϣ)
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 "<EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD> "+i+" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD><D5BF>ɹ<EFBFBD>\n"+j+" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>ʧ<EFBFBD><CAA7>";
}
/**
* <20>ֶ<EFBFBD><D6B6>տ<EFBFBD><D5BF>޸<EFBFBD>״̬,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @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<ids.length;c++){
BizObject bom = bm.createQuery(" select distinct O.contract_id,O.plan_list,O.plan_date,O.id,O.need_caution_money from O where O.id ='"+ids[c]+"' ").getSingleResult(false);
//BigDecimal corpus =new BigDecimal(bom.getAttribute("corpus").getString());
//BigDecimal interest =new BigDecimal(bom.getAttribute("interest").getString());
//BigDecimal penalty = new BigDecimal(penaltyArray[c]);
//<2F><><EFBFBD>ͻ<EFBFBD>ȷ<EFBFBD><C8B7>Ŀǰֻ<C7B0><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BigDecimal t_rent = new BigDecimal( bom.getAttribute("need_caution_money").getString() );
//String t_rent = corpus.add(interest).add(penalty).toString();
/**
* <20><>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>¼
*/
String contract_id = bom.getAttribute("contract_id").toString();
int plan_list=Integer.parseInt(bom.getAttribute("plan_list").toString())-1;
// <20><>ѯ<EFBFBD><D1AF>ǰҪ<C7B0><D2AA><EFBFBD><EFBFBD><EFBFBD>ڴε<DAB4><CEB5><EFBFBD>һ<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>1<EFBFBD><31>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1<CEAA><31>
BizObject ddi = bd.createQuery("SELECT O.COMPENSATORY_CON FROM O WHERE O.MONEY_TYPE='bondRepay' AND O.CONTRACT_ID='"+contract_id+"' AND O.PLAN_LIST='"+plan_list+"'").getSingleResult(false);
if(ddi!=null && !"".equals(ddi.getAttribute("COMPENSATORY_CON").getString())) {
COMPENSATORY_CON=String.valueOf(Integer.parseInt(ddi.getAttribute("COMPENSATORY_CON").getString())+1);
}else {
COMPENSATORY_CON="1";
}
//handcraftsingleCollectMoeny<6E><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭΪhire_list<73><74><EFBFBD>ָ<EFBFBD>Ϊ<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻԣ<C7BB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Map<String, String> map = handcraftsingleCollectMoenyDistrbutor(tx,bc,bom,t_rent,penaltyArray[c]);
i++;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG where O.id=:id")
.setParameter("COLLECT_STATUS", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
.setParameter("COLLECT_MSG", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
//.setParameter("PENALTY", penaltyArray[c])
.setParameter("id", bom.getAttribute("id").toString()).executeUpdate();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBEAD><EFBFBD>̱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD>˻ر<CBBB><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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);
//<2F>޸ľ<DEB8><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
bdi.createQuery("update O set O.sums='"+account_balance+"' where O.distributor_no=:distributor_id").setParameter("distributor_id", distributor_id).executeUpdate();
}
return "<EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD> "+i+" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD><D5BF>ɹ<EFBFBD>\n"+j+" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>ʧ<EFBFBD><CAA7>";
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ϣ
* @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;
}
/**
* ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
* @param rent <09><><EFBFBD><EFBFBD>
* @param acc_number <09><><EFBFBD>п<EFBFBD><D0BF><EFBFBD>
* @param account <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param bankcode <09><><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
* @param province <09><><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>ʡ<EFBFBD><CAA1>
* @param req_sn <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
* @return
*/
public StringBuffer collectTimely(String rent,String acc_number,String account,String bankcode,String province,String req_sn){
//ƴ<><C6B4>XML<4D><4C><EFBFBD><EFBFBD>
String req = System.currentTimeMillis()+"";
StringBuffer strbuff = new StringBuffer();
strbuff.append("<?xml version=\"1.0\" encoding=\"GBK\"?>");
strbuff.append("<GZELINK>");
strbuff.append("<INFO>");
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("</INFO>");
strbuff.append("<BODY>");
strbuff.append("<TRANS_SUM>");
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("</TRANS_SUM>");
strbuff.append("<TRANS_DETAILS><TRANS_DETAIL>");
Trans_Detail trans_detail = new Trans_Detail();
trans_detail.setSN("0001");
trans_detail.setBANK_CODE(bankcode);//<2F><><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
trans_detail.setACCOUNT_TYPE("00");
trans_detail.setACCOUNT_NO(acc_number);
trans_detail.setACCOUNT_NAME(account);
trans_detail.setPROVINCE(province);//<2F><><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>ʡ<EFBFBD><CAA1>
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("<TRANS_DETAIL>"), strbuff.length());
strbuff.append("</TRANS_DETAILS>");
strbuff.append("</BODY>");
strbuff.append("</GZELINK>");
return strbuff;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* @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);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>в<EFBFBD><D0B2><EFBFBD>
List<BizObject> 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 "ϵͳ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD>";
}
/**
* <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @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<BizObject> 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<BizObject> 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 ? "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>" : "<EFBFBD><EFBFBD>ֹ<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD>";
}
/**
* <20><><EFBFBD>鶨ʱ<E9B6A8><CAB1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param jobName
* @return
*/
public String isRunning(){
try {
Scheduler defaultScheduler = StdSchedulerFactory.getDefaultScheduler();
List<JobExecutionContext> 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("<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return "unUse";
}
/**
* <20><>ȡ<EFBFBD><C8A1><EFBFBD>տۿ<D5BF><DBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ񳬹<C7B7>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @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<ids.length;i++){
int collectCount= bmlcmi.createQuery("select O.id from O where O.hire_date=:curDate and O.plan_id=:id group by O.batch_no")
.setParameter("curDate", curDate)
.setParameter("id", ids[i])
.getTotalCount();
if(collectCount>=2){
return flag;
}
}
} catch (JBOException e) {
e.printStackTrace();
return "error";
}
return "true";
}
/**
* <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>״̬
* @return
* @throws Exception
*/
public String queryBatchCollectStatus(JBOTransaction tx) throws Exception{
if(!Objects.isNull(operateFrom)){
if(AutoRefresh.getHoldLockStatus()){
return "<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ֹ<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>!";
}
}
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<BizObject> 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();
//<2F><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>滻Ϊ<E6BBBB>ۿ<EFBFBD><DBBF><EFBFBD><EFBFBD>query_sn<73><6E>lc_rent_plan<61><6E>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>batch_no<6E>IJ<EFBFBD>ѯΪ<D1AF><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>̵ģ<CCB5>
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<BizObject> 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;//<2F><><EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
}
}
}
String[] snArray = sn.split(",");
int n = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ۿ<EFBFBD><DBBF>ɹ<EFBFBD><C9B9><EFBFBD>¼
BizObject bolrp = bc.createQuery("O.id=:id").setParameter("id", bo.getAttribute("id").toString()).getSingleResult(false);
String collectStatus = "δ<EFBFBD>տ<EFBFBD>";
String collectStatusPart = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>";
//<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
if(bolrp.getAttribute("COLLECT_STATUS")!=null){
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ջ<EFBFBD>Ϊnull<6C><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
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<String, String> 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"))) {
//<2F><><EFBFBD><EFBFBD>
querysingleCollectMoeny(tx, bc, bo, rent,i+"");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>rent<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȼ<EFBFBD>ȥ<EFBFBD><C8A5>Ϣ)
String redRent = new BigDecimal(rent).subtract(new BigDecimal(penalty)).toString();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
String COLLECT_STATUS = "";
String COLLECT_MSG = "";
//<2F>Զ<EFBFBD><D4B6>ۿ<EFBFBD>
if("AutoBuckle".equals(collectType)){
COLLECT_STATUS = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>";
COLLECT_MSG = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>տ<EFBFBD><D5BF>ɹ<EFBFBD>";
//<2F>ֶ<EFBFBD><D6B6>ۿ<EFBFBD>
}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 = "<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>";
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 = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>";
COLLECT_MSG = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>տ<EFBFBD><D5BF>ɹ<EFBFBD>";
}
}
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")//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬-<2D><><EFBFBD><EFBFBD>
.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")))){
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
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{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
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", "")//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "δ<EFBFBD>տ<EFBFBD>");
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+"");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>rent<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȼ<EFBFBD>ȥ<EFBFBD><C8A5>Ϣ)
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;//<2F><><EFBFBD>ۿ<EFBFBD><DBBF>ɹ<EFBFBD><C9B9><EFBFBD> <20><>Ϊ 0
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
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")//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬-<2D><><EFBFBD><EFBFBD>
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>");
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", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>")
.setParameter("COLLECT_MSG", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>տ<EFBFBD><D5BF>ɹ<EFBFBD>")
.setParameter("BATCH_STATUS", "complete")//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬-<2D><><EFBFBD><EFBFBD>
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>");
bo.setAttributeValue("COLLECT_MSG", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>տ<EFBFBD><D5BF>ɹ<EFBFBD>");
bo.setAttributeValue("BATCH_STATUS", "complete");
//bo.setAttributeValue("rent", bo.getAttribute("rent").toString());
saveBuckle(bo,tx,sn,singleRent[i-1]);
}
}else{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
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")//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬-<2D><><EFBFBD><EFBFBD>
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD>");
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")))){
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
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{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6>ʿۿ<CABF>,<2C><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD><DBBF>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>δ 0 ,<2C><><EFBFBD><EFBFBD><EFBFBD>¿ۿ<C2BF>״̬Ϊ δ<>ۿ<EFBFBD>
if (i == snArray.length && n == 0) {
//<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>״̬
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", "")//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "δ<EFBFBD>տ<EFBFBD>");
bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG"));
bo.setAttributeValue("BATCH_STATUS", "");
saveBuckle(bo,tx,sn,"0.00");
}
}
}
if (i == snArray.length) {//ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E>Ϊ 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, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD>");
blog.saveObject(blbo);
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ղ<EFBFBD>ѯ<EFBFBD>ӿ<EFBFBD>
* @param tx
* @param bo
* @param list
* @return
* @throws Exception
*/
public Map<String, String> querySingleBatchCollect(JBOTransaction tx,BizObject bo,String query_sn,String sn) throws Exception{
CollectAuditProcess cp = new CollectAuditProcess();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
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;//<2F><EFBFBD><E1BDBB><EFBFBD><EFBFBD>
String batch_title = "";
int i = 0,j = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
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()){//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>
file.mkdirs();
}
String req_sn = System.currentTimeMillis()+"";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>
batch_title = merchantNumber+"_"+flag+version+date+"_"+req_sn;
StringBuffer strbuff = queryBatchXML(req_sn, query_sn,sn);
// queryBatchXML(req_sn, query_sn, sn);
//<2F><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
String strResp = cp.CollectAuditPayReq(strbuff,file.getAbsolutePath(), batch_title);
if(strResp==null || strResp.isEmpty()) {
return null;
}
Map<String, String> map = getRetAndCode(strResp);
//<2F><><EFBFBD>ɴ<EFBFBD><C9B4>̡<EFBFBD><CCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
savaFile(tx, strResp,batch_title,bo);
return map;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ӿ<EFBFBD>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param tx
* @param bc
* @param bo
* @param rent
* @return
* @throws Exception
*/
public Map<String, String> querysingleCollectMoeny(JBOTransaction tx,BizObjectManager bc,BizObject bo,String rent,String hire_list) throws Exception{
String cerrentDate = DateAssistant.getToday();
Map<String, String> map = new HashMap<String, String>();
//<2F><>Ϊ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/*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) {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ӿڱ<D3BF><DAB1><EFBFBD>-xml
* @param req_sn <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
* @param query_sn <09><>ѯ<EFBFBD><D1AF>ˮ<EFBFBD><CBAE>
* @param sn <09><>ѯ<EFBFBD><D1AF>ϸ<EFBFBD><CFB8>
* @return
*/
public StringBuffer queryBatchXML(String req_sn,String query_sn,String sn){
StringBuffer strbuff = new StringBuffer();
strbuff.append("<?xml version=\"1.0\" encoding=\"GBK\"?>");
strbuff.append("<GZELINK>");
strbuff.append("<INFO>");
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("</INFO>");
strbuff.append("<BODY>");
strbuff.append("<QUERY_TRANS>");
strbuff.append("<QUERY_SN>");
strbuff.append(query_sn);//Ҫ<><D2AA>ѯ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>ˮ
strbuff.append("</QUERY_SN>");
strbuff.append("<QUERY_REMARK/>");
strbuff.append("<RET_TYPE/>");
strbuff.append("</QUERY_TRANS>");
strbuff.append("<QUERY_DETAILS>");
strbuff.append("<QUERY_DETAIL>");
strbuff.append("<QUERY_DETAIL_SN>");
strbuff.append(sn);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>
strbuff.append("</QUERY_DETAIL_SN>");
strbuff.append("</QUERY_DETAIL>");
strbuff.append("</QUERY_DETAILS>");
strbuff.append("</BODY>");
strbuff.append("</GZELINK>");
return strbuff;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100001<30>ӿ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>batch_status״̬)
* @param tx
* @param bc
* @param bo
* @param rent
* @return
* @throws Exception
*/
public Map<String, String> singleBatchCollectMoeny(JBOTransaction tx,List<BizObject> list) throws Exception{
CollectAuditProcess cp = new CollectAuditProcess();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
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;//<2F><><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD><CCBB><EFBFBD>
String flag = InitCollectConfig.FLAG;//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>--<2D><><EFBFBD>ձ<EFBFBD>ʶ
String version = InitCollectConfig.C_VERSION;//<2F>ӿڰ汾<DAB0><E6B1BE>
String date = currentYear+month+day;//<2F><EFBFBD><E1BDBB><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
File file = new File( this.fileSavePath+ File.separator + currentYear + File.separator + month + File.separator
+ day);
//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>
if(!file.exists()) file.mkdirs();
String req_sn = System.currentTimeMillis()+"";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD> REQ_SN
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
String batch_title = merchantNumber+"_"+flag+version+date+"_"+req_sn;
//<2F><><EFBFBD>۱<EFBFBD><DBB1><EFBFBD>
StringBuffer strbuff = collectBatch(req_sn,list);
//<2F>ӿڵ<D3BF><DAB5><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
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("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣:", e);
}
//<2F><><EFBFBD>ɴ<EFBFBD><C9B4>̡<EFBFBD><CCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>־<EFBFBD><D6BE>LB_INTFACE_FILE_RECORD.RELA_ID <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>)
BizObject bo = new BizObject("jbo.app.tenwa.calc.LC_RENT_PLAN");
bo.setAttributeValue("id",req_sn);
savaFile(tx, strResp,batch_title,bo);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
Map<String, String> map = getRetAndCodeByBatch(strResp);
if (map.containsKey("RET_CODE")) {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
String updateIdsStr = getRentIds(list);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
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;//ͳ<>Ʒ<EFBFBD><C6B7>͵Ĵ<CDB5><C4B4>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
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;
}
/**
* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>ids
* @param list
* @return
* @throws JBOException
*/
private String getRentIds(List<BizObject> 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();
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--<2D><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4>
* @param rent
* @param acc_number
* @param account
* @param req_sn
* @return
* @throws JBOException
*/
public StringBuffer collectBatch(String req_sn,List<BizObject> list) throws JBOException{
//ƴ<><C6B4>XML<4D><4C><EFBFBD><EFBFBD>
StringBuffer strbuff = new StringBuffer();
strbuff.append("<?xml version=\"1.0\" encoding=\"GBK\"?>");
strbuff.append("<GZELINK>");
strbuff.append("<INFO>");
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("</INFO>");
strbuff.append("<BODY>");
strbuff.append("<TRANS_SUM>");
BigDecimal mutly = new BigDecimal("0");//<2F><><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
int i = 0;
//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD> itemname<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> itemdescribe<<3C>޶<EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD>>
List<BizObject> codelist = JBOFactory.getFactory().getBizObjectManager(CODE_LIBRARY.CLASS_NAME).createQuery("O.codeno = 'bankType' and O.itemdescribe is not null ").getResultList(false);
//<2F><><EFBFBD><EFBFBD><E3BFA8><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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("</TRANS_SUM>");
strbuff.append("<TRANS_DETAILS><TRANS_DETAIL>");
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));//׷<><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
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);//׷<><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
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);//׷<><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
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("<TRANS_DETAIL>"), strbuff.length());
strbuff.append("</TRANS_DETAILS>");
strbuff.append("</BODY>");
strbuff.append("</GZELINK>");
collectStyle=null;
return strbuff;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD> batch_no batch_sn ,<2C>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>۵ģ<DBB5><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ۼ<EFBFBD>¼
* @param planId <20><><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>id
* @param req_sn <20><><EFBFBD>κ<EFBFBD>
* @param sn <20><><EFBFBD><EFBFBD>
* @param biz
* @param k2 k2==1 <20>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>۱<EFBFBD><DBB1><EFBFBD><EFBFBD><EFBFBD>
* @throws Exception
*/
private void rentPlanHandle(String planId,String req_sn,String sn,BizObject biz,int k2,String amount) throws JBOException{
//׷<><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
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;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD> <20><><EFBFBD><EFBFBD>
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", "")//<2F><><EFBFBD><EFBFBD>״̬-Ϊ<><CEAA>
.setParameter("BATCH_NO", req_sn)
.setParameter("BATCH_SN", itemsn0)
.setParameter("id", planId).executeUpdate();
//<2F><>¼<EFBFBD>м<EFBFBD><D0BC><EFBFBD> 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);
//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>ֶ<EFBFBD><D6B6><EFBFBD>
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());
}
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̡<EFBFBD><CCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
* @param tx
* @param strResp
* @param batch_title
* @throws Exception
*/
public void savaFile(JBOTransaction tx,String strResp,String batch_title,BizObject bo) throws Exception{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
String currentDateTime = DateAssistant.getTodayNow();
String currentYear = currentDateTime.substring(0,4);
String month = currentDateTime.substring(5,7);
String day = currentDateTime.substring(8,10);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
String rootDir = this.fileSavePath;
File file = new File(rootDir + File.separator + currentYear + File.separator + month + File.separator + day);
//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>
if(!file.exists())file.mkdirs();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
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);
//ɸѡ<C9B8><D1A1>Ӧ<EFBFBD><D3A6>Ϣ
Map<String, String> map = getRetAndCode(strResp);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
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);
}
/**
* ʵʱ<CAB5><CAB1><EFBFBD>գ<EFBFBD><D5A3><EFBFBD>Ӧ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
* @param strXML
* @return
*/
public Map<String, String> getRetAndCode(String strXML){
Map<String, String> map = new HashMap<String, String>();
Map<String, String> res = new HashMap<String, String>();
Pattern pm = Pattern.compile("(?<=<RET_CODE>)([\\S\\s]*?)(?=</RET_CODE>)");
Matcher mm = pm.matcher(strXML);
int i = 0;
while (mm.find())
{
map.put("RET_CODE"+i++, mm.group());
}
Pattern pc = Pattern.compile("(?<=<ERR_MSG>)([\\S\\s]*?)(?=</ERR_MSG>)");
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;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD>ر<EFBFBD><D8B1>Ĵ<EFBFBD><C4B4><EFBFBD>
* @param strXML
* @return
*/
public Map<String, String> getRetAndCodeByBatch(String strXML){
Map<String, String> map = new HashMap<String, String>();
Map<String, String> res = new HashMap<String, String>();
int iStart = strXML.indexOf("<ERR_MSG>");
if (iStart != -1) {
int end = strXML.indexOf("</ERR_MSG>");
String errMsg = strXML.substring(iStart+9, end);
map.put("ERR_MSG", errMsg);
}
int kStart = strXML.indexOf("<REQ_SN>");
if (kStart != -1) {
int end = strXML.indexOf("</REQ_SN>");
String reqSn = strXML.substring(kStart+8, end);
map.put("REQ_SN", reqSn);
}
Pattern pm = Pattern.compile("(?<=<RET_CODE>)([\\S\\s]*?)(?=</RET_CODE>)");
Matcher mm = pm.matcher(strXML);
int i = 0;
while (mm.find())
{
map.put("RET_CODE"+i++, mm.group());
}
Pattern pc = Pattern.compile("(?<=<SN>)([\\S\\s]*?)(?=</SN>)");
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<String, String> getMsgAndCode(String strXML){
Map<String, String> map = new HashMap<String, String>();
int iStart = strXML.indexOf("<ERR_MSG>");
if (iStart != -1) {
int end = strXML.indexOf("</ERR_MSG>");
String strMsg = strXML.substring(iStart+9, end);
map.put("ERR_MSG", strMsg);
}
int jStart = strXML.indexOf("<RET_CODE>");
if (jStart != -1) {
int end = strXML.indexOf("</RET_CODE>");
String strMsg = strXML.substring(jStart+10, end);
map.put("RET_CODE", strMsg);
}
return map;
}
/**
* <20><>ȡ<EFBFBD><C8A1>Ӧ<EFBFBD><D3A6>
* @param strXML
* @return
*/
public Map<String, String> getInfoAndStatus(String strXML){
Map<String, String> map = new HashMap<String, String>();
Map<String, String> res = new HashMap<String, String>();
int jStart = strXML.indexOf("<RET_CODE>");
if (jStart != -1) {
int end = strXML.indexOf("</RET_CODE>");
String retCode = strXML.substring(jStart+10, end);
map.put("RET_CODE", retCode);
}
int iStart = strXML.indexOf("<ERR_MSG>");
if (iStart != -1) {
int end = strXML.indexOf("</ERR_MSG>");
String errMsg = strXML.substring(iStart+9, end);
map.put("ERR_MSG", errMsg);
}
int kStart = strXML.indexOf("<TRANS_STATUS>");
if (kStart != -1) {
int end = strXML.indexOf("</TRANS_STATUS>");
String errMsg = strXML.substring(kStart+14, end);
map.put("TRANS_STATUS", errMsg);
}
int lStart = strXML.indexOf("<TRANS_INFO>");
if (lStart != -1) {
int end = strXML.indexOf("</TRANS_INFO>");
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;
}
//<2F><>֤<EFBFBD><D6A4><EFBFBD>п<EFBFBD><D0BF><EFBFBD>Ҫ<EFBFBD><D2AA>
public Map<String, String> vitfyCollectManage(Map<String, String> map) throws CryptException{
CollectAuditProcess cp = new CollectAuditProcess();
String currentDateTime = DateAssistant.getTodayNow();
String currenttime=currentDateTime.replaceAll("/", "");
currenttime=currenttime.replaceAll(":", "");
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
currenttime=currenttime.replaceAll(" ", "");
//<2F><>֤<EFBFBD><D6A4><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>
//<2F><>ˮ<EFBFBD><CBAE>
String req = System.currentTimeMillis()+"";
StringBuffer strbuff = new StringBuffer();
strbuff.append("<?xml version=\"1.0\" encoding=\"GBK\"?>");
strbuff.append("<GZELINK>");
strbuff.append("<INFO>");
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("</INFO>");
strbuff.append("<BODY>");
strbuff.append("<TRANS_SUM>");
strbuff.append("<SUBMIT_TIME>");
strbuff.append(currenttime);//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
strbuff.append("</SUBMIT_TIME>");
strbuff.append("<MERCHANT_ID>");
strbuff.append(InitCollectConfig.MERCHANTID);//<2F>̻<EFBFBD><CCBB><EFBFBD>
/*strbuff.append("000191400207649");//<2F>̻<EFBFBD><CCBB><EFBFBD>
*/ strbuff.append("</MERCHANT_ID>");
strbuff.append("<BANK_CODE/>");
strbuff.append("<ACCOUNT_NO>");
strbuff.append(map.get("ACCOUNT_NO"));//<2F><><EFBFBD><EFBFBD>
strbuff.append("</ACCOUNT_NO>");
strbuff.append("<ACCOUNT_NAME>");
strbuff.append(map.get("ACCOUNT_NAME"));//<2F><><EFBFBD><EFBFBD>
strbuff.append("</ACCOUNT_NAME>");
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (map.containsKey("ID_TYPE")) {
strbuff.append("<ID_TYPE>");
strbuff.append(map.get("ID_TYPE"));//<2F><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
strbuff.append("</ID_TYPE>");
}
if (map.containsKey("ID")) {
strbuff.append("<ID>");
strbuff.append(map.get("ID"));//֤<><D6A4><EFBFBD><EFBFBD>
strbuff.append("</ID>");
}
if (map.containsKey("TEL")) {
strbuff.append("<TEL>");
strbuff.append(map.get("TEL"));//<2F>ֻ<EFBFBD><D6BB><EFBFBD>
strbuff.append("</TEL>");
}
strbuff.append("<CRE_VAL_DATE>");
strbuff.append("");//<2F><><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD>Ч<EFBFBD><D0A7>
strbuff.append("</CRE_VAL_DATE>");
strbuff.append("<CRE_CVN2>");
strbuff.append("");//<2F><><EFBFBD>ǿ<EFBFBD>CV2
strbuff.append("</CRE_CVN2>");
strbuff.append("</TRANS_SUM>");
strbuff.append("</BODY>");
strbuff.append("</GZELINK>");
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;
}
}