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

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

?? style.java

?? 著名IT公司ILog的APS高級排產優化引擎
?? JAVA
字號:
package com.power.pipeengine.DispatchReportMap;

/**
 * <p>Title: PIPE Engine</p>
 * <p>Description: Global Planning Optimization Engine</p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: Paraster, Inc.</p>
 * @author unascribed
 * @version 1.0
 */

import java.util.*;
import java.text.*;

public class Style {
    private Integer rteID;
    private String orderID;
    private String styleID;
    private Integer pid;
    private Integer pidNext;
    private Integer qty;
    private Double pTime;
    private int qtyProcessed = 0;
    private int bucketID;
    private SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
    private Date dueDate;
    private double numOfOperatorsRqd = 0;
    private int[] qtyArray;
    private double[] curve;
    private int numOfDaysRqd = 0;
    private Date start;
    private int startDateOffset = 0;

    private Vector detailedStyleID = new Vector();
    private Vector demandByDetailedStyle = new Vector();


    public Style( Integer rID,
                  String odr,
                  String sid,
                  Integer procID,
                  Integer nextProcID,
                  Integer q,
                  Double t ) {
        rteID = rID;
        orderID = odr;
        styleID = sid;
        pid = procID;
        pidNext = nextProcID;
        qty = q;
        pTime = t;
    }

    public void stStartDateOffset( int num ) {
      startDateOffset = num;
    }

    public boolean equals( Style aStyle ) {
      if( ! orderID.equals( aStyle.getOrderID() ) ) {
        return false;
      }
      if( ! styleID.equals( aStyle.getStyleID() ) ) {
        return false;
      }
      if( aStyle.getProcessID() != this.getProcessID() ) {
        return false;
      }
      return true;
    }

    public void addDetailedStyleID( String anID ) {
      detailedStyleID.add( anID );
    }

    public boolean isPartOfStyle( String detailedID ) {
      for( int i=0; i<detailedStyleID.size(); i++ ) {
        String anID= (String) detailedStyleID.elementAt( i );
        if( anID.equals( detailedID ) ) return true;
      }
      return false;
    }

    public void accumDemand( Integer q ) {
      qty = new Integer( qty.intValue() + q.intValue() );
      demandByDetailedStyle.add( q );
    }

    public double getRequirement() {
      return qty.intValue() * pTime.doubleValue();
    }

    public void setDueDate( Date aDate ) {
        dueDate = aDate;
    }

    public Date getDueDate() {
        return dueDate;
    }

    public Integer getRouteID() {
        return rteID;
    }

    public String getOrderID() {
        return orderID;
    }

    public String getStyleID() {
        return styleID;
    }

    public int getProcessID() {
        return pid.intValue();
    }

    public int getNextProcessID() {
        return pidNext.intValue();
    }

    public int getQuantity() {
        return qty.intValue();
    }

    public void reduceQty( int amt ) {
      int newAmt = Math.max( 0, qty.intValue() - amt );
      qty = new Integer( newAmt );
    }

    public double getProcessingTime() {
        return pTime.doubleValue();
    }

    public void setProcessedQty( int anInt ) {
        qtyProcessed = anInt;
    }

    public void incrementQtyProcessed( int anInt ) {
        qtyProcessed += anInt;
    }

    public void setAssignedQty( int[] q ) {
      qtyArray = q;
    }

    public void setSpeedCurve( double[] speedCurve ) {
      curve = speedCurve;
    }

    public void setNumOfDaysRqd( int days ) {
      numOfDaysRqd = days;
    }

    public void computeNumOfOperators() {
      numOfOperatorsRqd = qtyArray[0] * pTime.doubleValue() / 60 / 8;
      System.out.println( "PID = " + pid.doubleValue() + "operators rqd = " + numOfOperatorsRqd );
    }

    public double getNumOfOperators() {
      return numOfOperatorsRqd;
    }

    public void setStartDate( Date aDate ) {
      start = aDate;
    }

    public boolean metDemand() {
        if( qtyProcessed == qty.intValue() ) {
            return true;
        }
        return false;
    }

    public void setLastStartsBucket( int anID ) {
        bucketID = anID;
    }

    public int getLastStartBucket() {
        return bucketID;
    }

    private Vector operators = new Vector();
    private Vector percentages = new Vector();

    public void addOperator( ProcessCapability pc, Double percent ) {
      operators.add( pc );
      percentages.add( percent );
    }

    private double getTotalCapability() {
      double total = 0;
      for( int i=0; i<operators.size(); i++ ) {
        ProcessCapability pc = (ProcessCapability) operators.elementAt( i );
        total += pc.getCapability( this.getProcessID() );
      }
      return total;
    }

    public double getNumOfAssignedOperators() {
      /*double total = 0;
      for( int i=0; i< percentages.size(); i++ ) {
        Double percent = (Double) percentages.elementAt( i );
        ProcessCapability pc = (ProcessCapability) operators.elementAt( i );
        //total += percent.doubleValue() * pc.getCapability( this.getProcessID() );
      }
      return total;*/

    return operators.size();
    }

    public void print( ) {
        String str = orderID + ", " +
                     styleID + ", " +
                     qty + ", " +
                     pid;

        System.out.println( str );

    }

    public void print( Date dueDate, int dmd, int cumStarts, Date catchUpDate ) {
        String str = orderID + ", " +
                     styleID + ", " +
                     dmd + ", " +
                     sdf.format( dueDate ) + ", " +
                     cumStarts + ", " +
                     sdf.format( catchUpDate );

        System.out.println( str );

    }

    public void generateSchedule() {
      assignOperator( this,
                      operators,
                      qtyArray,
                      start,
                      numOfDaysRqd,
                      numOfOperatorsRqd,
                      curve );

    }

    public String getSchedules() {
      return schedules.toString();
    }

    StringBuffer schedules = new StringBuffer();
    private void assignOperator( Style style,
                                 Vector procCap,
                                 int[] qty,
                                 Date start,
                                 int numOfDaysRqd,
                                 double numOfStdOperators,
                                 double[] curveForThisOrder ) {
      allocateDetailedStylesOverHorizon( qty );
      SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
      Calendar cal = Calendar.getInstance();
      cal.setTime( start );
      cal.add( Calendar.DAY_OF_YEAR, startDateOffset );

      for( int i=0; i<numOfDaysRqd; i++ ) {
        int cumAllocatedQty = 0;
        boolean finished = false;
        Vector detailedAllocation = (Vector) styleQtyPairs.elementAt( i );
        for( int j=0; j<procCap.size(); j++ ) {
          if( finished ) break;
          int allocatedQty = 0;
          ProcessCapability pc = (ProcessCapability) procCap.elementAt( j );
          //test if zero assignment
          allocatedQty = (int) Math.floor(qty[i] *
                                    pc.getCapability(style.getProcessID()) *
                                    ((Double) percentages.elementAt(j)).doubleValue() /
                                    this.getTotalCapability() );

    //numOfStdOperators);
    if( j < procCap.size() - 1 && allocatedQty == 0 ) continue;
          Vector allocated = new Vector();
           if (j < procCap.size() - 1) {
            allocatedQty = (int) Math.floor(qty[i] *
                                                pc.getCapability(style.getProcessID()) *
                                                ((Double) percentages.elementAt(j)).doubleValue() /
                                                this.getTotalCapability() );
                                                //numOfStdOperators);
            cumAllocatedQty += allocatedQty;
            if( cumAllocatedQty > qty[i] ) {
              int extra = cumAllocatedQty - qty[i];
              allocatedQty -= extra;
              finished = true;
              cumAllocatedQty -= extra;
            }

            if( cumAllocatedQty == qty[i] ) {
              finished = true;
            }

            //schedules.append(allocatedQty + ","); //qty
          } else {
            allocatedQty = (qty[i] - cumAllocatedQty);
            //schedules.append( (qty[i] - cumAllocatedQty) + ","); //qty
            finished = true;
            cumAllocatedQty += allocatedQty;
          }

          int cumDetailed = 0;
          for( int k=0; k<detailedAllocation.size(); k+=2 ) {
            if( allocatedQty == 0 ) break;
            int amt = ((Integer) detailedAllocation.elementAt( k+1 ) ).intValue();
            if( amt == 0 ) continue;
            if( allocatedQty >= amt ) {
              allocated.add( (String) detailedAllocation.elementAt(k) );
              allocated.add( new Integer( amt ) );
              allocatedQty -= amt;
              detailedAllocation.set( k+1, new Integer(0) );
            } else {
              allocated.add( (String) detailedAllocation.elementAt(k) );
              allocated.add( new Integer( allocatedQty ) );
              amt -= allocatedQty;
              allocatedQty = 0;
              detailedAllocation.set( k+1, new Integer(amt) );
            }
          }

          for( int k=0; k<allocated.size(); k+=2 ) {
            schedules.append("-1,"); //equipment
            schedules.append(style.getOrderID() + ","); //orderID
            schedules.append( (String) allocated.elementAt(k) + ","); //style ID
            schedules.append(style.getProcessID() + ","); //process ID
            schedules.append(pc.getEmployeeID() + ","); //employee ID
            schedules.append( ( (Integer) allocated.elementAt(k+1)).intValue() +
                             ",");
            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);
      }
    }

    Vector styleQtyPairs =  new Vector();
    private void allocateDetailedStylesOverHorizon( int[] qty ) {
      int[] qtyCopy = new int[qty.length];
      for( int i=0; i<qty.length; i++ ) {
        qtyCopy[i] = qty[i];
        styleQtyPairs.add( new Vector() );
      }
      for( int i=0; i<demandByDetailedStyle.size(); i++ ) {
        int dmdQty = ( (Integer) demandByDetailedStyle.elementAt( i ) ).intValue();
        String aStyleID = (String) detailedStyleID.elementAt( i );
        for( int j=0; j<qtyCopy.length; j++ ) {
          //if( ((String) styleQtyPairs.elementAt( j )).equals( "" ) ) {
            //styleQtyPairs.set(j, new Vector());
          //}
          Vector tmpVec = (Vector) styleQtyPairs.elementAt( j );
          if( dmdQty == 0 ) break;
          if( qtyCopy[j] == 0 ) continue;
          if( dmdQty <= qtyCopy[j] ) {
            tmpVec.add( aStyleID );
            tmpVec.add( new Integer( dmdQty ) );
            qtyCopy[j] -= dmdQty;
            dmdQty = 0;
          } else {
            tmpVec.add( aStyleID );
            tmpVec.add( new Integer( qtyCopy[j] ) );
            dmdQty -= qtyCopy[j];
            qtyCopy[j] = 0;
          }
        }
      }

      for( int k=0; k<styleQtyPairs.size(); k++ ) {
        Vector tmpVec = (Vector) styleQtyPairs.elementAt( k );
        for( int i=0; i<tmpVec.size(); i+=2 ) {
          System.out.print( ((String) tmpVec.elementAt( i )) + "\t" );
          System.out.print( ((Integer) tmpVec.elementAt( i+1 )).intValue() + "\t" );
          System.out.println();
        }
      }
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品护士白丝一区av| 91精品久久久久久久91蜜桃| 成人黄色国产精品网站大全在线免费观看 | 久久综合给合久久狠狠狠97色69| 久久99久久久久久久久久久| 欧美日韩三级视频| 亚洲精品菠萝久久久久久久| 色综合激情久久| 亚洲最新视频在线播放| 国产精品夜夜嗨| 精品国产一区久久| 国产成人8x视频一区二区| 国产欧美日韩另类视频免费观看 | 国产精品久久久久久久久果冻传媒| 95精品视频在线| 九九九精品视频| 久久这里都是精品| 成人蜜臀av电影| 亚洲国产美女搞黄色| 欧美一级二级三级蜜桃| 久久66热re国产| 日韩精品一区二区三区三区免费| 国产精品1区2区3区| 夜夜精品视频一区二区| 日韩精品综合一本久道在线视频| 国产电影一区二区三区| 三级影片在线观看欧美日韩一区二区| 久久久精品国产免大香伊| 91精品国产一区二区三区蜜臀| 美女网站色91| 亚洲一线二线三线久久久| 亚洲国产精品二十页| 欧美日韩国产色站一区二区三区| 亚洲高清免费观看 | 一区二区三区美女| 精品国产sm最大网站免费看| 色网站国产精品| 久99久精品视频免费观看| 一区二区三区四区在线| 中文字幕日韩欧美一区二区三区| 婷婷国产在线综合| 亚洲男人都懂的| 在线日韩av片| 国产伦精品一区二区三区免费| 欧美国产激情二区三区| 欧美日韩中文字幕一区二区| 99国产一区二区三精品乱码| 国产成人在线视频网址| 色哦色哦哦色天天综合| 欧美日本不卡视频| 欧美成va人片在线观看| 国产精品的网站| 激情综合网最新| 99re这里只有精品6| 欧美一区2区视频在线观看| 久久男人中文字幕资源站| 国产精品天美传媒| 日韩不卡一区二区三区| 色又黄又爽网站www久久| 欧美mv日韩mv| 国产成人av电影在线观看| 欧美日韩在线免费视频| 国产欧美综合在线观看第十页 | 欧美酷刑日本凌虐凌虐| 日本一区二区成人| 老司机精品视频一区二区三区| 99久久国产综合精品女不卡| 欧美不卡视频一区| 亚洲午夜在线电影| 99久久国产综合精品女不卡| 欧美极品aⅴ影院| 久久99精品国产麻豆婷婷| 欧美日本一区二区在线观看| 亚洲国产精品二十页| 懂色一区二区三区免费观看| 国产精品久久久久久久久快鸭 | 国产亚洲欧美日韩日本| 337p日本欧洲亚洲大胆精品| 日本一区二区三区久久久久久久久不| 中文无字幕一区二区三区 | 99国产精品国产精品毛片| 中文字幕欧美区| 在线精品视频一区二区三四 | 欧美国产成人在线| 97久久精品人人做人人爽| 午夜a成v人精品| 国产精品亚洲а∨天堂免在线| 色噜噜狠狠色综合中国| 亚洲精品在线一区二区| 亚洲第一电影网| 91视视频在线观看入口直接观看www| 欧美日韩在线直播| 日韩一区二区在线观看视频| 亚洲女同女同女同女同女同69| 国内精品视频666| 制服.丝袜.亚洲.另类.中文| 亚洲一区欧美一区| 91玉足脚交白嫩脚丫在线播放| 欧美不卡激情三级在线观看| 午夜私人影院久久久久| 精品视频在线免费看| 亚洲人吸女人奶水| www.亚洲在线| 中文字幕亚洲电影| 91国产福利在线| 亚洲午夜三级在线| 在线不卡的av| 久久国产视频网| 国产肉丝袜一区二区| 国产传媒久久文化传媒| 中文字幕在线不卡| 欧美视频三区在线播放| 狠狠色丁香婷婷综合| 精品乱人伦小说| 色视频成人在线观看免| 日本网站在线观看一区二区三区 | 国产丝袜欧美中文另类| 在线免费不卡视频| 国产精品一区二区不卡| 亚洲不卡在线观看| 国产精品视频看| 欧美一区二区日韩| 在线视频你懂得一区| 懂色av一区二区三区免费观看| 首页国产欧美日韩丝袜| 亚洲美女一区二区三区| 久久午夜老司机| 欧美一区二区三区免费| 欧美主播一区二区三区美女| 91免费观看视频在线| 粉嫩在线一区二区三区视频| 乱一区二区av| 美女网站在线免费欧美精品| 日本亚洲电影天堂| 婷婷丁香久久五月婷婷| 五月激情六月综合| 亚洲在线观看免费视频| 一区二区三区精品| 亚洲综合另类小说| 亚洲欧美日韩国产手机在线| 亚洲精品中文在线观看| 成人免费一区二区三区视频| 一区二区三区四区乱视频| 一区二区三区不卡视频在线观看| 一区二区三区不卡在线观看| 亚洲国产va精品久久久不卡综合| 亚洲精品乱码久久久久久日本蜜臀| 亚洲三级久久久| 偷拍自拍另类欧美| 在线观看91精品国产入口| 无吗不卡中文字幕| 亚洲va国产va欧美va观看| 国产成人av在线影院| 欧美午夜精品久久久久久孕妇 | 99视频超级精品| 日韩欧美国产1| 亚洲一线二线三线久久久| 国产精品99久| 欧美在线高清视频| 国产精品美女久久久久av爽李琼| 亚洲国产wwwccc36天堂| 波多野结衣在线一区| 51精品久久久久久久蜜臀| 亚洲视频一区二区在线| 国产不卡视频在线观看| xf在线a精品一区二区视频网站| 亚洲综合一二区| 日本欧美一区二区三区| 中文字幕一区二区在线观看| 欧美国产精品专区| 亚洲日本va午夜在线电影| 韩国毛片一区二区三区| 在线播放中文一区| 一区二区欧美国产| 91美女在线观看| 日本一区二区久久| 国产99久久久精品| 久久综合九色综合97_久久久| 久久精品72免费观看| 日韩视频在线一区二区| 日本视频在线一区| 欧美另类变人与禽xxxxx| 视频一区二区国产| 欧美精品久久一区| 亚洲国产aⅴ天堂久久| 欧美日免费三级在线| 视频一区视频二区中文| 91精品国产一区二区| 国产一区二区三区不卡在线观看 | 亚洲精选免费视频| 91视频一区二区三区| 亚洲成av人片| 精品粉嫩超白一线天av| 成人午夜私人影院| 香蕉av福利精品导航| 欧美精品一区二区精品网| 国产精品一二三四区| 亚洲女爱视频在线| 91精品午夜视频| 精品一区二区在线视频|