亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? simpledispatchrule.java

?? APS(高級排產系統)
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
  private void assignOperator( Style style,
                               Vector procCap,
                               int[] qty,
                               Date start,
                               int numOfDaysRqd,
                               int numOfStdOperators,
                               boolean overtime,
                               double[] curveForThisOrder ) {
    SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
    Calendar cal = Calendar.getInstance();
    cal.setTime( start );
    totalOperators += procCap.size();
    for( int i=0; i<numOfDaysRqd; i++ ) {
      int cumAllocatedQty = 0;
      for( int j=0; j<procCap.size(); j++ ) {
        ProcessCapability pc = (ProcessCapability) procCap.elementAt( j );
        pc.setAssigned();
        schedules.append("-1,"); //equipment
        schedules.append(style.getOrderID() + ","); //orderID
        schedules.append(style.getStyleID() + ","); //style ID
        schedules.append(style.getProcessID() + ","); //process ID
        schedules.append(pc.getEmployeeID() + ","); //employee ID
         if (j < procCap.size() - 1) {
          int allocatedQty = (int) Math.floor(qty[i] *
                                              pc.getCapability(style.getProcessID()) /
                                              numOfStdOperators);
          schedules.append(allocatedQty + ","); //qty
          cumAllocatedQty += allocatedQty;
        } else {
          schedules.append( (qty[i] - cumAllocatedQty) + ","); //qty
        }
        schedules.append("0,"); //finished qty
        cal.set(Calendar.HOUR_OF_DAY, 8);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        Date startHours = cal.getTime();
        schedules.append(sdf.format(startHours) + ",");
        cal.set(Calendar.HOUR_OF_DAY, 17);
        Date endHours = cal.getTime();
        schedules.append(sdf.format(endHours) + ",");
        schedules.append("null,"); //null value
        schedules.append("1\n"); //line number
      }
      cal.add(Calendar.DAY_OF_MONTH, 1);
    }
  }

  private String urlAddr = GlobalConfig.getInstance().getLPServerURL() +
    "com.power.pipeengine.LP_ReadWriteFile";

  private void writeDispatchList() {
    URLFileWriter.getInstance().write(urlAddr,
                                      GlobalConfig.getInstance().
                                      getDirectOutputDir() + "dispatchlist.csv",
                                      "WriteModel",
                                      schedules.toString());

  }

  public int compareDates( Calendar from, Calendar to ) {
    Calendar tmp = (Calendar) from.clone();
    int diff = 0;
    for( int i=0; i<365; i++) {
      if( tmp.after( to ) ) break;
      tmp.add(Calendar.DAY_OF_YEAR, 1);
      diff++;
    }

    return diff;
  }

  private void generateAScheduleForAStyle( Date dueDate,
                                           int numOfOperators,
                                           double totalRqdMinutes,
                                           String anOrderID,
                                           String aStyleID ) {
    //get total minutes required for key processes

    //assume an 8-hour day, see if we can finish by the due date
    //get number of working days before due date

    Calendar today = Calendar.getInstance();
    today.add( Calendar.DAY_OF_MONTH, 1);
    Date startDate = today.getTime();
    System.out.println("due date = " + dueDate.toString());
    System.out.println("start date = " + startDate.toString());
    Calendar due = Calendar.getInstance();
    due.setTime( dueDate );
    int numOfDaysBeforeDue = compareDates( today, due ) + 1;

    System.out.println("numOfDaysBeforeDue = " + numOfDaysBeforeDue);

    double totalAvailMinutes = 0;

    for (int k = 0; k < numOfDaysBeforeDue; k++) {
      totalAvailMinutes += 8 * 60 * stdCurve[k] * numOfOperators;
    }

    double tmp = totalRqdMinutes;
    System.out.println("totalRqdMinutes = " + totalRqdMinutes);
    int numOfDaysRqd = 0;
    for (int k = 0; k < stdCurve.length; k++) {
      tmp -= 8 * 60 * stdCurve[k] * numOfOperators;
      if (tmp <= 0) {
        numOfDaysRqd = k + 1;
        break;
      }
    }
    if( numOfDaysRqd == 0 ) {
      numOfDaysRqd = stdCurve.length;
    }

    System.out.println("debug 6 numOfDaysRqd = " + numOfDaysRqd);

    //totalAvailMinutes *= numOfOperators;
    double speedUpCoeff = 0.0;
    System.out.println("totalAvailMin = " + totalAvailMinutes +
                       "\tnum of operators = " + numOfOperators);
    //capacity test
    if (totalAvailMinutes >= totalRqdMinutes) {
      System.out.println("sufficient capacity");
    }
    else {
      speedUpCoeff = (totalRqdMinutes - totalAvailMinutes) / totalAvailMinutes;
      System.out.println("speed up %=" + speedUpCoeff);
    }
    System.out.println("debug 7");

    double[] curveForThisOrder = new double[numOfDaysBeforeDue];

    for (int k = 0; k < numOfDaysBeforeDue; k++) {
      curveForThisOrder[k] = stdCurve[k] * (1 + speedUpCoeff);
    }

    numOfDaysRqd = Math.min( numOfDaysRqd, numOfDaysBeforeDue );

    //generate schedule by style
    Vector styles = OrderDetailsManHourMap.getInstance().getStyles(
        anOrderID,
        aStyleID);

    double maxProcTime = 0;
      int operators = 0;
      int demand = 0;
      double minRatio = 10000;
      int keyProcessID = 0;
      String styleID = null;
      for (int j = 0; j < styles.size(); j++) {
        Style tmpStyle = (Style) styles.elementAt(j);
        if( ! SewingOps.getInstance().isSewingOp( tmpStyle.getProcessID() ) ) continue;
        Vector capableOperators = ProcessCapabilityTable.getInstance().
            getCapableOperators(tmpStyle.getProcessID());

        double sumCapIdx = 0;
        for (int k = 0; k < capableOperators.size(); k++) {
          ProcessCapability pc = (ProcessCapability) capableOperators.elementAt(
              k);
          sumCapIdx += pc.getCapability(tmpStyle.getProcessID());
        }

        if ( tmpStyle.getProcessingTime() > maxProcTime ) {
          //if (sumCapIdx / tmpStyle.getProcessingTime() < minRatio) {
          minRatio = sumCapIdx / tmpStyle.getProcessingTime();
          maxProcTime = tmpStyle.getProcessingTime();
          operators = ProcessCapabilityTable.getInstance().
              getNumOfOperatorsForRoute(new Integer(tmpStyle.getProcessID()));
          demand = tmpStyle.getQuantity();
          keyProcessID = tmpStyle.getProcessID();
          styleID = tmpStyle.getStyleID();
        }
      }
      System.out.println("styleID = " + styleID + "key process = " + keyProcessID );

      int[] qty = new int[numOfDaysRqd];

      int totalQty = 0;
      int m;
      boolean finished = false;

      //get denominator
      double denominator = 0;
      for (m = 0; m < numOfDaysRqd ; m++) {
        denominator += curveForThisOrder[m];
      }

      int dmd = demand;

      for (m = 0; m < numOfDaysRqd - 1; m++) {
        qty[m] = (int) Math.ceil( demand * curveForThisOrder[m] / denominator );
        if( dmd - qty[m]  < 0 ) {
          qty[m] += dmd - qty[m];
          dmd = 0;
          break;
        }
        dmd -= qty[m];
        totalQty += qty[m];
      }
      if( dmd > 0 ) {
        qty[m] = demand - totalQty;
      }

      //print out planned quantities
      System.out.println();
      for( int k=0; k<numOfDaysRqd; k++ ) {
        System.out.print( curveForThisOrder[k] + ", " );
      }
      System.out.println();
      for( int k=0; k<numOfDaysRqd; k++ ) {
        System.out.print( qty[k] + ", " );
      }
      System.out.println();

      //for each day and then loop thru all styles
      for (int j = 0; j < styles.size(); j++) {
        Style tmpStyle = (Style) styles.elementAt(j);

        tmpStyle.setAssignedQty(qty);
        tmpStyle.setSpeedCurve(curveForThisOrder);
        tmpStyle.setNumOfDaysRqd(numOfDaysRqd);
        tmpStyle.computeNumOfOperators();
        tmpStyle.setStartDate(startDate);
        totalOperators += tmpStyle.getNumOfOperators();

        Vector capableOperators = ProcessCapabilityTable.getInstance().
            getCapableOperators(tmpStyle.getProcessID());
        double sumCapIdx = 0;
        Vector pcs = new Vector();
        double totalProcCap = 0;
        for (int k = 0; k < capableOperators.size(); k++) {
          ProcessCapability pc = (ProcessCapability) capableOperators.elementAt(
              k);
            //if (pc.isAssigned())
              //continue;
            totalProcCap ++;
        }

        int baseCount = OrderDetailsManHourMap.getInstance().getNumOfStylesByProcID( tmpStyle.getProcessID() );
        double base = Math.floor( totalProcCap / baseCount );
        double remainder = totalProcCap - baseCount*base;
        int numAssigned = 0;
        for (int k = 0; k < capableOperators.size(); k++) {
          if( SewingOps.getInstance().isSewingOp( tmpStyle.getProcessID() ) &&
              numAssigned == base ) {
            break;
          }
          ProcessCapability pc = (ProcessCapability) capableOperators.elementAt(
              k);
          if (pc.isAssigned())
            continue;
          if (pc.getAssignedPID() != 0 &&
              pc.getAssignedPID() != tmpStyle.getProcessID()) {
            continue;
          }
          //sumCapIdx += pc.getCapability(tmpStyle.getProcessID()) *
              //pc.getAvailPercentage();
          sumCapIdx += pc.getCapability(tmpStyle.getProcessID()) *
              pc.getAvailPercentage() *
              ProcessRequirement.getInstance().getAvgRqmtByOperator( new Integer( tmpStyle.getProcessID()) );
          pcs.add(pc);
          pc.setAssignedPID(tmpStyle.getProcessID());
          ProcessRequirement.getInstance().updateLastAssigned( new Integer( tmpStyle.getProcessID() ),
              pc );
          //if (sumCapIdx >= tmpStyle.getNumOfOperators()) {
          if (sumCapIdx >= tmpStyle.getRequirement() ) {
            if( SewingOps.getInstance().isSewingOp( tmpStyle.getProcessID() ) ) {
              tmpStyle.addOperator(pc, new Double(pc.getAvailPercentage()));
              pc.setAssignedPercentage(1.0);
              numAssigned++;
             break;
            }
            /*double stdRemained = pc.getCapability(tmpStyle.getProcessID()) *
                pc.getAvailPercentage();
            double stdUsedThisTime = stdRemained -
                (sumCapIdx - tmpStyle.getNumOfOperators());
            stdRemained = stdRemained - stdUsedThisTime;

            double percentRemained = stdRemained /
                pc.getCapability(tmpStyle.getProcessID());*/

            double stdRemained = pc.getCapability(tmpStyle.getProcessID()) *
                pc.getAvailPercentage() *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品乱码一区二三区小蝌蚪| 一区二区三区在线视频免费| 精品一区二区三区久久久| 欧美午夜精品免费| 午夜视频一区二区三区| 欧美群妇大交群中文字幕| 美女任你摸久久| 欧美国产禁国产网站cc| 色噜噜夜夜夜综合网| 五月婷婷综合网| 精品久久五月天| 粉嫩嫩av羞羞动漫久久久| 亚洲靠逼com| 日韩一区二区免费在线观看| 国产一区二区免费视频| 自拍视频在线观看一区二区| 欧美人与z0zoxxxx视频| 国产一区二区三区久久悠悠色av| 亚洲色欲色欲www| 日韩欧美一级二级三级| 99久久免费精品高清特色大片| 亚洲成人你懂的| 国产欧美日韩在线视频| 欧美三级午夜理伦三级中视频| 久久精品国产亚洲5555| 日韩美女久久久| 日韩美女视频在线| 色婷婷av一区二区三区之一色屋| 精品一区二区三区免费视频| 亚洲色图清纯唯美| 久久免费看少妇高潮| 欧美视频在线不卡| 成人免费高清在线| 久久99国产精品麻豆| 亚洲一区二区偷拍精品| 国产欧美日韩另类视频免费观看| 欧美日韩午夜影院| www.日韩av| 国产成人免费在线视频| 免费成人小视频| 亚洲成人在线免费| 亚洲女性喷水在线观看一区| 国产亚洲一区二区在线观看| 91精品久久久久久久91蜜桃| 在线一区二区三区四区五区| 成人免费看黄yyy456| 激情综合色播五月| 欧美bbbbb| 天天色综合天天| 亚洲一区二区欧美激情| 国产精品成人一区二区三区夜夜夜| 欧美tickling挠脚心丨vk| 欧美日韩电影在线播放| 欧美亚洲一区二区三区四区| 91香蕉视频污在线| www.性欧美| 91浏览器入口在线观看| 日本韩国一区二区| 粉嫩av一区二区三区在线播放| 久久精品久久综合| 狠狠狠色丁香婷婷综合激情 | 欧美精品一区二区不卡| 欧美日韩国产综合视频在线观看 | 亚洲精品一区二区三区福利 | 亚洲免费色视频| 亚洲日本韩国一区| 亚洲另类在线视频| 亚洲高清一区二区三区| 五月综合激情婷婷六月色窝| 天天综合网 天天综合色| 婷婷成人激情在线网| 免费日韩伦理电影| 国产伦精品一区二区三区视频青涩| 美女视频网站久久| 国产剧情一区二区| www.欧美色图| 欧美性猛片aaaaaaa做受| 欧美日韩午夜在线视频| 精品美女在线观看| 国产精品成人一区二区三区夜夜夜| 亚洲免费在线观看| 日本sm残虐另类| 国产一区福利在线| 9i在线看片成人免费| 欧美三级日韩在线| 久久综合九色综合97婷婷女人| 国产精品你懂的在线欣赏| 一区二区在线观看不卡| 热久久国产精品| 国产激情一区二区三区| 色猫猫国产区一区二在线视频| 91精品视频网| 国产精品高潮呻吟| 三级成人在线视频| 成人一级片在线观看| 欧美日韩免费电影| 欧美国产日韩精品免费观看| 亚洲国产日韩综合久久精品| 韩国中文字幕2020精品| 色又黄又爽网站www久久| 精品日韩一区二区三区免费视频| 国产精品国产成人国产三级| 久久精品99国产精品日本| 一本久久精品一区二区| 久久天堂av综合合色蜜桃网| 亚洲一区二区中文在线| 成人午夜av影视| 精品电影一区二区三区 | 色中色一区二区| 欧美xxxxx裸体时装秀| 一区二区激情视频| 高清国产午夜精品久久久久久| 欧美精品久久久久久久久老牛影院| 国产亚洲制服色| 日本不卡一区二区| 欧美午夜精品一区二区蜜桃| 国产精品无遮挡| 久久精品国产成人一区二区三区| 欧美偷拍一区二区| 亚洲男人的天堂在线观看| 大尺度一区二区| 精品对白一区国产伦| 日韩精品免费专区| 在线精品国精品国产尤物884a | 成人中文字幕合集| 久久免费国产精品| 国产一区二区福利视频| 欧美变态口味重另类| 麻豆精品国产传媒mv男同| 欧美高清www午色夜在线视频| 亚洲自拍偷拍九九九| 99久久精品免费精品国产| 欧美激情在线一区二区| 国产激情一区二区三区四区| 欧美精品一区二区三区一线天视频| 五月婷婷激情综合网| 欧美日韩国产中文| 日韩在线卡一卡二| 日韩午夜激情免费电影| 美女视频一区二区三区| 日韩精品在线一区| 久久99精品久久只有精品| 久久精品综合网| 成人精品电影在线观看| 国产精品久久综合| 91亚洲精品久久久蜜桃| 一区二区三区色| 在线观看国产一区二区| 亚洲成人先锋电影| 日韩欧美在线影院| 国产成人高清在线| 亚洲私人影院在线观看| 欧美唯美清纯偷拍| 美女视频黄频大全不卡视频在线播放| 91麻豆精品国产91久久久资源速度 | 日韩一区二区电影| 韩日av一区二区| 亚洲欧美另类久久久精品| 欧美网站大全在线观看| 精品一区二区三区在线视频| 国产欧美日本一区视频| 在线看不卡av| 国精品**一区二区三区在线蜜桃| 欧美国产97人人爽人人喊| 欧美曰成人黄网| 国产毛片精品视频| 一二三四社区欧美黄| 日韩欧美自拍偷拍| 91伊人久久大香线蕉| 青青草原综合久久大伊人精品优势| 国产日韩精品视频一区| 欧美色图在线观看| 国产99久久精品| 天天综合色天天综合| 日本一区二区动态图| 欧美日韩一区二区不卡| 国产经典欧美精品| 亚洲r级在线视频| 中文字幕精品一区| 日韩一区二区三区免费观看| 99国产精品久久久久| 国精产品一区一区三区mba桃花 | 国产亚洲欧美激情| 欧美日韩激情一区二区三区| 国产99久久久国产精品| 奇米影视在线99精品| 亚洲欧美偷拍卡通变态| 久久蜜桃av一区精品变态类天堂| 欧美视频第二页| 99精品在线观看视频| 国产麻豆精品95视频| 日韩av不卡一区二区| 亚洲乱码国产乱码精品精98午夜| 久久精品在线观看| 日韩三级视频中文字幕| 91精品国模一区二区三区| 欧美丝袜自拍制服另类| 日本伦理一区二区| 99精品久久久久久| 成人免费视频免费观看|