EquipmentConstrainHistAction.java

package com.mycim.webapp.actions.constrain;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
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.MapUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.prp.EquipmentConstrainInfo;
import com.mycim.webapp.TemplateLocation;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.PrpSetupAction;
import com.mycim.webapp.forms.EquipmentConstrainSetupForm;
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.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author kang.zhang
 * @version 6.0.0
 * @date 2019/9/18
 **/
public class EquipmentConstrainHistAction extends PrpSetupAction {
    private static final Integer PAGESIZE = 15;

    private static final String PAGE = "PAGE";

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) {
        request.setAttribute("userId", LocalContext.getUserId());
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.DATE_FORMAT4DAY);
        String startDateStr = sdf.format(date);
        date.setTime(date.getTime() + 24 * 60 * 60 * 1000L);
        String endDateStr = sdf.format(date);

        request.setAttribute("startDate", startDateStr);
        request.setAttribute("endDate", endDateStr);
        request.setAttribute("currentPage", 1);
        request.setAttribute("maxPage", 1);
        request.setAttribute("pageSize", PAGESIZE);
        request.setAttribute("lastPageSize", PAGESIZE);
        return mapping.getInputForward();
    }


    public ActionForward queryHist(ActionMapping mapping, EquipmentConstrainSetupForm theform,
                                   HttpServletRequest request) {
        long facilityRrn = LocalContext.getFacilityRrn();

        String startDateStr = WebUtils.getParameter("startDate", request);
        String endDateStr = WebUtils.getParameter("endDate", request);
        String eqptId = StringUtils.trimToUpperCase(theform.getEquipmentId());

        /*long equipmentRrn = this.getInstanceRrn(eqptId, facilityRrn, ObjectList.ENTITY_KEY);
        if (equipmentRrn <= 0) {
            throw new WebException("equipment.id_not_exist", "Equipment ID does not exist!");
        }*/
        Integer thisPage = WebUtils.getParameterInt("thisPage", request);
        Integer pageSize = WebUtils.getParameterInt("pageSize", request);
        if (StringUtils.isNotBlank(WebUtils.getParameter("query", request))) {
            thisPage = 1;
        } else if (StringUtils.isNotBlank(WebUtils.getParameter("queryAll", request))) {
            thisPage = 1;
        }

        Page page;
        if (StringUtils.isNotBlank(WebUtils.getParameter("queryAll", request))) {
            page = getPage(true, pageSize, thisPage, 15, 1);
        } else {
            page = getPage(false, pageSize, thisPage, 15, 1);
        }

        page = getEquipmentConstrainHist(request, page, startDateStr, endDateStr, eqptId);

        request.setAttribute("currentPage", page.getPageNo());
        request.setAttribute("pageSize", page.getPageSize());
        request.setAttribute("maxPage", page.getTotalPages());
        request.setAttribute("lastPageSize", page.getPageSize());

        request.setAttribute("equipmentId", eqptId);
        request.setAttribute("ecsHist", page.getResults());
        request.setAttribute("startDate", startDateStr);
        request.setAttribute("endDate", endDateStr);
        return mapping.getInputForward();
    }

    public Page queryHistoryList(Map parameterMap) {
        long facilityRrn = LocalContext.getFacilityRrn();

        String startDateStr = MapUtils.getString(parameterMap,"startDate");
        String endDateStr = MapUtils.getString(parameterMap,"endDate");
        String eqptId = MapUtils.getString(parameterMap,"equipmentId");

        /*long equipmentRrn = this.getInstanceRrn(eqptId, facilityRrn, ObjectList.ENTITY_KEY);
        if (equipmentRrn <= 0) {
            throw new WebException("equipment.id_not_exist", "Equipment ID does not exist!");
        }*/
        Integer thisPage = MapUtils.getInteger(parameterMap,"page", 1);
        Integer pageSize = MapUtils.getInteger(parameterMap,"limit", 20);

        Page page;
        if (StringUtils.isNotBlank(MapUtils.getString(parameterMap,"queryAll"))) {
            pageSize = Integer.MAX_VALUE;
        }
        page = new Page(thisPage, pageSize);
        page = getEquipmentConstrainHist(null, page, startDateStr, endDateStr, eqptId);
        return page;
    }


    public ActionForward export(ActionMapping mapping, EquipmentConstrainSetupForm theform, HttpServletRequest request,
                                HttpServletResponse response) throws Exception {
        Map<String, Object> titles = WebUtils.getExportTitles(request);
        titles.put("title", "设备限制历史");
        String startDateStr = WebUtils.getParameter("startDate", request);
        String endDateStr = WebUtils.getParameter("endDate", request);
        String eqptId = StringUtils.trimToUpperCase(theform.getEquipmentId());

        String exportType = WebUtils.getExportType(request);
        Integer thisPage = WebUtils.getParameterInt("thisPage", request);
        Integer pageSize = WebUtils.getParameterInt("pageSize", request);
        Page page;
        if (StringUtils.equalsIgnoreCase(exportType, PAGE)) {
            page = getPage(false, pageSize, thisPage, 15, 1);
        } else {
            page = getPage(true, pageSize, thisPage, 15, 1);
        }


        page = getEquipmentConstrainHist(request, page, startDateStr, endDateStr, eqptId);

        // 导出
        String exportDateTime = DateUtils.getNowTime(DateUtils.DATE_FORMAT4NOSPLICING);
        List<Map> data = (List<Map>) page.getResults();

        String fileName = "EquipmentConstrainHist" + exportDateTime + ".xlsx";
        WebUtils.exportExcel(fileName, titles, data, TemplateLocation.EQUIPMENT_CONSTRAIN_HIST, response);
        return WebUtils.NULLActionForward;
    }

    private Page getEquipmentConstrainHist(HttpServletRequest request, Page page, String startDateStr,
                                           String endDateStr, String eqptId) {
        Timestamp startDate = DateUtils.stringToTimestamp(startDateStr + " 00:00:00");

        Timestamp endDate = DateUtils.stringToTimestamp(endDateStr + " 00:00:00");

        Assert.isFalse(startDate == null || endDate == null,
                       Errors.create().key(MessageIdList.DATE_DATE_FORMAT_INCORRECT)
                             .content("Equipment ID does not exist!").build());

        EquipmentConstrainInfo ecs = new EquipmentConstrainInfo();

        ecs.setEquipmentId(eqptId);

        ecs.setStartDate(startDateStr);
        ecs.setEndDate(endDateStr);

        page = constrainService.qryEquipmentConstrainHist(ecs, page);
        return page;
    }

    private Page getPage(boolean isExportAll, Integer pageSize, Integer currentPage, Integer defaultpageSize,
                         Integer defaultcurrentPage) {
        Page page = new Page();
        currentPage = currentPage == 0 ? defaultcurrentPage : currentPage;
        pageSize = pageSize == 0 ? defaultpageSize : pageSize;
        if (isExportAll) {
            page.setPageNo(1);
            page.setPageSize(Integer.MAX_VALUE);
        } else {
            page.setPageNo(currentPage);
            page.setPageSize(pageSize);
        }
        return page;
    }

}