package org.dromara.eims.controller; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; import org.dromara.common.redis.utils.RedisUtils; import org.springframework.web.bind.annotation.*; import org.springframework.scheduling.annotation.Scheduled; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; /** * 设备数据控制器 * * @author Lion Li * @date 2024-07-26 */ @RestController @RequestMapping("/eims/deviceData") @RequiredArgsConstructor public class DeviceDataController extends BaseController { private static final String DEVICE_DATA_PREFIX = "eims:device:data:"; /** * 获取设备数据 */ @GetMapping("/get") public R> getDeviceData() { Map deviceData = new HashMap<>(); deviceData.put("xAxisTravel", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "xAxisTravel") / 100000.0); deviceData.put("yAxisTravel", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "yAxisTravel") / 100000.0); deviceData.put("zAxisTravel", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "zAxisTravel") / 100000.0); deviceData.put("toolChangeCount", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "toolChangeCount") / 10.0); deviceData.put("partCount", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "partCount") / 100000.0); deviceData.put("downtime", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "downtime") / 10.0); return R.ok(deviceData); } /** * 获取设备数据 */ @GetMapping("/getSmt") public R> getDeviceDataSmt() { Map deviceData = new HashMap<>(); deviceData.put("xAxisTravel", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "smtXAxisTravel") / 1000.0); deviceData.put("yAxisTravel", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "smtYAxisTravel") / 1000.0); deviceData.put("tapeJamCount", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "smtTapeJamCount") / 1000.0); deviceData.put("materialJamCount", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "smtMaterialJamCount") / 1000.0); deviceData.put("panelCount", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "smtPanelCount") / 1000.0); deviceData.put("downtime", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "smtDowntime") / 100.0); return R.ok(deviceData); } /** * injectionCount: 495 * 24 * 60 + 19 * 60 + 44, // 注射次数,转换为分钟 * clampingCount: 545636, // 合模次数 // 跟随产量 50s加一次 * productionCycle: 45, // 生产周期 * energyConsumption: 64, // 能耗 * yieldRate: 354, // 产量 50秒增加一模 * downtime: 120, // 出错停机时间 * */ /** * 获取设备数据 */ @GetMapping("/getInj") public R> getDeviceDataInj() { Map deviceData = new HashMap<>(); deviceData.put("injectionCount", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "injectionCount") / 3600.0); deviceData.put("clampingCount", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "clampingCount") / 10.0); deviceData.put("productionCycle", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "productionCycle") / 10.0); deviceData.put("energyConsumption", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "energyConsumption") / 1000.0); deviceData.put("yieldRate", RedisUtils.getAtomicValue(DEVICE_DATA_PREFIX + "yieldRate") / 10.0); return R.ok(deviceData); } /** * 初始化设备数据 */ @PostMapping("/init") public R initDeviceData() { RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "smtXAxisTravel", 300282L); // 50/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "smtYAxisTravel", 233524L); // 45/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "smtTapeJamCount", 6000); // 5/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "smtMaterialJamCount", 15000); // 5/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "smtPanelCount", 2481000); // 100/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "smtDowntime", 450); //5/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "injectionCount", 43848000L); // 5/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "clampingCount", 5456360L); // 1/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "productionCycle", 450); RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "energyConsumption", 64000); // 7/5s RedisUtils.setAtomicValue(DEVICE_DATA_PREFIX + "yieldRate", 3540); // 1/5s return R.ok(); } }