ProcessSpecHistoryAction.java

package com.mycim.webapp.actions.spec;

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.ObjectList;
import com.mycim.valueobject.prp.ProcessPlanning;
import com.mycim.valueobject.prp.ProcessVersion;
import com.mycim.webapp.actions.PrpSetupAction;
import com.mycim.webapp.forms.RecipeContextValueForm;
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.*;

/**
 * @author Luopeng.Wang
 * @version 6.0.0
 * @date 2021/4/2
 **/
public class ProcessSpecHistoryAction extends PrpSetupAction {
    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) throws Exception {

        return mapping.getInputForward();
    }

    public Page queryHistories(Map map) {
        Integer limit = MapUtils.getInteger(map, "limit");
        Integer pageNo = MapUtils.getInteger(map, "page");
        String processId = MapUtils.getString(map, "processId");
        Integer processVersion = MapUtils.getInteger(map, "processVersion");

        String queryStartDateStr = MapUtils.getString(map, "queryStartDate");
        String queryEndDateStr = MapUtils.getString(map, "queryEndDate");

        Date queryStartDate = null;
        Date queryEndDate = null;
        if (StringUtils.isNotEmpty(queryStartDateStr)) {
            queryEndDate = DateUtils.parse(queryStartDateStr, DateUtils.DATE_FORMAT4DATE);
        }
        if (StringUtils.isNotEmpty(queryEndDateStr)) {
            queryEndDate = DateUtils.parse(queryEndDateStr, DateUtils.DATE_FORMAT4DATE);
        }

        Page page = new Page();
        page.setPageSize(limit);
        page.setPageNo(pageNo);

        return processSpecService
                .queryProcessSpecItemHistories(page, processId, processVersion, queryStartDate, queryEndDate);

    }

    public List<Map> queryProcessVersions(RecipeContextValueForm theform) {
        Long facilityRrn = LocalContext.getFacilityRrn();
        String processId = StringUtils.trim(theform.getProcessId());

        return getProcessVersionMapByProcessId(facilityRrn, processId);
    }

    private List<Map> getProcessVersionMapByProcessId(Long facilityRrn, String processId) {
        List<Map> rebuildProcessVersions = new ArrayList<>();

        long processRrn = this.getInstanceRrn(processId, facilityRrn, ObjectList.WFL_KEY);
        if (processRrn <= 0L) {
            return rebuildProcessVersions;
        }
        ProcessPlanning processPlanning = new ProcessPlanning();
        processPlanning.setInstanceRrn(processRrn);
        Collection processVersions = prpService.getProcessVersions(processPlanning);

        for (Iterator iterator = processVersions.iterator(); iterator.hasNext(); ) {
            Map newMap = new HashMap<>();

            ProcessVersion processVersion = (ProcessVersion) iterator.next();

            int version = processVersion.getInstanceVersion();

            String versionDesc = version + " (" + processVersion.getVersionStatus() + ")";

            newMap.put("key", version);
            newMap.put("value", versionDesc);

            rebuildProcessVersions.add(newMap);
        }

        return rebuildProcessVersions;
    }

}