两个方法做的同样的工作,那种写法更好一些?有没有更好的写法呢?
private String sixOperaBaseChk(String code,String status,String[]modelId,String account)throws Exception{
// 0 失败 1 成功 2 基本型利润率不达标 3基本型利润率未维护 4 plm编码未返回 6 ddp利润率未维护
TargetSetDAO_S daos = new TargetSetDAO_S();
TargetSetDAO dao = new TargetSetDAO();
String msg = "3";
FeeRatioVO vo = daos.baseInTarget(code, true);
if(vo!=null&&!"".equals(vo.getFeeValue())){
BigDecimal bt = new BigDecimal(vo.getFeeValue());
List<ProjItemDetialVO> ls = dao.checkModelVerson(modelId, status);
if (ls.size() == 0){
boolean tp = true;
if ("3".equals(status)||"2".equals(status)){
ls = dao.chkPlmIsNull(modelId);
tp = ls.size() > 0 ? false : true;
}
if (tp){
boolean ratioChk = true;
for(int i=0;i<modelId.length;i++){
String basePlan = daos.sixOperaInPlan(modelId[i]);
BigDecimal bp = new BigDecimal(basePlan);
if(bp.compareTo(bt)==-1){
ratioChk = false;
msg = "2";
}
}
if(ratioChk){
int flag = dao.toFina(status,modelId,account);
msg = flag + "";
}
}
else{
msg = "4";
}
}else{
msg = "";
for (ProjItemDetialVO pidv : ls){
msg += "[" + pidv.getModelName() + "]";
}
}
}
return msg;
}
----------------------------
private String sixOperaBaseChk(String code,String status,String[]modelId,String account)throws Exception{
// 0 失败 1 成功 2 基本型利润率不达标 3基本型利润率未维护 4 plm编码未返回 6 ddp利润率未维护
//检查基本型目标利润率是否维护
DefFeeRatioDAO defRatioDao = new DefFeeRatioDAO();
List<BrandVO> brands = defRatioDao.getProjectBrands(code);
Map<String,FeeRatioVO> baseRatioTarget = defRatioDao.getBaseRatioTarget(code, brands, true);
for(BrandVO vo:brands){
FeeRatioVO feeRatio = baseRatioTarget.get(vo.getToBrand());
if(feeRatio == null || "".equals(feeRatio.getFeeValue())){
return "3";
}
}
//检查型号是否都保存过
TargetSetDAO dao = new TargetSetDAO();
List<ProjItemDetialVO> ls = dao.checkModelVerson(modelId, status);
if(ls.size()>0){
String msg = "";
for (ProjItemDetialVO pidv : ls){
msg += "[" + pidv.getModelName() + "]";
}
return msg;
}
//检查PLM编码是否回传
if ("3".equals(status)||"2".equals(status)){
ls = dao.chkPlmIsNull(modelId);
if(ls.size()>0){
return "4";
}
}
//基本型利润率闸口
for(int i=0;i<modelId.length;i++){
ProjItemDetialVO vo = defRatioDao.getModelBaseRatioPlan(modelId[i]);
BigDecimal ratioTarget = new BigDecimal(baseRatioTarget.get(modelId[i]).getFeeValue());
BigDecimal modelRatioPlan = new BigDecimal("0");
if(vo!=null){
ProgramService ps = new ProgramService();
modelRatioPlan = new BigDecimal(ps.div(vo.getProfit(), vo.getIncome(), 4));
}
if(modelRatioPlan.compareTo(ratioTarget)==-1){
return "2";
}
}
return String.valueOf(dao.toFina(status,modelId,account));
}