自动化立体仓库 - WCS系统
#
Junjie
2025-01-14 0143cc146be484ab3f41e15ec2fc4dab21ebc65f
src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -3,34 +3,21 @@
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.common.R;
import com.core.common.SpringUtils;
import com.zy.asrs.domain.dto.AxisBean;
import com.zy.asrs.domain.dto.WorkChartAxis;
import com.zy.asrs.domain.vo.LocChartPie;
import com.zy.asrs.entity.BasShuttleErr;
import com.zy.asrs.mapper.BasLiftOptMapper;
import com.zy.asrs.mapper.BasShuttleOptMapper;
import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.asrs.service.BasShuttleErrService;
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.*;
@@ -48,6 +35,10 @@
    private ReportQueryMapper reportQueryMapper;
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private BasLiftOptMapper basLiftOptMapper;
    @Autowired
    private BasShuttleOptMapper basShuttleOptMapper;
    /**
     * 获取当前时间
@@ -91,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);
@@ -305,69 +266,42 @@
    }
    /**
     * 设备异常通知
     * 获取设备每天运行统计
     */
    @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")
    public R deviceRunStatistic() {
        //获取提升机运行数据
        List<Map<String, Object>> liftList = basLiftOptMapper.selectRunStatistic();
        //获取小车运行数据
        List<Map<String, Object>> shuttleList = basShuttleOptMapper.selectRunStatistic();
        HashMap<String, Object> map = new HashMap<>();
        map.put("lift", liftList);
        map.put("shuttle", shuttleList);
        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);
    }