OutFactoryAction.java

package com.mycim.webapp.actions.outfactory.outfactoryInfo;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.beans.PropertyUtils;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.ems.Entity;
import com.mycim.valueobject.wip.OutFactory;
import com.mycim.webapp.actions.WipSetupAction;
import com.mycim.webapp.forms.outfactory.OutFactoryForm;
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.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author liuji.li
 * @version 6.0.0
 * @date 2019/10/22
 **/
public class OutFactoryAction extends WipSetupAction {
    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) {
        return initOutFactory(mapping, form, request, response);
    }

    public ActionForward initOutFactory(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                        HttpServletResponse response) {
        OutFactoryForm outFactoryForm = (OutFactoryForm) form;
        OutFactoryForm off = (OutFactoryForm) request.getAttribute("off");
        PropertyUtils.copyProperties(outFactoryForm, off);
        return mapping.getInputForward();
    }

    public ActionForward createOrModify(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                        HttpServletResponse response) {
        long facilityRrn = LocalContext.getFacilityRrn();
        String user = LocalContext.getUserId();
        OutFactoryForm theForm = (OutFactoryForm) form;
        request.removeAttribute("operationSuccess");
        theForm.setOutFactoryId(theForm.getOutFactoryId().trim().toUpperCase());
        String outFactoryId = theForm.getOutFactoryId();
        Long outFactoryRrn = theForm.getOutFactoryRrn();
        if (outFactoryRrn == 0 || outFactoryRrn == null) {
            OutFactory outFactoryInfo = wipService.getOutFactoryById(outFactoryId);
            if (outFactoryInfo != null) {
                outFactoryRrn = outFactoryInfo.getOutFactoryRrn();
            }
        }
        Map<String, Object> outFactorInfo = new HashMap();
        Entity entity = new Entity(outFactoryId, getNamedSpace(ObjectList.OUT_FACTORY, facilityRrn),
                                   ObjectList.OUT_FACTORY);
        OutFactory outFactory = new OutFactory();
        PropertyUtils.copyProperties(outFactory, theForm);
        outFactory.setInstanceId(theForm.getOutFactoryId());
        outFactory.setInstanceDesc(theForm.getComments());
        outFactory.setNamedSpace(entity.getNamedSpace());
        outFactory.setObject(ObjectList.OUT_FACTORY);
        outFactorInfo.put("performedby", user);
        if (outFactoryRrn == 0 || outFactoryRrn == null) {
            // 新增
            outFactorInfo.put("transId", TransactionNames.CREATE_KEY);
            outFactorInfo.put("outFactory", outFactory);
            outFactory = wipService.insertOutFactory(outFactorInfo);
        } else {
            // 修改
            outFactory.setInstanceRrn(theForm.getOutFactoryRrn());
            outFactorInfo.put("transId", "MODIFY");
            outFactorInfo.put("outFactory", outFactory);
            outFactory = wipService.updateOutFactory(outFactorInfo);
        }
        PropertyUtils.copyProperties(theForm, outFactorInfo);
        theForm.setOperationType(TransactionNames.MODIFY_KEY);
        request.setAttribute("operationSuccess", true);
        return mapping.getInputForward();
    }

    public ActionForward deleteOutFactory(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                          HttpServletResponse response) {
        long facilityRrn = LocalContext.getFacilityRrn();
        String user = LocalContext.getUserId();
        request.removeAttribute("operationSuccess");
        OutFactoryForm off = (OutFactoryForm) form;
        off.setOutFactoryId(off.getOutFactoryId().trim().toUpperCase());
        String outFactoryId = off.getOutFactoryId();
        Long outFactoryRrn = off.getOutFactoryRrn();
        if (outFactoryRrn == 0 || outFactoryRrn == null) {
            OutFactory outFactoryInfo = wipService.getOutFactoryById(outFactoryId);
            if (outFactoryInfo != null) {
                outFactoryRrn = outFactoryInfo.getOutFactoryRrn();
            }
        }
        Map<String, Object> outFactorInfo = new HashMap();
        outFactorInfo.put("performedby", user);
        Entity entity = new Entity(outFactoryId, getNamedSpace(ObjectList.OUT_FACTORY, facilityRrn),
                                   ObjectList.OUT_FACTORY);
        OutFactory outFactoryDel = wipService.getOutFactoryByRrn(outFactoryRrn);
        outFactorInfo.put("transId", TransactionNames.DELETE_KEY);
        outFactorInfo.put("outFactory", outFactoryDel);
        List<Map> lotRrnMap = wipService.getFsendLotRrnsByOutFactoryRrn(outFactoryRrn);
        Assert.isFalse(CollectionUtils.isNotEmpty(lotRrnMap), Errors.create().key(MessageIdList.OUTFACTORY_NOT_DELETE)
                                                                    .content("The lot is being processed in this " +
                                                                                     "factory and is not allowed to " +
                                                                                     "be" +
                                                                                     " deleted!").build());
        wipService.deleteOutFactory(outFactorInfo);
        return mapping.findForward("initOutFactory");
    }

}