You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

566 lines
27 KiB

package com.sinosoft.lis.customer;
import com.sinosoft.lis.db.LCContDB;
import com.sinosoft.lis.db.LCPolDB;
import com.sinosoft.lis.db.LPEdorItemDB;
import com.sinosoft.lis.db.LPGrpEdorItemDB;
import com.sinosoft.lis.i18n.I18nMessage;
import com.sinosoft.lis.pubfun.MMap;
import com.sinosoft.lis.pubfun.PubFun;
import com.sinosoft.lis.pubfun.PubFun1;
import com.sinosoft.lis.schema.FICustomerAccSchema;
import com.sinosoft.lis.schema.FICustomerAccTraceSchema;
import com.sinosoft.lis.schema.LCContSchema;
import com.sinosoft.lis.schema.LCPolSchema;
import com.sinosoft.lis.schema.LJTempFeeClassSchema;
import com.sinosoft.lis.schema.LJTempFeeSchema;
import com.sinosoft.lis.sql.repository.FICustomerAccTraceSQL;
import com.sinosoft.lis.sql.repository.LCPolSQL;
import com.sinosoft.lis.vschema.FICustomerAccSet;
import com.sinosoft.lis.vschema.FICustomerAccTraceSet;
import com.sinosoft.lis.vschema.LCContSet;
import com.sinosoft.lis.vschema.LCPolSet;
import com.sinosoft.lis.vschema.LJTempFeeClassSet;
import com.sinosoft.lis.vschema.LJTempFeeSet;
import com.sinosoft.lis.vschema.LPEdorItemSet;
import com.sinosoft.lis.vschema.LPGrpEdorItemSet;
import com.sinosoft.persistence.SQLProxy;
import com.sinosoft.utility.SSRS;
import com.sinosoft.utility.TransferData;
import com.sinosoft.utility.VData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
public class FICustomerRN extends FICustomer
{
private static final Logger logger = LoggerFactory.getLogger(FICustomerRN.class);
private TransferData mTransferData = new TransferData();
private LJTempFeeSet mLJTempFeeSet = new LJTempFeeSet();
private LJTempFeeClassSet mLJTempFeeClassSet = new LJTempFeeClassSet();
private String mOperationType = "";
private String mOperator = "";
private double mSumPrem =0.0;
private double mSumDuePayMoney = 0.0;
private String mCurrency = "";
private String tempNo = "";
public boolean getInputData(VData cInputData)
{
this.mTransferData = cInputData.get(TransferData.class, 0);
this.mLJTempFeeSet.set(cInputData.get(LJTempFeeSet.class, 0));
this.mLJTempFeeClassSet.set(cInputData.get(LJTempFeeClassSet.class, 0));
this.mOperationType = String.valueOf(mTransferData.getValueByName("OperationType"));
this.mOperator= String.valueOf(mTransferData.getValueByName("Operator"));
this.mSumDuePayMoney = (Double) ((mTransferData.getValueByName("SumDuePayMoney")));
return true;
}
protected boolean dealData()
{
try
{
DecimalFormat df = new DecimalFormat("0.00");
//需要获取币种
this.mCurrency = (String)mTransferData.getValueByName("Currency");
double sumMoney = 0.0;
String aAccType = "0";// 普通账户
String aOperationNo = "";
String aOperationType = mOperationType;
// 根据不同的业务类型获取合同号
// 新单交费
if ("1".equals(mLJTempFeeSet.get(1).getTempFeeType()))
{
LCContDB tLCContDB = new LCContDB();
tLCContDB.setPrtNo(mLJTempFeeSet.get(1).getOtherNo());
LCContSet tLCContSet = tLCContDB.query();
LCContSchema tLCContSchema = tLCContSet.get(1);
if (tLCContSet == null || tLCContSet.size() < 1)
{
return false;
}
else
{
aOperationNo = tLCContSchema.getContNo();
aOperationType = "1";
}
}
// 续期催收交费//预交续期保费
else if ("2".equals(mLJTempFeeSet.get(1).getTempFeeType())
|| "3".equals(mLJTempFeeSet.get(1).getTempFeeType()))
{
LCContDB tLCContDB = new LCContDB();
tLCContDB.setContNo(mLJTempFeeSet.get(1).getOtherNo());
LCContSet tLCContSet = tLCContDB.query();
LCContSchema tLCContSchema = tLCContSet.get(1);
if (tLCContSet == null || tLCContSet.size() < 1)
{
return false;
}
else
{
aOperationNo = tLCContSchema.getContNo();
aOperationType = "2";
}
}
// 保全交费
else if ("4".equals(mLJTempFeeSet.get(1).getTempFeeType()))
{
LPEdorItemDB tLPEdorItemDB = new LPEdorItemDB();
tLPEdorItemDB.setEdorAcceptNo(mLJTempFeeSet.get(1).getOtherNo());
LPEdorItemSet tLPEdorItemSet = tLPEdorItemDB.query();
//LPEdorItemSchema tLPEdorItemSchema = tLPEdorItemSet.get(1);
LPGrpEdorItemSet tLPGrpEdorItemSet=new LPGrpEdorItemSet();
LPGrpEdorItemDB tLPGrpEdorItemDB= new LPGrpEdorItemDB();
tLPGrpEdorItemDB.setEdorAcceptNo(mLJTempFeeSet.get(1).getOtherNo());
tLPGrpEdorItemSet=tLPGrpEdorItemDB.query();
if ((tLPEdorItemSet == null || tLPEdorItemSet.size() < 1)&&(tLPGrpEdorItemSet == null || tLPGrpEdorItemSet.size() < 1))
{
return false;
}
else
{
aOperationNo = mLJTempFeeSet.get(1).getOtherNo();
aOperationType = "3";
}
}
// 应付转入或者溢交的时候,取mOperationType
else if ("7".equals(mLJTempFeeSet.get(1).getTempFeeType())
|| "8".equals(mLJTempFeeSet.get(1).getTempFeeType()))
{
aOperationNo = mLJTempFeeSet.get(1).getOtherNo();
aOperationType = mOperationType;
}
// 理赔收费
// if ("5".equals(mLJTempFeeSet.get(1).getTempFeeType()))
// {}
else
{
//理赔是4
aOperationNo = mLJTempFeeSet.get(1).getOtherNo();
aOperationType = "4";
}
for (int i = 1; i <= mLJTempFeeSet.size(); i++)
{
if(mLJTempFeeSet.get(i).getCurrency().equals(this.mCurrency))
{
sumMoney += mLJTempFeeSet.get(i).getPayMoney();
}
}
//TODO add by wangguowei 2018年5月7日 增加对余额的判断,如果余额大于应缴保费也会生成预交续期保费
double tYET=0.0;
FICustomer tFICustomer = new FICustomerRN();
tYET = tFICustomer.queryAccount(mLJTempFeeSet.get(1).getOtherNo(), "2",mLJTempFeeSet.get(1).getCurrency());
if(mOperationType.equals("2")&& tYET>=sumMoney
)
{
// //余额使用,需要模拟生成暂收据
// LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
// tLJTempFeeSchema = (LJTempFeeSchema) mLJTempFeeSet.get(1).clone();
// String tLimit = PubFun.getNoLimit(tLJTempFeeSchema.getManageCom());
// tempNo = PubFun1.CreateMaxNo("GETNOTICENO", tLimit);
// tLJTempFeeSchema.setTempFeeNo(tempNo);// 临时生成暂交费号
// tLJTempFeeSchema.setEnterAccDate(PubFun.getCurrentDate());
// String tempfeetype = "10";//余额使用
//
// double tYEShouleUseMoney = (Double)this.mTransferData.getValueByName("YEShouleUseMoney");
// String tGetNoticeNo = (String)this.mTransferData.getValueByName("GetNoticeNo");
//
// tLJTempFeeSchema.setRiskCode("MMP");//增加险种
// tLJTempFeeSchema.setTempFeeType(tempfeetype);// 交费余额
// tLJTempFeeSchema.setPayMoney(PubFun.round(tYEShouleUseMoney,2));
// tLJTempFeeSchema.setOtherNoType("0");// 交费对应的个单合同号
// tLJTempFeeSchema.setOtherNo(aOperationNo);
// tLJTempFeeSchema.setConfDate(PubFun.getCurrentDate());
// tLJTempFeeSchema.setConfFlag("1");
// tLJTempFeeSchema.setConfMakeDate(PubFun.getCurrentDate());
// tLJTempFeeSchema.setConfMakeTime(PubFun.getCurrentTime());
// tLJTempFeeSchema.setCurrency(mCurrency);
// tLJTempFeeSchema.setOperator("001");
// tLJTempFeeSchema.setMakeDate(PubFun.getCurrentDate());
// tLJTempFeeSchema.setMakeTime(PubFun.getCurrentTime());
// tLJTempFeeSchema.setModifyDate(PubFun.getCurrentDate());
// tLJTempFeeSchema.setModifyTime(PubFun.getCurrentTime());
//
//
// super.mMap.put(tLJTempFeeSchema, MMap.Action.INSERT);
// // 余额重新生成ljtempfeeclass
// LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
//// tLJTempFeeClassSchema = (LJTempFeeClassSchema) mLJTempFeeClassSet.get(1).clone();
// tLJTempFeeClassSchema.setTempFeeNo(tempNo);// 临时生成暂交费号
// tLJTempFeeClassSchema.setPayMoney(tYEShouleUseMoney);
// tLJTempFeeClassSchema.setEnterAccDate(PubFun.getCurrentDate());
// tLJTempFeeClassSchema.setOtherNoType(mOperationType);// 重新指定用途
// tLJTempFeeClassSchema.setConfFlag("1");
// tLJTempFeeClassSchema.setConfDate(PubFun.getCurrentDate());
// tLJTempFeeClassSchema.setConfMakeDate(PubFun.getCurrentDate());
// tLJTempFeeClassSchema.setConfMakeTime(PubFun.getCurrentTime());
// tLJTempFeeClassSchema.setPayMoney(PubFun.round(tYEShouleUseMoney,2));
// tLJTempFeeClassSchema.setOtherNo(tGetNoticeNo); //其他号码记录缴费号
// tLJTempFeeClassSchema.setPayMode("M");
// tLJTempFeeClassSchema.setCurrency(mCurrency);
// tLJTempFeeClassSchema.setOperator("001");
// tLJTempFeeClassSchema.setMakeDate(PubFun.getCurrentDate());
// tLJTempFeeClassSchema.setMakeTime(PubFun.getCurrentTime());
// tLJTempFeeClassSchema.setModifyDate(PubFun.getCurrentDate());
// tLJTempFeeClassSchema.setModifyTime(PubFun.getCurrentTime());
// tLJTempFeeClassSchema.setChequeNo(tempNo);
// super.mMap.put(tLJTempFeeClassSchema, MMap.Action.INSERT);
//add by zhangyf 2017-09-26 按照续期银行反盘格式生成咱缴费
double mPrem = 0.0;
String tCurrentDate=PubFun.getCurrentDate();
String tCurrentTime=PubFun.getCurrentTime();
String tPayMode="4";
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
LCContDB tLCContDB = new LCContDB();
tLCContDB.setContNo(mLJTempFeeSet.get(1).getOtherNo());
LCContSet tLCContSet = tLCContDB.query();
LCContSchema tLCContSchema = tLCContSet.get(1);
LCPolDB tLCPolDB=new LCPolDB();
LCPolSet tLCPolSet=new LCPolSet();
LCPolSchema tLCPolSchema = new LCPolSchema();
tLCPolDB.setContNo(mLJTempFeeSet.get(1).getOtherNo());
tLCPolDB.setAppFlag("1");
tLCPolSet.set(tLCPolDB.query());
if(tLCPolSet.size()<=0){
return false;
}
String tLimit = PubFun.getNoLimit(tLCPolSet.get(1).getManageCom()); // 产生通知书号即暂交费收据号
String tTempFeeNo = PubFun1.CreateMaxNo("GETNOTICENO", tLimit); //tempfeeno
String serNo = PubFun1.CreateMaxNo("SERIALNO",tLimit); // 流水号
String tPayno = tTempFeeNo;
// for (int i = 1; i <= tLCPolSet.size(); i++) {
// tLCPolSchema = new LCPolSchema();
// tLCPolSchema = tLCPolSet.get(i);
// tLJTempFeeSchema = new LJTempFeeSchema();
// tLJTempFeeSchema.setOtherNo(tLCPolSchema.getContNo()); // 投保单号
// tLJTempFeeSchema.setTempFeeType("2");
// tLJTempFeeSchema.setOtherNoType("0");
// tLJTempFeeSchema.setRiskCode(tLCPolSchema.getRiskCode());
// tLJTempFeeSchema.setPayIntv(tLCPolSchema.getPayIntv());
// tLJTempFeeSchema.setPayYears(tLCPolSchema.getPayYears());
// tLJTempFeeSchema.setPayMoney(tLCPolSchema.getPrem());
// tLJTempFeeSchema.setPayDate(tCurrentDate);
// tLJTempFeeSchema.setSaleChnl(tLCPolSchema.getSaleChnl());
// tLJTempFeeSchema.setManageCom(tLCPolSchema.getManageCom());
// tLJTempFeeSchema.setPolicyCom(tLCPolSchema.getManageCom());
// tLJTempFeeSchema.setAPPntName(tLCPolSchema.getAppntName());
// tLJTempFeeSchema.setAgentCom(tLCPolSchema.getAgentCom());
// tLJTempFeeSchema.setAgentGroup(tLCPolSchema.getAgentGroup());
// tLJTempFeeSchema.setAgentCode(tLCPolSchema.getAgentCode());
// tLJTempFeeSchema.setConfFlag("1");
// tLJTempFeeSchema.setOperator(mOperator);
// tLJTempFeeSchema.setContCom(tLCPolSchema.getManageCom());
// tLJTempFeeSchema.setTempFeeNo(tTempFeeNo);
// tLJTempFeeSchema.setMakeDate(tCurrentDate);
// tLJTempFeeSchema.setMakeTime(tCurrentTime);
// tLJTempFeeSchema.setModifyDate(tCurrentDate);
// tLJTempFeeSchema.setModifyTime(tCurrentTime);
// tLJTempFeeSchema.setEnterAccDate(tCurrentDate);
// tLJTempFeeSchema.setConfMakeDate(tCurrentDate);
// tLJTempFeeSchema.setConfMakeTime(tCurrentTime);
// tLJTempFeeSchema.setConfDate(tCurrentDate);
// tLJTempFeeSchema.setSerialNo(serNo);
// tLJTempFeeSchema.setCurrency("01");
// mSumPrem += tLCPolSchema.getPrem();
// super.mMap.put(tLJTempFeeSchema, MMap.Action.INSERT);
// }
//add by lyx 查询保单下有效险种数
LCPolSQL lcPolSQL = SQLProxy.getInstance(LCPolSQL.class);
SSRS nSSRS = new SSRS();
nSSRS = lcPolSQL.getDistinctRiskCodeByContNoAndAppFlag(mLJTempFeeSet.get(1).getOtherNo(),"1");
if(nSSRS.getMaxRow()<=0){
return false;
}
String mRiskcode = "";
double mRiskPrem = 0.00;
for (int k = 1; k <= nSSRS.getMaxRow(); k++) {
mRiskcode = nSSRS.GetText(k, 1);
mRiskPrem= 0.00;
LCPolDB tempLCPolDB=new LCPolDB();
LCPolSet tempLCPolSet=new LCPolSet();
LCPolSchema tempLCPolSchema = new LCPolSchema();
tempLCPolDB.setContNo(mLJTempFeeSet.get(1).getOtherNo());
tempLCPolDB.setAppFlag("1");
tempLCPolDB.setRiskCode(mRiskcode);
tempLCPolSet.set(tempLCPolDB.query());
for(int j = 1; j <= tempLCPolSet.size(); j++){
tempLCPolSchema = new LCPolSchema();
tempLCPolSchema = tempLCPolSet.get(j);
mSumPrem += tempLCPolSchema.getPrem();
mRiskPrem+= tempLCPolSchema.getPrem();
}
tempLCPolSchema = tempLCPolSet.get(1);
tLJTempFeeSchema = new LJTempFeeSchema();
tLJTempFeeSchema.setOtherNo(tempLCPolSchema.getContNo()); // 投保单号
tLJTempFeeSchema.setTempFeeType("2");
tLJTempFeeSchema.setOtherNoType("0");
tLJTempFeeSchema.setRiskCode(tempLCPolSchema.getRiskCode());
tLJTempFeeSchema.setPayIntv(tempLCPolSchema.getPayIntv());
tLJTempFeeSchema.setPayYears(tempLCPolSchema.getPayYears());
tLJTempFeeSchema.setPayMoney(mRiskPrem);
tLJTempFeeSchema.setPayDate(tCurrentDate);
tLJTempFeeSchema.setSaleChnl(tempLCPolSchema.getSaleChnl());
tLJTempFeeSchema.setManageCom(tempLCPolSchema.getManageCom());
tLJTempFeeSchema.setPolicyCom(tempLCPolSchema.getManageCom());
tLJTempFeeSchema.setAPPntName(tempLCPolSchema.getAppntName());
tLJTempFeeSchema.setAgentCom(tempLCPolSchema.getAgentCom());
tLJTempFeeSchema.setAgentGroup(tempLCPolSchema.getAgentGroup());
tLJTempFeeSchema.setAgentCode(tempLCPolSchema.getAgentCode());
tLJTempFeeSchema.setConfFlag("1");
tLJTempFeeSchema.setOperator(mOperator);
tLJTempFeeSchema.setContCom(tempLCPolSchema.getManageCom());
tLJTempFeeSchema.setTempFeeNo(tTempFeeNo);
tLJTempFeeSchema.setMakeDate(tCurrentDate);
tLJTempFeeSchema.setMakeTime(tCurrentTime);
tLJTempFeeSchema.setModifyDate(tCurrentDate);
tLJTempFeeSchema.setModifyTime(tCurrentTime);
tLJTempFeeSchema.setEnterAccDate(tCurrentDate);
tLJTempFeeSchema.setConfMakeDate(tCurrentDate);
tLJTempFeeSchema.setConfMakeTime(tCurrentTime);
tLJTempFeeSchema.setConfDate(tCurrentDate);
tLJTempFeeSchema.setSerialNo(serNo);
tLJTempFeeSchema.setCurrency("01");
super.mMap.put(tLJTempFeeSchema, MMap.Action.INSERT);
}
tLCPolSchema = tLCPolSet.get(1);
tLJTempFeeClassSchema = new LJTempFeeClassSchema();
tLJTempFeeClassSchema.setTempFeeNo(tTempFeeNo);
tLJTempFeeClassSchema.setPayMode(tPayMode);//银行转账
tLJTempFeeClassSchema.setChequeNo("000000");
//判断应缴费金额与保单总金额是否相等
logger.debug("印刷号"+tLCPolSchema.getPrtNo()+"支付金额:mMoney="+mSumDuePayMoney+"保费金额:mSumPrem="+mSumPrem);
tLJTempFeeClassSchema.setPayMoney(mSumDuePayMoney);
tLJTempFeeClassSchema.setAppntName(tLCPolSchema.getAppntName());
tLJTempFeeClassSchema.setPayDate(tCurrentDate);
tLJTempFeeClassSchema.setConfFlag("1");
tLJTempFeeClassSchema.setManageCom(tLCPolSchema.getManageCom());
tLJTempFeeClassSchema.setPolicyCom(tLCPolSchema.getManageCom());
tLJTempFeeClassSchema.setOperator(mOperator);
tLJTempFeeClassSchema.setContCom(tLCPolSchema.getManageCom());
tLJTempFeeClassSchema.setBankCode(tLCContSchema.getBankCode());
tLJTempFeeClassSchema.setBankAccNo(tLCContSchema.getBankAccNo());
tLJTempFeeClassSchema.setAccName(tLCContSchema.getAccName());
tLJTempFeeClassSchema.setMakeDate(tCurrentDate);
tLJTempFeeClassSchema.setMakeTime(tCurrentTime);
tLJTempFeeClassSchema.setModifyDate(tCurrentDate);
tLJTempFeeClassSchema.setModifyTime(tCurrentTime);
tLJTempFeeClassSchema.setCurrency("01");
tLJTempFeeClassSchema.setOtherNo(tLCPolSchema.getContNo());// 投保单号 add by liushasha 2017-09-22 添加账户信息中有判断
tLJTempFeeClassSchema.setOtherNoType("0");// add by liushasha 2017-09-22
tLJTempFeeClassSchema.setEnterAccDate(tCurrentDate);
tLJTempFeeClassSchema.setConfMakeDate(tCurrentDate);
tLJTempFeeClassSchema.setConfMakeTime(tCurrentTime);
tLJTempFeeClassSchema.setConfDate(tCurrentDate);
tLJTempFeeClassSchema.setSerialNo(serNo);
super.mMap.put(tLJTempFeeClassSchema, MMap.Action.INSERT);
}
// if(mOperationType.equals("2"))
// {
// //余额使用,需要模拟生成暂收据
// LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
// tLJTempFeeSchema = (LJTempFeeSchema) mLJTempFeeSet.get(1).clone();
// String tLimit = PubFun.getNoLimit(tLJTempFeeSchema.getManageCom());
// tempNo = "TS" + PubFun1.CreateMaxNo("GETNOTICENO", tLimit);
// tLJTempFeeSchema.setTempFeeNo(tempNo);// 临时生成暂交费号
// tLJTempFeeSchema.setEnterAccDate(PubFun.getCurrentDate());
// String tempfeetype = "10";//余额使用
//
// double tYEShouleUseMoney = (Double)this.mTransferData.getValueByName("YEShouleUseMoney");
// String tGetNoticeNo = (String)this.mTransferData.getValueByName("GetNoticeNo");
//
// tLJTempFeeSchema.setTempFeeType(tempfeetype);// 交费余额
// tLJTempFeeSchema.setPayMoney(PubFun.round(tYEShouleUseMoney,2));
// tLJTempFeeSchema.setOtherNoType("0");// 交费对应的个单合同号
// tLJTempFeeSchema.setOtherNo(aOperationNo);
// tLJTempFeeSchema.setConfDate(PubFun.getCurrentDate());
// tLJTempFeeSchema.setConfFlag("1");
// tLJTempFeeSchema.setConfMakeDate(PubFun.getCurrentDate());
// tLJTempFeeSchema.setConfMakeTime(PubFun.getCurrentTime());
// tLJTempFeeSchema.setCurrency(mCurrency);
//
// super.mMap.put(tLJTempFeeSchema, MMap.Action.INSERT);
// // 余额重新生成ljtempfeeclass
// LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
// tLJTempFeeClassSchema = (LJTempFeeClassSchema) mLJTempFeeClassSet.get(1).clone();
// tLJTempFeeClassSchema.setTempFeeNo(tempNo);// 临时生成暂交费号
// tLJTempFeeClassSchema.setPayMoney(tYEShouleUseMoney);
// tLJTempFeeClassSchema.setEnterAccDate(PubFun.getCurrentDate());
// tLJTempFeeClassSchema.setOtherNoType(mOperationType);// 重新指定用途
// tLJTempFeeClassSchema.setConfFlag("1");
// tLJTempFeeClassSchema.setConfDate(PubFun.getCurrentDate());
// tLJTempFeeClassSchema.setConfMakeDate(PubFun.getCurrentDate());
// tLJTempFeeClassSchema.setConfMakeTime(PubFun.getCurrentTime());
// tLJTempFeeClassSchema.setPayMoney(PubFun.round(tYEShouleUseMoney,2));
// tLJTempFeeClassSchema.setOtherNo(tGetNoticeNo); //其他号码记录缴费号
// tLJTempFeeClassSchema.setPayMode("M");
// tLJTempFeeClassSchema.setCurrency(mCurrency);
// super.mMap.put(tLJTempFeeClassSchema, MMap.Action.INSERT);
// }
// 余额重新生成ljtempfee ?
//对于续期,不会有这种情况
if (sumMoney > mSumDuePayMoney)
{
LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
tLJTempFeeSchema = (LJTempFeeSchema) mLJTempFeeSet.get(1).clone();
String tLimit = PubFun.getNoLimit(tLJTempFeeSchema.getManageCom());
tempNo = "TS" + PubFun1.CreateMaxNo("GETNOTICENO", tLimit);
tLJTempFeeSchema.setTempFeeNo(tempNo);// 临时生成暂交费号
tLJTempFeeSchema.setEnterAccDate(PubFun.getCurrentDate());
String tempfeetype = mOperationType;
if (tempfeetype.equals("2"))
{
tempfeetype = "3";
}
else if (tempfeetype.equals("3"))
{
tempfeetype = "4";
}
else if (tempfeetype.equals("4"))
{
tempfeetype = "5";
}
tLJTempFeeSchema.setTempFeeType(tempfeetype);// 交费余额
tLJTempFeeSchema.setOtherNoType(mOperationType);// 重新指定用途
tLJTempFeeSchema.setConfDate("");
tLJTempFeeSchema.setConfFlag("0");
tLJTempFeeSchema.setPayMoney(df.format(sumMoney - mSumDuePayMoney));
super.mMap.put(tLJTempFeeSchema, MMap.Action.INSERT);
// 余额重新生成ljtempfeeclass
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
tLJTempFeeClassSchema = (LJTempFeeClassSchema) mLJTempFeeClassSet.get(1).clone();
tLJTempFeeClassSchema.setTempFeeNo(tempNo);// 临时生成暂交费号
tLJTempFeeClassSchema.setEnterAccDate(PubFun.getCurrentDate());
tLJTempFeeClassSchema.setOtherNoType(mOperationType);// 重新指定用途
tLJTempFeeClassSchema.setConfDate("");
tLJTempFeeClassSchema.setConfFlag("0");
tLJTempFeeClassSchema.setPayMoney(df.format(sumMoney - mSumDuePayMoney));
tLJTempFeeClassSchema.setPayMode("M");
tLJTempFeeClassSchema.setCurrency(mCurrency);
super.mMap.put(tLJTempFeeClassSchema, MMap.Action.INSERT);
}
// 客户账户表减去核销金额
//需要 按照币种获取客户账户
FICustomerAccSet tFICustomerAccSet = queryAccountAcc(aAccType, aOperationNo, aOperationType,this.mCurrency);
if (tFICustomerAccSet.size() > 0)
{
FICustomerAccSchema tFICustomerAccSchema = new FICustomerAccSchema();
tFICustomerAccSchema = tFICustomerAccSet.get(1);
tFICustomerAccSchema.setSummoney(PubFun.round((tFICustomerAccSet.get(1).getSummoney() - mSumDuePayMoney),2));
tFICustomerAccSchema.setModifyDate(PubFun.getCurrentDate());
tFICustomerAccSchema.setModifyTime(PubFun.getCurrentTime());
super.mMap.put(tFICustomerAccSchema, MMap.Action.UPDATE);
}
// 客户账户轨迹表按照金额从小到大核销金额
double useedmoney = 0.0;
FICustomerAccTraceSQL fiCustomerAccTraceSQL = SQLProxy.getInstance(FICustomerAccTraceSQL.class);
ArrayList<String> state = new ArrayList<>(Arrays.asList("00","03"));
FICustomerAccTraceSet tFICustomerAccTraceSet = fiCustomerAccTraceSQL.findAllByOperationNoAndOperationTypeAndStateInAndCurrencyOrderByMoney(aOperationNo,aOperationType,state,this.mCurrency);
if (tFICustomerAccTraceSet.size() > 0)
{
for (int i = 1; i <= tFICustomerAccTraceSet.size(); i++)
{
if (useedmoney < mSumDuePayMoney)
{
FICustomerAccTraceSchema tFICustomerAccTraceSchema = new FICustomerAccTraceSchema();
tFICustomerAccTraceSchema = tFICustomerAccTraceSet.get(i);
tFICustomerAccTraceSchema.setConfDate(PubFun.getCurrentDate());
tFICustomerAccTraceSchema.setConfTime(PubFun.getCurrentTime());
tFICustomerAccTraceSchema.setModifyDate(PubFun.getCurrentDate());
tFICustomerAccTraceSchema.setModifyTime(PubFun.getCurrentTime());
tFICustomerAccTraceSchema.setState("01");// 核销
super.mMap.put(tFICustomerAccTraceSchema, MMap.Action.UPDATE);
FICustomerAccTraceSchema cFICustomerAccTraceSchema = new FICustomerAccTraceSchema();
String Sequence = PubFun1.CreateMaxNo("FISEQUENCE", "66");
cFICustomerAccTraceSchema = (FICustomerAccTraceSchema) tFICustomerAccTraceSchema.clone();
cFICustomerAccTraceSchema.setSequence(Sequence);
cFICustomerAccTraceSchema.setDCFlag("C");
cFICustomerAccTraceSchema.setOperType("4");// 业务使用
if (useedmoney + cFICustomerAccTraceSchema.getMoney() > mSumDuePayMoney)
{
cFICustomerAccTraceSchema.setMoney(df.format(mSumDuePayMoney - useedmoney));
FICustomerAccTraceSchema ccFICustomerAccTraceSchema = new FICustomerAccTraceSchema();
Sequence = PubFun1.CreateMaxNo("FISEQUENCE", "66");
ccFICustomerAccTraceSchema = (FICustomerAccTraceSchema) cFICustomerAccTraceSchema.clone();
ccFICustomerAccTraceSchema.setSequence(Sequence);
ccFICustomerAccTraceSchema.setMoney(df.format(useedmoney
+ tFICustomerAccTraceSchema.getMoney() - mSumDuePayMoney));
ccFICustomerAccTraceSchema.setOtherNo(tempNo);
ccFICustomerAccTraceSchema.setOperType("7");// 重新指定
ccFICustomerAccTraceSchema.setMakeDate(PubFun.getCurrentDate());
ccFICustomerAccTraceSchema.setMakeTime(PubFun.getCurrentTime());
ccFICustomerAccTraceSchema.setModifyDate(PubFun.getCurrentDate());
ccFICustomerAccTraceSchema.setModifyTime(PubFun.getCurrentTime());
super.mMap.put(ccFICustomerAccTraceSchema, MMap.Action.INSERT);
// 领取时再到页面操作,这里只后台生成客户账户领取类型
// if (mOperationType.equals("5"))
// {
// // 生成应付数据
// }
// else
// {
FICustomerAccTraceSchema dFICustomerAccTraceSchema = new FICustomerAccTraceSchema();
Sequence = PubFun1.CreateMaxNo("FISEQUENCE", "66");
dFICustomerAccTraceSchema = (FICustomerAccTraceSchema) ccFICustomerAccTraceSchema.clone();
dFICustomerAccTraceSchema.setSequence(Sequence);
dFICustomerAccTraceSchema.setOperationType(mOperationType);
dFICustomerAccTraceSchema.setDCFlag("D");
dFICustomerAccTraceSchema.setState("00");
dFICustomerAccTraceSchema.setConfDate("");
dFICustomerAccTraceSchema.setConfTime("");
dFICustomerAccTraceSchema.setMakeDate(PubFun.getCurrentDate());
dFICustomerAccTraceSchema.setMakeTime(PubFun.getCurrentTime());
dFICustomerAccTraceSchema.setModifyDate(PubFun.getCurrentDate());
dFICustomerAccTraceSchema.setModifyTime(PubFun.getCurrentTime());
super.mMap.put(dFICustomerAccTraceSchema, MMap.Action.INSERT);
// }
}
cFICustomerAccTraceSchema.setMakeDate(PubFun.getCurrentDate());
cFICustomerAccTraceSchema.setMakeTime(PubFun.getCurrentTime());
cFICustomerAccTraceSchema.setModifyDate(PubFun.getCurrentDate());
cFICustomerAccTraceSchema.setModifyTime(PubFun.getCurrentTime());
super.mMap.put(cFICustomerAccTraceSchema, MMap.Action.INSERT);
useedmoney += tFICustomerAccTraceSchema.getMoney();
}
}
}
}
catch (Exception ex)
{
buildError("FICustomerFI", "dealdata", new I18nMessage( "", null));
return false;
}
return true;
}
}