1
zhang
17 小时以前 286eadc0913fe9974ab2f2fd188fb707dc16ad40
zy-acs-cv/src/main/java/com/zy/core/operation/handler/SendTaskOperationHandler.java
@@ -1,6 +1,9 @@
package com.zy.core.operation.handler;
import com.zy.asrs.controller.vo.OpenBusSubmitParam;
import com.zy.asrs.controller.vo.TaskDto;
import com.zy.asrs.entity.Job;
import com.zy.asrs.service.CtuMainService;
import com.zy.asrs.service.JobService;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.ConveyorStateType;
@@ -15,6 +18,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 发送任务给RCS
@@ -31,13 +38,16 @@
    private JobService jobService;
    @Autowired
    private CtuMainService ctuMainService;
    @Override
    public ConveyorStateType getType() {
        return ConveyorStateType.SENDTASK;
    }
    @Override
    public void execute(CtuOperationConfig config) {
    public synchronized void execute(CtuOperationConfig config) {
        try {
            // 根据输送线plc遍历
            for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -47,20 +57,35 @@
                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                    StaProtocol staProtocol = devpThread.getStation().get(inSta.getTargetSta());
                    if (staProtocol == null) {
                        return;
                        continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    // 判断是否满足条件
                    if (!staProtocol.isLoading()) {
                        return;
                    }
                    if (staProtocol.getWorkNo() > 0 && staProtocol.isAutoing()) {
                        Job job = jobService.getJobByJobNo(staProtocol.getWorkNo());
                        if (job != null && job.getJobSts() == 4) {
                            job.setJobSts(5);
                            jobService.updateById(job);
                        if (staProtocol.getWorkNo() > 0) {
                            log.error("输送线上有任务号无货,需要人工处理:{}", staProtocol.getSiteId());
                        }
                        continue;
                    }
                    if (staProtocol.getWorkNo() == 0) {
                        log.error("输送线上有货无任务号,需要人工处理:{}", staProtocol.getSiteId());
                        continue;
                    }
                    if (staProtocol.isAutoing()) {
                        Job job = jobService.getJobByJobNo(staProtocol.getWorkNo());
                        if (job != null && job.getJobSts() == ConveyorStateType.INBOUND.getStatus()) {
                            if (ctuMainService.sendTask(process(job))) {
                                job.setJobSts(ConveyorStateType.SENDTASK.getStatus());
                                job.setRcsTime(new Date());
                                jobService.updateById(job);
                                log.info("任务发送给RCS成功,WMS任务号:{},输送线工作号:{}", job.getTaskNo(), job.getJobNo());
                            } else {
                                log.info("任务发送给RCS失败,WMS任务号:{},输送线工作号:{}", job.getTaskNo(), job.getJobNo());
                            }
                        }
                    } else {
                        log.error("输送线为自动,需要开启:{}", staProtocol.getSiteId());
                    }
                }
            }
@@ -69,4 +94,25 @@
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    /**
     * 处理任务
     *
     * @param job
     * @return
     */
    private OpenBusSubmitParam process(Job job) {
        OpenBusSubmitParam openBusSubmitParam = new OpenBusSubmitParam();
        openBusSubmitParam.setBatchNo(job.getBatchNo());
        List<TaskDto> taskList = new ArrayList<>();
        TaskDto taskDto = new TaskDto();
        taskDto.setTaskNo(job.getTaskNo());
        taskDto.setBatchNo(job.getBatchNo());
        taskDto.setOriSta(job.getStaNo());
        taskDto.setDestLoc(job.getLoc());
        taskDto.setPriority(1);
        taskList.add(taskDto);
        openBusSubmitParam.setTasks(taskList);
        return openBusSubmitParam;
    }
}