OcapAction.java

package com.mycim.webapp.actions.ocap;

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.framework.utils.msg.JsonUtils;
import com.mycim.valueobject.consts.VersionStatus;
import com.mycim.valueobject.ocap.OcapCard;
import com.mycim.valueobject.ocap.dto.OcapCardDTO;
import com.mycim.valueobject.ocap.dto.OcapChartInfoDTO;
import com.mycim.valueobject.ocap.dto.OcapQueryConditionDTO;
import com.mycim.webapp.TemplateLocation;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.OcapAbstractAction;
import org.apache.struts.action.ActionForward;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;

/**
 * @author songpy
 * @version 1.0.0
 * @date 2021/1/14
 **/
public class OcapAction extends OcapAbstractAction {

    /**
     * Action方法
     */
    public void doWithdraw(Long ocapRrn) {
        Assert.isFalse(ocapRrn == null || ocapRrn <= 0,
                       Errors.create().content("The parameter is missing. Please login again.").build());
        OcapCard ocap = wipQueryService.getOcapCardByPrimaryKey(ocapRrn);
        Assert.isFalse(Objects.isNull(ocap), Errors.create().content("Can not find the OCAP!").build());
        validOcapMainLot(ocap);
        Assert.isTrue(StringUtils.equals(VersionStatus.ACTIVE_KEY, ocap.getStatus()),
                      Errors.create().content("This OCAP status is not Active!").build());
        if (StringUtils.isEmpty(ocap.getOcapBatchId())) {
            List<OcapCard> ocapCards = wipQueryService
                    .getOcapCardsByBatchId(LocalContext.getFacilityRrn(), ocap.getOcapBatchId());
            for (OcapCard tmpOcap : ocapCards) {
                Assert.isTrue(StringUtils.equals(VersionStatus.ACTIVE_KEY, tmpOcap.getStatus()),
                              Errors.create().content("Batch OCAP status is not Active!").build());
            }
        }

        ocapService.doWithdraw(LocalContext.getFacilityRrn(), LocalContext.getUserRrn(), LocalContext.getUserId(),
                               ocapRrn);
    }

    /**
     * Action方法
     */
    public Page queryList(OcapQueryConditionDTO queryConditionDTO, Map<String, Object> params) {
        queryConditionDTO.setFacilityRrn(LocalContext.getFacilityRrn());
        queryConditionDTO.setUserRrn(LocalContext.getUserRrn());

        //转换
        queryConditionDTO.setWorkflowIds(WebUtils.covertExtSelect(MapUtils.getObject(params, "workflowId")));
        queryConditionDTO.setStatuses(WebUtils.covertExtSelect(MapUtils.getObject(params, "status")));
        queryConditionDTO.setAreaIds(WebUtils.covertExtSelect(MapUtils.getObject(params, "areaId")));
        queryConditionDTO.setOcapId(MapUtils.getString(params, "ocapId"));

        return wipQueryService.getOcapCardPage(queryConditionDTO);
    }

    /**
     * Action方法
     */
    public OcapCardDTO getOcapInfo(Long ocapRrn) {
        return ocapService.getOcapInfo(LocalContext.getFacilityRrn(), LocalContext.getUserId(), ocapRrn);
    }

    /**
     * Action方法
     */
    public Map<String, Object> getSpcLink(Map<String, Object> params) {
        String jobId = MapUtils.getString(params, "jobId");
        String jobName = MapUtils.getString(params, "jobName");
        long ocapRrn = MapUtils.getLongValue(params, "ocapRrn");

        OcapChartInfoDTO dto = new OcapChartInfoDTO(ocapRrn, jobId, jobName, "");
        List<OcapChartInfoDTO> items = wipQueryService.queryOcapChartInfoList(dto);
        Map<String, Object> returnData = new HashMap<>();
        returnData.put("items", items);
        return returnData;
    }

    /**
     * Action方法
     */
    public ActionForward export(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String fileName = "OcapList_" + DateUtils.getNowTime(DateUtils.DATE_FORMAT4DAYD) + ".xlsx";
        Map<String, Object> titles = WebUtils.getExportTitles(request);
        List<Map<String, Object>> data = (List<Map<String, Object>>) WebUtils.getExportDatas(request);
        titles.put("title", "OcapListInfo");
        WebUtils.exportExcel(fileName, titles, data, TemplateLocation.OCAP_LIST_INFO, response);
        return WebUtils.NULLActionForward;
    }

    @Override
    protected void initSelectItem(HttpServletRequest request) {
        String[] types = new String[]{"workAreaType"};
        registerOptionType(LocalContext.getFacilityRrn(), Arrays.asList(types), request);
        request.setAttribute("querySelectItems", JsonUtils.toString(ocapService.getQuerySelectItems()));
    }

}