⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dispatchlist.java

📁 简介: 今天为网友提供的是JAVA源码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    Enumeration distinctStyles = OrderDetailsManHourMap.getInstance().
        getDistinctStyles().elements();
    StringBuffer content = new StringBuffer();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Hashtable orders = new Hashtable();
    int onTimeStyles = 0;
    int orderQty = 0;
    int plannedQty = 0;
    Integer one = new Integer(1);
    Integer zero = new Integer(0);
    Calendar cal = Calendar.getInstance();
    Date currentTime = cal.getTime();
    String timeStr = sdf.format(currentTime);

    while (distinctStyles.hasMoreElements()) {
      Style aStyle = (Style) distinctStyles.nextElement();

      orders.put(aStyle.getOrderID(), one);
      orderQty += aStyle.getQuantity();

      Vector starts = startsByRoute[aStyle.getRouteID().intValue() - 1];
       Date dueDate = aStyle.getDueDate();

      int cumStartsUpToDueDate = 0;
      int cumStarts = 0;
      int lastStartBucket = 1;
      StartsSchedule aSchedule = null;
      if (! (null == starts || starts.size() == 0)) {
        for (int i = 0; i < starts.size(); i++) {
          aSchedule = (StartsSchedule) starts.elementAt(i);
          if (null == aSchedule.getOrderID())
            continue;
          Date startDate = PeriodDateMap.getInstance().getDateBucketBelongsTo(
              aSchedule.getBucketID());
          if (aSchedule.getOrderID().equals(aStyle.getOrderID()) &&
              aSchedule.getStyleID().equals(aStyle.getStyleID()) &&
              aSchedule.getProcessID() == aStyle.getProcessID()) {

            if (!startDate.after(dueDate)) {
              cumStartsUpToDueDate += aSchedule.getQuantity();
            }

            if (aSchedule.getBucketID() > lastStartBucket) {
              lastStartBucket = aSchedule.getBucketID();
            }

            cumStarts += aSchedule.getQuantity();
          }
        }
      }

      plannedQty += cumStartsUpToDueDate;

      //if( cumStartsUpToDueDate < aStyle.getQuantity() ) {
      if (cumStarts == aStyle.getQuantity()) {
        Date date = PeriodDateMap.getInstance().getDateBucketBelongsTo(
            lastStartBucket);
        content.append(aStyle.getOrderID() + ",");
        content.append(aStyle.getStyleID() + ",");
        content.append(aStyle.getQuantity() + ",");
        content.append(sdf.format(dueDate) + ",");
        content.append(cumStartsUpToDueDate + ",");
        content.append(sdf.format(date) + ",");
        int earliness = (int) ( (date.getTime() - dueDate.getTime()) / 1000 /
                               60 / 60 / 24);
        content.append(earliness + ",");
        content.append(timeStr + "\n");
        if (earliness <= 0) {
          onTimeStyles++;
        }
        else {
          orders.put(aStyle.getOrderID(), zero);
        }
      }
      else {
        content.append(aStyle.getOrderID() + ",");
        content.append(aStyle.getStyleID() + ",");
        content.append(aStyle.getQuantity() + ",");
        content.append(sdf.format(dueDate) + ",");
        content.append(cumStartsUpToDueDate + ",");
        content.append(sdf.format(catchUpDate) + ",");
        int earliness = (int) ( (catchUpDate.getTime() - dueDate.getTime()) /
                               1000 / 60 / 60 / 24);
        content.append(earliness + ",");
        content.append(timeStr + "\n");
        orders.put(aStyle.getOrderID(), zero);
      }
      //}

    }

    URLFileWriter.getInstance().write(urlAddr,
                                      GlobalConfig.getInstance().
                                      getDirectOutputDir() + "plandetails.csv",
                                      "WriteModel",
                                      content.toString());

    Enumeration allOrders = orders.elements();
    int numOnTimeOrders = 0;
    while (allOrders.hasMoreElements()) {
      if (one == allOrders.nextElement()) {
        numOnTimeOrders++;
      }
    }

    content = null;
    content = new StringBuffer();

    content.append(orders.size() + ",");
    content.append(numOnTimeOrders + ",");
    content.append(OrderDetailsManHourMap.getInstance().getDistinctStyles().
                   size() + ",");
    content.append(onTimeStyles + ",");
    content.append(orderQty + ",");
    content.append(plannedQty + ",");
    content.append( (totalMinutes / 60) + ",");
    content.append("0,");
    content.append("0,");
    content.append(timeStr + "\n");

    URLFileWriter.getInstance().write(urlAddr,
                                      GlobalConfig.getInstance().
                                      getDirectOutputDir() + "plansummary.csv",
                                      "WriteModel",
                                      content.toString());

  }

  Hashtable startsByOrder = new Hashtable();
  private void findNextOperator() {
    Vector[] startsSchedules = schedulesGroupedByBucket;
    StringBuffer tmpBuf = new StringBuffer();
    int lineNumber = 1;
    for (int i = 0; i < startsSchedules.length; i++) {
      Vector allStarts = (Vector) startsSchedules[i];
      if (null == allStarts || allStarts.size() == 0)
        continue;
      for (int j = 0; j < allStarts.size(); j++) {
        StartsSchedule aSchedule = (StartsSchedule) allStarts.elementAt(j);
        aSchedule.setLineNumber(lineNumber);
        aSchedule.initPrevRoutes();
        lineNumber++;
        String orderID = aSchedule.getOrderID();

        //the following should not happen
        if (null == orderID) {
          //System.out.println( aSchedule.getSchedule());
          continue;
        }
        Hashtable styles = (Hashtable) startsByOrder.get(orderID);
        if (null == styles) {
          styles = new Hashtable();
          startsByOrder.put(orderID, styles);
        }

        Vector startsVec = (Vector) styles.get(aSchedule.getStyleID());
        if (null == startsVec) {
          startsVec = new Vector();
          styles.put(aSchedule.getStyleID(), startsVec);
        }
        //insert in ascending order of pid
        boolean defined = false;
        int pid = aSchedule.getProcessID();
        Vector pidVec = null;
        for (int t = 0; t < startsVec.size(); t++) {
          Vector aVec = (Vector) startsVec.elementAt(t);
          StartsSchedule tmpSched = (StartsSchedule) aVec.elementAt(0);
          if (pid == tmpSched.getProcessID()) {
            defined = true;
            pidVec = aVec;
            break;
          }
        }

        boolean inserted = false;

        if (!defined) {
          pidVec = new Vector();
          for (int t = 0; t < startsVec.size(); t++) {
            Vector aVec = (Vector) startsVec.elementAt(t);
            StartsSchedule tmpSched = (StartsSchedule) aVec.elementAt(0);
            if (pid < tmpSched.getProcessID()) {
              startsVec.insertElementAt(pidVec, t);
              inserted = true;
              break;
            }
          }
          if (!inserted) {
            startsVec.add(pidVec);
          }
        }

        //insert in asending order of start time
        inserted = false;
        for (int k = 0; k < pidVec.size(); k++) {
          StartsSchedule tmpSchedule = (StartsSchedule) pidVec.elementAt(k);
          if (aSchedule.getStartTime().before(tmpSchedule.getStartTime())) {
            pidVec.insertElementAt(aSchedule, k);
            inserted = true;
            break;
          }
        }
        if (!inserted) {
          pidVec.add(aSchedule);
        }

      }
    }
    //adjust capacity
    //adjustCapacity();
    //find next operators
    Enumeration orderKeys = startsByOrder.keys();
    while (orderKeys.hasMoreElements()) {
      String order = (String) orderKeys.nextElement();
      if (null == order)
        continue;
      Hashtable styles = (Hashtable) startsByOrder.get(order);
      if (null == styles)
        continue;
      Enumeration styleKeys = styles.keys();

      while (styleKeys.hasMoreElements()) {
        String style = (String) styleKeys.nextElement();
        Vector tmpVec = (Vector) styles.get(style);

        if (null == tmpVec)
          continue;

        for (int m = 0; m < tmpVec.size(); m++) {
          Vector vecm = (Vector) tmpVec.elementAt(m);
          if (null == vecm || vecm.size() == 0)
            continue;
          StartsSchedule tmpSched = null;
          int pidNext = -1;
          tmpSched = (StartsSchedule) vecm.elementAt(0);
          pidNext = tmpSched.getNextPID();
          if (pidNext < 0)
            continue;
          Vector vecmNext = null;
          int nextPID = -1;
          for (int mm = 0; mm < tmpVec.size(); mm++) {
            if (mm == m)
              continue;
            vecmNext = (Vector) tmpVec.elementAt(mm);
            if (null == vecmNext || vecmNext.size() == 0)
              continue;
            StartsSchedule tmpSched1 = (StartsSchedule) vecmNext.elementAt(0);
            if (tmpSched1.getProcessID() == pidNext) {
              nextPID = tmpSched1.getProcessID();
              break;
            }
          }
          if (nextPID < 0) {
            System.out.println("could not find next pid for: " +
                               tmpSched.getOrderID() +
                               ", " + tmpSched.getStyleID() + "\tpid = " +
                               tmpSched.getProcessID());
            continue;
          }

          if (null == vecmNext || vecmNext.size() == 0)
            continue;
          for (int n = 0; n < vecm.size(); n++) {
            StartsSchedule aSchedule = (StartsSchedule) vecm.elementAt(n);
            //tmpBuf.append( "A," );
            //tmpBuf.append( aSchedule.getScheduleTest() );
            if (null == aSchedule)
              continue;
            int qty = aSchedule.getQuantity();
            for (int mNext = 0; mNext < vecmNext.size(); mNext++) {
              StartsSchedule schedNext = (StartsSchedule) vecmNext.elementAt(
                  mNext);
              if (null == schedNext)
                continue;
              //if( schedNext.getStartTime().before( aSchedule.getEndTime() ) ) continue;
              if (aSchedule.getEndTime().getTime() - 2 * 60 * 1000 >
                  schedNext.getStartTime().getTime())
                continue;

              //int qtyNext = schedNext.getRemainingCap();
              int qtyNext = schedNext.getRemainingCap(aSchedule.getRouteID());
              if (qtyNext == 0)
                continue;
              if (qty == 0)
                break;

              if (qtyNext < qty) {
                //schedNext.updateUsage( qtyNext );
                schedNext.updateUsage(aSchedule.getRouteID(), qtyNext);
                aSchedule.addNextOperator(schedNext.getEmployee(),
                                          qtyNext,
                                          schedNext.getProcessID());
                aSchedule.addNextOpLineNumber(schedNext.getLineNumber());
                qty -= qtyNext;
                //tmpBuf.append( "B," );
                //tmpBuf.append( schedNext.getScheduleTest() );
              }
              else {
                //schedNext.updateUsage( qty );
                schedNext.updateUsage(aSchedule.getRouteID(), qty);
                aSchedule.addNextOperator(schedNext.getEmployee(),
                                          qty,
                                          schedNext.getProcessID());

                aSchedule.addNextOpLineNumber(schedNext.getLineNumber());
                qty = 0;
                //tmpBuf.append( "B," );
                //tmpBuf.append( schedNext.getScheduleTest() );
                break;
              }

            }
          }
        }
      }
    }

    /*URLFileWriter.getInstance().write( urlAddr,
            GlobalConfig.getInstance().getDirectOutputDir() + "test.csv",
            "WriteModel",
            tmpBuf.toString() );*/

  }

  private void adjustCapacity() {
    Enumeration orderKeys = startsByOrder.keys();
    while (orderKeys.hasMoreElements()) {
      String order = (String) orderKeys.nextElement();
      if (null == order)
        continue;
      Hashtable styles = (Hashtable) startsByOrder.get(order);
      if (null == styles)
        continue;
      Enumeration styleKeys = styles.keys();

      while (styleKeys.hasMoreElements()) {
        String style = (String) styleKeys.nextElement();
        Vector tmpVec = (Vector) styles.get(style);

        if (null == tmpVec)
          continue;

        for (int m = 0; m < tmpVec.size(); m++) {
          Vector vecm = (Vector) tmpVec.elementAt(m);
          if (null == vecm)
            continue;
          StartsSchedule tmpSched = null;
          int pid = -1;
          tmpSched = (StartsSchedule) vecm.elementAt(0);
          pid = tmpSched.getProcessID();

          if (pid < 0)
            continue;
          Vector vecmNext = null;
          int nextPID = -1;
          int cnt = 0;
          for (int mm = 0; mm < tmpVec.size(); mm++) {
            if (mm == m)
              continue;
            vecmNext = (Vector) tmpVec.elementAt(mm);
            if (null == vecmNext)
              continue;
            StartsSchedule tmpSched1 = (StartsSchedule) vecmNext.elementAt(0);
            if (tmpSched1.getNextPID() == pid) {
              nextPID = tmpSched1.getProcessID();
              cnt++;
            }
          }

          if (cnt > 1) {
            for (int kk = 0; kk < vecm.size(); kk++) {
              tmpSched = (StartsSchedule) vecm.elementAt(kk);
              tmpSched.setAdjustedCap(cnt);
            }
          }

        }
      }
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -