RecipeSetupAction.java

package com.mycim.webapp.actions;

import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.context.spring.SpringContext;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.server.ctx.service.CtxService;
import com.mycim.server.ecn.service.EcnService;
import com.mycim.server.ems.service.EmsService;
import com.mycim.server.rcp.service.RecipeService;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.bas.NamedObject;
import com.mycim.valueobject.bas.ObjectVersion;
import com.mycim.valueobject.consts.VersionStatus;
import com.mycim.valueobject.prp.Recipe;
import com.mycim.valueobject.prp.RecipeVersion;
import com.mycim.webapp.Constants;
import com.mycim.webapp.forms.RecipeVersionInfoForm;

import java.util.List;

/**
 * recipe Setup 功能
 *
 * @author pinyan.song
 * @version 6.0.0
 * @date 2019-9-3
 **/
public class RecipeSetupAction extends AbstractAction {
    protected CtxService ctxService = SpringContext.getBean(CtxService.class);

    protected RecipeService recipeService = SpringContext.getBean(RecipeService.class);

    protected EcnService ecnService = SpringContext.getBean(EcnService.class);

    protected EmsService emsService = SpringContext.getBean(EmsService.class);

    protected void process(NamedObject instance) {
        String action = instance.getTransId();

        instance.setTransPerformedby(LocalContext.getUserId());

        if (Constants.CREATE_KEY.equals(action)) {
            if (instance instanceof Recipe) {
                recipeService.insertRecipe(setDefaultParam(instance));
            }
        } else if (Constants.MODIFY_KEY.equals(action)) {
            if (instance instanceof Recipe) {
                recipeService.updateRecipe(setDefaultParam(instance));
            }
        } else if (Constants.DELETE_KEY.equals(action)) {
            if (instance instanceof Recipe) {
                recipeService.deleteRecipe(setDefaultParam(instance));
            }
        }
    }

    protected boolean checkVersionEditEnable(List versionObjects) {
        if (CollectionUtils.isNotEmpty(versionObjects)) {
            for (Object version : versionObjects) {
                ObjectVersion versionObject = (ObjectVersion) version;
                if ((versionObject.getVersionStatus() == null) ||
                        VersionStatus.UNFROZEN_KEY.equalsIgnoreCase(versionObject.getVersionStatus()) ||
                        VersionStatus.FROZEN_KEY.equalsIgnoreCase(versionObject.getVersionStatus())) {
                    return true;
                }
            }
        }
        return false;
    }

    protected String checkObjectDeleteEnable(List<? extends ObjectVersion> versionObjects) {
        String checked = "true";

        if (CollectionUtils.isNotEmpty(versionObjects)) {
            checked = "false";
        }

        return checked;
    }

    protected boolean checkVersionEditEnable(ObjectVersion objectVersion) {
        boolean checked = false;

        if ((objectVersion.getVersionStatus() == null) ||
                VersionStatus.UNFROZEN_KEY.equalsIgnoreCase(objectVersion.getVersionStatus())) {
            checked = true;
        }

        return checked;
    }

    protected Recipe getRecipeInfo(RecipeVersionInfoForm theform) {
        Recipe recipe = new Recipe(theform.getInstanceId(),
                                   getNamedSpace(ObjectList.RECIPE_KEY, LocalContext.getFacilityRrn()),
                                   ObjectList.RECIPE_KEY);
        recipe = (Recipe) getInstance(recipe);

        recipe.setTransPerformedby(LocalContext.getUserId());
        if (recipe.getInstanceRrn() == 0) {
            return recipe;
        } else {
            recipe.setVersions(baseService.getObjectVersions(recipe));
        }
        return recipe;
    }

    @Override
    protected NamedObject getInstance(NamedObject instance) {
        NamedObject qryInstance = null;

        if (instance instanceof Recipe) {
            qryInstance = recipeService.getRecipe(instance.getInstanceId(), instance.getNamedSpace());
        } else if (instance instanceof RecipeVersion) {
            qryInstance = recipeService.getRecipeVersion((RecipeVersion) instance);
        }

        if (qryInstance == null) {
            return instance;
        }
        return qryInstance;
    }

}