自动化立体仓库 - WCS系统
#
Junjie
2025-02-10 08b68c503f12a28399f0c70e460ee6af8b7185ea
src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -10,26 +10,14 @@
import com.zy.asrs.mapper.BasShuttleOptMapper;
import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.common.service.CommonService;
import com.zy.core.CrnThread;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.LedSlave;
import com.zy.core.model.LiftSlave;
import com.zy.core.model.ShuttleSlave;
import com.zy.core.model.command.LedCommand;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.LiftProtocol;
import com.zy.core.model.protocol.NyShuttleProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.LedThread;
import com.zy.core.thread.LiftThread;
import com.zy.core.thread.NyShuttleThread;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -94,36 +82,6 @@
        Double yDistance = 0.0D;
        Double xDuration = 0.0D;
        Double yDuration = 0.0D;
        if (null != crnId) {
            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnId);
            if (crnThread != null) {
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                if (crnProtocol != null) {
                    xSpeed = Double.valueOf(crnProtocol.getXSpeed());
                    ySpeed = Double.valueOf(crnProtocol.getYSpeed());
                    zSpeed = Double.valueOf(crnProtocol.getZSpeed());
                    switch (crnProtocol.getForkPos()) {
                        case 0:
                            forkPos = 1;
                            break;
                        case 1:
                            forkPos = 2;
                            break;
                        case 2:
                            forkPos = 0;
                            break;
                        default:
                            forkPos = 1;
                            break;
                    }
                    xDistance = Double.valueOf(crnProtocol.getXDistance());
                    yDistance = Double.valueOf(crnProtocol.getYDistance());
                    xDuration = Double.valueOf(crnProtocol.getXDuration());
                    yDuration = Double.valueOf(crnProtocol.getYDuration());
                }
            }
        }
        // 获取输送线plc线程
        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, ledId);
@@ -308,69 +266,6 @@
    }
    /**
     * 设备异常通知
     */
    @GetMapping("/device/error")
    public R monitorDeviceError() {
        ArrayList<HashMap<String, Object>> list = new ArrayList<>();
        for (ShuttleSlave slave : slaveProperties.getShuttle()) {
            NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
            NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
            if (shuttleProtocol == null) {
                continue;
            }
            if (shuttleProtocol.getErrState() == 1) {
                //故障中
                HashMap<String, Object> map = new HashMap<>();
                map.put("deviceNo", shuttleProtocol.getShuttleNo());//设备号-小车号
                map.put("errorMsg", shuttleProtocol.getErrCode$());//异常信息
                map.put("device", "四向车");//异常信息
                list.add(map);
            }
        }
        for (LiftSlave slave : slaveProperties.getLift()) {
            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId());
            LiftProtocol liftProtocol = liftThread.getLiftProtocol();
            if (liftProtocol == null) {
                continue;
            }
            if (liftProtocol.getDeviceError()) {
                //故障中
                StringBuffer buffer = new StringBuffer();
                if (liftProtocol.getFrontOverrun()) {
                    buffer.append("前超限");
                }
                if (liftProtocol.getBackOverrun()) {
                    buffer.append("后超限");
                }
                if (liftProtocol.getLeftOverrun()) {
                    buffer.append("左超限");
                }
                if (liftProtocol.getRightOverrun()) {
                    buffer.append("右超限");
                }
                if (liftProtocol.getOverHeight()) {
                    buffer.append("超高");
                }
                if (liftProtocol.getOverWeight()) {
                    buffer.append("超重");
                }
                HashMap<String, Object> map = new HashMap<>();
                map.put("deviceNo", liftProtocol.getLiftNo());//设备号-提升机号
                map.put("errorMsg", buffer.toString());//异常信息
                map.put("device", "提升机");//异常信息
                list.add(map);
            }
        }
        return R.ok().add(list);
    }
    /**
     * 获取设备每天运行统计
     */
    @GetMapping("/deviceRunStatistic")
@@ -385,6 +280,29 @@
        return R.ok().add(map);
    }
    /**
     * 获取设备运行异常统计
     */
    @GetMapping("/deviceRunErrorStatistic/{type}")
    public R deviceRunErrorStatistic(@PathVariable("type") String type) {
        int time = 1;//默认1天
        if (type.equals("day")) {
            time = 1;
        } else if (type.equals("week")) {
            time = 7;
        } else if (type.equals("month")) {
            time = 30;
        }
        //获取提升机运行异常数据
        List<Map<String, Object>> liftList = basLiftOptMapper.selectRunErrorStatistic(time);
        //获取小车运行异常数据
        List<Map<String, Object>> shuttleList = basShuttleOptMapper.selectRunErrorStatistic(time);
        HashMap<String, Object> map = new HashMap<>();
        map.put("lift", liftList);
        map.put("shuttle", shuttleList);
        return R.ok().add(map);
    }