#
Junjie
4 天以前 ce511a3d55e5f349b1647172e562c1659bbc8172
src/main/java/com/zy/core/controller/OpenController.java
@@ -1,49 +1,123 @@
package com.zy.core.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zy.common.R;
import com.zy.core.News;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.param.AddFakeDeviceParam;
import com.zy.core.model.param.DeleteDeviceParam;
import com.zy.core.model.param.GetFakeThreadStatusParam;
import com.zy.core.model.param.UpdateFakeThreadStatusParam;
import com.zy.core.properties.DeviceConfig;
import com.zy.core.thread.FakeThread;
import com.zy.core.thread.ForkLiftThread;
import com.zy.core.thread.LiftThread;
import com.zy.core.thread.ShuttleThread;
import com.zy.core.utils.DeviceMsgUtils;
import com.zy.core.utils.FakeDeviceUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@RestController
@RequestMapping("/open")
public class OpenController {
    @Value("${deviceMsgConfig.gatewayId}")
    private Integer gatewayId;
    @Value("${deviceMsgConfig.gatewayPort}")
    private Integer gatewayPort;
    @Autowired
    private DeviceMsgUtils deviceMsgUtils;
    @Autowired
    private FakeDeviceUtils fakeDeviceUtils;
    @GetMapping("/getSystemInfo")
    public R getSystemInfo() {
        HashMap<String, Object> map = new HashMap<>();
        map.put("gatewayId", gatewayId);
        map.put("gatewayPort", gatewayPort);
        return R.ok().add(map);
    }
    @PostMapping("/updateFakeThreadStatus")
    public R updateFakeThreadStatus(@RequestBody UpdateFakeThreadStatusParam param) {
        FakeThread fakeThread = null;
        if (param.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) {
            fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 1);
        } else if (param.getDeviceType().equals(String.valueOf(SlaveType.ForkLift))) {
            fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 2);
        } else if (param.getDeviceType().equals(String.valueOf(SlaveType.Lift))) {
            fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 3);
        }
        if (fakeThread == null) {
            return R.error("找不到设备线程");
        }
        boolean result = fakeThread.updateFakeStatus(param);
        if (result) {
            return R.ok();
        }
        return R.error("更新失败");
    }
    @PostMapping("/getFakeThreadStatus")
    public R getFakeThreadStatus(@RequestBody GetFakeThreadStatusParam param) {
        FakeThread fakeThread = null;
        if (param.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) {
            fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 1);
        } else if (param.getDeviceType().equals(String.valueOf(SlaveType.ForkLift))) {
            fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 2);
        } else if (param.getDeviceType().equals(String.valueOf(SlaveType.Lift))) {
            fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 3);
        }
        if (fakeThread == null) {
            return R.error("找不到设备线程");
        }
        ConcurrentHashMap<String, JSONObject> fakeStatusMap = fakeThread.getFakeStatusMap();
        String key = param.getDeviceType() + param.getDeviceNo();
        JSONObject result = fakeStatusMap.get(key);
        if (result == null) {
            return R.error("数据不存在");
        }
        return R.ok().add(result);
    }
    @GetMapping("/getFakeThreadStatusList")
    public R getFakeThreadStatusList() {
        FakeThread fakeThread1 = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 1);
        FakeThread fakeThread2 = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 2);
        FakeThread fakeThread3 = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 3);
        HashMap<String, Object> map = new HashMap<>();
        map.put("fakeNyShuttleStatusMap", fakeThread1.getFakeStatusMap());
        map.put("fakeZyForkLiftStatusMap", fakeThread2.getFakeStatusMap());
        map.put("fakeNyLiftStatusMap", fakeThread3.getFakeStatusMap());
        return R.ok().add(map);
    }
    @GetMapping("/getDeviceList")
    public R getDeviceList() {
        List<DeviceConfig> deviceList = new ArrayList<>();
        List<DeviceConfig> configList = new ArrayList<>();
        String deviceConfig = deviceMsgUtils.getDeviceConfig();
        if(null != deviceConfig){
            List<DeviceConfig> deviceConfigs = JSON.parseArray(deviceConfig, DeviceConfig.class);
            configList.addAll(deviceConfigs);
        }
        String fakeDeviceConfig = fakeDeviceUtils.getFakeDeviceConfig();
        if(null != fakeDeviceConfig){
            List<DeviceConfig> deviceConfigs = JSON.parseArray(fakeDeviceConfig, DeviceConfig.class);
            configList.addAll(deviceConfigs);
        }
        List<DeviceConfig> deviceConfigs = deviceMsgUtils.getDeviceConfig();
        configList.addAll(deviceConfigs);
        List<DeviceConfig> fakeDeviceConfig = fakeDeviceUtils.getFakeDeviceConfig();
        configList.addAll(fakeDeviceConfig);
        for (DeviceConfig config : configList) {
            SlaveType slaveType = SlaveType.findInstance(config.getDeviceType());
@@ -57,6 +131,18 @@
                    continue;
                }
                deviceList.add(shuttleThread.getDeviceConfig());
            } else if (slaveType.equals(SlaveType.ForkLift)) {
                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(slaveType, config.getDeviceNo());
                if(forkLiftThread == null){
                    continue;
                }
                deviceList.add(forkLiftThread.getDeviceConfig());
            } else if (slaveType.equals(SlaveType.Lift)) {
                LiftThread liftThread = (LiftThread) SlaveConnection.get(slaveType, config.getDeviceNo());
                if(liftThread == null){
                    continue;
                }
                deviceList.add(liftThread.getDeviceConfig());
            }
        }