LotBondingMappingAction.java

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


import com.fa.sesa.i18n.I18nUtils;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.utils.beans.BeanUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.valueobject.wip.BondingMapping;
import com.mycim.webapp.TemplateLocation;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.WipSetupAction;
import com.mycim.webapp.forms.lot.LotBondingMappingForm;
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.*;

/**
 * 批次Bonding Info
 *
 * @author weike.li
 * @version 6.0.0
 * @date 2019/9/25
 **/
public class LotBondingMappingAction extends WipSetupAction {

    private static final String CN = "CN";

    private static final String NUM_1 = "1";

    private static final String CURRENT_FOR_COMPARE = "currentForCompare";

    private static final String SHOW_ALL = "showAll";

    private static final String ALL = "all";

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) throws Exception {

        String startDateStr = DateUtils.getNowTime(DateUtils.DATE_FORMAT4DAY);
        Date date = DateUtils.parseDate(startDateStr, DateUtils.DATE_FORMAT4DAY);
        String endDateStr = DateUtils.formatDate(DateUtils.addDays(date, 1), DateUtils.DATE_FORMAT4DAY);

        request.setAttribute("startDate", startDateStr);
        request.setAttribute("endDate", endDateStr);
        request.setAttribute("thisPage", 1);
        request.setAttribute("maxPage", 1);
        request.setAttribute("pageSize", 50);
        request.setAttribute("lastPageSize", 50);
        request.setAttribute("bondingMappings", new ArrayList<BondingMapping>());
        request.setAttribute("date_format", "YYYY/MM/DD");
        return mapping.findForward("queryBondingMapping");
    }

    public ActionForward query(ActionMapping mapping, LotBondingMappingForm theform, HttpServletRequest request) {

        queryHistory(theform, request);

        return mapping.findForward("queryBondingMapping");
    }

    public ActionForward export(LotBondingMappingForm theForm, HttpServletRequest request,
                                HttpServletResponse response) throws Exception {

        Page page = queryHistory(theForm, request);
        Collection results = page.getResults();
        List dataList = new ArrayList();
        int i = 1;
        for (Object result : results) {
            BondingMapping bondingMapping = (BondingMapping) result;
            Map map = BeanUtils.copyBeanToMap(bondingMapping);
            map.put("seq", i++);
            dataList.add(map);
        }

        Map<String, Object> titles = WebUtils.getExportTitles(request);
        if (CN.equals(I18nUtils.getCurrentLanguage())) {
            titles.put("seq", "序号");
            titles.put("title", "批次Bonding Info");
        } else {
            titles.put("seq", "Seq.");
            titles.put("title", "Lot Bonding Info");
        }

        String exportDateTime = DateUtils.getNowTime(DateUtils.DATE_FORMAT4NOSPLICING);
        String fileName = "LotBondingInfo_" + exportDateTime + ".xlsx";

        WebUtils.exportExcel(fileName, titles, dataList, TemplateLocation.LOT_BONDING_INFO, response);
        return WebUtils.NULLActionForward;
    }

    private Page queryHistory(LotBondingMappingForm theForm, HttpServletRequest request) {
        String productId = WebUtils.getParameterUpperCase("productId", request);
        String startDateStr = WebUtils.getParameter("startDate", request);
        String endDateStr = WebUtils.getParameter("endDate", request);

        if (StringUtils.isNotEmpty(productId)) {
            productId = productId.trim();
        }
        String tLotId = theForm.getTargetLotId();
        if (StringUtils.isNotEmptyTrim(tLotId)) {
            tLotId = tLotId.trim().toUpperCase();
        }
        String tUnitId = theForm.getTargetUnitId();
        if (StringUtils.isNotBlank(tUnitId)) {
            tUnitId = tUnitId.trim().toUpperCase();
        }

        int thisPage = WebUtils.getParameterInt("thisPage", request);
        int pageSize = WebUtils.getParameterInt("pageSize", request);
        Page page = new Page();
        page.setPageNo(thisPage);
        page.setPageSize(pageSize);
        if (NUM_1.equals(WebUtils.getParameter(CURRENT_FOR_COMPARE, request))) {
            page.setPageNo(1);
        }
        if (StringUtils.isNotBlank(request.getParameter(SHOW_ALL)) ||
                StringUtils.equalsIgnoreCase(WebUtils.getExportType(request), ALL)) {
            page.setPageNo(1);
            page.setPageSize(Integer.MAX_VALUE);
        }

        page = lotQueryService.qryBondedMappingInfos(tLotId, tUnitId, productId, startDateStr, endDateStr, page);
        if (StringUtils.isNotBlank(request.getParameter(SHOW_ALL))) {
            page.setPageSize(Integer.MAX_VALUE);
        } else {
            page.setPageSize(50);
        }

        request.setAttribute("lotId", tLotId);
        request.setAttribute("waferId", tUnitId);
        request.setAttribute("thisPage", page.getPageNo());
        request.setAttribute("maxPage", page.getTotalPages());
        request.setAttribute("pageSize", 50);
        request.setAttribute("lastPageSize", 50);
        request.setAttribute("bondingMappings", page.getResults());
        request.setAttribute("startDate", startDateStr);
        request.setAttribute("endDate", endDateStr);
        request.setAttribute("productId", productId);
        request.setAttribute("date_format", "YYYY/MM/DD");
        return page;
    }

}