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 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; } }