自动化立体仓库 - WCS系统
#
Junjie
2025-02-10 d1ef13d1f116e69a7f44e78d64fd0fe4ce2cad80
src/main/java/com/zy/asrs/controller/SiteController.java
@@ -1,6 +1,5 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.R;
@@ -8,30 +7,23 @@
import com.zy.asrs.domain.vo.SiteTableVo;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.service.BasDevpService;
import com.zy.core.DevpThread;
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.enums.SteTaskModeType;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.SteCommand;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.DevpThread;
import com.zy.core.thread.SiemensDevpThread;
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.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * 输送设备接口
 * Created by vincent on 2020-06-01
 */
@Slf4j
@RestController
@@ -42,54 +34,6 @@
    private SlaveProperties slaveProperties;
    @Autowired
    private BasDevpService basDevpService;
    @GetMapping("/io/mode/info/site")
    @ManagerAuth(memo = "充电模式")
    public R ioMode(){
        List<Map<String, Object>> res = new ArrayList<>();
        for (DevpSlave devp : slaveProperties.getDevp()) {
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            Map<String, Object> map1 = new HashMap<>();
            map1.put("floor", 1);
            map1.put("modeVal", devpThread.charge0);
            map1.put("modeDesc", devpThread.charge0?"充电中":"关闭");
            res.add(map1);
            Map<String, Object> map2 = new HashMap<>();
            map2.put("floor", 2);
            map2.put("modeVal", devpThread.charge1);
            map2.put("modeDesc", devpThread.charge1?"充电中":"关闭");
            res.add(map2);
            Map<String, Object> map3 = new HashMap<>();
            map3.put("floor", 3);
            map3.put("modeVal", devpThread.charge2);
            map3.put("modeDesc", devpThread.charge2?"充电中":"关闭");
            res.add(map3);
        }
        return R.ok().add(res);
    }
    @PostMapping("/io/mode/action/site")
    @ManagerAuth(memo = "充电控制")
    public R ioModeAction(@RequestParam("floor") Integer floor, @RequestParam("charge") Boolean charge){
        for (DevpSlave devp : slaveProperties.getDevp()) {
            // 输送线充电命令下发区 --------------------------------------------------------------------------
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            boolean res = devpThread.charge(floor - 1, charge);
            if (!charge && res) {
                // 穿梭车充电命令下发区 --------------------------------------------------------------------------
                int steNo = floor;
                SteCommand steCommand = new SteCommand();
                steCommand.setSteNo(steNo); // 穿梭车编号
                steCommand.setTaskNo(9999); // 工作号
                steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE);
                if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
                    log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", steNo, JSON.toJSON(steCommand));
                }
            }
            return res?R.ok():R.error();
        }
        return R.ok();
    }
    @PostMapping("/table/site")
    @ManagerAuth(memo = "站点信息表")
@@ -114,9 +58,30 @@
            vo.setLoading(staProtocol.isLoading()?"Y":"N");     // 有物
            vo.setInEnable(staProtocol.isInEnable()?"Y":"N");   // 可入
            vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 可出
            vo.setLiftArrival(staProtocol.isLiftArrival()?"Y":"N"); // 提升机到位信号
            vo.setShuttleTakeEnable(staProtocol.isShuttleTakeEnable()?"Y":"N"); // 穿梭车可取信号
            vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 入库标记
            vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 空板信号
            vo.setStaNo(staProtocol.getStaNo());                // 目标站
            vo.setStaNo(staProtocol.getStaNo() == null ? 0 : staProtocol.getStaNo());                // 目标站
            vo.setLocType1(staProtocol.getLocType1()==null?"-":staProtocol.getLocType1().toString());                // 高低信号
            String outInModel = "-";
            if (staProtocol.getOutInModel() != null) {
                switch (staProtocol.getOutInModel().intValue()) {
                    case 0:
                        outInModel = "default";
                        break;
                    case 1:
                        outInModel = "in";
                        break;
                    case 2:
                        outInModel = "out";
                        break;
                    default:
                        outInModel = "-";
                }
            }
            vo.setOutInModel(outInModel);                // 出入库模式
        }
        return R.ok().add(list);
    }
@@ -131,14 +96,6 @@
            for(Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
                StaProtocol staProtocol = entry.getValue();
//                if (staProtocol) {
//                    PlcErrorTableVo vo = new PlcErrorTableVo();
//                    vo.setNo(entry.getKey());   //  序号
//
//                    vo.setPlcDesc("");  //  todo:luxiaotao plc错误描述
//                    vo.setError("");    //  todo:luxiaotao 异常信息
//                    list.add(vo);
//                }
            }
        }
@@ -151,7 +108,6 @@
            }else{
                return -1;
            }
        });
        return R.ok().add(list);
    }