1.网银可以卡扣,卡扣可以网银。代偿红冲可以部分红冲。

This commit is contained in:
zhangbb 2020-08-14 18:48:54 +08:00
parent 4abc7b1138
commit fdc3922b99
2 changed files with 94 additions and 70 deletions

View File

@ -74,29 +74,42 @@ public class CollectAuditInfoCache {
* @return
* @throws Exception
*/
public void writeBackDistributor(String RENT_PLAN_ID,Transaction Sqlca) throws JBOException{
BizObjectManager bmDCI = JBOFactory.getFactory().getManager(D_DEPOSITCHARGE_INFO.CLASS_NAME);
BizObjectManager bmDRI = JBOFactory.getFactory().getManager(D_DEPOSITRETURN_INFO.CLASS_NAME);
BizObjectManager bmDI = JBOFactory.getFactory().getManager(DISTRIBUTOR_INFO.CLASS_NAME);
BizObject bDRI= bmDRI.createQuery("RENT_PLAN_ID=:RENT_PLAN_ID").setParameter("RENT_PLAN_ID", RENT_PLAN_ID).getSingleResult(false);
String distributorId = bDRI.getAttribute("DISTRIBUTOR_ID").toString();
String cautionMoney = bDRI.getAttribute("CAUTION_MONEY").toString();
//D_DEPOSITCHARGE_INFO插入新数据
BizObject bDCI_N = bmDCI.newObject();
bDCI_N.setAttributeValue("DISTRIBUTOR_ID", distributorId);
bDCI_N.setAttributeValue("CAUTION_MONEY", cautionMoney);
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",RENT_PLAN_ID);
bmDCI.saveObject(bDCI_N);
//修改经销商信息表里的金额
BizObject bDI = bmDI.createQuery("distributor_no=:distributor_id").setParameter("distributor_id", distributorId).getSingleResult(false);
BigDecimal sum = new BigDecimal(bDI.getAttribute("sums").getString());
double account_balance = sum.add(new BigDecimal(cautionMoney)).doubleValue();
bmDI.createQuery("update O set O.sums='"+account_balance+"' where O.distributor_no=:distributor_id").setParameter("distributor_id", distributorId).executeUpdate();
System.out.println("红冲成功");
public void writeBackDistributor(String rentPlanId,String money,Transaction Sqlca) throws JBOException{
//查询是否有代偿记录
BizObject boDRI=JBOFactory.createBizObjectQuery(D_DEPOSITRETURN_INFO.CLASS_NAME,"RENT_PLAN_ID=:rentPlanId").setParameter("rentPlanId", rentPlanId).getSingleResult(false);
if(boDRI!=null&&boDRI.getAttribute("CAUTION_MONEY")!=null){
//代偿操作
BigDecimal dci_money = new BigDecimal("0");
BizObjectManager bmDCI = JBOFactory.getFactory().getManager(D_DEPOSITCHARGE_INFO.CLASS_NAME);
List<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插入新数据
BizObject bDCI_N = bmDCI.newObject();
String distributorId = boDRI.getAttribute("DISTRIBUTOR_ID").toString();
bDCI_N.setAttributeValue("DISTRIBUTOR_ID", distributorId);
bDCI_N.setAttributeValue("CAUTION_MONEY", money);
bDCI_N.setAttributeValue("MONEY_TYPE","bondBack");
bDCI_N.setAttributeValue("INPUTTIME",StringFunction.getTodayNow());
bDCI_N.setAttributeValue("INPUTUSERID",inputuserid);
bDCI_N.setAttributeValue("INPUTORGID",inputorgid);
bDCI_N.setAttributeValue("RENT_PLAN_ID",rentPlanId);
bmDCI.saveObject(bDCI_N);
//修改经销商信息表里的金额
BizObject bDI = bmDI.createQuery("distributor_no=:distributor_id").setParameter("distributor_id", distributorId).getSingleResult(true);
String sum = new BigDecimal(bDI.getAttribute("sums").getString()).add(new BigDecimal(money)).toString();
bDI.setAttributeValue("sums", sum);
bmDI.saveObject(bDI);
System.out.println("红冲成功");
}
}
}
//获取存盘文件
@ -638,7 +651,7 @@ public class CollectAuditInfoCache {
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 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);
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++;
@ -647,12 +660,9 @@ public class CollectAuditInfoCache {
.setParameter("COLLECT_STATUS", "手工收款")
.setParameter("COLLECT_MSG", "手工扣款")
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
BizObject boDDI=JBOFactory.createBizObjectQuery(D_DEPOSITRETURN_INFO.CLASS_NAME,"RENT_PLAN_ID=:rentPlanId").setParameter("rentPlanId", bo.getAttribute("id").toString()).getSingleResult(false);
if(boDDI!=null){
this.writeBackDistributor(bo.getAttribute("id").toString(), Sqlca);
}
//红冲代偿的数据(由于视图里的rent包含罚息所以要先减去罚息)
String rent = new BigDecimal(bo.getAttribute("rent").toString()).subtract( new BigDecimal(bo.getAttribute("PENALTY").toString())).toString();
this.writeBackDistributor(bo.getAttribute("id").toString(),rent, Sqlca);
}
return "总共有 "+i+" 笔租金收款成功\n"+j+" 笔租金收款失败";
@ -918,12 +928,14 @@ public class CollectAuditInfoCache {
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 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);
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.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 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);
@ -971,16 +983,17 @@ public class CollectAuditInfoCache {
if (snArray.length == 1) {
if (map.containsKey("RET_CODE") && "0000".equals(map.get("RET_CODE"))) {
querysingleCollectMoeny(tx, bc, bo, rent,i+"");
//红冲代偿的数据(由于视图里的rent包含罚息所以要先减去罚息)
String redRent = new BigDecimal(rent).subtract(new BigDecimal(penalty)).toString();
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", "批量收款")
.setParameter("COLLECT_MSG", "批量代收,收款成功")
.setParameter("BATCH_STATUS", "complete")//更新批量处理状态-完成
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
BizObject boDDI=JBOFactory.createBizObjectQuery(D_DEPOSITRETURN_INFO.CLASS_NAME,"RENT_PLAN_ID=:rentPlanId").setParameter("rentPlanId", bo.getAttribute("id").toString()).getSingleResult(false);
if(boDDI!=null){
this.writeBackDistributor(bo.getAttribute("id").toString(),Sqlca);
}
.setParameter("COLLECT_STATUS", "批量收款")
.setParameter("COLLECT_MSG", "批量代收,收款成功")
.setParameter("BATCH_STATUS", "complete")//更新批量处理状态-完成
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "批量收款");
bo.setAttributeValue("COLLECT_MSG", "批量代收,收款成功");
bo.setAttributeValue("BATCH_STATUS", "complete");
@ -989,17 +1002,17 @@ public class CollectAuditInfoCache {
}else if (map.containsKey("RET_CODE") && ("2007".equals(map.get("RET_CODE")) || "2005".equals(map.get("RET_CODE")) || "2003".equals(map.get("RET_CODE")) || "2001".equals(map.get("RET_CODE")) || "2000".equals(map.get("RET_CODE")))){
//更新银联处理中的反馈信息
bc.createQuery("update O set O.COLLECT_MSG=:COLLECT_MSG where O.id=:id")
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG"));
saveBuckle(bo,tx,sn,"0.00");
}else{
//更新收付状态
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id")
.setParameter("COLLECT_STATUS", collectStatus)
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("BATCH_STATUS", "")//清空批量处理状态
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
.setParameter("COLLECT_STATUS", collectStatus)
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("BATCH_STATUS", "")//清空批量处理状态
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "未收款");
bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG"));
bo.setAttributeValue("BATCH_STATUS", "");
@ -1008,19 +1021,24 @@ public class CollectAuditInfoCache {
}else if (snArray.length > 1) {
if (map.containsKey("RET_CODE") && "0000".equals(map.get("RET_CODE"))) {
querysingleCollectMoeny(tx, bc, bo, singleRent[i-1],i+"");
//红冲代偿的数据(由于视图里的rent包含罚息所以要先减去罚息)
BigDecimal singleRent_over = new BigDecimal(singleRent[i-1]);
if(singleRent_over.compareTo(penalty_over)==1){
String redRent = new BigDecimal(singleRent[i-1]).subtract(penalty_over).toString();
penalty_over = new BigDecimal("0");
this.writeBackDistributor(bo.getAttribute("id").toString(),redRent,Sqlca);
}else{
penalty_over = penalty_over.subtract(singleRent_over);
}
n++;
if (n == snArray.length) {
n = 0;//将扣款成功项 置为 0
//更新收付状态
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id")
.setParameter("COLLECT_STATUS", "批量收款")
.setParameter("COLLECT_MSG", "批量代收,收款成功")
.setParameter("BATCH_STATUS", "complete")//更新批量处理状态-完成
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
BizObject boDDI=JBOFactory.createBizObjectQuery(D_DEPOSITRETURN_INFO.CLASS_NAME,"RENT_PLAN_ID=:rentPlanId").setParameter("rentPlanId", bo.getAttribute("id").toString()).getSingleResult(false);
if(boDDI!=null){
this.writeBackDistributor( bo.getAttribute("id").toString(),Sqlca);
}
.setParameter("COLLECT_STATUS", "批量收款")
.setParameter("COLLECT_MSG", "批量代收,收款成功")
.setParameter("BATCH_STATUS", "complete")//更新批量处理状态-完成
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "批量收款");
bo.setAttributeValue("COLLECT_MSG", "批量代收,收款成功");
bo.setAttributeValue("BATCH_STATUS", "complete");
@ -1029,30 +1047,31 @@ public class CollectAuditInfoCache {
}else{
//更新收付状态
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id")
.setParameter("COLLECT_STATUS", collectStatusPart)
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("BATCH_STATUS", "complete")//清空批量处理状态-完成
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
.setParameter("COLLECT_STATUS", collectStatusPart)
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("BATCH_STATUS", "complete")//清空批量处理状态-完成
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "部分收款");
bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG"));
bo.setAttributeValue("BATCH_STATUS", "complete");
saveBuckle(bo,tx,i+"",singleRent[i-1]);
}
}else if (map.containsKey("RET_CODE") && ("2007".equals(map.get("RET_CODE")) || "2005".equals(map.get("RET_CODE")) || "2003".equals(map.get("RET_CODE")) || "2001".equals(map.get("RET_CODE")) || "2000".equals(map.get("RET_CODE")))){
//更新银联处理中的反馈信息
bc.createQuery("update O set O.COLLECT_MSG=:COLLECT_MSG where O.id=:id")
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
.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,i+"","0.00");
}else{//批量拆分多笔扣款,如果扣款成功条数未 0 ,则更新扣款状态为 未扣款
if (i == snArray.length && n == 0) {
//更新收付状态
bc.createQuery("update O set O.COLLECT_STATUS=:COLLECT_STATUS ,O.COLLECT_MSG=:COLLECT_MSG,O.BATCH_STATUS=:BATCH_STATUS,O.BATCH_NO='',O.BATCH_SN='' where O.id=:id")
.setParameter("COLLECT_STATUS", collectStatus)
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("BATCH_STATUS", "")//清空批量处理状态
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
.setParameter("COLLECT_STATUS", collectStatus)
.setParameter("COLLECT_MSG", map.get("ERR_MSG"))
.setParameter("BATCH_STATUS", "")//清空批量处理状态
.setParameter("id", bo.getAttribute("id").toString()).executeUpdate();
bo.setAttributeValue("COLLECT_STATUS", "未收款");
bo.setAttributeValue("COLLECT_MSG", map.get("ERR_MSG"));
bo.setAttributeValue("BATCH_STATUS", "");

View File

@ -5,6 +5,7 @@ import java.util.List;
import jbo.app.tenwa.calc.LC_RENT_INCOME;
import jbo.app.tenwa.calc.LC_RENT_INCOME_TEMP;
import jbo.app.tenwa.calc.LC_RENT_PLAN;
import jbo.com.tenwa.entity.comm.flow.D_DEPOSITCHARGE_INFO;
import jbo.com.tenwa.entity.comm.flow.D_DEPOSITRETURN_INFO;
import com.amarsoft.are.jbo.BizObject;
@ -29,16 +30,20 @@ public class InsertRentPlanStatus extends BaseBussiness{
String contractId = boLRIT.getAttribute("CONTRACT_ID").toString();
String planList = boLRIT.getAttribute("PLAN_LIST").toString();
String rentPlanId = boLRIT.getAttribute("PLAN_ID").toString();
bomLRP.createQuery("update O set COLLECT_STATUS='网银收款',COLLECT_MSG='网银收款' where CONTRACT_ID=:CONTRACT_ID and PLAN_LIST=:PLAN_LIST")
.setParameter("CONTRACT_ID", contractId).setParameter("PLAN_LIST", planList).executeUpdate();
BizObject boDDI=JBOFactory.createBizObjectQuery(D_DEPOSITRETURN_INFO.CLASS_NAME,"RENT_PLAN_ID=:rentPlanId").setParameter("rentPlanId", rentPlanId).getSingleResult(false);
String sSql = "SELECT IFNULL(SUM(IFNULL(O.rent,0)),0) + IFNULL(SUM(IFNULL(O.penalty,0)),0) - IFNULL(SUM(IFNULL(O.corpus_adjust,0)),0) - IFNULL(SUM(IFNULL(O.interest_adjust,0)),0) - IFNULL(SUM(IFNULL(O.penalty_adjust,0)),0) - lrp.rent - getRentPenalty(lrp.payment_number,lrp.plan_list,DATE_FORMAT(SYSDATE(),'%Y/%m/%d')) AS flag FROM lc_rent_income O LEFT JOIN LC_RENT_PLAN lrp ON O.plan_id=lrp.id WHERE O.PLAN_ID='"+rentPlanId+"'";
String rent = boLRIT.getAttribute("rent").toString();
calc.writeBackDistributor(rentPlanId, rent, Sqlca);
//判断是否还完
String sSql = "SELECT SUM(IFNULL(O.rent,0)) + SUM(IFNULL(O.penalty,0)) + SUM(IFNULL(O.corpus_adjust,0)) + SUM(IFNULL(O.interest_adjust,0)) + SUM(IFNULL(O.penalty_adjust,0)) - lrp.rent - getRentPenalty(lrp.payment_number,lrp.plan_list,DATE_FORMAT(SYSDATE(),'%Y/%m/%d')) AS flag FROM lc_rent_income O LEFT JOIN LC_RENT_PLAN lrp ON O.plan_id=lrp.id WHERE O.PLAN_ID='"+rentPlanId+"'";
String money = Sqlca.getString(sSql);
BigDecimal balance_money = new BigDecimal(money).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("===========×â½ð²î¶îΪ£º "+money);
//有代偿记录并且本次租金已经还完
if(boDDI!=null&&(balance_money.compareTo(new BigDecimal("0"))==1||balance_money.compareTo(new BigDecimal("0"))==0)){
calc.writeBackDistributor(rentPlanId, Sqlca);
if(balance_money.compareTo(new BigDecimal("0"))==-1){
bomLRP.createQuery("update O set COLLECT_STATUS='部分收款',COLLECT_MSG='网银收款' where CONTRACT_ID=:CONTRACT_ID and PLAN_LIST=:PLAN_LIST")
.setParameter("CONTRACT_ID", contractId).setParameter("PLAN_LIST", planList).executeUpdate();
}else{
bomLRP.createQuery("update O set COLLECT_STATUS='网银收款',COLLECT_MSG='网银收款' where CONTRACT_ID=:CONTRACT_ID and PLAN_LIST=:PLAN_LIST")
.setParameter("CONTRACT_ID", contractId).setParameter("PLAN_LIST", planList).executeUpdate();
}
}
String sMessage="true";