时间:2018年05月31日 | 作者 : admin | 分类 : Java代码 | 浏览: 622次 | 评论 0 人
实用情况 | 规范 |
---|---|
1. 状态 status,state :正常为1,删除为0 2.是否删除 isdelete,deleteflag:正常为0,删除为1 | 规范:统一使用 status |
问题示例:(摘自项目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"))); } }
额 本文暂时没人评论 来添加一个吧
发表评论