QueryLotHistoryExpRowSetTask.java
package com.mycim.server.wip.dao.impl.threadtask;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.valueobject.consts.TransactionNames;
import java.util.*;
import java.util.function.Consumer;
public class QueryLotHistoryExpRowSetTask implements Runnable {
private final List<Map<String, Object>> result;
private final Map row;
private final Long seq;
private final Long lotRrn;
private final Set<Long>transRrns;
public QueryLotHistoryExpRowSetTask(Map row, long seq, List<Map<String, Object>> result, Long lotRrn,Set<Long>transRrns) {
this.row = row;
this.result = result;
this.seq = seq;
this.lotRrn = lotRrn;
this.transRrns=transRrns;
}
@Override
public void run() {
Map<String, Object> lotTransmap = new HashMap();
lotTransmap.put("seq", seq);
lotTransmap.put("operationDesc", row.get("OPERATION_DESC"));
lotTransmap.put("operationType", row.get("STEP_TYPE"));
lotTransmap.put("workArea", row.get("WORK_AREA"));
lotTransmap.put("flowSeq", row.get("FLOW_SEQ"));
lotTransmap.put("lotRrn", row.get("LOT_RRN"));
lotTransmap.put("lot_id", row.get("LOT_ID"));
String transId = MapUtils.getString(row, "TRANS_ID","");
lotTransmap.put("trans_id", transId);
lotTransmap.put("carrier_rrn", row.get("CARRIER_RRN"));
lotTransmap.put("trans_start_timestamp", DateUtils.formatDate((Date) row.get("TRANS_START_TIMESTAMP")));
lotTransmap.put("trans_end_timestamp", DateUtils.formatDate((Date) row.get("TRANS_END_TIMESTAMP")));
lotTransmap.put("trans_performed_by",
row.get("TRANS_PERFORMED_BY") == null ? "SYSTEM" : row.get("TRANS_PERFORMED_BY"));
lotTransmap.put("target_carrier_rrn", row.get("TARGET_CARRIER_RRN"));
lotTransmap.put("qty_1", row.get("IN_QTY1"));
lotTransmap.put("qty_2", row.get("OUT_QTY1"));
lotTransmap.put("productRrn", row.get("PRODUCT_RRN"));
String processStepIdVer = MapUtils.getString(row, "PROCESS_STEP_ID_VERSION","");
lotTransmap.put("route_id", parseRoute(processStepIdVer));
lotTransmap.put("comments", MapUtils.getString(row, "TRANS_COMMENTS", ""));
final String transComments = MapUtils.getString(row, "TRANS_COMMENTS","");
final Long transRrn = MapUtils.getLong(row, "TRANS_RRN",0L);
if (StringUtils.isEmpty(transComments)) {
transRrns.add(transRrn);
Consumer<Map<Long,String>> callback=(Map<Long,String> transMap)->{
lotTransmap.put("transComments", MapUtils.getString(transMap,transRrn));
lotTransmap.remove("transCommentsCallBack");
};
lotTransmap.put("transCommentsCallBack",callback);
} else {
if (StringUtils.equalsIgnoreCase(transId, TransactionNames.HOLD_KEY) || StringUtils.equalsIgnoreCase(transId, TransactionNames.HOLD_RUNNING_LOT)) {
lotTransmap.put("transComments", transComments);
} else {
transRrns.add(transRrn);
Consumer<Map<Long,String>> callback=(Map<Long,String> transMap)->{
String transReason = MapUtils.getString(transMap,transRrn);
if (StringUtils.equalsIgnoreCase(transComments, transReason)) {
lotTransmap.put("transComments", transReason);
} else {
lotTransmap.put("transcomments", transComments + " " + transReason);
}
lotTransmap.remove("transCommentsCallBack");
};
lotTransmap.put("transCommentsCallBack",callback );
}
}
lotTransmap.put("process_rrn", row.get( "PROCESS_RRN"));
lotTransmap.put("stageId", row.get("STAGE_ID"));
lotTransmap.put("operation_rrn", row.get("OPERATION_RRN"));
lotTransmap.put("eqpt_rrn", row.get("EQPT_RRN"));
lotTransmap.put("lotPollutionLevel", row.get("POLLUTION_LEVEL"));
lotTransmap.put("lotPollutionLevelAfter", row.get("POLLUTION_LEVEL_AFTER"));
lotTransmap.put("operationSeq", row.get("OPERATION_SEQ"));
lotTransmap.put("routeSeq", row.get("ROUTE_SEQ"));
lotTransmap.put("hotFlag", row.get("HOT_FLAG"));
int priority = MapUtils.getInteger(row, "PRIORITY",0);
lotTransmap.put("priority", priority == 0 ? "" : String.valueOf(priority));
lotTransmap.put("createCategory", row.get("CREATE_CATEGORY"));
lotTransmap.put("runRrn", row.get("RUN_RRN"));
String processStepString = MapUtils.getString(row, "PROCESS_STEP_VERSION");
int firstSep = processStepString.indexOf("|");
int secondSep = processStepString.indexOf("|", firstSep + 1);
String routeRrn;
if (secondSep >= 0) {
routeRrn = processStepString.substring(firstSep + 1, processStepString.indexOf(",", firstSep));
} else {
routeRrn = processStepString.substring(0, processStepString.indexOf(","));
}
long recipeLogicalRrn = MapUtils.getLong(row, "RECIPE_LOGICAL_RRN",0l);
lotTransmap.put("recipe_logical_rrn", recipeLogicalRrn);
if (recipeLogicalRrn != 0) {
String recipeParam = MapUtils.getString(row, "RECIPE_STRING");
lotTransmap.put("recipeParam", recipeParam);
}
lotTransmap.put("recipePhysicalId", row.get("RECIPE_PHYSICAL_ID"));
lotTransmap.put("routeRrn", routeRrn);
lotTransmap.put("reasonCode", row.get("REASON_CODE"));
lotTransmap.put("reason", row.get("REASON"));
lotTransmap.put("from_lot_id", row.get("SOURCE_LOT_ID"));
lotTransmap.put("to_lot_id", row.get("TARGET_LOT_ID"));
lotTransmap.put("step_sequence", row.get("STEP_SEQUENCE"));
lotTransmap.put("processStepIdVersion", row.get("PROCESS_STEP_ID_VERSION"));
lotTransmap.put("processStepVersion", processStepString);
long reticleRrn = MapUtils.getLong(row, "RETICLE_RRN",0L);
lotTransmap.put("reticle_rrn", reticleRrn);
lotTransmap.put("targetUnitId", row.get("TARGET_UNIT_ID"));
result.add(lotTransmap);
}
private String parseRoute(String processStepIdVersion) {
String routeId = null;
if (StringUtils.isNotEmpty(processStepIdVersion)) {
int start = processStepIdVersion.indexOf("|");
int _start = processStepIdVersion.lastIndexOf("|");
if (start == _start) {
start = -1;
}
int end = processStepIdVersion.indexOf(",", start);
routeId = processStepIdVersion.substring(start + 1, end);
}
return routeId;
}
}