| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- 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;
- }
- }
|