|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.service.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.zy.asrs.entity.BasCircularShuttle; | 
|---|
|  |  |  | import com.zy.asrs.entity.BasDevpPosition; | 
|---|
|  |  |  | import com.zy.asrs.entity.BasRgv; | 
|---|
|  |  |  | import com.zy.asrs.entity.BasSte; | 
|---|
|  |  |  | import com.zy.asrs.service.BasCircularShuttleService; | 
|---|
|  |  |  | import com.zy.asrs.service.BasDevpPositionService; | 
|---|
|  |  |  | import com.zy.asrs.service.BasDevpService; | 
|---|
|  |  |  | import com.zy.asrs.utils.Utils; | 
|---|
|  |  |  | import com.zy.core.DevpThread; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | private BasDevpService basDevpService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private BasRgvServiceImpl basRgvService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private BasDevpPositionService basDevpPositionService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private BasCircularShuttleService basCircularShuttleService; | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 站点任务检测  下发小车取放任务 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public synchronized void updateStePosition() { | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | List<BasCircularShuttle> basCircularShuttleList = basCircularShuttleService.selectList(new EntityWrapper<BasCircularShuttle>().orderBy("ste_id", true)); | 
|---|
|  |  |  | for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){ | 
|---|
|  |  |  | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getSteNo()); | 
|---|
|  |  |  | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); | 
|---|
|  |  |  | if (rgvProtocol.modeType != RgvModeType.AUTO || (rgvProtocol.getStatusType() != RgvStatusType.IDLE && rgvProtocol.getStatusType() != RgvStatusType.SOS1001) ){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 站点任务检测  下发小车取放任务 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | NONE(-1, "离线","#4A4035"), | 
|---|
|  |  |  | IDLE(0, "无任务","#1F3696"), | 
|---|
|  |  |  | WORKING(1, "取货行走","#2196F3"), | 
|---|
|  |  |  | SOS(2, "进站运行中","#2196F3"), | 
|---|
|  |  |  | FETCHING(3, "进站完成","#2196F3"), | 
|---|
|  |  |  | PICK_UP_WALK(1, "取货行走","#2196F3"), | 
|---|
|  |  |  | IN_STATION_OPERATION(2, "进站运行中","#2196F3"), | 
|---|
|  |  |  | STATION_ENTRY_COMPLETED(3, "进站完成","#2196F3"), | 
|---|
|  |  |  | PUTTING(4, "有物待出站","#2196F3"), | 
|---|
|  |  |  | WAITING(5, "出站行走","#E2C027"), | 
|---|
|  |  |  | WAITING1(5, "出站行走","#E2C027"), | 
|---|
|  |  |  | FETCHWAITING(6, "出站请求","#2196F3"), | 
|---|
|  |  |  | SOS99(7, "出站运行中","#2196F3"), | 
|---|
|  |  |  | SOS100(8, "出站完成","#2196F3"), | 
|---|
|  |  |  | SOS1001(11, "漫游","#2196F3"), | 
|---|
|  |  |  | SOS1002(100, "任务执行完成","#2196F3"), | 
|---|
|  |  |  | WAITING(100, "任务执行完成等待确认","#2196F3"), | 
|---|
|  |  |  | SOSSUPER(999, "未知","#2196F3") | 
|---|
|  |  |  | ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private void readStatus(){ | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | OperateResultExOne<byte[]> result = siemensNet.Read("DB100.0", (short) 18); | 
|---|
|  |  |  | OperateResultExOne<byte[]> result = siemensNet.Read("DB100.0", (short) 20); | 
|---|
|  |  |  | if (result.IsSuccess) { | 
|---|
|  |  |  | if (null == rgvProtocol) { | 
|---|
|  |  |  | rgvProtocol = new RgvProtocol(); | 
|---|
|  |  |  | rgvProtocol.setRgvNo(slave.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0)); | 
|---|
|  |  |  | rgvProtocol.setStartSta(siemensNet.getByteTransform().TransInt16(result.Content, 2)); | 
|---|
|  |  |  | rgvProtocol.setEndSta(siemensNet.getByteTransform().TransInt16(result.Content, 4)); | 
|---|
|  |  |  | rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt16(result.Content, 6)); | 
|---|
|  |  |  | rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 8)); | 
|---|
|  |  |  | rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 10)); | 
|---|
|  |  |  | rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 12)); | 
|---|
|  |  |  | rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransUInt32(result.Content, 14)); | 
|---|
|  |  |  | rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 2)); | 
|---|
|  |  |  | rgvProtocol.setStartSta(siemensNet.getByteTransform().TransInt16(result.Content, 4)); | 
|---|
|  |  |  | rgvProtocol.setEndSta(siemensNet.getByteTransform().TransInt16(result.Content, 6)); | 
|---|
|  |  |  | rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt16(result.Content, 8)); | 
|---|
|  |  |  | rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 10)); | 
|---|
|  |  |  | rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 12)); | 
|---|
|  |  |  | rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 14)); | 
|---|
|  |  |  | rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransUInt32(result.Content, 16)); | 
|---|
|  |  |  | rgvProtocol.setRgvPos(slave.getId().longValue()*100000); | 
|---|
|  |  |  | OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); | 
|---|
|  |  |  |  | 
|---|