154 lines
4.8 KiB
Java
154 lines
4.8 KiB
Java
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+"重复!");
|
||
}
|
||
}
|
||
}
|