Edc2MyspcContainer.java

package com.mycim.server.edcmyspc;

import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.msg.model.Request;
import com.mycim.server.spc.BaseEdc2SpcContainer;
import com.mycim.server.spc.manager.SpcManager;
import com.mycim.valueobject.spc.SpcConfigConstants;
import com.mycim.valueobject.wip.Lot;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author Johnson.Wang
 * @version 6.0.0
 * @date 2019/11/8
 **/
public class Edc2MyspcContainer extends BaseEdc2SpcContainer {
    @Autowired
    private SpcManager spcManager;

    @Override
    public List<String> edc2SpcCheck(List<Map> dcolStepInfos, Boolean rtFlag, Boolean isOcapSend) {
        // 按照 converter -> parser -> sender的顺序执行
        String edcType = rtFlag ? SpcConfigConstants.EDC_TYPE_RT : SpcConfigConstants.EDC_TYPE_NORT;
        String edc2MyspcUrl = spcManager
                .getSpcConfigValue(LocalContext.getFacilityRrn(), SpcConfigConstants.SPC_WS_URL, edcType);
        if (StringUtils.isEmpty(edc2MyspcUrl)) {
            return new ArrayList<>();
        }
        return super.edc2SpcCheck(dcolStepInfos, rtFlag, isOcapSend);
    }

    @Override
    public void edc2SpcCheckForProcess(List<Lot> lots) {
        // 按照 converter -> parser -> sender的顺序执行
        String edc2MyspcUrl = spcManager.getSpcConfigValue(LocalContext.getFacilityRrn(), SpcConfigConstants.SPC_WS_URL,
                                                           SpcConfigConstants.EDC_TYPE_RT);
        if (StringUtils.isEmpty(edc2MyspcUrl)) {
            return;
        }

        List<Request> request = null;
        if (edc2SpcConverter != null) {
            request = edc2SpcConverter.convert(lots);
        }

        List<String> requestList = null;
        if (edc2SpcParser != null) {
            requestList = edc2SpcParser.parser(request);
        }

        if (edc2SpcSender != null) {
            edc2SpcSender.send(requestList, lots);
        }
    }

}