📄 productionstartsschedule.java
字号:
} else {
for (int k = lastIndex; k <= j; k++) {
lastSchedule = (StartsSchedule) rteArray.elementAt(k);
if (!mayAdjustStarts(lastSchedule.getRouteID(),
lastSchedule.getBucketID())) {
continue;
}
lastSchedule.augmentStarts();
decimal -= 1.0;
lastIndex = j;
break;
}
}
//newTotal += 1;
}
}
}
if( decimal >= 0.5 ) {
boolean found = false;
if( null != rscUseVec ) {
for( int k=lastIndex; k<rteArray.size(); k++ ) {
lastSchedule = (StartsSchedule) rteArray.elementAt(k);
Route aRoute = DataModel.getInstance().getRoutes().getRoute(
lastSchedule.getRouteID());
if (aRoute.getFacility().getNumWorkingDaysForBucket(lastSchedule.
getBucketID()) > 4) {
lastSchedule.augmentStarts();
found = true;
decimal--;
break;
}
if (!mayAdjustStarts(lastSchedule.getRouteID(),
lastSchedule.getBucketID())) {
continue;
}
if (rsc.getResourceHours(lastSchedule.getBucketID()) * 1.2 >=
1.0 / rscUse.getUPH()) {
lastSchedule.augmentStarts();
rsc.consumeCapacity(lastSchedule.getBucketID(),
1.0 / rscUse.getUPH());
found = true;
decimal--;
break;
}
}
} else {
Route aRoute = DataModel.getInstance().getRoutes().getRoute(
lastSchedule.getRouteID());
if (aRoute.getFacility().getNumWorkingDaysForBucket(lastSchedule.
getBucketID()) > 4 || mayAdjustStarts(lastSchedule.getRouteID(),
lastSchedule.getBucketID())) {
lastSchedule.augmentStarts();
found = true;
decimal--;
}
}
if( ! found ) {
if (mayAdjustStarts(lastSchedule.getRouteID(),
lastSchedule.getBucketID())) {
lastSchedule.augmentStarts();
decimal--;
}
}
}
}
}
try{
createIntegrizedReport();
} catch( Exception e) {}
}
private boolean mayAdjustStarts( int rteID, int bucketID ) {
Vector prevRoutes = DataModel.getInstance().getRoutes().getRoute( rteID ).getPrevRoutes();
if( null == prevRoutes || prevRoutes.size() == 0 ) return true;
if( bucketID == 1 ) return false;
//return true if period length greater than one real day, assuming enough capacity
Route r = DataModel.getInstance().getRoutes().getRoute( rteID );
if( r.getFacility().getNumWorkingDaysForBucket( bucketID ) > 4 ) {
return true;
}
if( getCumStartsOfPrevRoutes( rteID, bucketID-1 ) > getCumStarts( rteID, bucketID ) ) {
return true;
}
return false;
}
private int getMinSrcInv( Route r, int bucketID ) {
Vector rteSrcVec = DataModel.getInstance().getRouteSources().getRouteSources( r );
int minInv = Integer.MAX_VALUE;
for( int i=0; i<rteSrcVec.size(); i++ ) {
RouteSource rteSrc = (RouteSource) rteSrcVec.elementAt( i );
int inv = (int) DataModel.getInstance().getInventories().getInventoryQty( rteSrc.getProductID(),
r.getSrcingFacilityID(), bucketID );
if( inv < minInv ) {
minInv = inv;
}
}
return minInv;
}
private int getCumStartsOfPrevRoutes( int rteID, int bucketID ) {
Vector prevRoutes = DataModel.getInstance().getRoutes().getRoute( rteID ).getPrevRoutes();
Route thisRoute = DataModel.getInstance().getRoutes().getRoute( rteID );
if( null == prevRoutes || prevRoutes.size() == 0 ) return 0;
if( prevRoutes.size() == 1 ) {
Route r = (Route) prevRoutes.elementAt( 0 );
return getCumStarts( r.getRouteID(), bucketID );
}
int minCumStarts = Integer.MAX_VALUE;
int minSrcInv = getMinSrcInv( thisRoute, bucketID );
for( int i=0; i<prevRoutes.size(); i++ ) {
Route aRoute = (Route) prevRoutes.elementAt( i );
int cumStarts = getCumStarts( aRoute.getRouteID(), bucketID );
if( cumStarts < minCumStarts ) {
minCumStarts = cumStarts;
}
}
return minCumStarts;
}
private int getCumStarts( int rteID, int bucketID ) {
Vector rteArray = routeArray[ rteID - 1 ];
Route thisRoute = DataModel.getInstance().getRoutes().getRoute( rteID );
int cumStarts = 0;
for( int i=0; i<rteArray.size(); i++ ) {
StartsSchedule aSchedule = (StartsSchedule) rteArray.elementAt(i);
if( aSchedule.getBucketID() <= bucketID ) {
cumStarts += aSchedule.getStartsValue() + getMinSrcInv( thisRoute, aSchedule.getBucketID());
}
}
return cumStarts;
}
public void createIntegrizedReport() throws IOException {
DataModel dataModel = DataModel.getInstance();
Vector buckets = dataModel.getCalendar().getBuckets();
Routes routes = dataModel.getRoutes();
StartsVariable startsVar = StartsVariable.getInstance();
OutsVariable outsVar = OutsVariable.getInstance();
Solution sol = Solution.getInstance();
RouteProducts rteProds = dataModel.getRouteProducts();
Enumeration allRoutes = routes.getRoutes().elements();
String separator = GlobalConfig.getInstance().getSeparator();
content = new StringBuffer();
for( int i=0; i<routeArray.length; i++ ) {
if( null == routeArray[i] ) continue;
double decimal = 0;
StartsSchedule lastSchedule = null;
//Route rte = DataModel.getInstance().getRoutes().getRoute( i+1 );
//int numSrcProds = DataModel.getInstance().getRouteSources().getRouteSources( rte ).size();
for( int j=0; j<routeArray[i].size(); j++ ) {
StartsSchedule aSchedule = (StartsSchedule) routeArray[i].elementAt( j );
double startValue = aSchedule.getStartsValue();
//skip if no start
if( startValue == 0 ) continue;
String lineOut = aSchedule.getBucketID() + separator +
dataModel.getCalendar().getBucket(aSchedule.getBucketID() ).getFormatedDate() + separator +
aSchedule.getRouteID()+ separator +
dataModel.getRoutes().getRoute( aSchedule.getRouteID()).getProductID() + separator +
dataModel.getRoutes().getRoute( aSchedule.getRouteID()).getFacility().getDescription() + separator +
((int) startValue) + "\n";
content.append( lineOut );
//augment units
//aSchedule.adjustStartsForMultiSrcingProducts( numSrcProds );
}
}
//_myFileWriter.close();
super.flush( content.toString() );
content = null;
System.gc();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -