LotPlanTransHistoryAction.java

package com.mycim.webapp.actions.lot.lottranshistory;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
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.time.DateUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.webapp.Constants;
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.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 批次投片事务历史
 *
 * @author weike.li
 * @version 6.0.0
 * @date 2019/9/10
 **/
public class LotPlanTransHistoryAction extends WipSetupAction {

    private static final String RESET_PAGE_FLAG = "resetPageFlag";

    private static final String LOT_ID = "lotId";

    private static final String FROM_URL_FLAG = "fromUrlFlag";

    private static final String NUM_ONE = "1";

    private static final String THIS_PAGE = "thisPage";

    private static final String CURREN_TFOR_COMPARE = "currentForCompare";

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) {
        Map lotInfo = null;
        Map upMap = new HashMap(4);
        String lotId = StringUtils.EMPTY;
        lotId = WebUtils.getParameterUpperCase("lotId", request).trim();

        lotInfo = new HashMap();
        upMap.put("lotId", lotId);
        upMap.put("lotRrn", MapUtils.getLong(lotInfo, "lotRrn", 0L));


        request.setAttribute("map", upMap);
        request.setAttribute("lotInfo", lotInfo);
        Map map = (Map) request.getAttribute("map");

        int fixSize = 10;
        int current = 1;

        // 切换tab的时候,重置当前页为第一页
        if (StringUtils.isNotBlank(WebUtils.getParameter(RESET_PAGE_FLAG, request))) {
            current = 1;
        }

        List list1 = new ArrayList();

        request.setAttribute("list", list1);
        request.setAttribute("current", current);
        request.setAttribute("lastPageSize", lotQueryService.getCount("LOT_PLAN_H", map).longValue() % fixSize);
        request.setAttribute("pageSize", fixSize);
        request.setAttribute("maxPage", lotQueryService.getCount("LOT_PLAN_H", map).longValue() / fixSize + 1);
        return mapping.findForward(Constants.QUERY_KEY);
    }

    public ActionForward query(ActionMapping mapping, HttpServletRequest request) {
        Map lotInfo = null;
        Map upMap = new HashMap(5);
        boolean navFlag = request.getParameter("nav") != null;
        String lotTransId = request.getParameter("lotTransId");
        String lotId = StringUtils.EMPTY;
        Long facility = LocalContext.getFacilityRrn();
        lotId = WebUtils.getParameterUpperCase("lotId", request).trim();

        if (navFlag) {
            lotInfo = new HashMap();
        } else if (navFlag != true) {
            Assert.isFalse(StringUtils.isEmpty(lotId),
                           Errors.create().key(MessageIdList.LOT_ID_EMPTY).content("Lot Id can't be Empty!").build());
            lotInfo = lotQueryService.getLotInfoasMap(facility, lotId);
            if (lotInfo == null) {
                lotInfo = wipQueryService.getLotPlanMap(lotId);
            }

            Assert.isFalse(lotInfo == null,
                           Errors.create().key(MessageIdList.LOT_MISSING_ID).content("No such lot info!").build());
            if (StringUtils.isBlank(MapUtils.getString(lotInfo, LOT_ID))) {
                lotInfo.put("lotId", lotId);
            }
        }
        upMap.put("lotId", lotId);
        upMap.put("lotRrn", MapUtils.getLong(lotInfo, "lotRrn", 0L));


        if (lotTransId != null && !"".equals(lotTransId)) {
            upMap.put("lotTransId", lotTransId);
            request.setAttribute("lotTransId", lotTransId);
        }

        request.setAttribute("map", upMap);
        request.setAttribute("lotInfo", lotInfo);
        Map map = (Map) request.getAttribute("map");
        Long facilityRrn = LocalContext.getFacilityRrn();

        if (StringUtils.equals(WebUtils.getParameter(FROM_URL_FLAG, request), NUM_ONE)) {
            request.setAttribute("fromUrlFlag", "1");
        }


        if (lotInfo == null && StringUtils.equals(WebUtils.getParameter(FROM_URL_FLAG, request), NUM_ONE)) {
            lotInfo = lotQueryService.getLotInfoasMap(facilityRrn, lotId);
            request.setAttribute("lotInfo", lotInfo);
            map = new HashMap();
            map.put("lotId", lotInfo.get("lotId"));
        }
        boolean flag = lotInfo == null;
        int fixSize = 10;

        int pageSize = fixSize;
        int current = 1;

        if (request.getParameter(THIS_PAGE) != null) {
            current = new Integer((String) request.getParameter("thisPage")).intValue();
        }
        // 切换tab的时候,重置当前页为第一页
        if (StringUtils.isNotBlank(WebUtils.getParameter(RESET_PAGE_FLAG, request))) {
            current = 1;
        }

        if (NUM_ONE.equals(request.getParameter(CURREN_TFOR_COMPARE))) {
            current = 1;
        }

        Long lotRrn = MapUtils.getLongValue(map, "lotRrn");
        if (MapUtils.isNotEmpty(map)) {
            map.remove("lotRrn");
        }
        List list = flag ? new ArrayList() : wipQueryService.queryLotPlanHistory(map, current, pageSize);
        if (MapUtils.isNotEmpty(map)) {
            map.put("lotRrn", lotRrn);
        }

        String allPriority = "";
        List list1 = new ArrayList();
        for (Object obj : list) {
            Map tempMap = (Map) obj;
            Map<String, String> m = MapUtils.convertToMapOfString(tempMap);

            if (StringUtils.isNotBlank(MapUtils.getString(m, "priority")) &&
                    StringUtils.isNotBlank(MapUtils.getString(m, "hotFlag"))) {
                allPriority = wipQueryService.getHotflagSplicingPriority(MapUtils.getInteger(m, "hotFlag"),
                                                                         MapUtils.getInteger(m, "priority"),
                                                                         facilityRrn);
            }
            m.put("allPriority", allPriority);
            list1.add(m);
        }
        request.setAttribute("list", list1);
        request.setAttribute("current", current);
        request.setAttribute("lastPageSize", lotQueryService.getCount("LOT_PLAN_H", map).longValue() % fixSize);
        request.setAttribute("pageSize", fixSize);
        request.setAttribute("maxPage", lotQueryService.getCount("LOT_PLAN_H", map).longValue() / fixSize + 1);

        return mapping.findForward(Constants.QUERY_KEY);
    }

    public ActionForward reset(ActionMapping mapping, HttpServletRequest request) {
        Map lotInfo = null;
        Map upMap = new HashMap();
        String lotId = StringUtils.EMPTY;
        lotId = WebUtils.getParameterUpperCase("lotId", request).trim();

        lotInfo = new HashMap();
        upMap.put("lotId", lotId);
        upMap.put("lotRrn", MapUtils.getLong(lotInfo, "lotRrn", 0L));


        request.setAttribute("map", upMap);
        request.setAttribute("lotInfo", lotInfo);
        Map map = (Map) request.getAttribute("map");

        int fixSize = 10;

        int current = 1;

        // 切换tab的时候,重置当前页为第一页
        if (StringUtils.isNotBlank(WebUtils.getParameter(RESET_PAGE_FLAG, request))) {
            current = 1;
        }

        List list1 = new ArrayList();

        request.setAttribute("list", list1);
        request.setAttribute("current", current);
        request.setAttribute("lastPageSize", lotQueryService.getCount("LOT_PLAN_H", map).longValue() % fixSize);
        request.setAttribute("pageSize", fixSize);
        request.setAttribute("maxPage", lotQueryService.getCount("LOT_PLAN_H", map).longValue() / fixSize + 1);
        return mapping.findForward(Constants.QUERY_KEY);
    }


    public ActionForward adjustHistoryComparison(ActionMapping mapping, HttpServletRequest request) {
        long lotRrn = WebUtils.getParameterLong("lotRrn", request);
        String transStartTimeString = WebUtils.getParameter("transStartTimestamp", request);

        Timestamp transStartTimestamp = new Timestamp(
                DateUtils.parse(transStartTimeString, DateUtils.DATE_FORMAT).getTime());

        request.setAttribute("adjustLotTransInfos",
                             lotQueryService.getLotAdjustDataWithSimilarTime(lotRrn, transStartTimestamp));

        return mapping.findForward("adjustHistoryComparison");
    }

}