ProductFlowViewAction.java

package com.mycim.webapp.actions.spec;

import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.prp.*;
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.lang.Override;
import java.util.*;

/**
 * @author Luopeng.Wang
 * @version 6.0.0
 * @date 2021/3/30
 **/
public class ProductFlowViewAction extends PrpSetupAction {

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) throws Exception {
        return mapping.getInputForward();
    }

    public Map viewFlowByProduct(Map map) {
        String processId = MapUtils.getString(map, "processId");
        Integer processVersion = MapUtils.getInteger(map, "processVersion");
        String productId = MapUtils.getString(map, "productId");
        Integer productVersion = MapUtils.getInteger(map, "productVersion");

        long productRrn = prpService.getProductRrnById(productId);

        List<ProductSpecItemDto> productSpectItems = specService
                .queryTheCompleteProcessSpecification(productRrn, productVersion, processId, processVersion);
        Map result = new HashMap<>();
        result.put("totalItems", productSpectItems.size());
        result.put("items", productSpectItems);

        return result;
    }

    public List<Map> queryProductVersions(Map map) {
        String productId = MapUtils.getString(map, "productId");
        Long productRrn = prpService.getProductRrnById(productId);

        List<Map> rebuildProdutVersions = new ArrayList<>();

        List<ProductVersion> productVersions = productService.getProductVersions(productRrn);
        for (ProductVersion prodverion : productVersions) {
            Map<String, String> newProcessVersion = new HashMap<>();
            newProcessVersion.put("key", String.valueOf(prodverion.getInstanceVersion()));
            newProcessVersion.put("value", String.valueOf(prodverion.getInstanceVersion()) + " (" +
                    prodverion.getVersionStatus() + ")");
            if (!rebuildProdutVersions.contains(newProcessVersion)) {
                rebuildProdutVersions.add(newProcessVersion);
            }

        }

        return rebuildProdutVersions;
    }

    public List<Map> queryProcessVersions(Map map) {
        String processId = MapUtils.getString(map, "processId");
        long processRrn = this.getInstanceRrn(processId, LocalContext.getFacilityRrn(), ObjectList.WFL_KEY);

        List<Map> rebuildProcessVersions = new ArrayList<>();

        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;
    }

    public List<Map> queryProductIds(Map map) {
        String processId = MapUtils.getString(map, "processId");
        long processRrn = this.getInstanceRrn(processId, LocalContext.getFacilityRrn(), ObjectList.WFL_KEY);

        List<Map> rebuildProducts = new ArrayList<>();
        for (Item item : prpService.getUsedByProducts(processRrn)) {
            Map<String, String> newMap = new HashMap<>();
            String productId = item.getInstanceId();
            newMap.put("key", productId);
            newMap.put("value", productId);
            rebuildProducts.add(newMap);
        }
        return rebuildProducts;
    }

}