package com.sinosoft.lis.bq; import com.sinosoft.lis.db.LPInsuAccRateDB; import com.sinosoft.lis.db.LPMInsuAccRateDB; import com.sinosoft.lis.i18n.I18nMessage; import com.sinosoft.lis.pubfun.GlobalInput; import com.sinosoft.lis.pubfun.MMap; import com.sinosoft.lis.pubfun.PubFun; import com.sinosoft.lis.schema.LCInsuAccRateSchema; import com.sinosoft.lis.schema.LMInsuAccRateSchema; import com.sinosoft.lis.schema.LPInsuAccRateSchema; import com.sinosoft.lis.schema.LPMInsuAccRateSchema; import com.sinosoft.lis.sql.InsuAccRateCheckBLSQL; import com.sinosoft.lis.vschema.LCInsuAccRateSet; import com.sinosoft.lis.vschema.LPInsuAccRateSet; import com.sinosoft.persistence.SQLProxy; import com.sinosoft.utility.*; public class InsuAccRateCheckBL { /** 错误处理类,每个需要错误处理的类中都放置该类 */ public CErrors mErrors = new CErrors(); /** 往后面传输数据的容器 */ private VData mInputData = new VData(); /** 数据操作字符串 */ private VData mResult = new VData(); private MMap mMap = new MMap(); private GlobalInput mGlobalInput = new GlobalInput(); private Reflections tRef = new Reflections(); /**全局变量*/ private String mOperator; private String mEdorNo; private String mEdorNo1; /** 利率类型 1-结算利率,2-分红利率,3-终止分红利率 */ private String mFlag; private String mFlag1; /** 特殊类型 1-正常,2-特殊 */ private String mBonusType; private String mBonusType1; /** 复核操作 1-复核确认,4-复核终止 */ private String mOperateFlag; private String mFiscalYear; private String mFiscalYear1; private String mEdorType; private String mBalaDate; private String mGrpContNo; private String mInsuAccNo; private LPMInsuAccRateSchema mLPMInsuAccRateSchema = new LPMInsuAccRateSchema(); private LPMInsuAccRateSchema tLPMInsuAccRateSchema = new LPMInsuAccRateSchema(); private LPMInsuAccRateDB tLPMInsuAccRateDB = new LPMInsuAccRateDB(); private LPInsuAccRateSchema mLPInsuAccRateSchema = new LPInsuAccRateSchema(); private LPInsuAccRateSchema tLPInsuAccRateSchema = new LPInsuAccRateSchema(); private LPInsuAccRateSchema xLPInsuAccRateSchema = new LPInsuAccRateSchema(); private LPInsuAccRateDB tLPInsuAccRateDB = new LPInsuAccRateDB(); private LPInsuAccRateSet tLPInsuAccRateSet = new LPInsuAccRateSet(); private LPInsuAccRateSet mLPInsuAccRateSet = new LPInsuAccRateSet(); //特殊保单利率设定 private LPInsuAccRateSet sLPInsuAccRateSet = new LPInsuAccRateSet(); InsuAccRateCheckBLSQL insuAccRateCheckBLSQL = SQLProxy.getInstance(InsuAccRateCheckBLSQL.class); public boolean submitData(VData cInputData, String cOperate) { mInputData = (VData) cInputData.clone(); // mOperate = cOperate; if (!getInputData()) { return false; } if (!checkData()) { return false; } if (!dealData()) { return false; } if (!prepareOutputData()) { return false; } return true; } private boolean getInputData() { TransferData tTransferData = new TransferData(); mGlobalInput = mInputData.get(GlobalInput.class, 0); tTransferData = mInputData.get(TransferData.class, 0); if (tTransferData == null || tTransferData.equals("")) { buildError("getInputData", new I18nMessage("没有传入数据!", "LIS-07251")); return false; } mOperator = mGlobalInput.Operator; mOperateFlag = (String) tTransferData.getValueByName("OperateFlag"); mFlag = (String) tTransferData.getValueByName("SetType"); mFlag1 = (String) tTransferData.getValueByName("SetType1"); mBonusType = (String) tTransferData.getValueByName("BonusType"); mBonusType1 = (String) tTransferData.getValueByName("BonusType1"); mFiscalYear = (String) tTransferData.getValueByName("fiscalyear00"); mFiscalYear1 = (String) tTransferData.getValueByName("fiscalyear001"); mEdorNo = (String) tTransferData.getValueByName("EdorNo"); mEdorNo1 = (String) tTransferData.getValueByName("EdorNo1"); mEdorType = (String) tTransferData.getValueByName("EdorType"); mBalaDate = (String) tTransferData.getValueByName("BalaDate"); mGrpContNo =(String) tTransferData.getValueByName("GrpContNo"); if(!("all".equals(mOperateFlag))&&!("allc".equals(mOperateFlag))){ if(mBonusType.equals("1")) { tLPMInsuAccRateSchema = mInputData.get(LPMInsuAccRateSchema.class, 0); tLPMInsuAccRateDB.setSchema(tLPMInsuAccRateSchema); if(!tLPMInsuAccRateDB.getInfo()) { buildError("getInputData", new I18nMessage("查询记录信息失败!", "LIS-B-000026")); return false; } else { mLPMInsuAccRateSchema = tLPMInsuAccRateDB.getSchema(); } } else if(mBonusType.equals("2")&&!"1".equals(mFiscalYear)) { tLPInsuAccRateSchema = mInputData.get(LPInsuAccRateSchema.class, 0); tLPInsuAccRateSchema.setAccSerNo("01");//富泽多账户功能增加AccSerNo主键,因此只能暂时这样处理了 tLPInsuAccRateDB.setSchema(tLPInsuAccRateSchema); if(!tLPInsuAccRateDB.getInfo()) { buildError("getInputData", new I18nMessage("查询记录信息失败!", "LIS-B-000026")); return false; } else { mLPInsuAccRateSchema = tLPInsuAccRateDB.getSchema(); } } else{ if(mEdorNo==null||"".equals(mEdorNo)){ buildError("getInputData", new I18nMessage("任务号码未传入!", "LIS-B-000058")); return false; } } }else{ if("2".equals(mBonusType1)&&!"1".equals(mFiscalYear1)) { tLPInsuAccRateSchema = mInputData.get(LPInsuAccRateSchema.class, 0); tLPInsuAccRateSchema.setAccSerNo("01");//富泽多账户功能增加AccSerNo主键,因此只能暂时这样处理了 tLPInsuAccRateDB.setAccSerNo(tLPInsuAccRateSchema.getAccSerNo()); tLPInsuAccRateDB.setEdorNo(tLPInsuAccRateSchema.getEdorNo()); tLPInsuAccRateDB.setEdorType(tLPInsuAccRateSchema.getEdorType()); tLPInsuAccRateDB.setApproveFlag(tLPInsuAccRateSchema.getApproveFlag()); tLPInsuAccRateDB.setFiscalYear(tLPInsuAccRateSchema.getFiscalYear()); mLPInsuAccRateSet=tLPInsuAccRateDB.query(); } else{ if(mEdorNo1==null||"".equals(mEdorNo1)){ buildError("getInputData", new I18nMessage("任务号码未传入!", "LIS-B-000058")); return false; } } } return true; } private boolean checkData() { if(mFlag.equals("2")) { String CurYear = PubFun.getCurrentDate().substring(0, 4); String FisCalYear = Integer.toString((int) mLPMInsuAccRateSchema.getFiscalYear()); if(CurYear.equals(FisCalYear)) { buildError("checkData", new I18nMessage("分红年度不能为当前年度,请确认后重新操作!", "LIS-B-000059")); return false; } } //add by qn 团险多主险需求----特殊-保单的结算利率,需要校验所有险种都要设定利率 if("1".equals(mFlag)&&"2".equals(mBonusType)&&!"1".equals(mFiscalYear)) { //险种 SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.findGrpContNo(mGrpContNo); String tPolCount = new ExeSQL().getOneValue(tSQL); SQLwithBindVariables pSQL = insuAccRateCheckBLSQL.findGrpContNoandBalaDate(mGrpContNo,mBalaDate); LPInsuAccRateDB aLPInsuAccRateDB = new LPInsuAccRateDB(); sLPInsuAccRateSet =aLPInsuAccRateDB.executeQuery(pSQL); if("1".equals(mOperateFlag)){ if(Integer.parseInt(tPolCount)!=sLPInsuAccRateSet.size()){ buildError("checkData", new I18nMessage("设定特殊利率的保单包含多个险种,请设定该保单全部险种!", "LIS-B-000060")); return false; } } } if("1".equals(mFlag1)&&"2".equals(mBonusType1)&&!"1".equals(mFiscalYear1)) { if(mLPInsuAccRateSet!=null&&mLPInsuAccRateSet.size()>0){ for(int i=1;i<=mLPInsuAccRateSet.size();i++){ xLPInsuAccRateSchema=mLPInsuAccRateSet.get(i); //险种 mGrpContNo=xLPInsuAccRateSchema.getGrpContNo(); mBalaDate=xLPInsuAccRateSchema.getBalaDate(); SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.findGrpContNo(mGrpContNo); String tPolCount = new ExeSQL().getOneValue(tSQL); SQLwithBindVariables pSQL = insuAccRateCheckBLSQL.findGrpContNoandBalaDate(mGrpContNo,mBalaDate); LPInsuAccRateDB aLPInsuAccRateDB = new LPInsuAccRateDB(); sLPInsuAccRateSet =aLPInsuAccRateDB.executeQuery(pSQL); if("all".equals(mOperateFlag)){ if(Integer.parseInt(tPolCount)!=sLPInsuAccRateSet.size()){ buildError("checkData", new I18nMessage("设定特殊利率的保单包含多个险种,请设定该保单全部险种!", "LIS-B-000060")); return false; } } } } } return true; } private boolean dealData() { if("1".equals(mFiscalYear)) { SQLwithBindVariables mSQL = insuAccRateCheckBLSQL.findbaladate(mBalaDate); // 忽略特殊利率保单 edit by gaoph String check = new ExeSQL().getOneValue(mSQL); if(check.equals("")||check == null) { SQLwithBindVariables querySQL = insuAccRateCheckBLSQL.findEdorNoandFlagandFiscalYear(mEdorNo,mFlag,mFiscalYear); RSWrapper rsWrapper = new RSWrapper(); if (!rsWrapper.prepareData(tLPInsuAccRateSet, querySQL)) { buildError("dealData", new I18nMessage("查询任务信息出错!", "LIS-B-000061")); return false; } do { rsWrapper.getData(); tDealData(tLPInsuAccRateSet); } while(tLPInsuAccRateSet != null && tLPInsuAccRateSet.size() > 0); rsWrapper.close(); return true; } else { buildError("dealData", new I18nMessage("已有设定,不可以再次设定!", "LIS-B-000025")); return false; } } else{ if(mOperateFlag.equals("1")) { if(mEdorType.equals("01")) { SQLwithBindVariables ocSQL = insuAccRateCheckBLSQL.updatelcinsuaccrate(PubFun.getCurrentDate(),PubFun.getCurrentTime(),tLPInsuAccRateSchema.getGrpPolNo(),tLPInsuAccRateSchema.getInsuAccNo(),tLPInsuAccRateSchema.getFlag(),tLPInsuAccRateSchema.getFiscalYear(),tLPInsuAccRateSchema.getBalaDate(),tLPInsuAccRateSchema.getRateIntv()); SQLwithBindVariables opSQL = insuAccRateCheckBLSQL.updateEdorNo(mLPInsuAccRateSchema.getEdorNo(),PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator); //add by qn 团险多主险需求----特殊-保单的结算利率,审核其中一个险种,该保单所有险种都可以审批通过 SQLwithBindVariables opsSQL= null; if(sLPInsuAccRateSet.size()>1){ opsSQL = insuAccRateCheckBLSQL.updateGrpContNoandBalaDate(mGrpContNo,mBalaDate,PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator); } mMap.put(ocSQL, MMap.Action.UPDATE); mMap.put(opSQL,MMap.Action.UPDATE); mMap.put(opsSQL,MMap.Action.UPDATE); } else{ SQLwithBindVariables SQL = null; ExeSQL tExeSQL = new ExeSQL(); if (mBonusType.equals("1")) { if(mFlag.equals("2")) { SQL= insuAccRateCheckBLSQL.findFiscalYearandRiskcode(mLPMInsuAccRateSchema.getFiscalYear(),mLPMInsuAccRateSchema.getRiskCode()); } else if(mFlag.equals("3")) { SQL= insuAccRateCheckBLSQL.findBalaDateandRiskCode(mLPMInsuAccRateSchema.getBalaDate(),mLPMInsuAccRateSchema.getRiskCode()); } else { SQL= insuAccRateCheckBLSQL.findBalaDateandriskcode(mLPMInsuAccRateSchema.getBalaDate(),mLPMInsuAccRateSchema.getRiskCode()); } String tFlag = tExeSQL.getOneValue(SQL); if( !(tFlag == null || tFlag == "")) { buildError("dealData", new I18nMessage("已有设定,不可以再次设定!", "LIS-B-000025")); return false; } LMInsuAccRateSchema tLMInsuAccRateSchema = new LMInsuAccRateSchema(); tRef.transFields(tLMInsuAccRateSchema, mLPMInsuAccRateSchema); tLMInsuAccRateSchema.setARateDate(mLPMInsuAccRateSchema.getBalaDate()); tLMInsuAccRateSchema.setSRateDate(mLPMInsuAccRateSchema.getBalaDate()); tLMInsuAccRateSchema.setApproveCode(mOperator); tLMInsuAccRateSchema.setMakeDate(PubFun.getCurrentDate()); tLMInsuAccRateSchema.setMakeTime(PubFun.getCurrentTime()); mMap.put(tLMInsuAccRateSchema, MMap.Action.DELETE_INSERT); SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updateedorno(mLPMInsuAccRateSchema.getEdorNo(),PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator); mMap.put(tSQL, MMap.Action.UPDATE); } else if(mBonusType.equals("2")) { SQLwithBindVariables mSQL = null; if(mFlag.equals("2")) { SQL = insuAccRateCheckBLSQL.findFiscalYearandGrpContNo(mLPInsuAccRateSchema.getFiscalYear(),mLPInsuAccRateSchema.getGrpContNo()); } else if(mFlag.equals("3")) { SQL = insuAccRateCheckBLSQL.findBalaDateandGrpContNo(mLPInsuAccRateSchema.getBalaDate(),mLPInsuAccRateSchema.getGrpContNo()); } else { SQL = insuAccRateCheckBLSQL.findBalaDateandGrpContNoandInsuAccNo(mLPInsuAccRateSchema.getBalaDate(),mLPInsuAccRateSchema.getGrpContNo(),mLPInsuAccRateSchema.getInsuAccNo()); } String tFlag = tExeSQL.getOneValue(SQL); if( !(tFlag == null || tFlag == "")) { buildError("dealData", new I18nMessage("已有设定,不可以再次设定!", "LIS-B-000025")); return false; } //add by qn 团险多主险需求----特殊-保单的结算利率,审核其中一个险种,该保单所有险种都可以审批通过 if(sLPInsuAccRateSet.size()>1){ LCInsuAccRateSet tLCInsuAccRateSet = new LCInsuAccRateSet(); for(int k=1;k<=sLPInsuAccRateSet.size();k++){ LCInsuAccRateSchema tLCInsuAccRateSchema = new LCInsuAccRateSchema(); tRef.transFields(tLCInsuAccRateSchema, sLPInsuAccRateSet.get(k)); tLCInsuAccRateSchema.setARateDate(mLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setSRateDate(mLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setApproveCode(mOperator); tLCInsuAccRateSchema.setAccserNo(mLPInsuAccRateSchema.getAccSerNo()); tLCInsuAccRateSchema.setMakeDate(PubFun.getCurrentDate()); tLCInsuAccRateSchema.setMakeTime(PubFun.getCurrentTime()); tLCInsuAccRateSet.add(tLCInsuAccRateSchema); } mMap.put(tLCInsuAccRateSet, MMap.Action.DELETE_INSERT); SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updategrpContNoandBalaDate(mGrpContNo,mBalaDate,PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator); mMap.put(tSQL, MMap.Action.UPDATE); }else{ LCInsuAccRateSchema tLCInsuAccRateSchema = new LCInsuAccRateSchema(); tRef.transFields(tLCInsuAccRateSchema, mLPInsuAccRateSchema); tLCInsuAccRateSchema.setARateDate(mLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setSRateDate(mLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setApproveCode(mOperator); tLCInsuAccRateSchema.setAccserNo(mLPInsuAccRateSchema.getAccSerNo()); tLCInsuAccRateSchema.setMakeDate(PubFun.getCurrentDate()); tLCInsuAccRateSchema.setMakeTime(PubFun.getCurrentTime()); mMap.put(tLCInsuAccRateSchema, MMap.Action.DELETE_INSERT); SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updateedorNo(mLPInsuAccRateSchema.getEdorNo(),PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator); mMap.put(tSQL, MMap.Action.UPDATE); } // } } }} else if(mOperateFlag.equals("all")) { ExeSQL tExeSQL = new ExeSQL(); if(mBonusType1.equals("2")) { if(mLPInsuAccRateSet!=null&&mLPInsuAccRateSet.size()>0){ for(int i=1;i<=mLPInsuAccRateSet.size();i++){ xLPInsuAccRateSchema=mLPInsuAccRateSet.get(i); mGrpContNo=xLPInsuAccRateSchema.getGrpContNo(); mBalaDate=xLPInsuAccRateSchema.getBalaDate(); mInsuAccNo=xLPInsuAccRateSchema.getInsuAccNo(); SQLwithBindVariables SQL = insuAccRateCheckBLSQL.findBalaDateandgrpcontnoandinsuaccno(mBalaDate,mGrpContNo,mInsuAccNo); String tFlag = tExeSQL.getOneValue(SQL); if( !(tFlag == null || tFlag == "")) { buildError("dealData", new I18nMessage("已有设定,不可以再次设定!", "LIS-B-000025")); return false; } LCInsuAccRateSchema tLCInsuAccRateSchema = new LCInsuAccRateSchema(); tRef.transFields(tLCInsuAccRateSchema, xLPInsuAccRateSchema); tLCInsuAccRateSchema.setARateDate(xLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setSRateDate(xLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setAccserNo(xLPInsuAccRateSchema.getAccSerNo()); tLCInsuAccRateSchema.setApproveCode(mOperator); tLCInsuAccRateSchema.setMakeDate(xLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setMakeTime(PubFun.getCurrentTime()); mMap.put(tLCInsuAccRateSchema, MMap.Action.DELETE_INSERT); SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updatexEdorNo(xLPInsuAccRateSchema.getEdorNo(),PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator); mMap.put(tSQL, MMap.Action.UPDATE); // } } } } } else if(mOperateFlag.equals("allc")) { if(mBonusType1.equals("2")) { if(mLPInsuAccRateSet!=null&&mLPInsuAccRateSet.size()>0){ for(int i=1;i<=mLPInsuAccRateSet.size();i++){ xLPInsuAccRateSchema=mLPInsuAccRateSet.get(i); SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updatemaketimeandOperatorandEdorNo(PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator,xLPInsuAccRateSchema.getEdorNo()); mMap.put(tSQL, MMap.Action.UPDATE); } } } } else { if(mBonusType.equals("1")) { SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updatemakedateandmaketimeandOperatorandedorno(PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator,mLPMInsuAccRateSchema.getEdorNo()); mMap.put(tSQL,MMap.Action.UPDATE); } else { //add by qn 团险多主险需求----特殊-保单的结算利率,审核其中一个险种,该保单所有险种都可以审批拒绝 if(sLPInsuAccRateSet.size()>1){ SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updatemakedateandmaketimeandoperatorandgrpcontnoandbaladate(PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator,mGrpContNo,mBalaDate); mMap.put(tSQL,MMap.Action.UPDATE); }else{ SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updatemakedateandmaketimeandoperatorandedorno(PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator,mLPInsuAccRateSchema.getEdorNo()); mMap.put(tSQL,MMap.Action.UPDATE); } } } } return true; } private boolean tDealData(LPInsuAccRateSet tLPInsuAccRateSet) { if(mOperateFlag.equals("1")) { for(int i=1;i<=tLPInsuAccRateSet.size();i++) { LPInsuAccRateSchema oLPInsuAccRateSchema = new LPInsuAccRateSchema(); oLPInsuAccRateSchema = tLPInsuAccRateSet.get(i).getSchema(); SQLwithBindVariables mSQL= insuAccRateCheckBLSQL.findBalaDateandInsuaccnoandGrpcontno(oLPInsuAccRateSchema.getBalaDate(),oLPInsuAccRateSchema.getInsuAccNo(),oLPInsuAccRateSchema.getGrpContNo()); String nullflag = new ExeSQL().getOneValue(mSQL); if(nullflag.equals("")||nullflag == null) { LCInsuAccRateSchema tLCInsuAccRateSchema = new LCInsuAccRateSchema(); tRef.transFields(tLCInsuAccRateSchema, oLPInsuAccRateSchema); tLCInsuAccRateSchema.setARateDate(oLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setSRateDate(oLPInsuAccRateSchema.getBalaDate()); tLCInsuAccRateSchema.setApproveCode(mOperator); tLCInsuAccRateSchema.setAccserNo(oLPInsuAccRateSchema.getAccSerNo()); tLCInsuAccRateSchema.setMakeDate(PubFun.getCurrentDate()); tLCInsuAccRateSchema.setMakeTime(PubFun.getCurrentTime()); mMap.put(tLCInsuAccRateSchema, MMap.Action.DELETE_INSERT); } } } SQLwithBindVariables tSQL = insuAccRateCheckBLSQL.updateOperateFlagandEdorNo(mOperateFlag,mEdorNo,PubFun.getCurrentDate(),PubFun.getCurrentTime(),mOperator); mMap.put(tSQL, MMap.Action.UPDATE); return true; } private boolean prepareOutputData() { mResult.clear(); mResult.add(mMap); return true; } /** * 错误构造方法 * @param tFunctionName * @param tErrorMessage */ private void buildError(String tFunctionName, I18nMessage tErrorMessage) { CError tCError = new CError(); tCError.moduleName = this.getClass().getSimpleName(); tCError.functionName = tFunctionName; tCError.errorMessage(tErrorMessage); mErrors.addOneError(tCError); } public VData getResult() { return mResult; } public CErrors getErrors() { return mErrors; } }