package com.sinosoft.lis.otof; import com.sinosoft.lis.i18n.I18nMessage; import com.sinosoft.lis.db.LAWageOTOFDB; import com.sinosoft.lis.db.OfinaStorDataDB; import com.sinosoft.lis.pubfun.FDate; import com.sinosoft.lis.pubfun.GlobalInput; import com.sinosoft.lis.pubfun.MMap; import com.sinosoft.lis.pubfun.PubFun; import com.sinosoft.lis.pubfun.PubFun1; import com.sinosoft.lis.pubfun.PubSubmit; import com.sinosoft.lis.schema.LAWageOTOFSchema; import com.sinosoft.lis.schema.OfinaStorDataSchema; import com.sinosoft.lis.sql.repository.LAWageOTOFSQL; import com.sinosoft.lis.sql.otof.ReceiDataBLSQL; import com.sinosoft.lis.vschema.LAWageOTOFSet; import com.sinosoft.lis.vschema.OfinaStorDataSet; import com.sinosoft.persistence.SQLProxy; import com.sinosoft.utility.CError; import com.sinosoft.utility.CErrors; 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.Date; /** *

Title: Lis_New

* *

Description:获取应收保费和预提佣金的数据

* *

Copyright: Copyright (c) 2002

* *

Company:

* * @author Sinosoft * @version 1.0 */ public class ReceiDataBL { private static final Logger logger = LoggerFactory.getLogger(ReceiDataBL.class); public ReceiDataBL() { } /** 错误处理类,每个需要错误处理的类中都放置该类 */ public CErrors mErrors = new CErrors(); /** 往后面传输数据的容器 */ private VData mInputData; /** 数据操作字符串 */ private String mOperate; private String mToday; private String nToday; private String mWageNo; private String Money=""; private int mTime = 0; private String bDate = ""; //界面传入的提取日期 private String eDate = ""; private String mAccountingDate = ""; //界面传入的记账日期 private GlobalInput mGlobalInput = new GlobalInput(); private String mManageCom = ""; private String Serialno = ""; private String lToday = ""; private MMap map = new MMap(); private VData vd = new VData(); private ReceiDataBLSQL receiDataBLSQL = SQLProxy.getInstance(ReceiDataBLSQL.class); public boolean submitData(VData cInputData, String cOperate) { logger.debug("Begin ReceiDataBL"); mInputData = (VData) cInputData.clone(); mOperate = cOperate; try { if (!getInputData(cInputData)) { return false; } if (!checkData()) { return false; } if (mOperate.equals("Prem")) { getPremData(); } if (mOperate.equals("Commion")){ getCommissionData(); } PubSubmit tPubSubmit = new PubSubmit(); if (!tPubSubmit.submitData(vd, "")) { buildError("submitData", new I18nMessage("提交数据库失败", "LIS-12771")); return false; } } catch (Exception ex) { logger.error("程序执行异常",ex); buildError("submit", new I18nMessage("发生异常", "LIS-07391")); return false; } return true; } private boolean checkData() { if (mOperate.equals("")) { buildError("check", new I18nMessage("不支持的操作字符", "LIS-12785")); return false; } return true; } private boolean getInputData(VData cInputData) { mGlobalInput.setSchema( cInputData.get(GlobalInput.class, 0)); TransferData tTransferData = cInputData.get(TransferData.class, 0); if("Prem".equals(mOperate)) { bDate = (String) tTransferData.getValueByName("bDate"); //提取日期 eDate = (String) tTransferData.getValueByName("eDate"); //提取日期 mAccountingDate = (String) tTransferData.getValueByName("accountDate"); //记账日期 Integer itemp = (Integer) tTransferData.getValueByName("itemp"); //凭证类别 mTime = itemp.intValue(); mManageCom = (String) tTransferData.getValueByName("Managecom"); //管理机构 FDate chgdate = new FDate(); Date lDate = chgdate.getDate(PubFun.calDate(eDate, -60, "D", null));//宽限期为60日 lToday = chgdate.getString(lDate); mToday = eDate; if (mToday == null || mToday.equals("")) { buildError("getInputData", new I18nMessage("获取提取终止时间失败!", "LIS-12786")); return false; } } if("Commion".equals(mOperate)) { mWageNo = (String) tTransferData.getValueByName("tWageNo"); mAccountingDate = (String) tTransferData.getValueByName("accountDate"); //记账日期 Integer itemp = (Integer) tTransferData.getValueByName("itemp"); //凭证类别 mTime = itemp.intValue(); mManageCom = (String) tTransferData.getValueByName("Managecom"); //管理机构 } if (mGlobalInput == null) { buildError("getInputData", new I18nMessage("没有得到足够的信息!", "LIS-06912")); return false; } return true; } private boolean getPremData() { logger.debug("Begin getPremData--------"); SSRS fSSRS = receiDataBLSQL.getSumMoneyAndSaleChnlAndRiskCodeByDate(lToday,eDate); OfinaStorDataSet sOfinaStorDataSet = new OfinaStorDataSet(); for (int j = 1; j <= fSSRS.getMaxRow(); j++) { Money = new DecimalFormat("0.00").format(new Double(fSSRS.GetText(j, 1))); Serialno = PubFun1.CreateMaxNo("SerialNo", 20); OfinaStorDataSchema tOfinaStorDataSchema = new OfinaStorDataSchema(); tOfinaStorDataSchema.setSerialNo(Serialno); tOfinaStorDataSchema.setVoucherType("61"); tOfinaStorDataSchema.setTransDate(mToday); //提取期间的最后一天 tOfinaStorDataSchema.setMoney(Money); tOfinaStorDataSchema.setSaleChnl(fSSRS.GetText(j, 2)); tOfinaStorDataSchema.setRiskCode(fSSRS.GetText(j, 3)); tOfinaStorDataSchema.setManageCom(fSSRS.GetText(j, 4)); tOfinaStorDataSchema.setMakeDate(PubFun.getCurrentDate()); tOfinaStorDataSchema.setMakeTime(PubFun.getCurrentTime()); tOfinaStorDataSchema.setType("S"); //首年续期 if( isExist(tOfinaStorDataSchema)) continue; sOfinaStorDataSet.add(tOfinaStorDataSchema); } map.put(sOfinaStorDataSet, MMap.Action.INSERT); SSRS xSSRS = receiDataBLSQL.getSumMoneyAndSaleChnlAndRiskCodeByDateBigAndEquals(lToday,eDate); OfinaStorDataSet xOfinaStorDataSet = new OfinaStorDataSet(); for (int i = 1; i <= xSSRS.getMaxRow(); i++) { Money = new DecimalFormat("0.00").format(new Double(xSSRS.GetText(i, 1))); Serialno = PubFun1.CreateMaxNo("SerialNo", 20); OfinaStorDataSchema xOfinaStorDataSchema = new OfinaStorDataSchema(); xOfinaStorDataSchema.setSerialNo(Serialno); xOfinaStorDataSchema.setVoucherType("61"); xOfinaStorDataSchema.setTransDate(mToday); //提取期间的最后一天 xOfinaStorDataSchema.setMoney(Money); xOfinaStorDataSchema.setSaleChnl(xSSRS.GetText(i, 2)); xOfinaStorDataSchema.setRiskCode(xSSRS.GetText(i, 3)); xOfinaStorDataSchema.setManageCom(xSSRS.GetText(i, 4)); xOfinaStorDataSchema.setMakeDate(PubFun.getCurrentDate()); xOfinaStorDataSchema.setMakeTime(PubFun.getCurrentTime()); xOfinaStorDataSchema.setType("X"); //续年续期 if(isExist(xOfinaStorDataSchema)) continue; xOfinaStorDataSet.add(xOfinaStorDataSchema); } map.put(xOfinaStorDataSet, MMap.Action.INSERT); vd.add(map); return true; } private boolean getCommissionData() { String tCalDate[] = new String[2]; String msDate =mWageNo.substring(0, 4)+ "-"+mWageNo.substring(4,6)+"-01"; tCalDate = PubFun.calFLDate(msDate); String mStartDate = tCalDate[0]; //默认业务日期为每月1号 logger.debug("mWageNo:" + mWageNo); LAWageOTOFDB tLAWageOTOFDB = new LAWageOTOFDB(); LAWageOTOFSQL laWageOTOFSQL = SQLProxy.getInstance(LAWageOTOFSQL.class); SSRS mSSRS = laWageOTOFSQL.getDistinctManageComByIndexCalNoAndManageComLikeAndBranchType(mWageNo,mManageCom,"1"); OfinaStorDataSet wOfinaStorDataSet = new OfinaStorDataSet(); for (int k = 1; k <= mSSRS.getMaxRow(); k++) { String tManageCom = mSSRS.GetText(k, 1); //附加佣金提取 LAWageOTOFSet tLAWageOTOFSet = laWageOTOFSQL.findAllByIndexCalNoAndManageComLikeAndBranchTypeAndStateAndF25GreaterThan( mWageNo,tManageCom,"1","0",0); if (tLAWageOTOFSet.size() == 0) return true; double[] tWage; double[] tTax; String[] tWageItem; String[] tTaxItem; tWage = new double[21]; tTax = new double[3]; for (int i = 1; i <= tLAWageOTOFSet.size(); i++) { LAWageOTOFSchema tLAWageOTOFSchema = new LAWageOTOFSchema(); tLAWageOTOFSchema.setSchema(tLAWageOTOFSet.get(i)); tWage[0] = tWage[0] + tLAWageOTOFSchema.getF06(); //全勤奖金 tWage[1] = tWage[1] + tLAWageOTOFSchema.getF07(); //转正奖金 tWage[2] = tWage[2] + tLAWageOTOFSchema.getF08(); //月度销售奖 tWage[3] = tWage[3] + tLAWageOTOFSchema.getF10(); //继续率奖金 tWage[4] = tWage[4] + tLAWageOTOFSchema.getF11(); //个人突出贡献奖 tWage[5] = tWage[5] + tLAWageOTOFSchema.getF09(); //增员辅导津贴 tWage[6] = tWage[6] + tLAWageOTOFSchema.getF17(); //客户服务奖 tWage[7] = tWage[7] + tLAWageOTOFSchema.getF12(); //永续经营奖 tWage[8] = tWage[8] + tLAWageOTOFSchema.getF13(); //组职务底薪 tWage[9] = tWage[9] + tLAWageOTOFSchema.getF14(); //部职务底薪 tWage[10] = tWage[10] + tLAWageOTOFSchema.getF15(); //区职务底薪 tWage[11] = tWage[11] + tLAWageOTOFSchema.getF16(); //总监职务底薪 tWage[12] = tWage[12] + tLAWageOTOFSchema.getF22(); //衔接薪资 tWage[13] = tWage[13] + tLAWageOTOFSchema.getF30(); //加扣款1 tWage[14] = tWage[14] + tLAWageOTOFSchema.getK11(); //差惩款 tWage[15] = tWage[15] - tLAWageOTOFSchema.getK21(); //差勤扣款 tWage[16] = tWage[16] + tLAWageOTOFSchema.getLastMoney(); //上期余额 tWage[17] = tWage[17] + tLAWageOTOFSchema.getK12(); //加扣款2 tWage[18] = tWage[18] + tLAWageOTOFSchema.getF19(); //推动费加扣款 tWage[19] = tWage[19] + tLAWageOTOFSchema.getF18(); //推动费奖金加款 tWage[20] = tWage[20] + tLAWageOTOFSchema.getF21(); //加扣款7 tTax[0] = tTax[0] + tLAWageOTOFSchema.getK01(); //营业税及附加 tTax[1] = tTax[1] + tLAWageOTOFSchema.getK02(); //个人所得税 tTax[2] = tTax[2] + tLAWageOTOFSchema.getF20(); //推动费加扣款 } tWageItem = new String[21]; tTaxItem = new String[3]; tWageItem[0] = "全勤奖金"; tWageItem[1] = "转正奖"; tWageItem[2] = "月度销售奖"; tWageItem[3] = "继续率奖金"; tWageItem[4] = "个人突出贡献奖"; tWageItem[5] = "增员辅导津贴"; tWageItem[6] = "客户服务奖"; tWageItem[7] = "永续经营奖"; tWageItem[8] = "组职务底薪"; tWageItem[9] = "部职务底薪"; tWageItem[10] = "区职务底薪"; tWageItem[11] = "总监职务底薪"; tWageItem[12] = "同业衔接资金(支持薪资)"; //衔接薪资 tWageItem[13] = "加扣款"; tWageItem[14] = "奖惩款项"; tWageItem[15] = "差勤扣款"; tWageItem[16] = "业务员佣金上月余额"; //上期余额 tWageItem[17] = "同业衔接资金(加扣款2)"; tWageItem[18] = "推动费加扣款"; tWageItem[19] = "推动费奖金加款"; tWageItem[20] = "机构发展奖金(加扣款7)"; tTaxItem[0] = "代理人营业税"; tTaxItem[1] = "代理人个人所得税"; tTaxItem[2] = "推动费加扣款"; for (int j = 0; j < tWage.length; j++) { if (tWage[j] == 0) continue; Money = new DecimalFormat("0.00").format(new Double(tWage[j])); Serialno = PubFun1.CreateMaxNo("SerialNo", 20); OfinaStorDataSchema fOfinaStorDataSchema = new OfinaStorDataSchema(); fOfinaStorDataSchema.setSerialNo(Serialno); fOfinaStorDataSchema.setVoucherType("62"); fOfinaStorDataSchema.setTransDate(mStartDate); fOfinaStorDataSchema.setMoney(Money); fOfinaStorDataSchema.setManageCom(tManageCom); fOfinaStorDataSchema.setMakeDate(PubFun.getCurrentDate()); fOfinaStorDataSchema.setMakeTime(PubFun.getCurrentTime()); fOfinaStorDataSchema.setSegment1(tWageItem[j]); //附加佣金项的说明 fOfinaStorDataSchema.setSegment2(mWageNo); fOfinaStorDataSchema.setType("W"); //附加佣金 if (isExist(fOfinaStorDataSchema)) break; wOfinaStorDataSet.add(fOfinaStorDataSchema); } for (int j = 0; j < tTax.length; j++) { if (tTax[j] == 0) continue; Money = new DecimalFormat("0.00").format(new Double(tTax[j])); Serialno = PubFun1.CreateMaxNo("SerialNo", 20); OfinaStorDataSchema tOfinaStorDataSchema = new OfinaStorDataSchema(); tOfinaStorDataSchema.setSerialNo(Serialno); tOfinaStorDataSchema.setVoucherType("62"); tOfinaStorDataSchema.setTransDate(mStartDate); tOfinaStorDataSchema.setMoney(Money); tOfinaStorDataSchema.setManageCom(tManageCom); tOfinaStorDataSchema.setMakeDate(PubFun.getCurrentDate()); tOfinaStorDataSchema.setMakeTime(PubFun.getCurrentTime()); tOfinaStorDataSchema.setSegment1(tTaxItem[j]); tOfinaStorDataSchema.setSegment2(mWageNo); tOfinaStorDataSchema.setType("T"); //税款 if (isExist(tOfinaStorDataSchema)) break; wOfinaStorDataSet.add(tOfinaStorDataSchema); } } map.put(wOfinaStorDataSet, MMap.Action.INSERT); //提取直接佣金 SSRS fmSSRS = receiDataBLSQL.getDistinctSubStrManageComByWageNoAndManageComLike(mWageNo,mManageCom); OfinaStorDataSet fOfinaStorDataSet = new OfinaStorDataSet(); for (int k = 1; k <= fmSSRS.getMaxRow(); k++) { String fManageCom = fmSSRS.GetText(k, 1); SSRS fSSRS = receiDataBLSQL.getRiskCodeAndPayYearAndBranchTypeAndSumFycByManageComAndIndexcalNo(fManageCom,mWageNo,tCalDate[0],tCalDate[1]); for (int i = 1; i <= fSSRS.getMaxRow(); i++) { Money = new DecimalFormat("0.00").format(new Double(fSSRS.GetText(i,4))); Serialno = PubFun1.CreateMaxNo("SerialNo", 20); OfinaStorDataSchema fyOfinaStorDataSchema = new OfinaStorDataSchema(); fyOfinaStorDataSchema.setSerialNo(Serialno); fyOfinaStorDataSchema.setVoucherType("62"); fyOfinaStorDataSchema.setTransDate(mStartDate); fyOfinaStorDataSchema.setMoney(Money); fyOfinaStorDataSchema.setSaleChnl(fSSRS.GetText(i,3)); fyOfinaStorDataSchema.setRiskCode(fSSRS.GetText(i,1)); fyOfinaStorDataSchema.setManageCom(fManageCom); fyOfinaStorDataSchema.setMakeDate(PubFun.getCurrentDate()); fyOfinaStorDataSchema.setMakeTime(PubFun.getCurrentTime()); fyOfinaStorDataSchema.setSegment1(fSSRS.GetText(i,2)); fyOfinaStorDataSchema.setSegment2(mWageNo); fyOfinaStorDataSchema.setType("F"); //直接佣金 if (isExist(fyOfinaStorDataSchema)) break; fOfinaStorDataSet.add(fyOfinaStorDataSchema); } } map.put(fOfinaStorDataSet, MMap.Action.INSERT); vd.add(map); return true; } public void buildError(String szFunc, I18nMessage szErrMsg) { CError cr = new CError(); cr.moduleName = ""; cr.functionName = szFunc; cr.errorMessage(szErrMsg); this.mErrors.addOneError(cr); } private boolean isExist(OfinaStorDataSchema tOfinaStorDataSchema) { OfinaStorDataDB tOfinaStorDataDB = new OfinaStorDataDB(); tOfinaStorDataDB.setVoucherType(tOfinaStorDataSchema.getVoucherType()); tOfinaStorDataDB.setType(tOfinaStorDataSchema.getType()); tOfinaStorDataDB.setTransDate(tOfinaStorDataSchema.getTransDate()); tOfinaStorDataDB.setMoney(tOfinaStorDataSchema.getMoney()); tOfinaStorDataDB.setManageCom(tOfinaStorDataSchema.getManageCom()); if(!(tOfinaStorDataSchema.getSaleChnl()==null || tOfinaStorDataSchema.getSaleChnl().equals(""))) { tOfinaStorDataDB.setSaleChnl(tOfinaStorDataSchema.getSaleChnl()); } if(!(tOfinaStorDataSchema.getRiskCode()==null || tOfinaStorDataSchema.getRiskCode().equals(""))) { tOfinaStorDataDB.setRiskCode(tOfinaStorDataSchema.getRiskCode()); } if(!(tOfinaStorDataSchema.getSegment1()==null || tOfinaStorDataSchema.getSegment1().equals(""))) { tOfinaStorDataDB.setSegment1(tOfinaStorDataSchema.getSegment1()); } if(!(tOfinaStorDataSchema.getSegment2()==null || tOfinaStorDataSchema.getSegment2().equals(""))) { tOfinaStorDataDB.setSegment2(tOfinaStorDataSchema.getSegment2()); } if(tOfinaStorDataDB.getCount()>0) return true; return false; } }