Example #1
0
  public static void convertRetailMeas(IMeasField[] voItems) throws BusinessException {
    if (voItems == null || voItems.length == 0) return;

    java.util.HashSet<String> hm = new java.util.HashSet<String>();
    for (int i = 0; i < voItems.length; i++) {
      hm.add(voItems[i].getInvbas());
    }

    String[] invids = new String[hm.size()];
    hm.toArray(invids);

    HashMap hmData = queryInvVos(invids);

    UFDouble udTmpNum = null;
    String sTmp = null;
    UFDouble one = new UFDouble(1);
    ArrayList alinv = null;
    // 无存货信息的存货的ID
    ArrayList<String> noInv = new ArrayList<String>();
    // 非主辅计量管理,主单位和辅单位不一致
    ArrayList<String> errMeas = new ArrayList<String>();
    for (int i = 0; i < voItems.length; i++) {
      alinv = (ArrayList) hmData.get(voItems[i].getInvbas());
      if (alinv == null || alinv.size() == 0) {
        noInv.add(((InvVO) alinv.get(0)).getInvcode());
        continue;
      }

      udTmpNum = voItems[i].getRetailNum();
      sTmp = voItems[i].getRetailMeas();
      for (int j = 0; j < alinv.size(); j++) {
        InvVO voInv = (InvVO) alinv.get(j);
        // 无零售单位, 零售单位和主单位一致 ,按照主单位、数量
        if (sTmp == null || sTmp.equals(voInv.getPk_measdoc())) {

          // 非辅单位管理
          if (voInv.getAssistunit() == null || !(voInv.getAssistunit().booleanValue())) {
            voItems[i].setMainMeas(voInv.getPk_measdoc());
            voItems[i].setMainNum(udTmpNum);
            break;
          } else {
            voItems[i].setMainMeas(voInv.getPk_measdoc());
            voItems[i].setMainNum(udTmpNum);
            voItems[i].setAstMeas(voInv.getPk_measdoc());
            voItems[i].setAstNum(udTmpNum);
            voItems[i].setHsl(one);

            break;
          }
        } else {
          // 非辅单位管理,零售单位不等于主单位,属于错误数据
          if (voInv.getAssistunit() == null || !(voInv.getAssistunit().booleanValue())) {
            errMeas.add(voInv.getInvcode());
            continue;
          } // 辅单位和零售单位一致,计算出主单位和换算率
          else if (voInv.getCassistunitid().equals(sTmp)) {
            voItems[i].setMainMeas(voInv.getPk_measdoc());
            voItems[i].setMainNum(udTmpNum.multiply(voInv.getMainmeasrate()));
            voItems[i].setAstMeas(sTmp);
            voItems[i].setAstNum(udTmpNum);
            voItems[i].setHsl(voInv.getMainmeasrate());

            break;
          }
        }
      }
    }

    // 异常处理
    if (noInv.size() > 0 || errMeas.size() > 0) {
      String err = "";
      if (noInv.size() > 0) {
        err = "以下ID的存货不存在:" + noInv.toString() + "\r\n";
      }
      if (errMeas.size() > 0) {
        err = err + "非辅单位管理的存货,零售单位须和主单位一致:" + errMeas.toString() + "\r\n";
      }
      throw new BusinessException(err);
    }
  }