| | |
| | | package com.zy.acs.conveyor.core.operation.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.zy.acs.common.utils.News; |
| | | import com.zy.acs.common.utils.RedisSupport; |
| | | import com.zy.acs.conveyor.core.constant.RedisConveyorConstant; |
| | | import com.zy.acs.conveyor.core.enums.ConveyorStateType; |
| | | import com.zy.acs.conveyor.core.model.SafeSignal; |
| | | import com.zy.acs.conveyor.core.model.StaProtocol; |
| | | import com.zy.acs.conveyor.core.operation.OperationHandler; |
| | | import com.zy.acs.conveyor.core.properties.CtuOperationConfig; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | | @Slf4j |
| | |
| | | // 根据输送线plc遍历 |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 遍历出库口 |
| | | for (DevpSlave.Sta releaseSta : devp.getReleaseSta()) { |
| | | for (DevpSlave.Sta putSta : devp.getPutSta()) { |
| | | // 获取入库站信息 |
| | | Map<Integer, StaProtocol> stationMap = stationService.getStationMap(devp.getId()); |
| | | StaProtocol staProtocol = stationMap.get(releaseSta.getStaNo()); |
| | | StaProtocol staProtocol = stationMap.get(putSta.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | // 判断是否满足条件 |
| | | if (!staProtocol.isLoading()) { |
| | | if (staProtocol.getWorkNo() > 0) { |
| | | log.error("输送线上有任务号无货,需要人工处理:{}", staProtocol.getSiteId()); |
| | | } |
| | | if (!staProtocol.isAutoing()) { |
| | | //News.error("{},输送线未自动,需要开启:{}", config.getMark(), staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | |
| | | if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0) { |
| | | if (staProtocol.isInEnable()) { |
| | | log.error("没有可入信号:{}", staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | String seqNum = ctuMainService.checkStationStatus(releaseSta.getStaNo()); |
| | | if (staProtocol.getWorkNo() == 0 && staProtocol.isLoading()) { |
| | | String seqNum = ctuMainService.checkStationStatus(putSta.getStaNo()); |
| | | if (seqNum != null) { |
| | | Job jobBySeqNum = jobService.getJobByTaskNo(seqNum); |
| | | if (jobBySeqNum == null) { |
| | | int workNo = wrkLastnoService.nextWorkNo(WorkNoTypeType.WORK_NO_TYPE.type); |
| | | // 下发移动 且 下发plc命令 |
| | | staProtocol.setWorkNo(workNo); |
| | | staProtocol.setStaNo(releaseSta.getTargetSta()); |
| | | Job job = new Job(); |
| | | job.setTaskNo(seqNum); |
| | | job.setJobNo(workNo); |
| | | job.setJobSts(ConveyorStateType.OUTBOUND.getStatus()); |
| | | if (!jobService.insert(job)) { |
| | | throw new CoolException("插入输送线任务失败," + jobBySeqNum + " - " + workNo); |
| | | } |
| | | redis.push(RedisConveyorConstant.CONVEYOR_TASK_FLAG, staProtocol); |
| | | log.info("输送线下发:{},{}", staProtocol.getWorkNo(), releaseSta.getTargetSta()); |
| | | staProtocol.setSafeSignal(new SafeSignal(devp.getPutSta().indexOf(putSta), (short) 1, true)); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocol); |
| | | |
| | | Job job = jobService.getJobByTaskNo(seqNum); |
| | | if (job != null) { |
| | | News.error("{}:站点:{},存在任务,{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(job)); |
| | | continue; |
| | | } |
| | | int workNo = wrkLastnoService.nextWorkNo(WorkNoTypeType.WORK_NO_TYPE.type); |
| | | staProtocol.setWorkNo(workNo); |
| | | staProtocol.setStaNo(putSta.getTargetSta()); |
| | | job = new Job(); |
| | | job.setTaskNo(seqNum); |
| | | job.setJobNo(workNo); |
| | | job.setCreateTime(new Date()); |
| | | job.setJobSts(ConveyorStateType.OUTBOUND.getStatus()); |
| | | if (!jobService.insert(job)) { |
| | | throw new CoolException("插入输送线任务失败," + seqNum + " - " + workNo); |
| | | } |
| | | redis.push(RedisConveyorConstant.CONVEYOR_TASK_FLAG, staProtocol); |
| | | News.info("{},输送线下发:{},{}", config.getMark(), staProtocol.getWorkNo(), putSta.getTargetSta()); |
| | | } else { |
| | | log.info("站点信息不符合入库条件!!!" + " 调用RCS检验未通过,站点:{}", staProtocol.getSiteId()); |
| | | News.error("{},站点信息不符合入库条件!!!" + " 调用RCS检验未通过,站点:{}", config.getMark(), staProtocol.getSiteId()); |
| | | } |
| | | } |
| | | } |