コード例 #1
0
        @Override
        public void onSuccess(String result) {
          // TODO Auto-generated method stub
          EntityDataPageVo edv = null;
          try {
            edv = new Gson().fromJson(result, new TypeToken<EntityDataPageVo>() {}.getType());
            if ((edv != null) && (edv.getErrorCode().equals(CommonResultVo.ERROR_CODE_SUCCESS))) {

              // List<FeedVo> temps2 = (ArrayList<FeedVo>) edv.data;
              List<FeedVo> temps1 = new ArrayList<FeedVo>();
              try {
                temps1 = JsonUtil.fromJsonArray(JsonUtil.toJson(edv.data), FeedVo.class);
              } catch (Exception e) {
              }

              if (temps1 == null
                  || temps1.size() == 0) { // mAdapterMyCreate.notifyDataSetChanged();
                Toast.makeText(ActivityFormulaArtificial2.this, "没有更多数据了", Toast.LENGTH_SHORT)
                    .show();
              } else {
                mfs.addAll(temps1);
                mfsa = new String[mfs.size()];
                mfsb = new boolean[mfs.size()];
                for (int i = 0; i < mfs.size(); i++) {
                  mfsa[i] = mfs.get(i).name;
                  mfsb[i] = false;
                }
              }

            } else {
              UIHelper.ToastLongMessage(
                  ActivityFormulaArtificial2.this, "获取饲料失败" + edv.getErrorMsg());
            }
          } catch (Exception e) {
            e.printStackTrace();
            // mStrings.addAll(temps);
            UIHelper.ToastLongMessage(
                ActivityFormulaArtificial2.this, "获取饲料失败,请联系管理员:" + e.getMessage());
          }
        }
コード例 #2
0
 private void excute() {
   try {
     // 获取配方所含营养素组成
     List<ArtificialNur> formulaNur = mPfDb.getFormulaNurs(ff.id + "");
     if (formulaNur != null && formulaNur.size() > 0) {
       if (feedids != null && feedids.length() > 0) {
         // 遍历配方含的营养素组成,这里只取第一个
         for (int f = 0; f < 1; f++) {
           ArtificialNur fn = formulaNur.get(f);
           try {
             // 获取在指定饲料中的,营养素大于number跟小于number的,饲料id的列表
             List<Long> maxFeedIds =
                 mPfDb.getMaxFeedIds(
                     feedids.substring(0, feedids.length() - 1), fn.Cid, fn.UnitNumber);
             List<Long> minFeedIds =
                 mPfDb.getMinFeedIds(
                     feedids.substring(0, feedids.length() - 1), fn.Cid, fn.UnitNumber);
             // 存distinct的feedid
             List<Long> distinctfeedids = new ArrayList<Long>();
             for (Long id : maxFeedIds) {
               if (!distinctfeedids.contains(id)) {
                 distinctfeedids.add(id);
               }
             }
             for (Long id : minFeedIds) {
               if (!distinctfeedids.contains(id)) {
                 distinctfeedids.add(id);
               }
             }
             // 将大于跟小于的饲料列表数目对齐
             if (maxFeedIds != null && maxFeedIds.size() > 0) {
               if (minFeedIds != null && minFeedIds.size() > 0) {
                 if (maxFeedIds.size() > minFeedIds.size()) {
                   Long temp = minFeedIds.get(0);
                   for (int i = 0; i < (maxFeedIds.size() - minFeedIds.size()); i++) {
                     minFeedIds.add(temp);
                   }
                 } else {
                   Long temp = maxFeedIds.get(0);
                   for (int i = 0; i < (minFeedIds.size() - maxFeedIds.size()); i++) {
                     maxFeedIds.add(temp);
                   }
                 }
                 // 拿一个总的feedid列表
                 List<Long> feeds = new ArrayList<Long>();
                 for (Long id : maxFeedIds) {
                   feeds.add(id);
                 }
                 for (Long id : minFeedIds) {
                   feeds.add(id);
                 }
                 // 计算比例中间过程,获取差值
                 // List<ArtificialNur> maxFeedNur=new ArrayList<ArtificialNur>();
                 // List<ArtificialNur> minFeedNur=new ArrayList<ArtificialNur>();
                 List<ArtificialNur> feedNur = new ArrayList<ArtificialNur>();
                 double totalNumber = 0;
                 for (Long id : feeds) {
                   try {
                     ArtificialNur temp = mPfDb.getAri(id, fn.Cid);
                     if (temp != null) {
                       temp.UnitNumber = Math.abs(fn.UnitNumber - temp.UnitNumber);
                       totalNumber += temp.UnitNumber;
                       feedNur.add(temp);
                     }
                   } catch (Exception e) {
                   }
                 }
                 // 计算比例
                 perFeedNur = new ArrayList<ArtificialNur>();
                 for (int i = 0; i < feedNur.size(); i++) {
                   try {
                     ArtificialNur temp = (ArtificialNur) feedNur.get(i).clone();
                     ArtificialNur temp1 = feedNur.get(feedNur.size() - i - 1);
                     temp.UnitNumber = temp1.UnitNumber / totalNumber;
                     perFeedNur.add(temp);
                   } catch (Exception e) {
                   }
                 }
                 // 合并重复饲料
                 for (Long id : distinctfeedids) {
                   try {
                     ArtificialNur tempav = new ArtificialNur();
                     double temp = 0;
                     for (ArtificialNur av : perFeedNur) {
                       try {
                         if (id == av.Mid) {
                           tempav = (ArtificialNur) av.clone();
                           temp += av.UnitNumber;
                         }
                       } catch (Exception e) {
                       }
                     }
                     tempav.UnitNumber = temp;
                     if (tempav != null && tempav.Mid > 0) {
                       arFeedNur.add(tempav);
                     }
                   } catch (Exception e) {
                   }
                 }
                 if (arFeedNur != null && arFeedNur.size() == 0) {
                   ArtificialNur temp = new ArtificialNur();
                   temp.Mname = "无";
                   temp.UnitNumber = 0;
                   arFeedNur.add(temp);
                 }
                 // 绑定数据展示控件
                 arFeedAdapter =
                     new ArtificialAdapter(
                         arFeedNur, getApplicationContext(), R.layout.item_list_artificial);
                 lvFormulaAr.setAdapter(arFeedAdapter);
                 fixListViewHeight(lvFormulaAr);
                 // 数据加载完成改变一下scrollview的显示位置
                 sv.scrollTo(0, 0);
               } else {
                 List<ArtificialNur> xx = mPfDb.getMinFeedNurs(fn.Cid, fn.UnitNumber);
                 if (xx != null && xx.size() > 0) {
                   String str = "";
                   for (ArtificialNur x : xx) {
                     str = str + x.Mname + ",";
                   }
                   UIHelper.ToastLongMessage(
                       ActivityFormulaArtificial2.this,
                       "当前选择的饲料:" + fn.Cname + "含量过高,请将" + str + "一种或者几种选入!");
                 } else {
                   UIHelper.ToastLongMessage(
                       ActivityFormulaArtificial2.this,
                       "由于配方的" + fn.Cname + "含量过低,数据库无法生成合适的饲料配比!");
                 }
               }
             } else {
               List<ArtificialNur> xx = mPfDb.getMaxFeedNurs(fn.Cid, fn.UnitNumber);
               if (xx != null && xx.size() > 0) {
                 String str = "";
                 for (ArtificialNur x : xx) {
                   str = str + x.Mname + ",";
                 }
                 UIHelper.ToastLongMessage(
                     ActivityFormulaArtificial2.this,
                     "当前选择的饲料:" + fn.Cname + "含量过低,请将" + str + "一种或者几种选入!");
               } else {
                 UIHelper.ToastLongMessage(
                     ActivityFormulaArtificial2.this, "由于配方的" + fn.Cname + "含量过高,数据库无法生成合适的饲料配比!");
               }
             }
           } catch (Exception e) {
           }
         }
       } else {
         UIHelper.ToastLongMessage(ActivityFormulaArtificial2.this, "请选择两种以上的饲料!");
       }
     } else {
       UIHelper.ToastLongMessage(ActivityFormulaArtificial2.this, "没有获取到该配方的营养素组成情况,请重新选择配方!");
     }
   } catch (Exception e) {
     UIHelper.ToastLongMessage(
         ActivityFormulaArtificial2.this, "智能计算出现问题,请联系管理员:" + e.getMessage());
   }
 }