Adding pick maintenance program source code.

This commit is contained in:
Wes
2020-06-05 18:05:08 -04:00
parent d9cb000390
commit f77d8a486e
12 changed files with 3292 additions and 1 deletions
+293
View File
@@ -0,0 +1,293 @@
package pickMaint;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Logger;
/**
* This class is essentially just an Object representation of a single record in LOOMDS/LOOMDS2.
*
* The constructor takes a reference to an AS400Interface only in case we need to pull "no bonus" hours and picks from LOOMDS2.
* See below: if(deleteCode.equalsIgnoreCase("N")) { ... }
*
* The bulk of the object is created using the java.sql.ResultSet that is passed to the constructor. This ResultSet is expected to be
* generated by a particular query stored in AS400Interface.java
*
* The rest of the class is just getters/setters.
*
* @author Wesley Ray
*/
public class LoomDSRecord implements Comparable<Object> {
private static final Logger LOGGER = Logger.getLogger(LoomDSRecord.class.getName());
private Date date;
private int shift;
private int loomNumber;
private int weaverNumber;
private String weaverName;
private String ldStyle; //TRL, BLN, or SAM
private double hours;
private int picks;
private float picksPerHourBonus;
private float picksPerHourNoBonus;
private String downTimeCode;
private String downTimeCodeDescription;
private int cut;
private String cutSuffix;
private String typeCode;
private String deleteCode;
private boolean bonus;
private boolean changed = false; //Never ended up using this, not a bad idea though. leaving it here just in case
public LoomDSRecord(AS400Interface as400, ResultSet row) throws SQLException {
date = AS400Interface.intToDate(row.getInt(1));
loomNumber = row.getInt(2);
shift = row.getInt(3);
weaverNumber = row.getInt(4);
weaverName = row.getString(5).trim();
ldStyle = row.getString(6).trim();
hours = row.getDouble(7);
picks = row.getInt(8);
picksPerHourBonus = row.getFloat(11);
picksPerHourNoBonus = row.getFloat(12);
downTimeCode = row.getString(13).trim();
downTimeCodeDescription = AS400Interface.dtCodeLookup(downTimeCode);
cut = row.getInt(14);
cutSuffix = row.getString(15).trim();
typeCode = row.getString(16).trim();
deleteCode = row.getString(17);
bonus = !((weaverNumber > 699 && weaverNumber < 703) || (ldStyle.equalsIgnoreCase("TRL") || ldStyle.equalsIgnoreCase("BLN") || deleteCode.equalsIgnoreCase("N")));
if(deleteCode.equalsIgnoreCase("N")){
LOGGER.fine(logPrefix() + "is flagged NO_BONUS need to fetch hours and picks from LOOMDS2.");
float[] values = as400.getLoomDS2HoursPicks(AS400Interface.dateToInt(date), loomNumber, shift, weaverNumber);
hours = values[0];
picks = (int) values[1];
}
}
/**
* @return the weaverNumber
*/
public final int getWeaverNumber() {
return weaverNumber;
}
/**
* @param weaverNumber the weaverNumber to set
*/
public final void setWeaverNumber(int weaverNumber) {
LOGGER.info("Loom: " + loomNumber + " - " + ((shift == 1) ? "1st" : (shift == 2) ? "2nd" : (shift == 3) ? "3rd" : "") + " shift - " + new SimpleDateFormat("MM/dd/yyyy").format(date) +
" - Changing weaver from: " + weaverName + " (" + this.weaverNumber + ") to: " + AS400Interface.weaverLookup(weaverNumber) + " (" + weaverNumber + ")");
this.weaverNumber = weaverNumber;
this.weaverName = AS400Interface.weaverLookup(weaverNumber);
bonus = !((weaverNumber > 699 && weaverNumber < 703) || (ldStyle.equalsIgnoreCase("TRL") || ldStyle.equalsIgnoreCase("BLN")));
changed = true;
}
/**
* @return the ldStyle
*/
public final String getLdStyle() {
return ldStyle;
}
/**
* @param ldStyle the ldStyle to set
*/
public final void setLdStyle(String ldStyle) {
LOGGER.info(logPrefix() + "- Changing LDSTYL from: " + this.ldStyle + " to: " + ldStyle);
this.ldStyle = ldStyle;
bonus = !((weaverNumber > 699 && weaverNumber < 703) || (ldStyle.equalsIgnoreCase("TRL") || ldStyle.equalsIgnoreCase("BLN")));
changed = true;
}
/**
* @return the hours
*/
public final double getHours() {
return hours;
}
/**
* @param hours the hours to set
*/
public final void setHours(double hours) {
LOGGER.info(logPrefix() + "- Changing hours from: " + this.hours + " to: " + hours);
this.hours = hours;
changed = true;
}
/**
* @return the picks
*/
public final int getPicks() {
return picks;
}
/**
* @param picks the picks to set
*/
public final void setPicks(int picks) {
LOGGER.info(logPrefix() + "- Changing picks from: " + this.picks + " to: " + picks);
this.picks = picks;
changed = true;
}
public final int getMaxPicks(){
return (int) ((hours * (bonus ? picksPerHourBonus : picksPerHourNoBonus)) + 0.5); //The +0.5 combined with the (int) cast creates the effect of rounding up to nearest whole number
}
/**
* @return the downTimeCode
*/
public final String getDownTimeCode() {
return downTimeCode;
}
/**
* @param downTimeCode the downTimeCode to set
*/
public final void setDownTimeCode(String downTimeCode) {
LOGGER.info(logPrefix() + "- Changing down time code from: " + this.downTimeCode + " to: " + downTimeCode);
this.downTimeCode = downTimeCode;
this.downTimeCodeDescription = AS400Interface.dtCodeLookup(downTimeCode);
changed = true;
}
/**
* @return the typeCode
*/
public final String getTypeCode() {
return typeCode;
}
/**
* @param typeCode the typeCode to set
*/
public final void setTypeCode(String typeCode) {
LOGGER.info(logPrefix() + "- Changing type code from: " + this.typeCode + " to: " + typeCode);
this.typeCode = typeCode;
changed = true;
}
/**
* @return the date
*/
public final Date getDate() {
return date;
}
/**
* @return the shift
*/
public final int getShift() {
return shift;
}
/**
* @return the loomNumber
*/
public final int getLoomNumber() {
return loomNumber;
}
/**
* @return the weaverName
*/
public final String getWeaverName() {
return weaverName;
}
public final String getWeaverNameDisplay(){
return weaverName + " (" + weaverNumber + ")";
}
/**
* @return the picksPerHourBonus
*/
public final float getPicksPerHourBonus() {
return picksPerHourBonus;
}
/**
* @return the picksPerHourNoBonus
*/
public final float getPicksPerHourNoBonus() {
return picksPerHourNoBonus;
}
/**
* @return the downTimeCodeDescription
*/
public final String getDownTimeCodeDescription() {
return downTimeCodeDescription;
}
public final String getformattedDowntimeReason(){
if(downTimeCodeDescription != null)
return "(" + downTimeCode + ") " + downTimeCodeDescription;
else
return "";
}
/**
* @return the cut
*/
public final int getCut() {
return cut;
}
/**
* @return the cutSuffix
*/
public final String getCutSuffix() {
return cutSuffix;
}
public final String getFormattedCutNumber(){
if(cut < 1)
return "";
if(cutSuffix.length() == 0)
return "" + cut;
return cut + "-" + cutSuffix;
}
/**
* @return the deleteCode
*/
public final String getDeleteCode() {
return deleteCode;
}
/**
* @return the bonus
*/
public final boolean isBonus() {
return bonus;
}
public final boolean changed(){
return changed;
}
private String logPrefix(){
return "Loom: " + loomNumber + " - " + ((shift == 1) ? "1st" : (shift == 2) ? "2nd" : (shift == 3) ? "3rd" : "") + " shift - "
+ new SimpleDateFormat("MM/dd/yyyy").format(date) + " Weaver: " + weaverName + " (" + weaverNumber + ") ";
}
@Override
public int compareTo(Object o) {
if(o instanceof LoomDSRecord){
return loomNumber - ((LoomDSRecord) o).getLoomNumber();
} else {
throw new RuntimeException("Something screwed when sorting LoomDSRecord array");
}
}
}