LotHistoryAction.java
package com.mycim.webapp.actions.lot.lothistory;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.exception.SystemIllegalArgumentException;
import com.fa.sesa.i18n.I18nUtils;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.framework.utils.msg.JsonUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.prp.Operation;
import com.mycim.valueobject.wip.Lot;
import com.mycim.webapp.Constants;
import com.mycim.webapp.TemplateLocation;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.WipSetupAction;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
/**
* 批次历史
*
* @author sandy
* @version 6.0.0
* @date 2019/9/26
**/
public class LotHistoryAction extends WipSetupAction {
private static final String COMMENT_DOM = ".";
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
return mapping.findForward(Constants.LOTHISTORY_KEY);
}
public ActionForward exportLotHistory(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String, Object> map = WebUtils.getExportParams(request);
List<Map<String, Object>> lotHistoryList = (List<Map<String, Object>>) lothistory(request, map).get("rows");
String exportDateTime = DateUtils.getNowTime(DateUtils.DATE_FORMAT4NOSPLICING);
String fileName = "lot_" + exportDateTime + ".xlsx";
Map<String, Object> titles = WebUtils.getExportTitles(request);
WebUtils.exportExcel(fileName, titles, lotHistoryList, TemplateLocation.LOT_HISTORY_INFO, response);
return WebUtils.NULLActionForward;
}
public Map<String, Object> qryLotBaseInfo(HttpServletRequest request, Map map) throws Exception {
Long facility = LocalContext.getFacilityRrn();
Map<String, Object> result = new HashMap<>();
Map<String, Object> lotBaseInfo = new HashMap<>();
String lotId = MapUtils.getString(map, "lotId");
String carrierId = MapUtils.getString(map, "carrierId");
Long carrierRrn = 0L;
if (StringUtils.isNotEmpty(carrierId)) {
carrierRrn = this.getInstanceRrn(carrierId, this.getNamedSpace(ObjectList.ENTITY_KEY, facility),
ObjectList.ENTITY_KEY);
Assert.isFalse(carrierRrn <= 0, Errors.create().key(MessageIdList.CARRIER_CASSETTE_ID_MISSING)
.content("No such Cassette ID!").build());
}
/* Lot lot = lotQueryService.getLot(StringUtils.trimToUpperCase(lotId), LocalContext.getFacilityRrn
());
if (lot.getLotRrn() <= 0) {
lot = lotQueryService.getLotByCarrierId(carrierId, LocalContext.getFacilityRrn());
}
if ((StringUtils.isNotEmpty(lotId) && StringUtils.isNotEmpty(carrierId))) {
if (!carrierRrn.equals(lot.getCarrierRrn())) {
throw new WebException("lot.lotId_not_match_with_cassetteId");
}
}*/
Map lotInfo = null;
if (StringUtils.isNotBlank(lotId) || carrierRrn > 0) {
lotInfo = lotQueryService.getLotInfoasMap(facility, StringUtils.trimToUpperCase(lotId), carrierRrn);
}
if (lotInfo != null) {
lotBaseInfo.put("lotId", lotInfo.get("lotId"));
lotBaseInfo.put("carrierId", lotInfo.get("carrierId"));
lotBaseInfo.put("productId", lotInfo.get("productId"));
lotBaseInfo.put("lotType", lotInfo.get("lotType"));
lotBaseInfo.put("priority", wipQueryService
.getHotflagSplicingPriority(NumberUtils.toInt(MapUtils.getString(lotInfo, "hotflag"), 0),
NumberUtils.toInt(MapUtils.getString(lotInfo, "priority"), 0),
facility));
lotBaseInfo.put("lotRrn", lotInfo.get("lotRrn"));
lotBaseInfo.put("processVersion", lotInfo.get("processVersion"));
long processRrn = MapUtils.getLongValue(lotInfo, "processRrn");
lotBaseInfo.put("newProcessVersion", getProcessVersion(processRrn));
} else {
lotBaseInfo.put("length", 0);
//todo
throw new SystemIllegalArgumentException(
Errors.create().key(MessageIdList.LOT_NOT_QUERYING_INFORMATION).content("未查询到相关信息!").build());
}
result.put("success", lotInfo != null);
result.put("lotBaseInfo", lotBaseInfo);
return result;
}
public Map<String, Object> lothistory(HttpServletRequest request, Map map) throws Exception {
String language = I18nUtils.getCurrentLanguage().toString();
Long facility = LocalContext.getFacilityRrn();
Map<String, Object> rteturnResult = new HashMap<>();
List<Map<String, Object>> resultArray = new ArrayList<>();
Map<String, Object> result = new HashMap<>();
/*boolean navFlag = this.getParameterBoolean(Constants.NAV_KEY, request);
rteturnResult.put(Constants.NAV_KEY, navFlag);
if (navFlag == true) {
rteturnResult.put("success", "true");
resultArray.add(result);
rteturnResult.put("rows", resultArray);
return null;
}
*/
// rows per page
String lotId = MapUtils.getString(map, "lotId");
String carrierId = MapUtils.getString(map, "carrierId");
Integer startRow = MapUtils.getInteger(map, "start", 0);
Integer pageSize = MapUtils.getInteger(map, "limit", Integer.MAX_VALUE);
long carrierRrn = 0;
if (carrierId != null && !carrierId.trim().equals("")) {
carrierRrn = this.getInstanceRrn(StringUtils.trimToUpperCase(carrierId),
this.getNamedSpace(ObjectList.ENTITY_KEY, facility),
ObjectList.ENTITY_KEY);
Assert.isFalse(carrierRrn <= 0, Errors.create().content("No such Carrier exist!").build());
}
Map lotInfo = null;
if (StringUtils.isNotEmpty(lotId) || carrierRrn > 0) {
lotInfo = lotQueryService.getLotInfoasMap(facility, StringUtils.trimToUpperCase(lotId), carrierRrn);
}
Assert.isFalse(lotInfo == null, Errors.create().content("No such Lot exist!").build());
Long lotRrn = MapUtils.getLong(lotInfo, "lotRrn");
int processVersion = MapUtils.getIntValue(lotInfo, "processVersion");
Map condition = new HashMap();
condition.put("lotRrn", lotRrn);
Collection lotHistory = lotQueryService.qryLotHistoryExp(lotRrn, startRow, pageSize);
if (lotHistory != null && !lotHistory.isEmpty()) {
Map<Long, String> paramSetMap = wipQueryService.getParamSetMapByLotRrn(lotRrn);
int i = 1;
for (Iterator iterator = lotHistory.iterator(); iterator.hasNext(); ) {
HashMap object = (HashMap) iterator.next();
Collection operationList = (Collection) object.get(object.get("operationRrn"));
result = new HashMap<>();
StringBuffer transId = new StringBuffer();
StringBuffer holdReason = new StringBuffer();
StringBuffer trackInTime = new StringBuffer();
StringBuffer trackInUser = new StringBuffer();
String lastTrackInTime = null;
StringBuffer trackOutTime = new StringBuffer();
StringBuffer trackOutUser = new StringBuffer();
String lastTrackOutTime = null;
StringBuffer holdComments = new StringBuffer();
StringBuffer holdUsers = new StringBuffer();
StringBuffer releaseComments = new StringBuffer();
StringBuffer splitLots = new StringBuffer();
StringBuffer mergeLots = new StringBuffer();
StringBuffer reworkFlag = new StringBuffer();
StringBuffer scrapFlag = new StringBuffer();
StringBuffer action = new StringBuffer();
StringBuffer reticleId = new StringBuffer();
StringBuffer stepComments = new StringBuffer();
String parameterData = "";
StringBuffer operationParameters = new StringBuffer();
StringBuffer spcJob = new StringBuffer();
boolean firstFlag = true;
int holdCount = 0;
for (Iterator iterator2 = operationList.iterator(); iterator2.hasNext(); ) {
result.put("stepSeq", new Integer(i));
HashMap lotTransmap = (HashMap) iterator2.next();
String tempTransId = (String) lotTransmap.get("trans_id");
transId.append(tempTransId).append(",");
if (firstFlag) {
// 步骤的跨境时间限制
Lot lot = lotQueryService.getLot(Long.valueOf(lotTransmap.get("lotRrn").toString()));
//TODO: timelimit待支持
//result.put("queueTime", timeLimitService.getOperationQueueTime(lot.getProcessRrn(),
//lot.getProcessVersion(),
//lot.getOperationRrn()));
result.put("lotId", lotTransmap.get("lot_id"));
result.put("carrierId", lotTransmap.get("carrierId"));
result.put("productId", lotTransmap.get("product_id"));
result.put("processId", lotTransmap.get("technology_id"));
result.put("processRrn", lotTransmap.get("process_rrn"));
result.put("operationRrn", lotTransmap.get("operation_rrn"));
result.put("routeRrn", lotTransmap.get("routeRrn"));
result.put("productRrn", lotTransmap.get("productRrn"));
result.put("processVersion", processVersion);
result.put("stageId", lotTransmap.get("stageId"));
result.put("routeId", lotTransmap.get("route_id"));
result.put("routeDesc", getInstanceDesc(
getInstanceRrn(String.valueOf(lotTransmap.get("route_id")), "MYCIM2",
ObjectList.WFL_KEY)));
addOperation(result, lotTransmap);
result.put("operationType", MapUtils.getString(lotTransmap, "operationType"));
result.put("workArea", MapUtils.getString(lotTransmap, "workArea"));
result.put("operationDesc", MapUtils.getString(lotTransmap, "operationDesc"));
result.put("flowSeq", MapUtils.getString(lotTransmap, "flowSeq"));
result.put("recipeId", lotTransmap.get("recipeId"));
result.put("recipeParam", lotTransmap.get("recipeParam"));
result.put("recipePhysicalId", MapUtils.getString(lotTransmap, "recipePhysicalId"));
result.put("quantity", lotTransmap.get("qty_1"));
result.put("equipId", lotTransmap.get("equipment_id"));
result.put("stepSequence", lotTransmap.get("step_sequence"));
result.put("lotPollutionLevel", lotTransmap.get("lotPollutionLevel"));
result.put("lotPollutionLevelAfter", lotTransmap.get("lotPollutionLevelAfter"));
result.put("operationSeq", lotTransmap.get("operationSeq"));
result.put("routeSeq", lotTransmap.get("routeSeq"));
result.put("hotFlag", lotTransmap.get("hotFlag"));
result.put("priority", lotQueryService
.getPriorityText(MapUtils.getInteger(lotTransmap, "priority"), facility));
result.put("createCategory", lotTransmap.get("createCategory"));
ArrayList lotsList = (ArrayList) lotService
.getLotsByRunRrn(MapUtils.getLong(lotTransmap, "runRrn"));
if (lotsList != null && lotsList.size() > 1) {
result.put("runRrn", lotTransmap.get("runRrn"));
}
condition.put("lotRrn", lotInfo.get("lotRrn").toString());
condition.put("stepSequence", lotTransmap.get("step_sequence"));
result.put("processStepIdVersion", MapUtils.getString(lotTransmap, "processStepIdVersion"));
List comments = lotQueryService.qryLotStepHistoryComment(lotRrn, MapUtils.getLongValue(object,"step_sequence",0L),
1, 1000);
if (comments != null && !comments.isEmpty()) {
for (Iterator iterator3 = comments.iterator(); iterator3.hasNext(); ) {
Map comment = (Map) iterator3.next();
stepComments.append("(").append(comment.get("commentSequence")).append(")")
.append(comment.get("stepComment")).append(";");
}
}
firstFlag = false;
}
if (lotTransmap.get("reticleId") != null &&
!(reticleId.indexOf((String) lotTransmap.get("reticleId")) > 0)) {
reticleId.append(lotTransmap.get("reticleId")).append(" ");
}
result.put("reticleId", lotTransmap.get("reticleId"));
if (TransactionNames.HOLD_KEY.equals(tempTransId)) {
holdReason.append(lotTransmap.get("reason")).append(" ");
holdComments.append(lotTransmap.get("comments")).append(" ");
holdUsers.append(lotTransmap.get("trans_performed_by")).append(" ");
holdCount++;
}
if (TransactionNames.RELEASE_KEY.equals(tempTransId)) {
releaseComments.append(lotTransmap.get("reason")).append(" ");
}
if (TransactionNames.MOVEIN_KEY.equals(tempTransId)) {
trackInTime.append(lotTransmap.get("trans_start_timestamp")).append(" ");
trackInUser.append(lotTransmap.get("trans_performed_by")).append(" ");
lastTrackInTime = (String) lotTransmap.get("trans_start_timestamp");
}
if (TransactionNames.MOVEOUT_KEY.equals(tempTransId)) {
trackOutTime.append(lotTransmap.get("trans_start_timestamp")).append(" ");
trackOutUser.append(lotTransmap.get("trans_performed_by")).append(" ");
lastTrackOutTime = (String) lotTransmap.get("trans_start_timestamp");
}
if (TransactionNames.SPLIT_KEY.equals(tempTransId)) {
splitLots.append(lotTransmap.get("to_lot_id")).append(",");
}
if (TransactionNames.MERGE_KEY.equals(tempTransId)) {
mergeLots.append(lotTransmap.get("to_lot_id")).append(",");
}
if (TransactionNames.EXTERNALREWORK_KEY.equals(tempTransId) ||
TransactionNames.INTERNALREWORK_KEY.equals(tempTransId)) {
reworkFlag.append("rework").append(" ");
}
if (TransactionNames.SCRAP_KEY.equals(tempTransId)) {
scrapFlag.append(lotTransmap.get("lot_id")).append(",");
}
if (TransactionNames.EXCHANGE_KEY.equals(tempTransId) ||
StringUtils.indexOf(tempTransId, TransactionNames.VIRTUAL_KEY) > 0) {
if (StringUtils.equalsIgnoreCase("CN", language)) {
action.append(tempTransId).append(": ").append(lotTransmap.get("trans_start_timestamp"))
.append(" 目标晶舟:").append(lotTransmap.get("targetCarrierId")).append(" 操作者: ")
.append(lotTransmap.get("trans_performed_by")).append(" 备注: ")
.append(convertNull2Blank(lotTransmap.get("comments"))).append("<br>");
} else {
action.append(tempTransId).append(": ").append(lotTransmap.get("trans_start_timestamp"))
.append(" Target Cassette Id:").append(lotTransmap.get("targetCarrierId"))
.append(" Operator: ").append(lotTransmap.get("trans_performed_by"))
.append(" Remarks: ").append(convertNull2Blank(lotTransmap.get("comments")))
.append("<br>");
}
}
if ((!TransactionNames.MOVEIN_KEY.equals(tempTransId)) &&
(!TransactionNames.MOVEOUT_KEY.equals(tempTransId)) &&
(!TransactionNames.DISPATCH_KEY.equals(tempTransId)) &&
(!TransactionNames.MOVENEXT_KEY.equals(tempTransId)) &&
(!TransactionNames.CREATE_KEY.equals(tempTransId))
// && (!TransactionNames.START_KEY.equals(tempTransId))
&& (!TransactionNames.SPLIT_HOLD_KEY.equals(tempTransId)) &&
(!TransactionNames.SPLIT_RELEASE_KEY.equals(tempTransId)) &&
(!TransactionNames.LBRD_KEY.equals(tempTransId)) &&
(!TransactionNames.EXCHANGE_KEY.equals(tempTransId) &&
StringUtils.indexOf(tempTransId, TransactionNames.VIRTUAL_KEY) <= 0)) {
action.append(tempTransId).append(": ");
if (StringUtils.equals(TransactionNames.SPLITFROM_KEY, tempTransId) ||
StringUtils.equals(TransactionNames.SPLIT_KEY, tempTransId) ||
StringUtils.equals(TransactionNames.MERGE_KEY, tempTransId) ||
StringUtils.equals(TransactionNames.MERGETO_KEY, tempTransId)) {
String targetUnitId = MapUtils.getString(lotTransmap, "targetUnitId");
targetUnitId = StringUtils.substring(targetUnitId, StringUtils.indexOf(targetUnitId, "("));
action.append(MapUtils.getString(lotTransmap, "to_lot_id") + targetUnitId);
}
// 结尾使用<br>,以便前台显示时能够换行
action.append(lotTransmap.get("trans_start_timestamp")).append(" 操作者: ")
.append(lotTransmap.get("trans_performed_by")).append(" 原因: ")
.append(convertNull2Blank(lotTransmap.get("reason"))).append(" 备注: ")
.append(convertNull2Blank(lotTransmap.get("comments"))).append("<br>");
}
}
result.put("transId", transId.toString());
result.put("trackInTime", trackInTime.toString().trim());
result.put("trackInUser", trackInUser.toString().trim());
result.put("trackOutTime", trackOutTime.toString().trim());
result.put("trackOutUser", trackOutUser.toString().trim());
String processTime = "";
if (lastTrackInTime != null && lastTrackOutTime != null) {
Date lastTrackInDate = DateUtils.parse(lastTrackInTime, DateUtils.DATE_FORMAT);
Date lastTrackOutDate = DateUtils.parse(lastTrackOutTime, DateUtils.DATE_FORMAT);
if (lastTrackOutDate.getTime() > lastTrackInDate.getTime()) {
processTime = DateUtils
.formatDateForSeconds((lastTrackOutDate.getTime() - lastTrackInDate.getTime()) / 1000);
}
}
result.put("processTime", processTime);
result.put("holdReson", holdReason.toString());
result.put("holdComment", holdComments.toString());
result.put("holdUser", holdUsers.toString());
result.put("releaseComment", releaseComments.toString());
if (holdCount > 0) {
result.put("holdFlag", holdCount + "");
}
result.put("splitLots", splitLots.toString());
result.put("mergeLots", mergeLots.toString());
result.put("reworkFlag", reworkFlag.toString().trim());
result.put("scrapFlag", scrapFlag.toString());
// 去除action中的最后一个<br>
String actionStr = action.toString().trim();
if (actionStr.length() > 0) {
if (actionStr.substring(actionStr.length() - 4).equals("<br>")) {
actionStr = actionStr.substring(0, actionStr.length() - 4);
}
}
result.put("action", actionStr);
result.put("stepComment", stepComments.toString());
// add EDC Parameter collection
// parameterData = wipQueryService.getParamCon(Long.parseLong(lotInfo.get
// ("lotRrn").toString()),
// condition.get("stepSequence").toString());
// if (parameterData.length() > 0) {
// if (parameterData.substring(parameterData.length() - 4).equals
// ("<br>")) {
// parameterData = parameterData.substring(0, parameterData.length()
// - 4);
// }
// }
// result.put("edcParameter", parameterData);
result.put("edcParameter",
paramSetMap.get(lotRrn + MapUtils.getLongValue(condition, "stepSequence", 0)));
Long stepSequence = MapUtils.getLong(result, "stepSequence");
List operationParameterList = lotQueryService.qryOperationParameters(lotRrn, stepSequence);
for (Iterator iterator2 = operationParameterList.iterator(); iterator2.hasNext(); ) {
Map operationParameter = (Map) iterator2.next();
String operationParameterId = MapUtils.getString(operationParameter, "operationParameterId");
String operationParameterDesc = sysService
.referenceDetailExchangeNull("$$OPERATION_PARAMETER", operationParameterId, "DATA_1_VALUE");
operationParameters.append(operationParameterDesc);
operationParameters.append(":");
operationParameters.append(MapUtils.getString(operationParameter, "operationParameterValue"));
if (iterator2.hasNext()) {
operationParameters.append("<br>");
}
}
result.put("operationParameters", operationParameters.toString());
if (StringUtils.isNotEmptyTrim(parameterData)) {
int k = 1;
Collection spcJobInfoList = spcService.getSpcJobInfo(lotRrn, stepSequence);
if (spcJobInfoList.size() > 0) {
for (Iterator iterator2 = spcJobInfoList.iterator(); iterator2.hasNext(); ) {
Map spcJobInfo = (Map) iterator2.next();
String reasonCode = MapUtils.getString(spcJobInfo, "reasonCode");
if (StringUtils.isNotEmpty(reasonCode)) {
spcJob.append(k++);
spcJob.append(":");
spcJob.append(reasonCode);
if (iterator2.hasNext()) {
spcJob.append("<br>");
}
}
}
}
result.put("spcJobInfo", spcJob.toString());
}
result.put("facilityRrn", facility);
resultArray.add(result);
i++;
}
}
rteturnResult.put("rows", resultArray);
//查询总条数
int totalCount = lotQueryService.qryLotTransHisCountByStepseq(lotRrn);
rteturnResult.put("totalCount", totalCount);
rteturnResult.put("success", "true");
return rteturnResult;
}
public String getNewLotComments(Map params) {
Lot lot = new Lot();
lot.setLotRrn(MapUtils.getLongValue(params, "lotRrn"));
lot.setStepSequence(MapUtils.getLongValue(params, "stepSequence"));
return getLotComments(lot, MapUtils.getBoolean(params, "latest"));
}
public ActionForward validLot(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
ActionForward dest = WebUtils.NULLActionForward;
Long facility = LocalContext.getFacilityRrn();
Map result = new HashMap();
Map lotBaseInfo = new HashMap();
String lotId = request.getParameter("lotId");
Map lotInfo = null;
if (lotId != null) {
// Lot lot = lotQueryService.getLot(lotId.trim().toUpperCase(), facility);
// lotInfo = BeanUtils.copyBeanToMap(lot);
lotInfo = lotQueryService.getLotInfoasMap(facility, StringUtils.trimToUpperCase(lotId), null);
}
if (lotInfo == null) {
if (StringUtils.equalsIgnoreCase("CN", I18nUtils.getCurrentLanguage().toString())) {
result.put("Msg", "未查询到相关信息");
} else {
result.put("Msg", "Not querying the relevant information");
}
result.put("lotBaseInfo", "");
WebUtils.writeJson(response, result.toString());
} else {
lotBaseInfo.put("lotId", lotInfo.get("lotId"));
lotBaseInfo.put("productId", lotInfo.get("productId"));
lotBaseInfo.put("lotType", lotInfo.get("lotType"));
lotBaseInfo.put("carrierId", lotInfo.get("carrierId"));
lotBaseInfo.put("priority", wipQueryService
.getHotflagSplicingPriority(NumberUtils.toInt(MapUtils.getString(lotInfo, "hotflag"), 0),
NumberUtils.toInt(MapUtils.getString(lotInfo, "priority"), 0),
facility));
lotBaseInfo.put("lotRrn", lotInfo.get("lotRrn"));
lotBaseInfo.put("processVersion", lotInfo.get("processVersion"));
long processRrn = MapUtils.getLongValue(lotInfo, "processRrn");
lotBaseInfo.put("newProcessVersion", getProcessVersion(processRrn));
request.setAttribute("lot_base_info", JsonUtils.toString(lotBaseInfo));
request.setAttribute("from", "lot_location_4csec_action");
request.setAttribute("lot_id", lotId);
dest = mapping.findForward(Constants.LOTHISTORY_KEY);
}
return dest;
}
private void addOperation(Map<String, Object> result, HashMap object) throws Exception {
if (NumberUtils.isNumber(MapUtils.getString(object,"operation_rrn"))) {
Operation operation = getOperation(new Operation(MapUtils.getLongValue( object,"operation_rrn")));
if (operation != null) {
result.put("operationDesc", operation.getInstanceDesc());
result.put("operationId", operation.getInstanceId());
String operationType = sysService
.referenceDetailExchangeNull("$OPERATION_TYPE", operation.getObjectType(), "DATA_1_VALUE");
result.put("operationType", operationType);
if (operation != null && StringUtils.isNotEmpty(operation.getWorkArea())) {
String workArea = sysService
.referenceDetailExchangeNull("$$WORK_AREA", operation.getWorkArea(), "DATA_1_VALUE");
result.put("workArea", workArea);
}
// add edc flag
result.put("edcFlag", operation.getMoveInRequired());
}
}
}
private String convertNull2Blank(Object obj) {
String str = "";
if (obj != null && (obj instanceof String) && !"null".equals(obj)) {
return obj.toString();
}
return str;
}
private String getLotComments(Lot lot, Boolean latest) {
Map condition = new HashMap();
condition.put("lotRrn", lot.getLotRrn());
condition.put("stepSequence", lot.getStepSequence());
/* List commentList = (List) lotQueryService.qryLotStepHistoryComment(lot.getLotRrn(),
lot.getStepSequence(), 1, 1000);
Iterator it = commentList.iterator();
StringBuffer commentStr = new StringBuffer();
Integer commentSequence = 0;
while (it.hasNext()) {
Map m = (HashMap) it.next();
if (latest != null && latest) {
//只要最新的一条数据
if (MapUtils.getInteger(m, "commentSequence") > commentSequence) {
commentSequence = MapUtils.getInteger(m, "commentSequence");
commentStr.delete(0, commentStr.length());
commentStr.append(MapUtils.getString(m, "commentSequence")).append(COMMENT_DOM).append(
MapUtils.getString(m, "stepComment")).append(";\n");
}
} else {
commentStr.append(MapUtils.getString(m, "commentSequence")).append(COMMENT_DOM).append(
MapUtils.getString(m, "stepComment")).append(";\n");
}
}*/
List commentList = lotQueryService.qryLotHistoryCommentByTime(lot.getLotRrn());
StringBuilder commentStr = new StringBuilder();
//取commentList 第一条,即历史最新一条
for (Object o : commentList) {
Map m = (HashMap) o;
commentStr.append(MapUtils.getString(m, "stepComment")).append(";\n");
break;
}
return commentStr.toString();
}
}