AutoBankInAction.java

package com.mycim.webapp.actions.operation.run;

import com.fa.sesa.exception.Errors;
import com.fa.sesa.exception.SystemIllegalArgumentException;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.consts.SessionNames;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.prp.Operation;
import com.mycim.valueobject.wip.Lot;
import com.mycim.webapp.actions.WipSetupAction;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Johnson.Wang
 * @version 6.0.0
 * @date 2019/10/10
 **/
public class AutoBankInAction extends WipSetupAction {

    @Override
    public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                 HttpServletResponse response) throws Exception {
        Map parameters = (Map) request.getAttribute(SessionNames.PARAMETERSINFO_KEY);
        List<Map> handleLotInfos = (List<Map>) request.getAttribute(SessionNames.HANDLE_LOT_INFO_KEY);
        handleLotInfos = handleLotInfos == null ? new ArrayList<>() : handleLotInfos;
        for (Map map : handleLotInfos) {
            Lot lot = (Lot) map.get("Lot");
            lot = lotQueryService.getLot(lot.getLotId());
            String operationId = lot.getOperationId();
            Operation operation = new Operation(operationId,
                                                getNamedSpace(ObjectList.OPERATION_KEY, LocalContext.getFacilityRrn()),
                                                ObjectList.OPERATION_KEY);
            operation = prpService.getOperation(operation.getInstanceId(), operation.getNamedSpace());
            if (StringUtils.equalsIgnoreCase("on", operation.getMonitorFlag())) {
                List lots = new ArrayList();
                Map transMap = new HashMap();
                lots.add(lot);

                transMap.put("lots", lots);
                transMap.put("transId", TransactionNames.NPW_BANK_IN);
                transMap.put("transComments", "Auto enter monitor");
                transMap.put("operationId", operationId);
                transMap.put("operationRrn",
                             getInstanceRrn(operationId, LocalContext.getFacilityRrn(), ObjectList.OPERATION_KEY));
                transMap.put("userRrn", LocalContext.getUserRrn());
                transMap.put("userId", LocalContext.getUserId());
                transMap.put("facilityRrn", LocalContext.getFacilityRrn());
                transMap.put("lotTypeInBank", "main");
                transMap.put("status", "PROCESSING");
                transMap.put("subStatus", "WAITING");
                // checkAndCreateLotsTransLock(LocalContext.getUserRrn(), TransactionNames.LOCK_AUTOBANKIN_LOT, lots,
                //                             "The lot auto bank in, in AutoBankInAction by: " +
                //                                     LocalContext.getUserId());
                try {
                    dmmService.bankIn(transMap);
                } catch (Exception e) {
                    // removeLotLockWhenTransError(LocalContext.getUserRrn(), lots, TransactionNames.LOCK_AUTOBANKIN_LOT,
                    //                             "The lot auto bank in fail, in AutoBankInAction by: " +
                    //                                     LocalContext.getUserId());
                    throw new SystemIllegalArgumentException(
                            Errors.create().content("The lot auto bank in fail").build());
                }
            }
        }
        parameters.put(SessionNames.RUNSTEP_FLAG, "0");
        request.getRequestDispatcher(mapping.findForward("workflow").getPath()).forward(request, response);
        return null;
    }

}