Browse Source

通利博硬件对接

hxx 2 months ago
parent
commit
4cf858bc93

+ 121 - 0
mjava-tonglibo/src/main/java/com/malk/tonglibo/controller/machineController.java

@@ -0,0 +1,121 @@
+package com.malk.tonglibo.controller;
+
+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 Map<String, Object> params){
+        try {
+            log.info("设备数据:{}",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;
+
+    }
+
+
+
+}

+ 36 - 0
mjava-tonglibo/src/main/resources/application-dev.yml

@@ -0,0 +1,36 @@
+server:
+  port: 9033
+  servlet:
+    context-path: /api/tlb
+spring:
+  datasource:
+    url: jdbc:mysql://120.55.113.155:3306/tonglibo?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
+    username: root
+    password: cloudPoc@2025++
+    driver-class-name: com.mysql.cj.jdbc.Driver
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+
+
+
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/tonglibo/log/
+  level:
+    com.malk.*: debug
+
+# dingtalk
+dingtalk:
+  agentId: 3914874648
+  appKey: dingyedbqoqricilvyog
+  appSecret: CAPT0hNRO5y-rHp81fmzMHz4LXYJhzkHqG1kh1L6OdM_LQPANR9IOoLtJrNLPVCc
+  corpId: dingf11f7d6ff834577b
+  aesKey: UqJRA1RTxarywiIWOK76BN8BSLfAN4gTDo6nEco4sqG
+  token: CpR7AsWa026FQV5VBNU5YrO5
+
+aliwork:
+  appType: APP_HJJ3X3QN4WEWDHU2BJR2
+  systemToken: 7X866C81QPIHJKBFFM1QW4S8BV1U3U4MFO5RLY1
+

+ 31 - 0
mjava-tonglibo/src/main/resources/application-prod.yml

@@ -0,0 +1,31 @@
+server:
+  port: 9033
+  servlet:
+    context-path: /api/tlb
+spring:
+  datasource:
+    url: jdbc:mysql://120.55.113.155:3306/tonglibo?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
+    username: root
+    password: cloudPoc@2025++
+    driver-class-name: com.mysql.cj.jdbc.Driver
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/tonglibo/log/
+  level:
+    com.malk.*: info
+
+# dingtalk
+dingtalk:
+  agentId: 3914874648
+  appKey: dingyedbqoqricilvyog
+  appSecret: CAPT0hNRO5y-rHp81fmzMHz4LXYJhzkHqG1kh1L6OdM_LQPANR9IOoLtJrNLPVCc
+  corpId: dingf11f7d6ff834577b
+  aesKey: UqJRA1RTxarywiIWOK76BN8BSLfAN4gTDo6nEco4sqG
+  token: CpR7AsWa026FQV5VBNU5YrO5
+
+aliwork:
+  appType: APP_HJJ3X3QN4WEWDHU2BJR2
+  systemToken: 7X866C81QPIHJKBFFM1QW4S8BV1U3U4MFO5RLY1
+

+ 15 - 0
mjava-tonglibo/src/main/resources/application.yml

@@ -0,0 +1,15 @@
+spring:
+  profiles:
+    active: prod
+  servlet:
+    multipart:
+      max-file-size: 100MB
+      max-request-size: 100MB
+  http:
+    enabled: false
+
+#  configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  global-config:
+    db-config:
+      id-type: auto

+ 65 - 0
mjava-tonglibo/src/main/resources/logback-spring.xml

@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="false" scanPeriod="60 seconds">
+    <springProperty scope="context" name="LOG_HOME" source="logging.path" defaultValue="/home/server/log/"/>
+    <property name="FileNamePattern" value="${LOG_HOME}%d{yyyyMM}/%d{dd}"/>
+
+    <!-- 定义控制台输出 -->
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - [%thread] - %-5level - %logger{50} - %msg%n</pattern>
+        </layout>
+    </appender>
+
+    <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 指定日志文件的名称 -->
+        <!--<file>${FileNamePattern}/info.log</file>-->
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${FileNamePattern}/info-%i.log</fileNamePattern>
+            <MaxHistory>30</MaxHistory>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <MaxFileSize>30MB</MaxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
+        </layout>
+    </appender>
+
+    <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
+        <discriminator>
+            <Key>processid</Key>
+            <DefaultValue>sys</DefaultValue>
+        </discriminator>
+        <sift>
+            <appender name="FILE-${processid}"
+                      class="ch.qos.logback.core.rolling.RollingFileAppender">
+                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                    <FileNamePattern>
+                        ${FileNamePattern}/${processid}.log
+                    </FileNamePattern>
+                </rollingPolicy>
+                <layout class="ch.qos.logback.classic.PatternLayout">
+                    <Pattern>
+                        %d{yyyyMMdd:HH:mm:ss.SSS} [%thread] %-5level %msg%n
+                    </Pattern>
+                </layout>
+            </appender>
+        </sift>
+    </appender>
+
+
+    <!-- 日志输出级别 -->
+    <logger name="org.springframework" level="debug"  additivity="false"/>
+    <logger name="com.malk.connecter" level="debug"/>
+    <!-- 新增:抑制JSON解析错误日志 -->
+    <logger name="com.malk.filter.CatchException" level="WARN"/>
+    <logger name="org.springframework.http.converter" level="WARN"/>
+    <logger name="com.fasterxml.jackson" level="WARN"/>
+    <root level="INFO">
+        <appender-ref ref="stdout"/>
+        <appender-ref ref="appLogAppender"/>
+        <appender-ref ref="SIFT"/>
+    </root>
+</configuration>