package com.zy.asrs.controller; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.domain.param.LiftOperatorParam; import com.zy.asrs.domain.vo.*; import com.zy.asrs.entity.BasLift; import com.zy.asrs.service.BasLiftService; import com.zy.asrs.service.WrkMastService; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.LiftSlave; import com.zy.core.model.Task; import com.zy.core.model.command.LiftAssignCommand; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.LiftThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; /** * 提升机接口 */ @Slf4j @RestController @RequestMapping("/lift") public class LiftController { @Autowired private SlaveProperties slaveProperties; @Autowired private BasLiftService basLiftService; @Autowired private WrkMastService wrkMastService; @PostMapping("/table/lift/state") @ManagerAuth(memo = "提升机信息表") public R liftStateTable(){ List list = new ArrayList<>(); List lifts = basLiftService.selectList(new EntityWrapper().orderBy("lift_no")); for (BasLift basLift : lifts) { // 表格行 LiftStateTableVo vo = new LiftStateTableVo(); vo.setLiftNo(basLift.getLiftNo()); //提升机号 list.add(vo); // 获取提升机信息 LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basLift.getLiftNo()); if (liftThread == null) { continue; } LiftProtocol liftProtocol = liftThread.getLiftProtocol(); if (liftProtocol == null || liftProtocol.getLiftNo()==null) { continue; } vo.setTaskNo(liftProtocol.getTaskNo()); // 任务号 vo.setProtocolStatus(liftProtocol.getProtocolStatusType().desc); vo.setLiftLock(liftProtocol.getLiftLock()); vo.setPositionArrivalFeedback(liftProtocol.getPositionArrivalFeedback()); vo.setReady(liftProtocol.getReady()); vo.setRunning(liftProtocol.getRunning()); vo.setMode(liftProtocol.getMode()); vo.setLineFrontHasStock(liftProtocol.getLineFrontHasStock()); vo.setForwardRotationFeedback(liftProtocol.getForwardRotationFeedback()); vo.setReverseFeedback(liftProtocol.getReverseFeedback()); vo.setMotorOverload(liftProtocol.getMotorOverload()); vo.setLineEndHasStock(liftProtocol.getLineEndHasStock()); vo.setInConveyLineCardTrayAlarm(liftProtocol.getInConveyLineCardTrayAlarm()); vo.setOutConveyLineCardTrayAlarm(liftProtocol.getOutConveyLineCardTrayAlarm()); vo.setPlatPositionDeviationAlarm(liftProtocol.getPlatPositionDeviationAlarm()); vo.setPlatTorqueDeviationAlarm(liftProtocol.getPlatTorqueDeviationAlarm()); vo.setPlatShuttleCheck(liftProtocol.getPlatShuttleCheck()); vo.setNotReady(liftProtocol.getNotReady()); vo.setServoError1(liftProtocol.getServoError1()); vo.setServoError2(liftProtocol.getServoError2()); vo.setServoError3(liftProtocol.getServoError3()); vo.setServoError4(liftProtocol.getServoError4()); vo.setLiftActualSpeed(liftProtocol.getLiftActualSpeed()); vo.setPakMk(liftProtocol.getPakMk()); } return R.ok().add(list); } @PostMapping("/table/lift/msg") @ManagerAuth(memo = "提升机数据表") public R liftMsgTable(){ List list = new ArrayList<>(); List lifts = basLiftService.selectList(new EntityWrapper().orderBy("lift_no")); for (BasLift basLift : lifts) { // 表格行 LiftMsgTableVo vo = new LiftMsgTableVo(); vo.setLiftNo(basLift.getLiftNo()); // 提升机号 list.add(vo); // 获取提升机信息 LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basLift.getLiftNo()); if (liftThread == null) { continue; } LiftProtocol liftProtocol = liftThread.getLiftProtocol(); if (liftProtocol == null) { continue; } vo.setWorkNo(liftProtocol.getTaskNo().intValue());//任务号 vo.setPakMk(liftProtocol.getPakMk()?"Y" : "N"); // 作业标记 vo.setLineFrontHasStock(liftProtocol.getLineFrontHasStock()); vo.setForwardRotationFeedback(liftProtocol.getForwardRotationFeedback()); vo.setReverseFeedback(liftProtocol.getReverseFeedback()); vo.setMotorOverload(liftProtocol.getMotorOverload()); vo.setLineEndHasStock(liftProtocol.getLineEndHasStock()); vo.setInConveyLineCardTrayAlarm(liftProtocol.getInConveyLineCardTrayAlarm()); vo.setOutConveyLineCardTrayAlarm(liftProtocol.getOutConveyLineCardTrayAlarm()); } return R.ok().add(list); } @PostMapping("/output/lift") @ManagerAuth public R liftOutput(){ StringBuilder str = new StringBuilder(); String s; int i = 0; while((s = OutputQueue.LIFT.poll()) != null && i <=10) { str.append("\n").append(s); i++; } return R.ok().add(str.toString()); } @GetMapping("/detl/{liftNo}") public R liftDetl(@PathVariable("liftNo") Integer liftNo){ LiftDataVo vo = new LiftDataVo(); for (LiftSlave liftSlave : slaveProperties.getLift()) { if (liftNo.equals(liftSlave.getId())) { vo.setLiftNo(liftSlave.getId()); BasLift basLift = basLiftService.selectById(liftSlave.getId()); if (!Cools.isEmpty(basLift)) { vo.setWorkNo(basLift.getWrkNo()); vo.setPakMk(basLift.getPakMk()); } break; } } return R.ok().add(vo); } @GetMapping("/sensor/detl/{liftNo}") public R liftSensorDetl(@PathVariable("liftNo") Integer liftNo){ LiftSensorDataVo vo = new LiftSensorDataVo(); for (LiftSlave liftSlave : slaveProperties.getLift()) { if (liftNo.equals(liftSlave.getId())) { vo.setLiftNo(liftSlave.getId()); // 获取提升机信息 LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); if (liftThread == null) { return R.error("设备不在线"); } LiftProtocol liftProtocol = liftThread.getLiftProtocol(); if (liftProtocol == null) { return R.error("设备不在线"); } break; } } return R.ok().add(vo); } /****************************************************************/ /************************** 手动操作 ******************************/ /****************************************************************/ @ManagerAuth(memo = "手动操作") @PostMapping("/operator/lift") public R liftOperator(LiftOperatorParam param){ if (Cools.isEmpty(param.getLiftNo())) { return R.parse(BaseRes.PARAM); } for (LiftSlave liftSlave : slaveProperties.getLift()) { if (param.getLiftNo().equals(liftSlave.getId())) { LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); if (liftThread == null) { throw new CoolException("提升机不在线"); } LiftProtocol liftProtocol = liftThread.getLiftProtocol(); if (liftProtocol == null) { throw new CoolException("提升机不在线"); } LiftAssignCommand assignCommand = new LiftAssignCommand(); assignCommand.setLiftNo(liftSlave.getId().shortValue()); // 提升机编号 assignCommand.setTaskNo((short) 9999); assignCommand.setTaskMode(param.getLiftTaskMode().shortValue()); assignCommand.setAuto(false);//手动模式 if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) { return R.ok(); } else { throw new CoolException("命令下发失败"); } } } return R.error(); } }