SplitRuncardJobManagementGetEquipmentAction.java

package com.mycim.webapp.actions.splitruncardlot;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.bas.ErrorMsg;
import com.mycim.valueobject.consts.SessionNames;
import com.mycim.valueobject.ems.Equipment;
import com.mycim.valueobject.wip.Lot;
import com.mycim.webapp.actions.RunCardAction;
import com.mycim.webapp.forms.EntityAttrEqptForm;
import com.mycim.webapp.forms.JobOfEquipmentInfoForm;
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.List;
import java.util.Map;

public class SplitRuncardJobManagementGetEquipmentAction extends RunCardAction {


    public ActionForward jobManagementDispatch(ActionMapping mapping, JobOfEquipmentInfoForm form,
                                               HttpServletRequest request, HttpServletResponse response) {

        long facilityRrn = LocalContext.getFacilityRrn();
        request.setAttribute("jobservice_flag", "true");

        String eqptId = request.getParameter("eqptId");
        String lotId = request.getParameter("lotId");
        Lot lotTemp = lotQueryService.getLot(lotId, facilityRrn);

        Equipment equipment = new Equipment(eqptId, getNamedSpace(ObjectList.ENTITY_KEY, facilityRrn),
                                            ObjectList.ENTITY_KEY);
        equipment = emsService.getEquipment(equipment);

        // such equipment exist?
        Assert.isFalse(equipment.getInstanceRrn() == 0,
                       Errors.create().key(MessageIdList.SYSTEM_INSTANCE_NOT_FOUND).content("未查询到{}对象")
                             .args("Equipment").build());

        //TODO 检验设备操作权限

        request.setAttribute(SessionNames.ENTITY_KEY, equipment);

        EntityAttrEqptForm entityAttrEqptForm = new EntityAttrEqptForm();

        //PropertyUtils.copyProperties(entityAttrEqptForm, equipment);
        entityAttrEqptForm.setInstanceDesc(equipment.getInstanceDesc());

        // ------------操作工设备认证--------------
        wipCheckService.checkEquipmentCertification(LocalContext.getUserId(), equipment.getInstanceRrn());
        ErrorMsg errorMsg = constrainService.checkLotConstrain(equipment, lotTemp);
        boolean overrideConstrain = wipCheckService.isOverrideConstrain(lotTemp);
        if (overrideConstrain) {
            errorMsg.setError(false);
            errorMsg.setErrorMsg("OK");
        }
        if (overrideConstrain) {
            errorMsg.setError(false);
            errorMsg.setErrorMsg("OK");
        }
        Assert.isFalse(errorMsg.getError(), Errors.create().content(errorMsg.getErrorMsg()).build());

        // get Current Status of Equipment
        entityAttrEqptForm.setCurrentStatus(emsService.getEntityCurrentStatus(equipment.getInstanceRrn()));

        request.setAttribute(SessionNames.EQUIPMELNT_INFO_FORM_KEY, entityAttrEqptForm);

        if (lotTemp.getJobRrn().longValue() > 0) {
            List<Map> jobList = wipQueryService.getJobList(lotTemp.getJobRrn(), ObjectList.JOB_KEY);

            int i = 1;
            String _JobNumber = null;

            for (Map _job : jobList) {
                _job.put("isUniqueJobFlag", "1");
                if (i == 1) {
                    _JobNumber = (String) _job.get("jobRrn");
                } else {
                    if (((String) _job.get("jobRrn")).equals(_JobNumber)) {
                        _job.put("isUniqueJobFlag", "0");
                    } else {
                        _JobNumber = (String) _job.get("jobRrn");
                    }
                }
                i++;
                String hotflagSplicingPriority = wipQueryService
                        .getHotflagSplicingPriority(MapUtils.getInteger(_job, "hotFlag"),
                                                    MapUtils.getInteger(_job, "priority"), facilityRrn);
                _job.put("priority", hotflagSplicingPriority);
            }

            replaceJobListRecipeId(jobList);
            request.setAttribute(SessionNames.COLLECTION_KEY, jobList);
            Map job = (Map) jobList.iterator().next();
            request.setAttribute("cur_job", job);
            request.setAttribute("type", "equipment");

            request.setAttribute("runcardFlag", "1");
            String runcardLotId = request.getParameter("runcardLotId");
            request.setAttribute("runcardLotId", runcardLotId);
            Lot runcardLot = lotQueryService.getLot(runcardLotId, facilityRrn);
            if (runcardLot != null) {
                request.setAttribute("runcardLot", runcardLot);
            }
            return mapping.findForward("moveout");
        }
        return new ActionForward(mapping.getInput());
    }

    private void replaceJobListRecipeId(List<Map> jobList) {
        for (Map map : jobList) {
            map.put("eqptID", MapUtils.getString(map, "equipmentId"));
            map.put("facilityRrn", LocalContext.getFacilityRrn());

            long lotRrn = MapUtils.getLongValue(map, "lotRrn");
            Lot lot = lotQueryService.getLot(lotRrn);
            map.put("recipePhysicalId", lot.getRecipePhysicalId());
            map.put("recipeId", lot.getRecipeId());
            map.put("recipeRrn", baseService.getNamedObjectRrn(lot.getRecipeId(), baseService
                    .getNamedSpace(LocalContext.getFacilityRrn(), ObjectList.RECIPE_KEY), ObjectList.RECIPE_KEY));
        }
    }

}

/*
 * Modification Log Log No : Name : Modified Date: Description :
 */