apzl_leasing/src_tenwa/com/tenwa/apzl/discount/DiscountCallBack.java
2019-04-09 10:37:21 +08:00

154 lines
4.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

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

package com.tenwa.apzl.discount;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jbo.app.tenwa.calc.LC_EBANK;
import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO;
import jbo.voucher.LB_DISCOUNT;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.jbo.JBOTransaction;
import com.amarsoft.awe.util.Transaction;
import com.amarsoft.context.ASUser;
import com.tenwa.comm.exception.BusinessException;
import com.tenwa.officetempalte.importcallback.impl.BaseImportExcelCallBack;
public class DiscountCallBack extends BaseImportExcelCallBack{
@Override
public void run(ASUser CurUser, BizObject importObject,Map<String, String> model, Integer rowIndex, JBOTransaction tx,Transaction Sqlca) throws Exception {
// 设置默认导入日期
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//设置日期格式
importObject.setAttributeValue("INPUTTIME",df.format(new Date()));
}
/**
* 贴息导入校验
*/
@Override
public void runBefore(ASUser CurUser, Map<String, String> model, List<BizObject> importObjects, JBOTransaction tx,Transaction Sqlca) throws Exception {
// 错误描述
String error="";
// 用于判断是否错
boolean flag = false;
/**
* 获取网银信息, 并将网银编号及可核销金额存入map集合
*/
// 存储网银可核销金额
Map<String,Double> Ebank_Map =new HashMap<String,Double>();
List<BizObject> list=JBOFactory.createBizObjectQuery(LC_EBANK.CLASS_NAME,null).getResultList(false);
for(int i=0;i<list.size();i++) {
Ebank_Map.put(list.get(i).getAttribute("EBANK_SN").getString(),Double.parseDouble(list.get(i).getAttribute("MAYOPE_MONEY").getString()));
}
/**
* 校验网银编号是否正确
*/
// 存储本次导入的所有不重复网银
for(BizObject bo:importObjects){
// 获取本次导入网银编号
String ebankSn = bo.getAttribute("EBAND_NO").getString();
if(!Ebank_Map.containsKey(ebankSn)){
error+=",【"+ebankSn+"";
flag=true;
}
}
if(flag) {
error = error.substring(1);
throw new BusinessException("网银: "+error+"不存在!");
}
/**
* 校验网银可核销金额是否大于等于贴息金额
*/
// 用于存放本次同一个网银的贴息金额
Map<String, Double> map= new HashMap<String, Double>();
// 存放本次导入唯一网银流水号
List<String> DisCountEbandList = new ArrayList<String>();
for(BizObject bo:importObjects){
// 获取本次导入的网银编号
String ebankSn = bo.getAttribute("EBAND_NO").getString();
// 没有新新增, 有就把贴息金额相加, 没有就直接存
double DISCOUNT_MONEY=Double.parseDouble(bo.getAttribute("DISCOUNT_MONEY").getString());
if(!DisCountEbandList.contains(ebankSn)) {
DisCountEbandList.add(ebankSn);
map.put(ebankSn, DISCOUNT_MONEY);
}else {
Double old_money = map.get(ebankSn);
map.put(ebankSn, old_money+=DISCOUNT_MONEY);
}
}
// 判断网银金额是否大于等于贴息金额
for(String ss : DisCountEbandList) {
double Ebank_money = Ebank_Map.get(ss);
double DISCOUNT_MONEY =map.get(ss);
if(DISCOUNT_MONEY>Ebank_money) {
error+=",【"+ss+"";
flag=true;
}
}
if(flag) {
error = error.substring(1);
throw new BusinessException("网银:"+error+"可核销金额小于贴息金额 ");
}
/**
* 将业务合同号增加到集合中
*/
// 用于校验合同号是否存在
List<String> contractNo = new ArrayList<String>();
// 经所有业务合同号存入集合
List<BizObject> ConList=JBOFactory.createBizObjectQuery(LB_CONTRACT_INFO.CLASS_NAME,null).getResultList(false);
for(int i=0;i<ConList.size();i++) {
contractNo.add(ConList.get(i).getAttribute("CONTRACT_NUMBER").getString());
}
/**
* 校验合同号是否存在
*/
for(BizObject bo:importObjects){
String CONTRACT_NO = bo.getAttribute("CONTRACT_NO").getString();
if(!contractNo.contains(CONTRACT_NO)){
error+=",【"+CONTRACT_NO+"";
flag=true;
}
}
if(flag) {
error = error.substring(1);
throw new BusinessException("合同号:"+error+"不存在!");
}
/**
* 校验合同号是否重复
*/
// 用于校验合同号是否重复
List<String> DcontractNo = new ArrayList<String>();
List<BizObject>DiscountList=JBOFactory.createBizObjectQuery(LB_DISCOUNT.CLASS_NAME,null).getResultList(false);
// 将贴息已有的合同号存入集合
for(int i=0;i<DiscountList.size();i++) {
DcontractNo.add(DiscountList.get(i).getAttribute("CONTRACT_NO").getString());
}
for(BizObject bo:importObjects){
String CONTRACT_NO = bo.getAttribute("CONTRACT_NO").getString();
if(!DcontractNo.contains(CONTRACT_NO)){
DcontractNo.add(CONTRACT_NO);
}else {
error+=",【"+CONTRACT_NO+"";
flag=true;
}
}
if(flag) {
error = error.substring(1);
throw new BusinessException("合同号:"+error+"重复!");
}
}
}