「已注销」 2012-01-11 13:28
浏览 252
已采纳

代码规范 那种更好一些?

两个方法做的同样的工作,那种写法更好一些?有没有更好的写法呢?

 

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

 

 

  • 写回答

5条回答 默认 最新

  • gulufather 2012-01-12 09:44
    关注

    用设计模式进行优化 此代码不好维护 职责链模式可供参考

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误