当前位置:网站首页 / Java代码 / 正文

开发规范 笔记

时间:2018年05月31日 | 作者 : admin | 分类 : Java代码 | 浏览: 458次 | 评论 0

1.数据库逻辑删除字


实用情况规范
1. 状态 status,state :正常为1,删除为0

2.是否删除 isdelete,deleteflag:正常为0,删除为1

   规范:统一使用 status

2.逻辑书写,不能用uuid判断

问题示例:(摘自项目LogisticsContractController.java)

public void zHBizhong(PageData pageData) {
    String currency_id = pageData.getString("CURRENCY_ID");
    if ("29d7486615054227ad5eb69e9d09766f".equals(currency_id)) {
        pageData.put("CURRENCY_NAME_DAN", "元");
        pageData.put("CURRENCY_NAME_DAN_FU", "¥");
    } else if ("8c159cd5c42245e7bb4572a03b3a9f13".equals(currency_id)) {
        pageData.put("CURRENCY_NAME_DAN", "美元");
        pageData.put("CURRENCY_NAME_DAN_FU", "$");
    } else if ("50f4af1c1eb24af9ac33d3bc8e3ef2f4".equals(currency_id)) {
        pageData.put("CURRENCY_NAME_DAN", "港元");
        pageData.put("CURRENCY_NAME_DAN_FU", "HK$");
    } else if ("af225d94d1024a8e96710eb22873c65a".equals(currency_id)) {
        pageData.put("CURRENCY_NAME_DAN", "蒙图");
        pageData.put("CURRENCY_NAME_DAN_FU", "₮");
    }
}

规范:使用编码判断,代码中不能出现使用uuid判断(前后端代码)

正确写法:

public void zHBizhong(PageData pageData) {
    String currency_id = pageData.getString("CURRENCY_ID");
    PageData currencyMap = new PageData();
    List<PageData> currencylist = null;//从数据库查询出来的
    //如果currencylist不从数据库取得,直接从静态类组装currencyMap,免去for循环
    for(PageData currency:currencylist){
        currencyMap.put(currency.getString("CURRENCY_ID"),currency);
    }
    PageData usedCurrency = (PageData)currencyMap.get(currency_id);
    if(usedCurrency == null){
        usedCurrency = new PageData();
        usedCurrency.put("CURRENCY_NAME_DAN", "元");
        usedCurrency.put("CURRENCY_NAME_DAN_FU", "¥");
    }
    String[] fields = {"CURRENCY_NAME_DAN","CURRENCY_NAME_DAN_FU"};
    for(String field:fields){
        pageData.put(field,usedCurrency.getString(field));
    }
    /*如果字段不多,不需要组装循环,如下
    pageData.put("CURRENCY_NAME_DAN",usedCurrency.getString("CURRENCY_NAME_DAN"));
    pageData.put("CURRENCY_NAME_DAN_FU", usedCurrency.getString("CURRENCY_NAME_DAN_FU"));*/
}

3.循化方法内查询次数过多


问题示例: (摘自项目LogisticsContractController.java  list方法)

// 因为 每个  物流合同 要关联可能会关联好几个  采购合同, 每个采购合同会关联好几煤种
for (PageData pageData : list) {
    //获得当前合同绑定  上传文件
    List<PageData> listDown = logisticsContractAttachmentService.findById(pageData);
    List<PageData> AttachmentList = attachment(listDown, pageData, "1");
    List<PageData> AttachmentList_Z = attachment(listDown, pageData, "2");
    //时间格式化
    pageData.put("SIGN_DATE", ExamineUtils.getTimeStr((Date) pageData.get("SIGN_DATE"), "yyyy.MM.dd"));
    pageData.put("EXPIRY_DATE", ExamineUtils.getTimeStr((Date) pageData.get("EXPIRY_DATE"), "yyyy.MM.dd"));
    //单价
    List<PageData> priceType = logisticsContractService.findByWlNo(pageData);
    List<PageData> priceWlList = logisticsContractService.findByWlList(pageData);
    if (priceType.size() > 0) {
        pageData.put("TRANSPORT_PRICE", priceType.get(0).get("TRANSPORT_PRICE"));
        pageData.put("REMARK", priceType.get(0).get("REMARK"));
        pageData.put("EFFECTIVE_DATE_PRICE", ExamineUtils.getTimeStr((Date) priceType.get(0).get("EFFECTIVE_DATE"), "yyyy-MM-dd"));
        pageData.put("CURRENCY_NAME", priceType.get(0).get("CURRENCY_NAME"));
        pageData.put("CURRENCY_ID", priceType.get(0).get("CURRENCY_ID"));
        String currency_id = pageData.getString("CURRENCY_ID");
        if ("29d7486615054227ad5eb69e9d09766f".equals(currency_id)) {
            pageData.put("CURRENCY_NAME_DAN", "元");
            pageData.put("CURRENCY_NAME_DAN_FU", "¥");
        } else if ("8c159cd5c42245e7bb4572a03b3a9f13".equals(currency_id)) {

            pageData.put("CURRENCY_NAME_DAN", "美元");
            pageData.put("CURRENCY_NAME_DAN_FU", "$");
        } else if ("50f4af1c1eb24af9ac33d3bc8e3ef2f4".equals(currency_id)) {
            pageData.put("CURRENCY_NAME_DAN", "港元");
            pageData.put("CURRENCY_NAME_DAN_FU", "HK$");
        } else if ("af225d94d1024a8e96710eb22873c65a".equals(currency_id)) {
            pageData.put("CURRENCY_NAME_DAN", "蒙图");
            pageData.put("CURRENCY_NAME_DAN_FU", "₮");
        }
    }
    //物流跟新上传   新代码
    List<PageData> wAndClist =   logisticsContractService.findByIdToCaiGouAndCoalChange(pageData);
    pageData.put("wAndClist", wAndClist);
    //应付总金额    等于物流合同单价,乘到货*
    //获取已付金额
    PageData pricePay = logisticsContractPaymentService.findByIdToPay(pageData);
    if (pricePay != null) {
        pageData.put("PAY_MOUNT", pricePay.get("PAY_MOUNT"));
    } else {
        pageData.put("PAY_MOUNT", 0.0);
    }
    //如果当前  物流合同  没有关联采购合同 不需要一下操作
    // 列表:已发货为准,到货为准,     应付金额,根据物流合同  结算依据,如果结算依据是 以到货为准,则应付金额是  物流单价,乘到货数量,如果,是已发货为准,乘 发货数量
    if (wAndClist.size() > 0) {
        int contract_count = 1;
        //应付总金额
        Double PAY_TOTAL_MOUNT = 0.0;
        for (PageData wclist : wAndClist) {
            //获得 单个煤种 发货多少吨
            String contractCount = wclist.getString("CONTRACT_COUNT");
            if (contractCount.equals("无固定数量")) {
                wclist.put("CONTRACT_COUNT", "--");
                contractCount = " ";
            }
            //判断总吨数是否为零 如果为零默认是 煤种来自物流合同
            if (("0").equals(contractCount)) {
                //0 是物流合同是无固定数量
                if(("0").equals(pageData.getString("TOTAL_FLAG"))){
                    wclist.put("CONTRACT_COUNT", pageData.getString("TOTAL"));
                }else{
                    wclist.put("CONTRACT_COUNT", "--");
                }
            }
            String contract_id = wclist.getString("CONTRACT_ID");
            PageData coalSumF = logisticsTransportationDetailsService.searchCoalIdAndCaiIdFaChange(wclist);
            if (coalSumF != null) {
                wclist.put("SENDING_SUM", coalSumF.get("SENDING_SUM"));
            }
            // 根据 采购合同id和煤种id 查询对应的 到货数量
            PageData coalSum = logisticsTransportationDetailsService.searchCoalIdAndCaiIdChange(wclist);
            if (coalSum != null) {
                wclist.put("RECEIVE_SUM", coalSum.get("RECEIVE_SUM"));
            }
            //已到货为准
            if (pageData.getString("TAKE_RULE").equals("bdf2787221a541f980e8be1e8a8aecd9")) {
                //获得当前 物流合同 这个煤种的 所有到货数距
                List<PageData> dlist = logisticsTransportationDetailsService.searchDaoList(wclist);
                PageData data = rePrice_sum(dlist, priceWlList);
                Double yingPrice = 0.0;
                PAY_TOTAL_MOUNT +=  Double.valueOf(data.getString("priceSum"));
                wclist.put("yingPrice", data.getString("priceSum"));
            } else {
                //获得当前 物流合同 这个煤种的 所有发货数距
                List<PageData> flist = logisticsTransportationDetailsService.searchFaList(wclist);
                PageData data = rePrice_sum(flist, priceWlList);
                Double yingPrice = 0.0;
                PAY_TOTAL_MOUNT +=  Double.valueOf(data.getString("priceSum"));
                wclist.put("yingPrice", data.getString("priceSum"));
            }
        }
        //如果关联 采购合同 煤种选择的是 无固定数量,  则选择  显示--
        if (PAY_TOTAL_MOUNT == 0) {
            //应付总金额
            pageData.put("PAY_TOTAL_MOUNT", "--");
            //未付金额(Double) pageData.get("PAY_MOUNT")
            pageData.put("OUTSTANDING_MOUNT", "--");
        } else {
            //应付总金额
            pageData.put("PAY_TOTAL_MOUNT", PAY_TOTAL_MOUNT);
            //未付金额(Double) pageData.get("PAY_MOUNT")
            pageData.put("OUTSTANDING_MOUNT", (double) pageData.get("PAY_TOTAL_MOUNT") - (double) pageData.get("PAY_MOUNT"));
        }
    }
}

书写思路:

     针对for循环内需要多次查询数据库操作,在for循环外直接取好生成map,在for循环内部,使用map映射

简单示例:

//此方法与上面示例无关
public void changeData(List<PageData> list,List<PageData> coalList,List<PageData> priceList){
    //假设list为条件取好的合同列表,coalList为同样条件取好的合同煤种列表,priceList为同样条件取好的合同价格列表
    //PS:一个合同拥有多个煤种 一个合同拥有一个价格对象
    PageData priceMap = new PageData();
    for(PageData price:priceList){
        if(priceMap.get(price.getString("ht_id"))==null){
            priceMap.put(price.getString("ht_id"),price);
        }
    }
    PageData coalMap = new PageData();
    for(PageData coal:coalList){
        List<PageData> tempCoalList = (List<PageData>)coalMap.get(coal.getString("ht_id"));
        if(tempCoalList == null){
            tempCoalList = new ArrayList<PageData>();
        }
        tempCoalList.add(coal);
        coalMap.put(coal.getString("ht_id"),tempCoalList);
    }
    for(PageData htPd:list){
        htPd.put("price",priceMap.get(htPd.getString("id")));
        htPd.put("coalList",coalMap.get(htPd.getString("id")));
    }
}


猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类