|
@@ -0,0 +1,124 @@
|
|
|
|
|
+package com.malk.tonglibo.controller;
|
|
|
|
|
+
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
+import com.malk.tonglibo.Mapper.MachineDataMapper;
|
|
|
|
|
+import com.malk.tonglibo.entity.MachineData;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.apache.catalina.User;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
+
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 功能:
|
|
|
|
|
+ * 作者:hanxue
|
|
|
|
|
+ * 日期:2025/9/15 11:35
|
|
|
|
|
+ */
|
|
|
|
|
+@RestController
|
|
|
|
|
+@RequestMapping
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class machineController {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private MachineDataMapper machineDataMapper;
|
|
|
|
|
+ private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 同步设备数据
|
|
|
|
|
+ * @param params
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping("/device/data")
|
|
|
|
|
+ public void deviceData(@RequestBody String paramsStr){
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.info("设备数据paramsStr:{}",paramsStr);
|
|
|
|
|
+ JSONObject params = JSONObject.parseObject(paramsStr);
|
|
|
|
|
+ log.info("设备数据JSON:{}",params);
|
|
|
|
|
+ // 创建请求记录对象
|
|
|
|
|
+ LocalDateTime time = LocalDateTime.parse((String) params.get("time"), FORMATTER);
|
|
|
|
|
+
|
|
|
|
|
+ // 正则:匹配 k 后跟数字的字符串
|
|
|
|
|
+ Pattern kPattern = Pattern.compile("^k\\d+$");
|
|
|
|
|
+ for (Map.Entry<String, Object> entry : params.entrySet()) {
|
|
|
|
|
+ String key = entry.getKey();
|
|
|
|
|
+ // 判断是否是 k 字段:以 'k' 开头,后面是数字
|
|
|
|
|
+ if (kPattern.matcher(key).matches()) {
|
|
|
|
|
+ Object dataObj = entry.getValue();
|
|
|
|
|
+ if (dataObj instanceof List) {
|
|
|
|
|
+ List<String> data = new ArrayList<>();
|
|
|
|
|
+ MachineData machineData = new MachineData();
|
|
|
|
|
+ for (Object item : (List<?>) dataObj) {
|
|
|
|
|
+ String strValue;
|
|
|
|
|
+ if (item instanceof Number) {
|
|
|
|
|
+ // 所有数字类型(Integer, Double, Float, Long)直接转字符串
|
|
|
|
|
+ strValue = item.toString();
|
|
|
|
|
+ } else if (item == null) {
|
|
|
|
|
+ strValue = "null"; // 或者跳过、用 "" 代替
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 兜底:调用 toString()
|
|
|
|
|
+ strValue = item.toString();
|
|
|
|
|
+ }
|
|
|
|
|
+ data.add(strValue); // 存入字符串
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ System.out.println("数据:" + data);
|
|
|
|
|
+ machineData.setParamId(params.get("id").toString());
|
|
|
|
|
+ machineData.setTime(time);
|
|
|
|
|
+ machineData.setMachineNo(key);
|
|
|
|
|
+ machineData.setJqyxsh(data.get(0));
|
|
|
|
|
+ machineData.setZcn(data.get(2));
|
|
|
|
|
+ machineData.setZqsj(data.get(4));
|
|
|
|
|
+ machineData.setSgdyl(data.get(6));
|
|
|
|
|
+ machineData.setXgdyl(data.get(8));
|
|
|
|
|
+ machineData.setYskqyl1(data.get(10));
|
|
|
|
|
+ machineData.setYskqyl2(data.get(12));
|
|
|
|
|
+ machineData.setZymwd1(data.get(14));
|
|
|
|
|
+ machineData.setZymwd2(data.get(16));
|
|
|
|
|
+ machineData.setZymwd3(data.get(18));
|
|
|
|
|
+ machineData.setZymwd4(data.get(20));
|
|
|
|
|
+ machineData.setSmwd1(data.get(22));
|
|
|
|
|
+ machineData.setSmwd2(data.get(24));
|
|
|
|
|
+ machineData.setSmwd3(data.get(26));
|
|
|
|
|
+ machineData.setSmwd4(data.get(28));
|
|
|
|
|
+ machineData.setXmwd1(data.get(30));
|
|
|
|
|
+ machineData.setXmwd2(data.get(32));
|
|
|
|
|
+ machineData.setXmwd3(data.get(34));
|
|
|
|
|
+ machineData.setXmwd4(data.get(36));
|
|
|
|
|
+ machineData.setXjsj(data.get(38));
|
|
|
|
|
+ machineData.setTssj(data.get(40));
|
|
|
|
|
+ machineData.setZysj(data.get(42));
|
|
|
|
|
+ machineDataMapper.insert(machineData);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ log.error("设备数据同步异常:{}",e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 宜搭获取设备数据
|
|
|
|
|
+ * @param params
|
|
|
|
|
+ */
|
|
|
|
|
+ @PostMapping("/device/getData")
|
|
|
|
|
+ public List<MachineData> deviceHeartbeat(@RequestBody Map params){
|
|
|
|
|
+ QueryWrapper<MachineData> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
+
|
|
|
|
|
+ List<MachineData> machineDatas = machineDataMapper.selectList(queryWrapper);
|
|
|
|
|
+ return null;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|