ProductBondingInfoAction.java

package com.mycim.webapp.actions.product;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.webapp.Constants;
import com.mycim.webapp.TemplateLocation;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.PrpSetupAction;
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.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author Luopeng.Wang
 * @version 6.0.0
 * @date 2019/9/8
 **/
public class ProductBondingInfoAction extends PrpSetupAction {
    private static final String ALL = "all";

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) throws Exception {
        request.setAttribute("productBondingMap", new ArrayList<>());
        request.setAttribute("thisPage", 1);
        request.setAttribute("pageSize", 20);
        request.setAttribute("maxPage", 0);
        return mapping.findForward(Constants.INIT_KEY);
    }

    public ActionForward query(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                               HttpServletResponse response) {

        String productId = WebUtils.getParameter("productId", request);
        String bondingType = WebUtils.getParameter("bondingType", request);
        String showAll = WebUtils.getParameter("showAll", request);

        int current = 1;
        if (StringUtils.isNotEmpty(WebUtils.getParameter("thisPage", request)) &&
                StringUtils.isEmpty(WebUtils.getParameter("page", request))) {
            current = (int) NumberUtils.toDouble(WebUtils.getParameter("thisPage", request));
        }

        int pageSize = WebUtils.getParameterInt("pageSize", request);

        Page page = new Page();
        if (StringUtils.isNotBlank(showAll)) {
            page.setPageNo(1);
            page.setPageSize(Integer.MAX_VALUE);
        } else {
            page.setPageNo(current);
            if (pageSize <= 0) {
                pageSize = 20;
            }
            page.setPageSize(pageSize);
        }

        Assert.isFalse(StringUtils.isEmpty(productId),
                       Errors.create().key(MessageIdList.PRODUCT_ID_CANNOT_EMPTY).content("Product ID cannot be empty!")
                             .build());

        page = prpService.qryProductBondingInfo(page, productId, bondingType);

        request.setAttribute("productId", productId);
        request.setAttribute("bondingType", bondingType);
        request.setAttribute("productBondingMap", page.getResults());
        request.setAttribute("pageSize", pageSize);
        request.setAttribute("thisPage", page.getPageNo());
        request.setAttribute("maxPage", page.getTotalPages());

        return mapping.findForward(Constants.INIT_KEY);
    }

    public ActionForward export(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String productId = WebUtils.getParameter("productId", request);
        String bondingType = WebUtils.getParameter("bondingType", request);
        String exportType = WebUtils.getExportType(request);
        Map<String, Object> titles = WebUtils.getExportTitles(request);
        titles.put("title", "ProductBondingInfo");

        int current = 1;
        if (StringUtils.isNotEmpty(WebUtils.getParameter("thisPage", request)) &&
                StringUtils.isEmpty(WebUtils.getParameter("page", request))) {
            current = (int) NumberUtils.toDouble(WebUtils.getParameter("thisPage", request));
        }

        int pageSize = WebUtils.getParameterInt("pageSize", request);

        Page page = new Page();
        if (ALL.equals(exportType)) {
            page.setPageNo(1);
            page.setPageSize(Integer.MAX_VALUE);
        } else {
            page.setPageNo(current);
            if (pageSize <= 0) {
                pageSize = 20;
            }
            page.setPageSize(pageSize);
        }

        page = prpService.qryProductBondingInfo(page, productId, bondingType);

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

        WebUtils.exportExcel(fileName, titles, (List<Map>) page.getResults(), TemplateLocation.PRODUCT_BONDING_INFO,
                             response);
        return WebUtils.NULLActionForward;
    }

}