Edc2MySpcSendManagerImpl.java

package com.mycim.server.edcmyspc.manager.impl;

import com.mycim.framework.logging.Logger;
import com.mycim.framework.logging.LoggerFactory;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.msg.JsonUtils;
import com.mycim.server.ocap.manager.OcapManager;
import com.mycim.server.spc.manager.impl.SpcAbstractSendManagerImpl;
import com.mycim.server.wip.manager.DiffBatchQueryManager;
import com.mycim.server.wip.manager.LotManager;
import com.mycim.server.wip.manager.LotQueryManager;
import com.mycim.valueobject.edcspc.dto.SpcCheckResultDto;
import com.mycim.valueobject.wip.Lot;
import com.mycim.valueobject.wip.LotStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

/**
 * @author songpy
 * @version 1.0.0
 * @date 2021/2/25
 **/
@Service
@Transactional
public class Edc2MySpcSendManagerImpl extends SpcAbstractSendManagerImpl {
    private final Logger logger = LoggerFactory.getLogger(Edc2MySpcSendManagerImpl.class);

    @Autowired
    OcapManager ocapManager;

    @Autowired
    LotQueryManager lotQueryManager;

    @Autowired
    LotManager lotManager;

    @Autowired
    DiffBatchQueryManager diffBatchQueryManager;

    private void handleSPChold(List<Map<String, Object>> ocapHoldInfo, Boolean rtFlag) {
        for (Map<String, Object> holdInfo : ocapHoldInfo) {
            lotManager.holdRunningLot(holdInfo);
            long lotRrn = MapUtils.getLongValue(holdInfo, "lotRrn");
            if(lotRrn>0){
                lotManager.calcStepSpeedTime(LotStatus.RUNNINGHOLD,LotStatus.RUNNING,lotRrn,false);
            }
        }
    }

    @Override
    protected void ocapHandle(List<String> results, Boolean rtFlag) {
        List<Map<String, Object>> ocapHoldInfo = new ArrayList<>();
        if (CollectionUtils.isEmpty(results)) {
            logger.error("ocapHandle - SPC Return Msg is empty!");
            return;
        }

        List<SpcCheckResultDto> totalSpcResultList = new ArrayList<>();
        for (String responseMsg : results) {
            SpcCheckResultDto[] spcResults = JsonUtils.toObject(responseMsg, SpcCheckResultDto[].class);
            totalSpcResultList.addAll(Arrays.asList(spcResults));
        }
        ocapHoldInfo = ocapManager.createOcapByInLine(totalSpcResultList);
        handleSPChold(ocapHoldInfo, rtFlag);
    }

}