ReKeyDataAction.java

package com.mycim.webapp.actions.step;

import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.msg.JsonUtils;
import com.mycim.valueobject.consts.OcapTypeEnum;
import com.mycim.valueobject.consts.SpecifiedActionEnum;
import com.mycim.valueobject.ocap.OcapCard;
import com.mycim.valueobject.ocap.dto.OcapDataCollectionDTO;
import com.mycim.valueobject.ocap.dto.OcapDoActionDTO;
import com.mycim.valueobject.ocap.dto.ReKeyDataDTO;
import com.mycim.webapp.WebUtils;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * @author songpy
 * @version 1.0.0
 * @date 2021/5/25
 **/
public class ReKeyDataAction extends AbstractSpcStepAction {
    public ReKeyDataAction() {
        this.actionType = SpecifiedActionEnum.RE_KEYIN_DATA;
    }

    /**
     * Action方法
     */
    public List<OcapDataCollectionDTO> queryReKeyInData(Map<String, Object> params) {
        Long dcolRrn = MapUtils.getLongValue(params, "dcolRrn");
        return ocapService.getAllDataCollectionPointInfo(dcolRrn);
    }

    /**
     * Action方法
     */
    public void collectionReKeyInData(ReKeyDataDTO reKeyDataDTO) throws Exception {
        Map parameters = (Map) WebUtils.getCacheString2Obj(reKeyDataDTO.getCacheParametersInfo());

        // check
        Assert.isFalse(reKeyDataDTO.getOcapRrn() == null || reKeyDataDTO.getOcapRrn() <= 0,
                       Errors.create().content("The parameter is missing. Please login again.").build());

        OcapCard ocap = wipQueryService.getOcapCardByPrimaryKey(reKeyDataDTO.getOcapRrn());
        Assert.isFalse(OcapTypeEnum.isOffline(ocap.getOcapType()),
                       Errors.create().content("OFFLINE OCAP cannot perform the specified operation: remeasurement")
                             .build());

        validOcapMainLot(ocap);

        List<Map> dataCollectionList = JsonUtils.toList(reKeyDataDTO.getDataCollection(), Map.class);
        OcapDoActionDTO doActionDTO = ocapService
                .collectReKeyInData(LocalContext.getFacilityRrn(), LocalContext.getUserRrn(), LocalContext.getUserId(),
                                    reKeyDataDTO.getOcapRrn(), dataCollectionList, parameters);
    }

    @Override
    protected void setActionUrl(HttpServletRequest request) {
        request.setAttribute(ACTION_URL_KEY, "ocapStepReKeyData.do");
    }

    @Override
    void specialHandling(HttpServletRequest request) {
        String jobId = WebUtils.getParameter("jobId", request);
        String lotId = WebUtils.getParameter("lotId", request);
        String ocapId = WebUtils.getParameter("ocapId", request);
        String unitList = StringUtils.EMPTY;
        unitList = edcChartService.queryOfflineUnitList(jobId, lotId, ocapId);
        request.setAttribute("offlineFlag", this.actionType.toString());
        request.setAttribute("unitList", unitList);
        request.setAttribute("lotId", lotId);
    }

}