AutoMonitorLotPortalAction.java
package com.mycim.webapp.actions;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.utils.CheckRegexUtils;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.automonitor.dto.LotAutoMonitorQueryDTO;
import com.mycim.valueobject.automonitor.entity.LotAutoMonitorInfo;
import com.mycim.valueobject.automonitor.util.AutoMonitorOperationConstants;
import com.mycim.valueobject.automonitor.util.MonitorJobStatusConts;
import com.mycim.valueobject.sys.ReferenceFileDetail;
import com.mycim.valueobject.wip.LotStatus;
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 kang.zhang
*/
public class AutoMonitorLotPortalAction extends AutoMonitorAction {
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
String[] types = new String[]{"EQUIPMENTLOCATION"};
registerOptionType(LocalContext.getFacilityRrn(), Arrays.asList(types), request);
int tabMaxCount = Integer.MAX_VALUE;
String tabMaxCountStr;
tabMaxCountStr = sysService.referenceDetailExchangeNull("$PORTAL_TAB_MAX_COUNT", "LOTPORTAL", "DATA_1_VALUE");
if (StringUtils.isNotBlank(tabMaxCountStr) && NumberUtils.isNumber(tabMaxCountStr)) {
tabMaxCount = NumberUtils.toInt(tabMaxCountStr, Integer.MAX_VALUE);
}
request.setAttribute("totalTabCount", tabMaxCount);
return mapping.findForward("lotPortal");
}
public List initLotStatus(Map map) {
List list = new ArrayList();
long refRrn = getInstanceRrn("$$AUTO_MONITOR_LOT_STATUS", LocalContext.getFacilityRrn(),
ObjectList.REFERENCE_FILE_KEY);
List<ReferenceFileDetail> refFiles = sysService.getReferenceFileDetails(refRrn);
if (CollectionUtils.isNotEmpty(refFiles)) {
for (ReferenceFileDetail rd : refFiles) {
map.put("value", rd.getData1Value());
map.put("key", rd.getKey1Value());
list.add(map);
}
}
return list;
}
public Map query(Map<String, Object> params) {
Long pageSize = MapUtils.getLong(params, "limit");
Long pageNo = MapUtils.getLong(params, "page");
Page page = new Page(pageNo, pageSize);
LotAutoMonitorQueryDTO queryDTO = getConditionMapByMap(params);
page = lotAutoMonitorInqService.getLotMonitorLotPage(page, queryDTO);
Map<String, Object> map = MapUtils.newHashMap();
map.put("data", page.getResults());
map.put("totalCount", page.getTotalItems());
return map;
}
private LotAutoMonitorQueryDTO getConditionMapByMap(Map<String, Object> params) {
LotAutoMonitorQueryDTO queryDto = new LotAutoMonitorQueryDTO();
queryDto.setLotId(CheckRegexUtils.formatSearchString(MapUtils.getString(params, "lotid")));
queryDto.setMainEqptLocation(CheckRegexUtils.formatSearchString(MapUtils.getString(params, "eqptLocationCondition")));
queryDto.setMainEqptId(CheckRegexUtils.formatSearchString(MapUtils.getString(params, "eqptIdCondition")));
queryDto.setCarrierId(CheckRegexUtils.formatSearchString(MapUtils.getString(params, "carrierIdCondition")));
queryDto.setItemType(CheckRegexUtils.formatSearchString(MapUtils.getString(params, "itemtype")));
queryDto.setStartDate(CheckRegexUtils.formatSearchString(MapUtils.getString(params, "startDateCondition")));
queryDto.setEndDate(CheckRegexUtils.formatSearchString(MapUtils.getString(params, "endDateCondition")));
queryDto.setProductId(CheckRegexUtils.formatSearchString(MapUtils.getString(params, "productIdCondition")));
List<String> queryStatus = new ArrayList<>();
Object lotStatus1 = MapUtils.getObject(params, "lotStatus1");
if(lotStatus1 instanceof List) {
List<String> lotStatusList = (List<String>) lotStatus1;
for (String status : lotStatusList) {
if (StringUtils.equals(LotStatus.ACTIVE, status)) {
for (String activeStatus : LotStatus.getActiveStatus()) {
if (!lotStatusList.contains(activeStatus)) {
queryStatus.add(activeStatus);
}
}
}
}
queryStatus.addAll(lotStatusList);
} else if(lotStatus1 instanceof String) {
queryStatus.add((String)lotStatus1);
}
queryDto.setLotStatus(queryStatus);
List<String> queryJobStatus = new ArrayList<>();
Object jobStatusObj = MapUtils.getObject(params, "autoMonitorJobStatus");
if(jobStatusObj instanceof List) {
List<String> jobStatusList = (List<String>) jobStatusObj;
for (String status : jobStatusList) {
if (StringUtils.equals(MonitorJobStatusConts.CLOSE_KEY, status)) {
queryJobStatus.addAll(Arrays.asList(MonitorJobStatusConts.getCloseJobStatus()));
}
if (!queryJobStatus.contains(status)) {
queryJobStatus.add(status);
}
}
queryJobStatus.addAll(jobStatusList);
} else if(jobStatusObj instanceof String) {
queryJobStatus.add((String)jobStatusObj);
}
queryDto.setAutoMonitorJobStatus(queryJobStatus);
return queryDto;
}
}