浏览代码

+ 终端信息采集程序

chen.cheng 5 月之前
父节点
当前提交
6d38932365
共有 51 个文件被更改,包括 4801 次插入86 次删除
  1. 0 2
      bd-park/park-backend/park-application/pom.xml
  2. 1 1
      bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/engine/impl/FenceBreakInEngine.java
  3. 2 1
      bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/engine/impl/PointFusionEngine.java
  4. 1 1
      bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/engine/impl/RoomBreakInEngine.java
  5. 2 1
      bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/engine/impl/VideoTrailEngine.java
  6. 2 1
      bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mqtt/UWBLocationListener.java
  7. 2 1
      bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mqtt/UWBLocationSubscribeListener.java
  8. 30 37
      bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/web/controller/bd/BdDevcTrailUwbController.java
  9. 2 1
      bd-park/park-backend/park-application/src/main/resources/application-hm.yml
  10. 123 0
      bd-park/park-backend/park-collect/pom.xml
  11. 65 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/ClientInit.java
  12. 38 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/SpingMqttApplication.java
  13. 27 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/config/AliyunMqttCfg.java
  14. 53 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/config/TopicDataCfg.java
  15. 16 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/ITopicListener.java
  16. 28 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/MqttMessageHandler.java
  17. 76 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/MqttSign.java
  18. 155 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/MqttTemplate.java
  19. 93 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/TopicMsgEngine.java
  20. 199 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/handle/RootMsgHandler.java
  21. 124 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/model/MachinePileProcess.java
  22. 127 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/model/MachinePileResult.java
  23. 59 0
      bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/model/MqttRequest.java
  24. 89 0
      bd-park/park-backend/park-collect/src/main/resources/application-locale.yml
  25. 411 0
      bd-park/park-backend/park-collect/src/main/resources/application-topic.yml
  26. 106 0
      bd-park/park-backend/park-collect/src/main/resources/application.yml
  27. 12 0
      bd-park/park-backend/park-collect/src/main/resources/banner.txt
  28. 93 0
      bd-park/park-backend/park-collect/src/main/resources/logback.xml
  29. 22 0
      bd-park/park-backend/park-collect/src/main/resources/mybatis/mybatis-config.xml
  30. 438 0
      bd-park/park-backend/park-common/src/main/java/com/huashe/park/common/ByteArrayUtil.java
  31. 53 0
      bd-park/park-backend/park-common/src/main/java/com/huashe/park/common/thread/ThreadPoolCfg.java
  32. 100 0
      bd-park/park-backend/park-common/src/main/java/com/huashe/park/common/thread/Threads.java
  33. 63 0
      bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/mapper/MachineProcessMapper.java
  34. 63 0
      bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/mapper/MachineProcessResultMapper.java
  35. 61 0
      bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/IMachineProcessResultService.java
  36. 62 0
      bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/IMachineProcessService.java
  37. 87 0
      bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/impl/MachineProcessResultServiceImpl.java
  38. 88 0
      bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/impl/MachineProcessServiceImpl.java
  39. 8 0
      bd-park/park-backend/park-core/src/main/resources/mapper/cons/ConsPileHoleInfoMapper.xml
  40. 367 0
      bd-park/park-backend/park-core/src/main/resources/mapper/cons/MachineProcessMapper.xml
  41. 384 0
      bd-park/park-backend/park-core/src/main/resources/mapper/cons/MachineProcessResultMapper.xml
  42. 38 12
      bd-park/park-backend/park-core/src/main/resources/mapper/cons/PileMachineInfoMapper.xml
  43. 12 1
      bd-park/park-backend/park-domain/src/main/java/com/huashe/park/domain/entity/ConsPileHoleInfo.java
  44. 480 0
      bd-park/park-backend/park-domain/src/main/java/com/huashe/park/domain/entity/MachineProcess.java
  45. 482 0
      bd-park/park-backend/park-domain/src/main/java/com/huashe/park/domain/entity/MachineProcessResult.java
  46. 1 0
      bd-park/park-backend/park-domain/src/main/java/com/huashe/park/domain/entity/PileMachineInfo.java
  47. 1 1
      bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/CustomWrapper.java
  48. 1 1
      bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/MapWrapperFactory.java
  49. 40 24
      bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/MybatisInterceptor.java
  50. 1 1
      bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/RegisterCustomerInterceptor.java
  51. 13 0
      bd-park/park-backend/pom.xml

+ 0 - 2
bd-park/park-backend/park-application/pom.xml

@@ -75,8 +75,6 @@
             <artifactId>park-core</artifactId>
             <version>${park.version}</version>
         </dependency>
-
-
     </dependencies>
     <build>
         <plugins>

+ 1 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/engine/impl/FenceBreakInEngine.java

@@ -36,7 +36,7 @@ import com.huashe.park.domain.entity.BdFenceVioEvt;
 import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
 
 @Service
-@ConditionalOnBean(MqttCfg.class)
+@ConditionalOnBean(MqttClientTemplate.class)
 public class FenceBreakInEngine extends EvtFusionEngine {
     private static final Logger logger = LoggerFactory.getLogger(FenceBreakInEngine.class);
 

+ 2 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/engine/impl/PointFusionEngine.java

@@ -9,6 +9,7 @@ import com.huashe.park.common.DateTimeUtil;
 import com.huashe.park.common.consts.BDConst;
 import com.huashe.park.core.service.IBdDevcTrailUwbService;
 import com.huashe.park.domain.entity.BdDevcTrailUwb;
+import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.stereotype.Service;
@@ -24,7 +25,7 @@ import java.util.concurrent.LinkedBlockingQueue;
  * @author chen.cheng
  */
 @Service
-@ConditionalOnBean(MqttCfg.class)
+@ConditionalOnBean(MqttClientTemplate.class)
 public class PointFusionEngine extends EvtFusionEngine {
 
     @Autowired

+ 1 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/engine/impl/RoomBreakInEngine.java

@@ -42,7 +42,7 @@ import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
  * The type Room break in engine.
  */
 @Service
-@ConditionalOnBean(MqttCfg.class)
+@ConditionalOnBean(MqttClientTemplate.class)
 public class RoomBreakInEngine extends EvtFusionEngine {
     private static final Logger logger = LoggerFactory.getLogger(RoomBreakInEngine.class);
 

+ 2 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/engine/impl/VideoTrailEngine.java

@@ -8,6 +8,7 @@ import java.util.concurrent.LinkedBlockingQueue;
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
+import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
 import org.apache.commons.lang3.ObjectUtils;
 import org.locationtech.jts.geom.Polygon;
 import org.slf4j.Logger;
@@ -38,7 +39,7 @@ import cn.hutool.core.lang.UUID;
  * The type Room break in engine.
  */
 @Service
-@ConditionalOnBean(MqttCfg.class)
+@ConditionalOnBean(MqttClientTemplate.class)
 @ConditionalOnProperty(name = "evt-fusion.video-trail-engine.enable", havingValue = "true")
 public class VideoTrailEngine extends EvtFusionEngine {
     private static final Logger logger = LoggerFactory.getLogger(VideoTrailEngine.class);

+ 2 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mqtt/UWBLocationListener.java

@@ -4,6 +4,7 @@ import java.nio.charset.StandardCharsets;
 
 import javax.annotation.PostConstruct;
 
+import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,7 +25,7 @@ import net.dreamlu.iot.mqtt.spring.client.event.MqttConnectedEvent;
 import net.dreamlu.iot.mqtt.spring.client.event.MqttDisconnectEvent;
 
 @Service
-@ConditionalOnBean(MqttCfg.class)
+@ConditionalOnBean(MqttClientTemplate.class)
 @ConditionalOnProperty(name = "evt-fusion.video-trail-engine.enable", havingValue = "true")
 public class UWBLocationListener {
     private static final Logger logger = LoggerFactory.getLogger(UWBLocationListener.class);

+ 2 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mqtt/UWBLocationSubscribeListener.java

@@ -9,6 +9,7 @@ import com.huashe.park.infrastructure.cfg.mqtt.MqttCfg;
 import com.huashe.park.common.consts.BDConst;
 import net.dreamlu.iot.mqtt.codec.MqttQoS;
 import net.dreamlu.iot.mqtt.spring.client.MqttClientSubscribe;
+import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,7 +20,7 @@ import javax.annotation.PostConstruct;
 import java.nio.charset.StandardCharsets;
 
 @Service
-@ConditionalOnBean(MqttCfg.class)
+@ConditionalOnBean(MqttClientTemplate.class)
 public class UWBLocationSubscribeListener {
     private static final Logger logger = LoggerFactory.getLogger(UWBLocationSubscribeListener.class);
 

+ 30 - 37
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/web/controller/bd/BdDevcTrailUwbController.java

@@ -1,15 +1,10 @@
 package com.huashe.park.application.web.controller.bd;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
-import com.huashe.park.infrastructure.cfg.forest.UWBForestCfg;
-import com.huashe.park.infrastructure.uwb.HolidayWebService;
-import com.huashe.park.infrastructure.uwb.UWBWebService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -21,12 +16,12 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.alibaba.fastjson2.JSON;
 import com.huashe.common.domain.AjaxResult;
-import com.huashe.park.common.DateTimeUtil;
-import com.huashe.park.common.consts.BDConst;
 import com.huashe.park.core.service.IBdDevcTrailUwbService;
 import com.huashe.park.domain.entity.BdDevcTrailUwb;
+import com.huashe.park.infrastructure.cfg.forest.UWBForestCfg;
+import com.huashe.park.infrastructure.uwb.HolidayWebService;
+import com.huashe.park.infrastructure.uwb.UWBWebService;
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
@@ -34,8 +29,6 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 
-import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
-
 /**
  * 室内坐标定位Controller
  *
@@ -50,8 +43,8 @@ public class BdDevcTrailUwbController extends BaseController {
     @Autowired
     private IBdDevcTrailUwbService bdDevcTrailUwbService;
 
-    @Autowired
-    private MqttClientTemplate client;
+    // @Autowired
+    // private MqttClientTemplate client;
 
     @Autowired
     private UWBForestCfg uwbForestCfg;
@@ -67,16 +60,16 @@ public class BdDevcTrailUwbController extends BaseController {
      */
     @GetMapping("/list")
     public TableDataInfo list(BdDevcTrailUwb bdDevcTrailUwb) {
-//        Map map = uwbWebService.exchangeToken(new HashMap<String, Object>() {
-//            {
-//                {
-//                    put("username", uwbForestCfg.getUwbUsr());
-//                    put("password", uwbForestCfg.getUwbPwd());
-//                    put("isfresh", 1);
-//                }
-//            }
-//        });
-//        Map yearHoliday = holidayWebService.getYearHoliday("2025");
+        // Map map = uwbWebService.exchangeToken(new HashMap<String, Object>() {
+        // {
+        // {
+        // put("username", uwbForestCfg.getUwbUsr());
+        // put("password", uwbForestCfg.getUwbPwd());
+        // put("isfresh", 1);
+        // }
+        // }
+        // });
+        // Map yearHoliday = holidayWebService.getYearHoliday("2025");
         startPage();
         List<BdDevcTrailUwb> list = bdDevcTrailUwbService.selectBdDevcTrailUwbList(bdDevcTrailUwb);
         return getDataTable(list);
@@ -93,21 +86,21 @@ public class BdDevcTrailUwbController extends BaseController {
         util.exportExcel(response, list, "室内坐标定位数据");
     }
 
-    @PostMapping("/point")
-    @Anonymous
-    public void pushPoint(@RequestBody BdDevcTrailUwb bdDevcTrailUwb) {
-        Map<String, Object> map = new HashMap() {
-            {
-                put("latitude", bdDevcTrailUwb.getLat());
-                put("longitude", bdDevcTrailUwb.getLng());
-                put("srcTimestamp", DateTimeUtil.timestampMillis());
-                put("key", bdDevcTrailUwb.getDevcKey());
-                put("deviceId", bdDevcTrailUwb.getDevcKey());
-            }
-        };
-        client.publish(String.format(BDConst.MQTT_TOPIC.DEVICE_LOCATION_TOPIC, bdDevcTrailUwb.getDevcKey()),
-            JSON.toJSONBytes(map));
-    }
+    // @PostMapping("/point")
+    // @Anonymous
+    // public void pushPoint(@RequestBody BdDevcTrailUwb bdDevcTrailUwb) {
+    // Map<String, Object> map = new HashMap() {
+    // {
+    // put("latitude", bdDevcTrailUwb.getLat());
+    // put("longitude", bdDevcTrailUwb.getLng());
+    // put("srcTimestamp", DateTimeUtil.timestampMillis());
+    // put("key", bdDevcTrailUwb.getDevcKey());
+    // put("deviceId", bdDevcTrailUwb.getDevcKey());
+    // }
+    // };
+    // client.publish(String.format(BDConst.MQTT_TOPIC.DEVICE_LOCATION_TOPIC, bdDevcTrailUwb.getDevcKey()),
+    // JSON.toJSONBytes(map));
+    // }
 
     /**
      * 获取室内坐标定位详细信息

+ 2 - 1
bd-park/park-backend/park-application/src/main/resources/application-hm.yml

@@ -84,7 +84,7 @@ spring:
 
 mqtt:
   client:
-    enabled: true
+    enabled: false
     ip: xt.wenhq.top
     port: 8581
     name: uwb-location-client
@@ -100,6 +100,7 @@ mqtt:
     clean-session: true
     ssl:
       enabled: false
+
 bd:
   mqtt:
     enabled: true

+ 123 - 0
bd-park/park-backend/park-collect/pom.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.huashe.park</groupId>
+        <artifactId>bd-park</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>com.huashe.park.collect</groupId>
+    <artifactId>park-collect</artifactId>
+    <version>${park.version}</version>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <!-- Mysql驱动包 -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.33</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-collections4</artifactId>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <!-- 核心模块-->
+        <dependency>
+            <groupId>com.huashe.application</groupId>
+            <artifactId>ruoyi-framework</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.huashe.application</groupId>
+            <artifactId>ruoyi-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.huashe.park</groupId>
+            <artifactId>park-common</artifactId>
+            <version>${park.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.huashe.park</groupId>
+            <artifactId>park-core</artifactId>
+            <version>${park.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.paho</groupId>
+            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.5.15</version>
+                <configuration>
+                    <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>3.1.0</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                    <warName>${project.artifactId}</warName>
+                </configuration>
+            </plugin>
+        </plugins>
+        <finalName>${project.artifactId}</finalName>
+    </build>
+</project>

+ 65 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/ClientInit.java

@@ -0,0 +1,65 @@
+/*
+ * 文 件 名:  ClientInit
+ * 版    权:  浩鲸云计算科技股份有限公司
+ * 描    述:  <描述>
+ * 修 改 人:  lvwenbin
+ * 修改时间:  2024/4/30
+ * 跟踪单号:  <跟踪单号>
+ * 修改单号:  <修改单号>
+ * 修改内容:  <修改内容>
+ */
+package com.huashe.park.collect;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import com.huashe.park.collect.core.MqttTemplate;
+import com.huashe.park.collect.handle.RootMsgHandler;
+import com.huashe.park.core.service.IPileMachineInfoService;
+import com.huashe.park.domain.entity.PileMachineInfo;
+
+/**
+ * 连接初始化 <功能详细描述>
+ *
+ * @author lvwenbin
+ * @version [版本号, 2024/4/30]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+@Component
+public class ClientInit implements CommandLineRunner {
+    private static final Logger log = LoggerFactory.getLogger(ClientInit.class);
+
+    @Resource
+    @Qualifier("mqttTemplate")
+    private MqttTemplate template;
+
+    @Resource
+    private RootMsgHandler rootMsgHandler;
+
+    @Autowired
+    private IPileMachineInfoService machineInfoService;
+
+    @Override
+    public void run(String... args) {
+        try {
+            List<PileMachineInfo> pileMachineInfos = machineInfoService
+                .selectPileMachineInfoList(new PileMachineInfo());
+            for (PileMachineInfo pileMachineInfo : pileMachineInfos) {
+                template.subscribe(pileMachineInfo.getProductKey(), pileMachineInfo.getEquipment(),
+                    pileMachineInfo.getDeviceSecret(), pileMachineInfo.getTopic(), 0, rootMsgHandler);
+            }
+        }
+        catch (Exception e) {
+            log.error("init fail!", e);
+        }
+    }
+}

+ 38 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/SpingMqttApplication.java

@@ -0,0 +1,38 @@
+/*
+ * 文 件 名:  ConfigServerApplication
+ * 版    权:
+ * 描    述:  <描述>
+ * 修 改 人:  learshaw
+ * 修改时间:  2018/12/18
+ */
+package com.huashe.park.collect;
+
+import com.dtflys.forest.springboot.annotation.ForestScan;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * Mqtt启动入口
+ * <功能详细描述>
+ *
+ * @author learshaw
+ * @version [版本号, 2021/04/26]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+@EnableScheduling
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+@ComponentScan(basePackages = {"com.ruoyi", "com.huashe.park"})
+@MapperScan("com.huashe.park.core.mapper")
+@ForestScan(basePackages = {"com.huashe.park.infrastructure.uwb"})
+public class SpingMqttApplication {
+    public static void main(String[] args) {
+        SpringApplicationBuilder builder = new SpringApplicationBuilder(SpingMqttApplication.class);
+//        builder.web(WebApplicationType.NONE);
+        builder.run(args);
+    }
+}

+ 27 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/config/AliyunMqttCfg.java

@@ -0,0 +1,27 @@
+package com.huashe.park.collect.config;
+
+import org.eclipse.paho.client.mqttv3.MqttException;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.huashe.park.collect.core.MqttTemplate;
+
+@Configuration
+@ConfigurationProperties(prefix = "aliyun.mqtt")
+public class AliyunMqttCfg {
+    private String uri;
+
+    public String getUri() {
+        return uri;
+    }
+
+    public void setUri(String uri) {
+        this.uri = uri;
+    }
+
+    @Bean
+    public MqttTemplate mqttTemplate() throws MqttException {
+        return new MqttTemplate();
+    }
+}

+ 53 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/config/TopicDataCfg.java

@@ -0,0 +1,53 @@
+package com.huashe.park.collect.config;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Configuration
+@ConfigurationProperties(value = "aliyun")
+
+public class TopicDataCfg {
+    private TopicData resultTopic;
+
+    private TopicData processTopic;
+
+    public TopicData getResultTopic() {
+        return resultTopic;
+    }
+
+    public void setResultTopic(TopicData resultTopic) {
+        this.resultTopic = resultTopic;
+    }
+
+    public TopicData getProcessTopic() {
+        return processTopic;
+    }
+
+    public void setProcessTopic(TopicData processTopic) {
+        this.processTopic = processTopic;
+    }
+
+    @Getter
+    @Setter
+    public static class TopicData {
+        private Map<String, TopicDataCfg.Protocol> protocol;
+
+        private String name;
+    }
+
+    @Getter
+    @Setter
+    public static class Protocol {
+        private String type;
+
+        private List<Integer> range;
+
+        private String byteSort = "little";
+    }
+}

+ 16 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/ITopicListener.java

@@ -0,0 +1,16 @@
+package com.huashe.park.collect.core;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import com.alibaba.fastjson2.JSONObject;
+
+public interface ITopicListener {
+    default List<LinkedBlockingQueue<JSONObject>> getQueue() {
+        return new ArrayList<>();
+    }
+
+    default void messageBizHandle(JSONObject json) {
+    }
+}

+ 28 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/MqttMessageHandler.java

@@ -0,0 +1,28 @@
+/*
+ * 文 件 名:  MqttHandler
+ * 版    权:  浩鲸云计算科技股份有限公司
+ * 描    述:  <描述>
+ * 修 改 人:  lvwenbin
+ * 修改时间:  2024/4/30
+ * 跟踪单号:  <跟踪单号>
+ * 修改单号:  <修改单号>
+ * 修改内容:  <修改内容>
+ */
+package com.huashe.park.collect.core;
+
+/**
+ * Mqtt消息处理
+ * <功能详细描述>
+ *
+ * @author lvwenbin
+ * @version [版本号, 2024/4/30]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+public interface MqttMessageHandler {
+    /**
+     * 消息出来
+     * @param payload 消息报文
+     */
+    void handle(String topic, byte[] payload);
+}

+ 76 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/MqttSign.java

@@ -0,0 +1,76 @@
+package com.huashe.park.collect.core;
+
+import java.math.BigInteger;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+class CryptoUtil {
+    private static String hmac(String plainText, String key, String algorithm, String format) throws Exception {
+        if (plainText == null || key == null) {
+            return null;
+        }
+
+        byte[] hmacResult = null;
+
+        Mac mac = Mac.getInstance(algorithm);
+        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), algorithm);
+        mac.init(secretKeySpec);
+        hmacResult = mac.doFinal(plainText.getBytes());
+        return String.format(format, new BigInteger(1, hmacResult));
+    }
+
+    public static String hmacSha256(String plainText, String key) throws Exception {
+        return hmac(plainText, key, "HmacSHA256", "%064x");
+    }
+}
+
+public class MqttSign {
+
+    private static final Logger logger = LoggerFactory.getLogger(MqttSign.class);;
+
+    private String username = "";
+
+    private String password = "";
+
+    private String clientid = "";
+
+    public String getUsername() {
+        return this.username;
+    }
+
+    public String getPassword() {
+        return this.password;
+    }
+
+    public String getClientid() {
+        return this.clientid;
+    }
+
+    public void calculate(String productKey, String deviceName, String deviceSecret) {
+        if (productKey == null || deviceName == null || deviceSecret == null) {
+            return;
+        }
+
+        try {
+            // MQTT用户名
+            this.username = deviceName + "&" + productKey;
+
+            // MQTT密码
+            String timestamp = Long.toString(System.currentTimeMillis());
+            String plainPasswd = "clientId" + productKey + "." + deviceName + "deviceName" + deviceName + "productKey"
+                + productKey + "timestamp" + timestamp;
+            this.password = CryptoUtil.hmacSha256(plainPasswd, deviceSecret);
+
+            // MQTT ClientId
+            this.clientid = productKey + "." + deviceName + "|" + "timestamp=" + timestamp
+                + ",_v=paho-java-1.0.0,securemode=2,signmethod=hmacsha256|";
+        }
+        catch (Exception e) {
+            logger.info("calculate mqtt sign error:{}", e.getMessage());
+        }
+    }
+}

+ 155 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/MqttTemplate.java

@@ -0,0 +1,155 @@
+/*
+ * 文 件 名:  MqttClient
+ * 版    权:  浩鲸云计算科技股份有限公司
+ * 描    述:  <描述>
+ * 修 改 人:  lvwenbin
+ * 修改时间:  2024/4/30
+ * 跟踪单号:  <跟踪单号>
+ * 修改单号:  <修改单号>
+ * 修改内容:  <修改内容>
+ */
+package com.huashe.park.collect.core;
+
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
+import org.eclipse.paho.client.mqttv3.MqttCallback;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.MqttException;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.huashe.park.collect.config.AliyunMqttCfg;
+
+import cn.hutool.core.text.StrFormatter;
+
+/**
+ * Mqtt操作模板 <功能详细描述>
+ *
+ * @author lvwenbin
+ * @version [版本号, 2024/4/30]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+public class MqttTemplate {
+    private static final Logger log = LoggerFactory.getLogger(MqttTemplate.class);
+
+    @Autowired
+    private AliyunMqttCfg aliyunMqttCfg;
+
+    private ConcurrentHashMap<String, MqttClient> mqttClientMap = new ConcurrentHashMap<>();
+
+    /**
+     * 构造器
+     *
+     * @param broker 服务地址
+     * @param clientId 客户端编码
+     */
+    public MqttTemplate() {
+
+    }
+
+    /**
+     * 订阅
+     *
+     * @param topic 主题
+     * @param qos 0-最多1次,1-至少1次,2-仅1次
+     */
+    public void subscribe(String productKey, String deviceName, String deviceSecret, String topic, Integer qos,
+        MqttMessageHandler handler) {
+        // 计算Mqtt建联参数
+        MqttSign sign = new MqttSign();
+        sign.calculate(productKey, deviceName, deviceSecret);
+
+        MemoryPersistence persistence = new MemoryPersistence();
+        String uri = aliyunMqttCfg.getUri();
+        uri = StrFormatter.format(uri, productKey);
+        String format = String.format("%s/#", topic);
+        if (mqttClientMap.containsKey(topic)) {
+            return;
+        }
+        try {
+            MqttClient mqttClient = new MqttClient(uri, sign.getClientid(), persistence);
+            // MQTT 连接选项
+            MqttConnectOptions connOpts = new MqttConnectOptions();
+            // 保留会话
+            connOpts.setCleanSession(false);
+            connOpts.setAutomaticReconnect(true);
+            // 建立连接
+            mqttClient.connect(connOpts);
+            mqttClient.subscribe(format, qos);
+            mqttClient.setCallback(new MqttCallback() {
+                // 链接丢失处理
+                @Override
+                public void connectionLost(Throwable throwable) {
+                    // 连接丢失后,一般在这里面进行重连
+                    log.info("mqtt服务连接断开,进行重连{}", throwable);
+                    try {
+                        // 尝试重新连接
+                        if (!mqttClient.isConnected()) {
+                            mqttClient.reconnect();
+                        }
+                    }
+                    catch (MqttException e) {
+                        log.error("重连失败:[{}]", e.getMessage());
+                    }
+                }
+
+                // 消息接收处理
+                @Override
+                public void messageArrived(String topic, MqttMessage message) throws Exception {
+                    handler.handle(topic, message.getPayload());
+                }
+
+                // 消息发送处理
+                @Override
+                public void deliveryComplete(IMqttDeliveryToken token) {
+                    log.info("消息发布结果[{}]", token.isComplete());
+                }
+            });
+            mqttClientMap.put(topic, mqttClient);
+        }
+        catch (Exception e) {
+            log.error("mqtt订阅异常", e);
+        }
+    }
+
+    /**
+     * 消息发送
+     * 
+     * @param topic 主题
+     * @param payload 报文
+     * @param qos 消息级别
+     * @param retained 回复
+     */
+    public void send(String topic, String payload, int qos, boolean retained) {
+        try {
+            MqttMessage message = new MqttMessage();
+            message.setPayload(payload.getBytes(StandardCharsets.UTF_8));
+            message.setQos(qos);
+            message.setRetained(retained);
+            mqttClientMap.get(topic).publish(topic, message);
+        }
+        catch (MqttException e) {
+            log.error("[Send]fail!", e);
+        }
+    }
+
+    public void sendByte(String topic, byte[] payload, int qos, boolean retained) {
+        try {
+            MqttMessage message = new MqttMessage();
+            message.setPayload(payload);
+            message.setQos(qos);
+            message.setRetained(retained);
+            mqttClientMap.get(topic).publish(topic, message);
+        }
+        catch (MqttException e) {
+            log.error("[Send]fail!", e);
+        }
+    }
+}

+ 93 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/core/TopicMsgEngine.java

@@ -0,0 +1,93 @@
+package com.huashe.park.collect.core;
+
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import javax.annotation.Resource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.huashe.common.utils.StringUtils;
+
+public abstract class TopicMsgEngine implements ITopicListener, MqttMessageHandler {
+    private final static Logger logger = LoggerFactory.getLogger(TopicMsgEngine.class);
+
+    private String engineName;
+
+    @Value("${evt-fusion.thread-pool-size:2}")
+    private int threadPoolSize;
+
+    @Resource(name = "bdThreadPoolTaskExecutor")
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
+    public void init() {
+        List<LinkedBlockingQueue<JSONObject>> queue = getQueue();
+        for (int i = 0; i < threadPoolSize; i++) {
+            queue.add(new LinkedBlockingQueue<>());
+        }
+    }
+
+    public void setEngineName(String name) {
+        this.engineName = name;
+    }
+
+    public void push(JSONObject msg) {
+        String key = msg.getString("key");
+        if (StringUtils.isEmpty(key)) {
+            return;
+        }
+        int bucketIndex = computeHashModulo(key, threadPoolSize);
+        List<LinkedBlockingQueue<JSONObject>> queue = getQueue();
+        LinkedBlockingQueue<JSONObject> messageQueue = queue.get(bucketIndex);
+        messageQueue.offer(msg);
+    }
+
+    public void start() {
+        List<LinkedBlockingQueue<JSONObject>> queue = getQueue();
+        for (int i = 0; i < threadPoolSize; i++) {
+            int finalI = i;
+            threadPoolTaskExecutor.execute(() -> {
+                while (true) {
+                    try {
+                        JSONObject msg = queue.get(finalI).take();
+                        messageBizHandle(msg);
+                    }
+                    catch (InterruptedException e) {
+                        logger.error("{} error", this.engineName, e);
+                        // 重置中断状态
+                        Thread.currentThread().interrupt();
+                        // 根据业务逻辑决定是否继续执行
+                        if (Thread.currentThread().isInterrupted()) {
+                            logger.error("任务已中断,不再继续执行");
+                            break;
+                        }
+                    }
+                }
+            });
+        }
+    }
+
+    /**
+     * 计算字符串的哈希值并对某个数取余数。
+     *
+     * @param str 字符串
+     * @param modulo 取余数的基数
+     * @return 字符串哈希值对 modulo 取余的结果
+     */
+    private int computeHashModulo(String str, int modulo) {
+        long hash = 0;
+        long base = 31;
+        long baseMod = base % modulo; // 预计算乘法因子
+
+        for (char c : str.toCharArray()) {
+            hash = (hash * baseMod + c) % modulo; // 避免整数溢出
+        }
+
+        return (int) (hash % modulo); // 最终结果转换为 int
+    }
+
+}

+ 199 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/handle/RootMsgHandler.java

@@ -0,0 +1,199 @@
+/*
+ * 文 件 名:  MessageHandler
+ * 版    权:  浩鲸云计算科技股份有限公司
+ * 描    述:  <描述>
+ * 修 改 人:  lvwenbin
+ * 修改时间:  2024/4/30
+ * 跟踪单号:  <跟踪单号>
+ * 修改单号:  <修改单号>
+ * 修改内容:  <修改内容>
+ */
+package com.huashe.park.collect.handle;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.commons.lang3.ArrayUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.huashe.common.utils.StringUtils;
+import com.huashe.park.collect.config.TopicDataCfg;
+import com.huashe.park.collect.core.TopicMsgEngine;
+import com.huashe.park.common.ByteArrayUtil;
+import com.huashe.park.core.service.IMachineProcessResultService;
+import com.huashe.park.core.service.IMachineProcessService;
+import com.huashe.park.domain.entity.MachineProcess;
+import com.huashe.park.domain.entity.MachineProcessResult;
+
+/**
+ * 消息处理handle <功能详细描述>
+ *
+ * @author lvwenbin
+ * @version [版本号, 2024/4/30]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+@Service
+public class RootMsgHandler extends TopicMsgEngine {
+
+    @Autowired
+    private TopicDataCfg topicDataCfg;
+
+    private final static String TOPIC_NAME = "topic";
+
+    private static final String TOPIC_PAYLOAD = "payload";
+
+    private static final Logger log = LoggerFactory.getLogger(RootMsgHandler.class);
+
+    private final List<LinkedBlockingQueue<JSONObject>> messageQueueList = new ArrayList<>(2);
+
+    @Autowired
+    private IMachineProcessService machineProcessService;
+
+    @Autowired
+    private IMachineProcessResultService machineProcessResultService;
+
+    @PostConstruct
+    public void init() {
+        super.init();
+        this.setEngineName("终端机械指标");
+        start();
+    }
+
+    @Override
+    public List<LinkedBlockingQueue<JSONObject>> getQueue() {
+        return messageQueueList;
+    }
+
+    @Override
+    public void handle(String topic, byte[] payload) {
+        Map<String, TopicDataCfg.Protocol> resultTopic = topicDataCfg.getResultTopic().getProtocol();
+        // 初始化byte数组
+        log.info("[Receive]Topic:{}, message:{}", topic, payload);
+        // byte[] bytes = DatatypeConverter.parseHexBinary(new String(payload));
+        // // 取前两个字节
+        // byte[] bytes1 = new byte[2];
+        // bytes1[0] = bytes[1];
+        // bytes1[1] = bytes[0];
+        // int value = ((bytes1[1] & 0xFF) << 8) | (bytes[0] & 0xFF);
+        byte[] bytes2 = ByteArrayUtil.hexString2ByteArray(
+            "590200000001951C387150353061623664373875393537343066346D75656466653462FA7E6A04ACCE5041A8C64B37EA401C4163077186A3CE50410F490C00A6401C4163077186A3CE5041FE480C00A6401C41000000000000000000000000000000000000000000000000000001951C37D7CB000001951C38711A00000000643BDF4F8DD72C400000000000000000000000000000000000000000000000000000204100000000000000005902000000000000000000000000000075393537343066345F313130445339383339333230303030325F");
+        // System.out.println(HexUtil.encodeHex(ByteArrayUtil.double2ByteArray_Big_Endian(4405936.0690)));
+        System.out.println(byteFormat(bytes2));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put(TOPIC_NAME, topic);
+        jsonObject.put("key", topic);
+        jsonObject.put(TOPIC_PAYLOAD, payload);
+        push(jsonObject);
+    }
+
+    @Override
+    public void messageBizHandle(JSONObject json) {
+        String topic = json.getString(TOPIC_NAME);
+        // 结果数据处理
+        if (topic.endsWith(topicDataCfg.getResultTopic().getName())) {
+            byte[] bytes = json.getBytes(TOPIC_PAYLOAD);
+            JSONObject jsonObject = byteFormat(bytes, topicDataCfg.getResultTopic().getProtocol());
+            MachineProcessResult machineProcess = JSON.parseObject(jsonObject.toString(), MachineProcessResult.class);
+            machineProcessResultService.insertMachineProcessResult(machineProcess);
+        }
+        if (topic.endsWith(topicDataCfg.getProcessTopic().getName())) {
+            byte[] bytes = json.getBytes(TOPIC_PAYLOAD);
+            JSONObject jsonObject = byteFormat(bytes, topicDataCfg.getProcessTopic().getProtocol());
+            MachineProcess machineProcess = JSON.parseObject(jsonObject.toString(), MachineProcess.class);
+            machineProcessService.insertMachineProcess(machineProcess);
+        }
+    }
+
+    private JSONObject byteFormat(byte[] payload, Map<String, TopicDataCfg.Protocol> protocolMap) {
+        JSONObject jsonObject = new JSONObject();
+        protocolMap.forEach((key, value) -> {
+            String camelCase = StringUtils.toCamelCase(key);
+            switch (value.getType()) {
+                case "short":
+                    if (value.getByteSort().equals("big")) {
+                        jsonObject.put(camelCase, ByteArrayUtil.byteArray2Short_Big_Endian(
+                            getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                        break;
+                    }
+                    jsonObject.put(camelCase, ByteArrayUtil.byteArray2Short_Little_Endian(
+                        getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                    break;
+                case "byte":
+                    jsonObject.put(camelCase, getByteArray(payload, value.getRange().get(0), value.getRange().get(1)));
+                    break;
+                case "long":
+                    if (value.getByteSort().equals("big")) {
+                        jsonObject.put(camelCase, ByteArrayUtil.byteArray2Long_Big_Endian(
+                            getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                        break;
+                    }
+                    jsonObject.put(camelCase, ByteArrayUtil.byteArray2Long_Little_Endian(
+                        getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                    break;
+                case "int":
+                    if (value.getByteSort().equals("big")) {
+                        jsonObject.put(camelCase, ByteArrayUtil.byteArray2Int_Big_Endian(
+                            getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                        break;
+                    }
+                    jsonObject.put(camelCase, ByteArrayUtil.byteArray2Int_Little_Endian(
+                        getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                    break;
+                case "double":
+                    if (value.getByteSort().equals("big")) {
+                        jsonObject.put(camelCase, ByteArrayUtil.byteArray2Double_Big_Endian(
+                            getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                        break;
+                    }
+                    jsonObject.put(camelCase, ByteArrayUtil.byteArray2Double_Little_Endian(
+                        getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                    break;
+                case "float":
+                    if (value.getByteSort().equals("big")) {
+                        jsonObject.put(camelCase, ByteArrayUtil.byteArray2Float_Big_Endian(
+                            getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                        break;
+                    }
+                    jsonObject.put(camelCase, ByteArrayUtil.byteArray2Float_Little_Endian(
+                        getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                    break;
+                case "string":
+                    if (value.getRange().isEmpty()) {
+                        break;
+                    }
+                    if (value.getRange().size() > 1) {
+                        jsonObject.put(camelCase,
+                            new String(getByteArray(payload, value.getRange().get(0), value.getRange().get(1))));
+                        break;
+                    }
+                    jsonObject.put(camelCase,
+                        new String(getByteArray(payload, value.getRange().get(0), payload.length - 1)));
+                    break;
+                default:
+                    break;
+            }
+        });
+        return jsonObject;
+    }
+
+    private byte[] getByteArray(byte[] payload, Integer startIncludeIndex, Integer endIncludeIndex) {
+        return ArrayUtils.subarray(payload, startIncludeIndex, endIncludeIndex + 1);
+    }
+
+    public static void main(String[] args) {
+        byte[] bytes = ByteArrayUtil.hexString2ByteArray(
+            "590200000001951C387150353061623664373875393537343066346D75656466653462FA7E6A04ACCE5041A8C64B37EA401C4163077186A3CE50410F490C00A6401C4163077186A3CE5041FE480C00A6401C41000000000000000000000000000000000000000000000000000001951C37D7CB000001951C38711A00000000643BDF4F8DD72C400000000000000000000000000000000000000000000000000000204100000000000000005902000000000000000000000000000075393537343066345F313130445339383339333230303030325F");
+        // System.out.println(HexUtil.encodeHex(ByteArrayUtil.double2ByteArray_Big_Endian(4405936.0690)));
+        System.out.println(ArrayUtils.subarray(bytes, bytes.length - 1, bytes.length));
+    }
+}

+ 124 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/model/MachinePileProcess.java

@@ -0,0 +1,124 @@
+package com.huashe.park.collect.model;
+
+import lombok.Data;
+
+@Data
+public class MachinePileProcess {
+
+    // 基础信息区
+    /** 设备类型 (字节范围: 0-1) */
+    private short consType;
+
+    /** 数据版本 (字节范围: 2-2) */
+    private byte dataVersion;
+
+    /** 数据时间 (字节范围: 3-10, 大端序) */
+    private long dataTime;
+
+    // 设备标识区
+    /** 桩号 (字节范围: 11-18) */
+    private String pileId;
+
+    /** 设计编号 (字节范围: 19-26) */
+    private String designId;
+
+    /** 机器编号 (字节范围: 27-34) */
+    private String machineId;
+
+    // 空间坐标区
+    /** 实际X坐标 (字节范围: 35-42) */
+    private double realX;
+
+    /** 实际Y坐标 (字节范围: 43-50) */
+    private double realY;
+
+    /** 高程 (字节范围: 51-54) */
+    private float realZ;
+
+    /** 纬度 (字节范围: 55-62) */
+    private double latitude;
+
+    /** 经度 (字节范围: 63-70) */
+    private double longitude;
+
+    // 桩体参数区
+    /** 设计桩长 (字节范围: 71-74) */
+    private float pileLength;
+
+    /** 实际桩长 (字节范围: 75-78) */
+    private float realPileLength;
+
+    // 运行参数区
+    /** 速度 (字节范围: 79-82) */
+    private float speed;
+
+    /** 电流 (字节范围: 83-86) */
+    private float current;
+
+    /** 倾侧角 (字节范围: 87-90) */
+    private float tiltAngle;
+
+    /** 前倾角 (字节范围: 91-94) */
+    private float forwardTiltAngle;
+
+    /** 垂直度 (字节范围: 95-98) */
+    private float verticalAngle;
+
+    // 扩展参数区
+    /** 自编号 (字节范围: 99-102) */
+    private int selfNum;
+
+    /** 持力层电流 (字节范围: 103-106) */
+    private float holdCurrent;
+
+    /** 灌浆体积 (字节范围: 107-110) */
+    private float sprayVolume;
+
+    /** 实时钻头高程 (字节范围: 111-114) */
+    private float realDrillHeight;
+
+    // 动力系统参数
+    /** 振动电流 (字节范围: 115-118) */
+    private float vibrationCurrent;
+
+    /** 水泵电流 (字节范围: 119-122) */
+    private float pumpCurrent;
+
+    /** 喷浆压力 (字节范围: 123-126) */
+    private float sprayPressure;
+
+    /** 喷浆速度 (字节范围: 127-130) */
+    private float spraySpeed;
+
+    // 钻杆参数
+    /** 设计桩长 (字节范围: 131-134) */
+    private float designLength;
+
+    /** 当前钻杆节数 (字节范围: 135-138) */
+    private int currentDrillNumber;
+
+    // 时间参数(大端序)
+    /** 每节开始时间 (字节范围: 139-146, 大端序) */
+    private long startTime;
+
+    /** 每节结束时间 (字节范围: 147-154, 大端序) */
+    private long endTime;
+
+    // 地层参数
+    /** 当前机械类型 (字节范围: 155-158) */
+    private int currentMechanicalType;
+
+    /** 当前层 (字节范围: 159-163) */
+    private int currentLayer;
+
+    /** 当前层送土时长 (字节范围: 164-167) */
+    private float currentLayerSendTime;
+
+    /** 当前层夯击次数 (字节范围: 168-171) */
+    private int currentLayerHammerNumber;
+
+    // 唯一标识
+    /** 唯一识别码 (字节起始位置: 172) */
+    private String uuid;
+
+}

+ 127 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/model/MachinePileResult.java

@@ -0,0 +1,127 @@
+package com.huashe.park.collect.model;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class MachinePileResult {
+    private static final long serialVersionUID = 1L;
+
+    // ------------------- 基础信息 -------------------
+    /** 字节范围:0-1 | 施工类型编码 */
+    private short consType;
+
+    /** 字节范围:2-2 | 数据协议版本 */
+    private byte dataVersion;
+
+    /** 字节范围:3-10 | 数据采集时间戳 */
+    private long dataTime;
+
+    // ------------------- 设备标识 -------------------
+    /** 字节范围:11-18 | 桩体编号 */
+    private String pileId;
+
+    /** 字节范围:19-26 | 设计图纸编号 */
+    private String designId;
+
+    /** 字节范围:27-34 | 施工机械编号 */
+    private String machineId;
+
+    // ------------------- 坐标数据 -------------------
+    /** 字节范围:35-42 | 设计X坐标(单位:米) */
+    private double designX;
+
+    /** 字节范围:43-50 | 设计Y坐标(单位:米) */
+    private double designY;
+
+    /** 字节范围:51-58 | 实际X坐标(单位:米) */
+    private double realX;
+
+    /** 字节范围:59-66 | 实际Y坐标(单位:米) */
+    private double realY;
+
+    /** 字节范围:67-74 | 纬度坐标 */
+    private double latitude;
+
+    /** 字节范围:75-82 | 经度坐标 */
+    private double longitude;
+
+    // ------------------- 施工监测 -------------------
+    /** 字节范围:83-86 | 成桩长度(单位:米) */
+    private float pileLength;
+
+    /** 字节范围:87-90 | 平均钻速(单位:mm/min) */
+    private float avgSpeed;
+
+    /** 字节范围:91-94 | 平均电流(单位:A) */
+    private float avgCurrent;
+
+    /** 字节范围:95-98 | 持力层电流阈值(单位:A) */
+    private float holdCurrent;
+
+    /** 字节范围:99-102 | 垂直度偏差(单位:%) */
+    private float verticalDeviation;
+
+    /** 字节范围:103-106 | 灌浆体积(单位:m³) */
+    private float sprayVolume;
+
+    // ------------------- 时间记录 -------------------
+    /** 字节范围:107-114 | 施工开始时间戳 */
+    private long startTime;
+
+    /** 字节范围:115-122 | 施工结束时间戳 */
+    private long endTime;
+
+    // ------------------- 质量评估 -------------------
+    /** 字节范围:123-126 | 结果评价(0:合格 1:异常) */
+    private int resultEvaluation;
+
+    /** 字节范围:127-134 | 起桩高度(单位:米) */
+    private double startHeight;
+
+    /** 字节范围:135-138 | 入岩深度(单位:米) */
+    private float inDepth;
+
+    /** 字节范围:139-142 | 有效下行深度(单位:米) */
+    private float effectiveDown;
+
+    /** 字节范围:143-146 | 有效桩长(单位:米) */
+    private float effectiveLength;
+
+    // ------------------- 设备状态 -------------------
+    /** 字节范围:147-150 | 桩点编号 */
+    private int pileNumber;
+
+    /** 字节范围:151-154 | 平均喷浆压力(单位:MPa) */
+    private float avgSprayPressure;
+
+    /** 字节范围:155-158 | 平均喷浆速度(单位:L/min) */
+    private float avgSpraySpeed;
+
+    /** 字节范围:159-162 | 设计桩长(单位:米) */
+    private float designLength;
+
+    /** 字节范围:163-166 | 平均上行速度(单位:mm/min) */
+    private float avgUpSpeed;
+
+    /** 字节范围:167-170 | 钻杆总节数 */
+    private int drillTotalNumber;
+
+    /** 字节范围:171-174 | 机械类型(1:旋挖 2:冲击) */
+    private int currentMechanicalType;
+
+    // ------------------- 施工统计 -------------------
+    /** 字节范围:175-178 | 送土次数 */
+    private int sendTotalNumber;
+
+    /** 字节范围:179-182 | 送土总时长(单位:秒) */
+    private float sendTotalTime;
+
+    /** 字节范围:183-186 | 总夯击次数 */
+    private int totalHammerNumber;
+
+    // ------------------- 系统标识 -------------------
+    /** 字节范围:187-194 | 设备唯一标识 */
+    private String uuid;
+}

+ 59 - 0
bd-park/park-backend/park-collect/src/main/java/com/huashe/park/collect/model/MqttRequest.java

@@ -0,0 +1,59 @@
+/*
+ * 文 件 名:  MqttRequest
+ * 版    权:  浩鲸云计算科技股份有限公司
+ * 描    述:  <描述>
+ * 修 改 人:  lvwenbin
+ * 修改时间:  2024/5/6
+ * 跟踪单号:  <跟踪单号>
+ * 修改单号:  <修改单号>
+ * 修改内容:  <修改内容>
+ */
+package com.huashe.park.collect.model;
+
+/**
+ * 发送请求
+ * <功能详细描述>
+ *
+ * @author lvwenbin
+ * @version [版本号, 2024/5/6]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+public class MqttRequest {
+    private String topic;
+    private String payload;
+    private int qos;
+    private boolean retained;
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getPayload() {
+        return payload;
+    }
+
+    public void setPayload(String payload) {
+        this.payload = payload;
+    }
+
+    public int getQos() {
+        return qos;
+    }
+
+    public void setQos(int qos) {
+        this.qos = qos;
+    }
+
+    public boolean isRetained() {
+        return retained;
+    }
+
+    public void setRetained(boolean retained) {
+        this.retained = retained;
+    }
+}

+ 89 - 0
bd-park/park-backend/park-collect/src/main/resources/application-locale.yml

@@ -0,0 +1,89 @@
+## MQTT##
+aliyun:
+  mqtt:
+    uri: tcp://xt.wenhq.top:8581
+
+
+# 数据源配置
+spring:
+  # redis 配置
+  redis:
+    # 地址
+    host: 127.0.0.1
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 1
+    # 密码
+    password:
+    # 连接超时时间
+    timeout: 10s
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 0
+        # 连接池中的最大空闲连接
+        max-idle: 8
+        # 连接池的最大数据库连接数
+        max-active: 8
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: 3s
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.cj.jdbc.Driver
+    druid:
+      # 主库数据源
+      master:
+        url: jdbc:mysql://127.0.0.1:3306/hs_bds?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        username: root
+        password: 123456
+      # 从库数据源
+      pkb:
+        # 从数据源开关/默认关闭
+        enabled: true
+        url: jdbc:mysql://127.0.0.1:3306/hs_bds?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        username: root
+        password: 123456
+      # 初始连接数
+      initialSize: 5
+      # 最小连接池数量
+      minIdle: 10
+      # 最大连接池数量
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置连接超时时间
+      connectTimeout: 30000
+      # 配置网络超时时间
+      socketTimeout: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      # 配置一个连接在池中最大生存的时间,单位是毫秒
+      maxEvictableIdleTimeMillis: 900000
+      # 配置检测连接是否有效
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 设置白名单,不填则允许所有访问
+        allow:
+        url-pattern: /druid/*
+        # 控制台管理用户名和密码
+        login-username: ruoyi
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 慢SQL记录
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true

+ 411 - 0
bd-park/park-backend/park-collect/src/main/resources/application-topic.yml

@@ -0,0 +1,411 @@
+## MQTT##
+aliyun:
+  result-topic:
+    name: /machine/piling/result
+    protocol:
+      cons_type:
+        type: short
+        range:
+          - 0
+          - 1
+      data_version:
+        type: byte
+        range:
+          - 2
+          - 2
+      data_time:
+        type: long
+        range:
+          - 3
+          - 10
+        byte-sort: big
+      pile_id:
+        type: string
+        range:
+          - 11
+          - 18
+      design_id:
+        type: string
+        range:
+          - 19
+          - 26
+      machine_id:
+        type: string
+        range:
+          - 27
+          - 34
+      design_x:
+        type: double
+        range:
+          - 35
+          - 42
+      design_y:
+        type: double
+        range:
+          - 43
+          - 50
+      real_x:
+        type: double
+        range:
+          - 51
+          - 58
+      real_y:
+        type: double
+        range:
+          - 59
+          - 66
+      latitude:
+        type: double
+        range:
+          - 67
+          - 74
+      longitude:
+        type: double
+        range:
+          - 75
+          - 82
+      pile_length:
+        type: float
+        range:
+          - 83
+          - 86
+      avg_speed:
+        type: float
+        range:
+          - 87
+          - 90
+      # 平均电流
+      avg_current:
+        type: float
+        range:
+          - 91
+          - 94
+      # 持力层电流
+      hold_current:
+        type: float
+        range:
+          - 95
+          - 98
+      #垂直度偏差
+      vertical_deviation:
+        type: float
+        range:
+          - 99
+          - 102
+      #灌浆体积
+      spray_volume:
+        type: float
+        range:
+          - 103
+          - 106
+      # 开始时间
+      start_time:
+        type: long
+        byte-sort: big
+        range:
+          - 107
+          - 114
+      # 结束时间
+      end_time:
+        type: long
+        byte-sort: big
+        range:
+          - 115
+          - 122
+      # 结果评价
+      result_evaluation:
+        type: int
+        range:
+          - 123
+          - 126
+      # 起桩高度
+      start_height:
+        type: double
+        range:
+          - 127
+          - 134
+      # 入岩深度
+      in_depth:
+        type: float
+        range:
+          - 135
+          - 138
+      # 有效下行
+      effective_down:
+        type: float
+        range:
+          - 139
+          - 142
+      # 有效长度
+      effective_length:
+        type: float
+        range:
+          - 143
+          - 146
+      # 桩点编号
+      pile_number:
+        type: int
+        range:
+          - 147
+          - 150
+      # 平均喷浆压力
+      avg_spray_pressure:
+        type: float
+        range:
+          - 151
+          - 154
+      # 平均喷浆速度
+      avg_spray_speed:
+        type: float
+        range:
+          - 155
+          - 158
+      # 设计桩长
+      design_length:
+        type: float
+        range:
+          - 159
+          - 162
+      # 平均上行速度
+      avg_up_speed:
+        type: float
+        range:
+          - 163
+          - 166
+      # 钻杆总节数
+      drill_total_number:
+        type: int
+        range:
+          - 167
+          - 170
+      # 当前机械类型
+      current_mechanical_type:
+        type: int
+        range:
+          - 171
+          - 174
+      # 送土总次数
+      send_total_number:
+        type: int
+        range:
+          - 175
+          - 178
+      # 送土总时长
+      send_total_time:
+        type: float
+        range:
+          - 179
+          - 182
+      # 总夯击次数
+      total_hammer_number:
+        type: int
+        range:
+          - 183
+          - 186
+      # uuid
+      uuid:
+        type: string
+        range:
+          - 187
+  process-topic:
+    name: /machine/piling/process
+    protocol:
+      cons_type:
+        type: short
+        range:
+          - 0
+          - 1
+      data_version:
+        type: byte
+        range:
+          - 2
+          - 2
+      data_time:
+        type: long
+        range:
+          - 3
+          - 10
+        byte-sort: big
+      pile_id:
+        type: string
+        range:
+          - 11
+          - 18
+      design_id:
+        type: string
+        range:
+          - 19
+          - 26
+      machine_id:
+        type: string
+        range:
+          - 27
+          - 34
+      real_x:
+        type: double
+        range:
+          - 35
+          - 42
+      real_y:
+        type: double
+        range:
+          - 43
+          - 50
+      # 高程
+      real_z:
+        type: float
+        range:
+          - 51
+          - 54
+      latitude:
+        type: double
+        range:
+          - 55
+          - 62
+      longitude:
+        type: double
+        range:
+          - 63
+          - 70
+      pile_length:
+        type: float
+        range:
+          - 71
+          - 74
+      real_pile_length:
+        type: float
+        range:
+          - 75
+          - 78
+      speed:
+        type: float
+        range:
+          - 79
+          - 82
+      # 电流
+      current:
+        type: float
+        range:
+          - 83
+          - 86
+      # 倾侧角
+      tilt_angle:
+        type: float
+        range:
+          - 87
+          - 90
+      # 前倾角
+      forward_tilt_angle:
+        type: float
+        range:
+          - 91
+          - 94
+      # 垂直度
+      vertical_angle:
+        type: float
+        range:
+          - 95
+          - 98
+      # 自编号
+      self_num:
+        type: int
+        range:
+          - 99
+          - 102
+      # 持力层电流
+      hold_current:
+        type: float
+        range:
+          - 103
+          - 106
+      #灌浆体积
+      spray_volume:
+        type: float
+        range:
+          - 107
+          - 110
+      # 实时钻头高程
+      real_drill_height:
+        type: float
+        range:
+          - 111
+          - 114
+      # 振动电流
+      vibration_current:
+        type: float
+        range:
+          - 115
+          - 118
+      #水泵电流
+      pump_current:
+        type: float
+        range:
+          - 119
+          - 122
+      # 喷浆压力
+      spray_pressure:
+        type: float
+        range:
+          - 123
+          - 126
+      # 喷浆速度
+      spray_speed:
+        type: float
+        range:
+          - 127
+          - 130
+      # 设计桩长
+      design_length:
+        type: float
+        range:
+          - 131
+          - 134
+      # 当前钻杆节数
+      current_drill_number:
+        type: int
+        range:
+          - 135
+          - 138
+      # 每节开始时间
+      start_time:
+        type: long
+        byte-sort: big
+        range:
+          - 139
+          - 146
+        # 每节结束时间
+      end_time:
+        type: long
+        byte-sort: big
+        range:
+          - 147
+          - 154
+      # 当前机械类型
+      current_mechanical_type:
+        type: int
+        range:
+          - 155
+          - 158
+      # 当前层
+      current_layer:
+        type: int
+        range:
+          - 159
+          - 163
+      # 当前层送土时长
+      current_layer_send_time:
+        type: float
+        range:
+          - 164
+          - 167
+      # 当前层夯击次数
+      current_layer_hammer_number:
+        type: int
+        range:
+          - 168
+          - 171
+      # uuid
+      uuid:
+        type: string
+        range:
+          - 172

+ 106 - 0
bd-park/park-backend/park-collect/src/main/resources/application.yml

@@ -0,0 +1,106 @@
+
+# Spring配置
+spring:
+  application:
+    name: ems-collect
+  profiles:
+    active: locale,topic
+
+  mvc:
+    pathmatch:
+      matching-strategy: ant_path_matcher
+  # 资源信息
+  messages:
+    # 国际化资源文件路径
+    basename: i18n/messages
+    encoding: UTF-8
+  # 文件上传
+  servlet:
+    multipart:
+      # 单个文件大小
+      max-file-size: 10MB
+      # 设置总上传的文件大小
+      max-request-size: 20MB
+forest:
+  max-connections: 1000        # 连接池最大连接数
+  connect-timeout: 3000        # 连接超时时间,单位为毫秒
+  read-timeout: 3000           # 数据读取超时时间,单位为毫秒
+  backend: okhttp3 # 配置后端HTTP API为 okhttp3
+  ## 日志总开关,打开/关闭Forest请求/响应日志(默认为 true)
+  log-enabled: true
+  ## 打开/关闭Forest请求日志(默认为 true)
+  log-request: true
+  ## 打开/关闭Forest响应状态日志(默认为 true)
+  log-response-status: true
+  ## 打开/关闭Forest响应内容日志(默认为 false)
+  log-response-content: true
+  custom:
+    # 自定义配置
+    holiday: https://raw.githubusercontent.com
+    uwb:
+      enabled: true
+      uwb-socket: ws://172.192.13.80:2223/socket/websocket/pollingArea
+      test-tag: 845D3
+      uwb-usr: admin
+      uwb-pwd: admin123
+      uwb-host: http://172.192.13.80:2223
+server:
+  port: 9203
+  servlet:
+    context-path: /pkc-collect
+# MyBatis配置
+mybatis:
+  # 搜索指定包别名
+  typeAliasesPackage: com.huashe.**.domain,com.ruoyi.**.domain
+  # 配置mapper的扫描,找到所有的mapper.xml映射文件
+  mapperLocations: classpath*:mapper/**/*Mapper.xml
+  # 加载全局的配置文件
+  configLocation: classpath:mybatis/mybatis-config.xml
+  type-handlers-package: com.huashe.**.typehandle
+# PageHelper分页插件
+pagehelper:
+  helperDialect: mysql
+  supportMethodsArguments: true
+  params: count=countSql
+
+# 防止XSS攻击
+xss:
+  # 过滤开关
+  enabled: true
+  # 排除链接(多个用逗号分隔)
+  excludes: /system/notice
+  # 匹配链接
+  urlPatterns: /system/*,/monitor/*,/tool/*
+# token配置
+token:
+  # 令牌自定义标识
+  header: Authorization
+  # 令牌密钥
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 令牌有效期(默认30分钟)
+  expireTime: 76000
+# 用户配置
+user:
+  password:
+    # 密码最大错误次数
+    maxRetryCount: 5
+    # 密码锁定时间(默认10分钟)
+    lockTime: 10
+mqtt:
+  client:
+    enabled: false
+    ip: xt.wenhq.top
+    port: 8581
+    name: uwb-location-client
+    client-id: uwb-000001
+    global-subscribe:
+    timeout: 5
+    reconnect: true
+    re-interval: 5000
+    version: mqtt_3_1_1
+    read-buffer-size: 8KB
+    max-bytes-in-message: 10MB
+    keep-alive-secs: 60
+    clean-session: true
+    ssl:
+      enabled: false

+ 12 - 0
bd-park/park-backend/park-collect/src/main/resources/banner.txt

@@ -0,0 +1,12 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+
+ ______   ______          _______  _______  _______  _             _______  _______  _        _        _______  _______ _________
+(  ___ \ (  __  \        (  ____ )(  ___  )(  ____ )| \    /\     (  ____ \(  ___  )( \      ( \      (  ____ \(  ____ \\__   __/
+| (   ) )| (  \  )       | (    )|| (   ) || (    )||  \  / /     | (    \/| (   ) || (      | (      | (    \/| (    \/   ) (
+| (__/ / | |   ) | _____ | (____)|| (___) || (____)||  (_/ /_____ | |      | |   | || |      | |      | (__    | |         | |
+|  __ (  | |   | |(_____)|  _____)|  ___  ||     __)|   _ ((_____)| |      | |   | || |      | |      |  __)   | |         | |
+| (  \ \ | |   ) |       | (      | (   ) || (\ (   |  ( \ \      | |      | |   | || |      | |      | (      | |         | |
+| )___) )| (__/  )       | )      | )   ( || ) \ \__|  /  \ \     | (____/\| (___) || (____/\| (____/\| (____/\| (____/\   | |
+|/ \___/ (______/        |/       |/     \||/   \__/|_/    \/     (_______/(_______)(_______/(_______/(_______/(_______/   )_(
+

+ 93 - 0
bd-park/park-backend/park-collect/src/main/resources/logback.xml

@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <!-- 日志存放路径 -->
+	<property name="log.path" value="/opt/project/ruoyi/ruoyi-backend/logs" />
+    <!-- 日志输出格式 -->
+	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+
+	<!-- 控制台输出 -->
+	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+		</encoder>
+	</appender>
+	
+	<!-- 系统日志输出 -->
+	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${log.path}/sys-info.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>INFO</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+	</appender>
+	
+	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${log.path}/sys-error.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>ERROR</level>
+			<!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+			<!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+	
+	<!-- 用户访问日志输出  -->
+    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.path}/sys-user.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 按天回滚 daily -->
+            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+	
+	<!-- 系统模块日志级别控制  -->
+	<logger name="com.ruoyi" level="info" />
+	<!-- Spring日志级别控制  -->
+	<logger name="org.springframework" level="warn" />
+
+	<root level="info">
+		<appender-ref ref="console" />
+	</root>
+	
+	<!--系统操作日志-->
+    <root level="info">
+        <appender-ref ref="file_info" />
+        <appender-ref ref="file_error" />
+    </root>
+	
+	<!--系统用户操作日志-->
+    <logger name="sys-user" level="info">
+        <appender-ref ref="sys-user"/>
+    </logger>
+</configuration> 

+ 22 - 0
bd-park/park-backend/park-collect/src/main/resources/mybatis/mybatis-config.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+    <!-- 全局参数 -->
+    <settings>
+        <!-- 使全局的映射器启用或禁用缓存 -->
+        <setting name="cacheEnabled" value="true"/>
+        <!-- 允许JDBC 支持自动生成主键 -->
+        <setting name="useGeneratedKeys" value="true"/>
+        <!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->
+        <setting name="defaultExecutorType" value="BATCH"/>
+        <!-- 指定 MyBatis 所用日志的具体实现 -->
+        <setting name="logImpl" value="SLF4J"/>
+        <!-- 使用驼峰命名法转换字段 -->
+        <setting name="mapUnderscoreToCamelCase" value="true"/>
+        <!-- 批处理分片策略 -->
+        <setting name="batchChunkSize" value="1000"/>
+    </settings>
+
+</configuration>

+ 438 - 0
bd-park/park-backend/park-common/src/main/java/com/huashe/park/common/ByteArrayUtil.java

@@ -0,0 +1,438 @@
+package com.huashe.park.common;
+
+/**
+ * @author : chencheng
+ * @date : 2020-05-01
+ * @desc : 字节数组与基本数据类型的转换 byte、short、int、float、long、double、16进制字符串
+ * @version: 1.0
+ */
+public class ByteArrayUtil {
+
+    /**
+     * 字节数组转 short,小端
+     */
+    public static short byteArray2Short_Little_Endian(byte[] array) {
+        // 数组长度有误
+        if (array.length > 2) {
+            return 0;
+        }
+
+        short value = 0;
+        for (int i = 0; i < array.length; i++) {
+            // & 0xff,除去符号位干扰
+            value |= ((array[i] & 0xff) << (i * 8));
+        }
+        return value;
+    }
+
+    /**
+     * 字节数组转 short,大端
+     */
+    public static short byteArray2Short_Big_Endian(byte[] array) {
+        // 数组长度有误
+        if (array.length > 2) {
+            return 0;
+        }
+        short value = 0;
+        for (int i = 0; i < array.length; i++) {
+            value |= ((array[i] & 0xff) << ((array.length - i - 1) * 8));
+        }
+        return value;
+    }
+
+    /**
+     * 字节数组转 int,小端
+     */
+
+    public static int byteArray2Int_Little_Endian(byte[] array) {
+        // 数组长度有误
+        if (array.length > 4) {
+            return 0;
+
+        }
+
+        int value = 0;
+
+        for (int i = 0; i < array.length; i++) {
+
+            value |= ((array[i] & 0xff) << (i * 8));
+
+        }
+
+        return value;
+
+    }
+
+    /**
+     * 字节数组转 int,大端
+     */
+
+    public static int byteArray2Int_Big_Endian(byte[] array) {
+
+        // 数组长度有误
+
+        if (array.length > 4) {
+
+            return 0;
+
+        }
+
+        int value = 0;
+
+        for (int i = 0; i < array.length; i++) {
+
+            value |= ((array[i] & 0xff) << ((array.length - i - 1) * 8));
+
+        }
+
+        return value;
+
+    }
+
+    /**
+     * 字节数组转 float,小端
+     */
+
+    public static float byteArray2Float_Little_Endian(byte[] array) {
+
+        // 数组长度有误
+
+        if (array.length != 4) {
+
+            return 0;
+
+        }
+
+        return Float.intBitsToFloat(byteArray2Int_Little_Endian(array));
+
+    }
+
+    /**
+     * 字节数组转 float,大端
+     */
+
+    public static float byteArray2Float_Big_Endian(byte[] array) {
+
+        // 数组长度有误
+
+        if (array.length > 4) {
+
+            return 0;
+
+        }
+
+        return Float.intBitsToFloat(byteArray2Int_Big_Endian(array));
+
+    }
+
+    /**
+     * 字节数组转 long,小端
+     */
+
+    public static long byteArray2Long_Little_Endian(byte[] array) {
+
+        // 数组长度有误
+
+        if (array.length != 8) {
+
+            return 0;
+
+        }
+
+        long value = 0;
+
+        for (int i = 0; i < array.length; i++) {
+
+            // 需要转long再位移,否则int丢失精度
+
+            value |= ((long) (array[i] & 0xff) << (i * 8));
+
+        }
+
+        return value;
+
+    }
+
+    /**
+     * 字节数组转 long,大端
+     */
+
+    public static long byteArray2Long_Big_Endian(byte[] array) {
+
+        // 数组长度有误
+
+        if (array.length != 8) {
+
+            return 0;
+
+        }
+
+        long value = 0;
+
+        for (int i = 0; i < array.length; i++) {
+
+            value |= ((long) (array[i] & 0xff) << ((array.length - i - 1) * 8));
+
+        }
+
+        return value;
+
+    }
+
+    /**
+     * 字节数组转 double,小端
+     */
+
+    public static double byteArray2Double_Little_Endian(byte[] array) {
+
+        // 数组长度有误
+
+        if (array.length != 8) {
+
+            return 0;
+
+        }
+
+        return Double.longBitsToDouble(byteArray2Long_Little_Endian(array));
+
+    }
+
+    /**
+     * 字节数组转 double,大端
+     */
+
+    public static double byteArray2Double_Big_Endian(byte[] array) {
+
+        // 数组长度有误
+
+        if (array.length != 8) {
+
+            return 0;
+
+        }
+
+        return Double.longBitsToDouble(byteArray2Long_Big_Endian(array));
+
+    }
+
+    /**
+     * 字节数组转 HexString
+     */
+
+    public static String byteArray2HexString(byte[] array) {
+
+        StringBuilder builder = new StringBuilder();
+
+        for (byte b : array) {
+
+            String s = Integer.toHexString(b & 0xff);
+
+            if (s.length() < 2) {
+
+                builder.append("0");
+
+            }
+
+            builder.append(s);
+
+        }
+
+        return builder.toString().toUpperCase();
+
+    }
+
+    // ---------------------------------华丽的分割线-------------------------------------
+
+    /**
+     * short 转字节数组,小端
+     */
+
+    public static byte[] short2ByteArray_Little_Endian(short s) {
+
+        byte[] array = new byte[2];
+        for (int i = 0; i < array.length; i++) {
+            array[i] = (byte) (s >> (i * 8));
+        }
+
+        return array;
+
+    }
+
+    /**
+     * short 转字节数组,大端
+     */
+
+    public static byte[] short2ByteArray_Big_Endian(short s) {
+
+        byte[] array = new byte[2];
+
+        for (int i = 0; i < array.length; i++) {
+
+            array[array.length - 1 - i] = (byte) (s >> (i * 8));
+
+        }
+
+        return array;
+
+    }
+
+    /**
+     * int 转字节数组,小端
+     */
+
+    public static byte[] int2ByteArray_Little_Endian(int s) {
+
+        byte[] array = new byte[4];
+
+        for (int i = 0; i < array.length; i++) {
+
+            array[i] = (byte) (s >> (i * 8));
+
+        }
+
+        return array;
+
+    }
+
+    /**
+     * int 转字节数组,大端
+     */
+
+    public static byte[] int2ByteArray_Big_Endian(int s) {
+
+        byte[] array = new byte[4];
+
+        for (int i = 0; i < array.length; i++) {
+
+            array[array.length - 1 - i] = (byte) (s >> (i * 8));
+
+        }
+
+        return array;
+
+    }
+
+    /**
+     * float 转字节数组,小端
+     */
+
+    public static byte[] float2ByteArray_Little_Endian(float f) {
+
+        return int2ByteArray_Little_Endian(Float.floatToIntBits(f));
+
+    }
+
+    /**
+     * float 转字节数组,大端
+     */
+
+    public static byte[] float2ByteArray_Big_Endian(float f) {
+
+        return int2ByteArray_Big_Endian(Float.floatToIntBits(f));
+
+    }
+
+    /**
+     * long 转字节数组,小端
+     */
+
+    public static byte[] long2ByteArray_Little_Endian(long l) {
+
+        byte[] array = new byte[8];
+
+        for (int i = 0; i < array.length; i++) {
+
+            array[i] = (byte) (l >> (i * 8));
+
+        }
+
+        return array;
+
+    }
+
+    /**
+     * long 转字节数组,大端
+     */
+
+    public static byte[] long2ByteArray_Big_Endian(long l) {
+
+        byte[] array = new byte[8];
+
+        for (int i = 0; i < array.length; i++) {
+
+            array[array.length - 1 - i] = (byte) (l >> (i * 8));
+
+        }
+
+        return array;
+
+    }
+
+    /**
+     * double 转字节数组,小端
+     */
+
+    public static byte[] double2ByteArray_Little_Endian(double d) {
+
+        return long2ByteArray_Little_Endian(Double.doubleToLongBits(d));
+
+    }
+
+    /**
+     * double 转字节数组,大端
+     */
+
+    public static byte[] double2ByteArray_Big_Endian(double d) {
+
+        return long2ByteArray_Big_Endian(Double.doubleToLongBits(d));
+
+    }
+
+    /**
+     * HexString 转字节数组
+     */
+
+    public static byte[] hexString2ByteArray(String hexString) {
+
+        // 两个十六进制字符一个 byte,单数则有误
+
+        if (hexString.length() % 2 != 0) {
+
+            return null;
+
+        }
+
+        byte[] array = new byte[hexString.length() / 2];
+
+        int value = 0;
+
+        for (int i = 0; i < hexString.length(); i++) {
+
+            char s = hexString.charAt(i);
+
+            // 前半个字节
+
+            if (i % 2 == 0) {
+
+                value = Integer.parseInt(String.valueOf(s), 16) * 16;
+
+            }
+            else {
+
+                // 后半个字节
+
+                value += Integer.parseInt(String.valueOf(s), 16);
+
+                array[i / 2] = (byte) value;
+
+                value = 0;
+
+            }
+
+        }
+
+        return array;
+
+    }
+
+}

+ 53 - 0
bd-park/park-backend/park-common/src/main/java/com/huashe/park/common/thread/ThreadPoolCfg.java

@@ -0,0 +1,53 @@
+package com.huashe.park.common.thread;
+
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+import org.apache.commons.lang3.concurrent.BasicThreadFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+@Configuration
+public class ThreadPoolCfg {
+    // 核心线程池大小
+    private int corePoolSize = 50;
+
+    // 最大可创建的线程数
+    private int maxPoolSize = 200;
+
+    // 队列最大长度
+    private int queueCapacity = 1000;
+
+    // 线程池维护线程所允许的空闲时间
+    private int keepAliveSeconds = 300;
+
+    @Bean(name = "bdThreadPoolTaskExecutor")
+    public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setMaxPoolSize(maxPoolSize);
+        executor.setCorePoolSize(corePoolSize);
+        executor.setQueueCapacity(queueCapacity);
+        executor.setKeepAliveSeconds(keepAliveSeconds);
+        // 线程池对拒绝任务(无线程可用)的处理策略
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        return executor;
+    }
+
+    /**
+     * 执行周期性或定时任务
+     */
+    @Bean(name = "bdScheduledExecutorService")
+    protected ScheduledExecutorService scheduledExecutorService() {
+        return new ScheduledThreadPoolExecutor(corePoolSize,
+            new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(),
+            new ThreadPoolExecutor.CallerRunsPolicy()) {
+            @Override
+            protected void afterExecute(Runnable r, Throwable t) {
+                super.afterExecute(r, t);
+                Threads.printException(r, t);
+            }
+        };
+    }
+}

+ 100 - 0
bd-park/park-backend/park-common/src/main/java/com/huashe/park/common/thread/Threads.java

@@ -0,0 +1,100 @@
+package com.huashe.park.common.thread;
+
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 线程相关工具类.
+ * 
+ * @author ruoyi
+ */
+public class Threads
+{
+    private static final Logger logger = LoggerFactory.getLogger(Threads.class);
+
+    /**
+     * sleep等待,单位为毫秒
+     */
+    public static void sleep(long milliseconds)
+    {
+        try
+        {
+            Thread.sleep(milliseconds);
+        }
+        catch (InterruptedException e)
+        {
+            return;
+        }
+    }
+
+    /**
+     * 停止线程池
+     * 先使用shutdown, 停止接收新任务并尝试完成所有已存在任务.
+     * 如果超时, 则调用shutdownNow, 取消在workQueue中Pending的任务,并中断所有阻塞函数.
+     * 如果仍然超時,則強制退出.
+     * 另对在shutdown时线程本身被调用中断做了处理.
+     */
+    public static void shutdownAndAwaitTermination(ExecutorService pool)
+    {
+        if (pool != null && !pool.isShutdown())
+        {
+            pool.shutdown();
+            try
+            {
+                if (!pool.awaitTermination(120, TimeUnit.SECONDS))
+                {
+                    pool.shutdownNow();
+                    if (!pool.awaitTermination(120, TimeUnit.SECONDS))
+                    {
+                        logger.info("Pool did not terminate");
+                    }
+                }
+            }
+            catch (InterruptedException ie)
+            {
+                pool.shutdownNow();
+                Thread.currentThread().interrupt();
+            }
+        }
+    }
+
+    /**
+     * 打印线程异常信息
+     */
+    public static void printException(Runnable r, Throwable t)
+    {
+        if (t == null && r instanceof Future<?>)
+        {
+            try
+            {
+                Future<?> future = (Future<?>) r;
+                if (future.isDone())
+                {
+                    future.get();
+                }
+            }
+            catch (CancellationException ce)
+            {
+                t = ce;
+            }
+            catch (ExecutionException ee)
+            {
+                t = ee.getCause();
+            }
+            catch (InterruptedException ie)
+            {
+                Thread.currentThread().interrupt();
+            }
+        }
+        if (t != null)
+        {
+            logger.error(t.getMessage(), t);
+        }
+    }
+}

+ 63 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/mapper/MachineProcessMapper.java

@@ -0,0 +1,63 @@
+package com.huashe.park.core.mapper;
+
+import java.util.List;
+
+import com.huashe.park.domain.entity.MachineProcess;
+
+/**
+ * 桩机施工过程数据Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-26
+ */
+public interface MachineProcessMapper {
+    /**
+     * 查询桩机施工过程数据
+     * 
+     * @param id 桩机施工过程数据主键
+     * @return 桩机施工过程数据
+     */
+    public MachineProcess selectMachineProcessById(Long id);
+
+    /**
+     * 查询桩机施工过程数据列表
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 桩机施工过程数据集合
+     */
+    public List<MachineProcess> selectMachineProcessList(MachineProcess machineProcess);
+
+    /**
+     * 新增桩机施工过程数据
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 结果
+     */
+    public int insertMachineProcess(MachineProcess machineProcess);
+
+    public int insertMachineProcessOrUpdate(MachineProcess machineProcess);
+
+    /**
+     * 修改桩机施工过程数据
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 结果
+     */
+    public int updateMachineProcess(MachineProcess machineProcess);
+
+    /**
+     * 删除桩机施工过程数据
+     * 
+     * @param id 桩机施工过程数据主键
+     * @return 结果
+     */
+    public int deleteMachineProcessById(Long id);
+
+    /**
+     * 批量删除桩机施工过程数据
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMachineProcessByIds(Long[] ids);
+}

+ 63 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/mapper/MachineProcessResultMapper.java

@@ -0,0 +1,63 @@
+package com.huashe.park.core.mapper;
+
+import java.util.List;
+
+import com.huashe.park.domain.entity.MachineProcessResult;
+
+/**
+ * 桩机施工结果数据(2025-02-26版协议)Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-26
+ */
+public interface MachineProcessResultMapper {
+    /**
+     * 查询桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param id 桩机施工结果数据(2025-02-26版协议)主键
+     * @return 桩机施工结果数据(2025-02-26版协议)
+     */
+    public MachineProcessResult selectMachineProcessResultById(Long id);
+
+    /**
+     * 查询桩机施工结果数据(2025-02-26版协议)列表
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 桩机施工结果数据(2025-02-26版协议)集合
+     */
+    public List<MachineProcessResult> selectMachineProcessResultList(MachineProcessResult machineProcessResult);
+
+    /**
+     * 新增桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 结果
+     */
+    public int insertMachineProcessResult(MachineProcessResult machineProcessResult);
+
+    public int insertMachineProcessResultOnUpdate(MachineProcessResult machineProcessResult);
+
+    /**
+     * 修改桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 结果
+     */
+    public int updateMachineProcessResult(MachineProcessResult machineProcessResult);
+
+    /**
+     * 删除桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param id 桩机施工结果数据(2025-02-26版协议)主键
+     * @return 结果
+     */
+    public int deleteMachineProcessResultById(Long id);
+
+    /**
+     * 批量删除桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMachineProcessResultByIds(Long[] ids);
+}

+ 61 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/IMachineProcessResultService.java

@@ -0,0 +1,61 @@
+package com.huashe.park.core.service;
+
+import com.huashe.park.domain.entity.MachineProcessResult;
+
+import java.util.List;
+
+/**
+ * 桩机施工结果数据(2025-02-26版协议)Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-26
+ */
+public interface IMachineProcessResultService {
+    /**
+     * 查询桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param id 桩机施工结果数据(2025-02-26版协议)主键
+     * @return 桩机施工结果数据(2025-02-26版协议)
+     */
+    public MachineProcessResult selectMachineProcessResultById(Long id);
+
+    /**
+     * 查询桩机施工结果数据(2025-02-26版协议)列表
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 桩机施工结果数据(2025-02-26版协议)集合
+     */
+    public List<MachineProcessResult> selectMachineProcessResultList(MachineProcessResult machineProcessResult);
+
+    /**
+     * 新增桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 结果
+     */
+    public int insertMachineProcessResult(MachineProcessResult machineProcessResult);
+
+    /**
+     * 修改桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 结果
+     */
+    public int updateMachineProcessResult(MachineProcessResult machineProcessResult);
+
+    /**
+     * 批量删除桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param ids 需要删除的桩机施工结果数据(2025-02-26版协议)主键集合
+     * @return 结果
+     */
+    public int deleteMachineProcessResultByIds(Long[] ids);
+
+    /**
+     * 删除桩机施工结果数据(2025-02-26版协议)信息
+     * 
+     * @param id 桩机施工结果数据(2025-02-26版协议)主键
+     * @return 结果
+     */
+    public int deleteMachineProcessResultById(Long id);
+}

+ 62 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/IMachineProcessService.java

@@ -0,0 +1,62 @@
+package com.huashe.park.core.service;
+
+import com.huashe.park.domain.entity.MachineProcess;
+
+import java.util.List;
+
+/**
+ * 桩机施工过程数据Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-26
+ */
+public interface IMachineProcessService 
+{
+    /**
+     * 查询桩机施工过程数据
+     * 
+     * @param id 桩机施工过程数据主键
+     * @return 桩机施工过程数据
+     */
+    public MachineProcess selectMachineProcessById(Long id);
+
+    /**
+     * 查询桩机施工过程数据列表
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 桩机施工过程数据集合
+     */
+    public List<MachineProcess> selectMachineProcessList(MachineProcess machineProcess);
+
+    /**
+     * 新增桩机施工过程数据
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 结果
+     */
+    public int insertMachineProcess(MachineProcess machineProcess);
+
+    /**
+     * 修改桩机施工过程数据
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 结果
+     */
+    public int updateMachineProcess(MachineProcess machineProcess);
+
+    /**
+     * 批量删除桩机施工过程数据
+     * 
+     * @param ids 需要删除的桩机施工过程数据主键集合
+     * @return 结果
+     */
+    public int deleteMachineProcessByIds(Long[] ids);
+
+    /**
+     * 删除桩机施工过程数据信息
+     * 
+     * @param id 桩机施工过程数据主键
+     * @return 结果
+     */
+    public int deleteMachineProcessById(Long id);
+}

+ 87 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/impl/MachineProcessResultServiceImpl.java

@@ -0,0 +1,87 @@
+package com.huashe.park.core.service.impl;
+
+import java.util.List;
+
+import com.huashe.park.core.mapper.MachineProcessResultMapper;
+import com.huashe.park.core.service.IMachineProcessResultService;
+import com.huashe.park.domain.entity.MachineProcessResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 桩机施工结果数据(2025-02-26版协议)Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-02-26
+ */
+@Service
+public class MachineProcessResultServiceImpl implements IMachineProcessResultService {
+    @Autowired
+    private MachineProcessResultMapper machineProcessResultMapper;
+
+    /**
+     * 查询桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param id 桩机施工结果数据(2025-02-26版协议)主键
+     * @return 桩机施工结果数据(2025-02-26版协议)
+     */
+    @Override
+    public MachineProcessResult selectMachineProcessResultById(Long id) {
+        return machineProcessResultMapper.selectMachineProcessResultById(id);
+    }
+
+    /**
+     * 查询桩机施工结果数据(2025-02-26版协议)列表
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 桩机施工结果数据(2025-02-26版协议)
+     */
+    @Override
+    public List<MachineProcessResult> selectMachineProcessResultList(MachineProcessResult machineProcessResult) {
+        return machineProcessResultMapper.selectMachineProcessResultList(machineProcessResult);
+    }
+
+    /**
+     * 新增桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 结果
+     */
+    @Override
+    public int insertMachineProcessResult(MachineProcessResult machineProcessResult) {
+        return machineProcessResultMapper.insertMachineProcessResult(machineProcessResult);
+    }
+
+    /**
+     * 修改桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
+     * @return 结果
+     */
+    @Override
+    public int updateMachineProcessResult(MachineProcessResult machineProcessResult) {
+        return machineProcessResultMapper.updateMachineProcessResult(machineProcessResult);
+    }
+
+    /**
+     * 批量删除桩机施工结果数据(2025-02-26版协议)
+     * 
+     * @param ids 需要删除的桩机施工结果数据(2025-02-26版协议)主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMachineProcessResultByIds(Long[] ids) {
+        return machineProcessResultMapper.deleteMachineProcessResultByIds(ids);
+    }
+
+    /**
+     * 删除桩机施工结果数据(2025-02-26版协议)信息
+     * 
+     * @param id 桩机施工结果数据(2025-02-26版协议)主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMachineProcessResultById(Long id) {
+        return machineProcessResultMapper.deleteMachineProcessResultById(id);
+    }
+}

+ 88 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/impl/MachineProcessServiceImpl.java

@@ -0,0 +1,88 @@
+package com.huashe.park.core.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.huashe.park.core.mapper.MachineProcessMapper;
+import com.huashe.park.core.service.IMachineProcessService;
+import com.huashe.park.domain.entity.MachineProcess;
+
+/**
+ * 桩机施工过程数据Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-02-26
+ */
+@Service
+public class MachineProcessServiceImpl implements IMachineProcessService {
+    @Autowired
+    private MachineProcessMapper machineProcessMapper;
+
+    /**
+     * 查询桩机施工过程数据
+     * 
+     * @param id 桩机施工过程数据主键
+     * @return 桩机施工过程数据
+     */
+    @Override
+    public MachineProcess selectMachineProcessById(Long id) {
+        return machineProcessMapper.selectMachineProcessById(id);
+    }
+
+    /**
+     * 查询桩机施工过程数据列表
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 桩机施工过程数据
+     */
+    @Override
+    public List<MachineProcess> selectMachineProcessList(MachineProcess machineProcess) {
+        return machineProcessMapper.selectMachineProcessList(machineProcess);
+    }
+
+    /**
+     * 新增桩机施工过程数据
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 结果
+     */
+    @Override
+    public int insertMachineProcess(MachineProcess machineProcess) {
+        return machineProcessMapper.insertMachineProcessOrUpdate(machineProcess);
+    }
+
+    /**
+     * 修改桩机施工过程数据
+     * 
+     * @param machineProcess 桩机施工过程数据
+     * @return 结果
+     */
+    @Override
+    public int updateMachineProcess(MachineProcess machineProcess) {
+        return machineProcessMapper.updateMachineProcess(machineProcess);
+    }
+
+    /**
+     * 批量删除桩机施工过程数据
+     * 
+     * @param ids 需要删除的桩机施工过程数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMachineProcessByIds(Long[] ids) {
+        return machineProcessMapper.deleteMachineProcessByIds(ids);
+    }
+
+    /**
+     * 删除桩机施工过程数据信息
+     * 
+     * @param id 桩机施工过程数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMachineProcessById(Long id) {
+        return machineProcessMapper.deleteMachineProcessById(id);
+    }
+}

+ 8 - 0
bd-park/park-backend/park-core/src/main/resources/mapper/cons/ConsPileHoleInfoMapper.xml

@@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     
     <resultMap type="ConsPileHoleInfo" id="ConsPileHoleInfoResult">
         <result property="id"    column="id"    />
+        <result property="holeKey"    column="hole_key"    />
         <result property="holeNum"    column="hole_num"    />
         <result property="deltaX"    column="delta_x"    />
         <result property="deltaY"    column="delta_y"    />
@@ -25,6 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <sql id="selectConsPileHoleInfoVo">
         select id,
+               hole_key,
                hole_num,
                delta_x,
                delta_y,
@@ -67,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <insert id="insertConsPileHoleInfo" parameterType="ConsPileHoleInfo" useGeneratedKeys="true" keyProperty="id">
         insert into cons_pile_hole_info
         <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="holeKey != null and holeKey != ''">hole_key,</if>
             <if test="holeNum != null and holeNum != ''">hole_num,</if>
             <if test="deltaX != null">delta_x,</if>
             <if test="deltaY != null">delta_y,</if>
@@ -83,6 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="holeKey != null and holeKey != ''">#{holeKey},</if>
             <if test="holeNum != null and holeNum != ''">#{holeNum},</if>
             <if test="deltaX != null">#{deltaX},</if>
             <if test="deltaY != null">#{deltaY},</if>
@@ -102,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <insert id="batchInsertConsPileHoleInfo" parameterType="List" useGeneratedKeys="true" keyProperty="id">
         insert into cons_pile_hole_info
         (
+        hole_key,
         hole_num,
         delta_x,
         delta_y,
@@ -118,6 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         )
         values
         <foreach collection="list" item="item" open="(" close=")" separator=",">
+            #{item.holeKey},
             #{item.holeNum},
             #{item.deltaX},
             #{item.deltaY},
@@ -133,6 +139,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             now()
         </foreach>
         on duplicate key update
+        hole_num= values(hole_num),
         delta_x= values(delta_x),
         delta_y= values(delta_y),
         lng= values(lng),
@@ -144,6 +151,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateConsPileHoleInfo" parameterType="ConsPileHoleInfo">
         update cons_pile_hole_info
         <trim prefix="SET" suffixOverrides=",">
+            <if test="holeKey != null and holeKey != ''">hole_key = #{holeKey},</if>
             <if test="holeNum != null and holeNum != ''">hole_num = #{holeNum},</if>
             <if test="deltaX != null">delta_x = #{deltaX},</if>
             <if test="deltaY != null">delta_y = #{deltaY},</if>

+ 367 - 0
bd-park/park-backend/park-core/src/main/resources/mapper/cons/MachineProcessMapper.xml

@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huashe.park.core.mapper.MachineProcessMapper">
+
+    <resultMap type="MachineProcess" id="MachineProcessResult">
+        <result property="consType" column="cons_type"/>
+        <result property="dataVersion" column="data_version"/>
+        <result property="dataTime" column="data_time"/>
+        <result property="pileId" column="pile_id"/>
+        <result property="designId" column="design_id"/>
+        <result property="machineId" column="machine_id"/>
+        <result property="realX" column="real_x"/>
+        <result property="realY" column="real_y"/>
+        <result property="realZ" column="real_z"/>
+        <result property="latitude" column="latitude"/>
+        <result property="longitude" column="longitude"/>
+        <result property="pileLength" column="pile_length"/>
+        <result property="realPileLength" column="real_pile_length"/>
+        <result property="speed" column="speed"/>
+        <result property="current" column="current"/>
+        <result property="tiltAngle" column="tilt_angle"/>
+        <result property="forwardTiltAngle" column="forward_tilt_angle"/>
+        <result property="verticalAngle" column="vertical_angle"/>
+        <result property="selfNum" column="self_num"/>
+        <result property="holdCurrent" column="hold_current"/>
+        <result property="sprayVolume" column="spray_volume"/>
+        <result property="realDrillHeight" column="real_drill_height"/>
+        <result property="vibrationCurrent" column="vibration_current"/>
+        <result property="pumpCurrent" column="pump_current"/>
+        <result property="sprayPressure" column="spray_pressure"/>
+        <result property="spraySpeed" column="spray_speed"/>
+        <result property="designLength" column="design_length"/>
+        <result property="currentDrillNumber" column="current_drill_number"/>
+        <result property="startTime" column="start_time"/>
+        <result property="endTime" column="end_time"/>
+        <result property="currentMechanicalType" column="current_mechanical_type"/>
+        <result property="currentLayer" column="current_layer"/>
+        <result property="currentLayerSendTime" column="current_layer_send_time"/>
+        <result property="currentLayerHammerNumber" column="current_layer_hammer_number"/>
+        <result property="uuid" column="uuid"/>
+        <result property="dt" column="dt"/>
+        <result property="id" column="id"/>
+    </resultMap>
+
+    <sql id="selectMachineProcessVo">
+        select cons_type,
+               data_version,
+               data_time,
+               pile_id,
+               design_id,
+               machine_id,
+               real_x,
+               real_y,
+               real_z,
+               latitude,
+               longitude,
+               pile_length,
+               real_pile_length,
+               speed, current, tilt_angle, forward_tilt_angle, vertical_angle, self_num, hold_current, spray_volume, real_drill_height, vibration_current, pump_current, spray_pressure, spray_speed, design_length, current_drill_number, start_time, end_time, current_mechanical_type, current_layer, current_layer_send_time, current_layer_hammer_number, uuid, dt, id
+        from cons_machine_process
+    </sql>
+
+    <select id="selectMachineProcessList" parameterType="MachineProcess" resultMap="MachineProcessResult">
+        <include refid="selectMachineProcessVo"/>
+        <where>
+            <if test="consType != null ">and cons_type = #{consType}</if>
+            <if test="dataVersion != null ">and data_version = #{dataVersion}</if>
+            <if test="dataTime != null ">and data_time = #{dataTime}</if>
+            <if test="pileId != null  and pileId != ''">and pile_id = #{pileId}</if>
+            <if test="designId != null  and designId != ''">and design_id = #{designId}</if>
+            <if test="machineId != null  and machineId != ''">and machine_id = #{machineId}</if>
+            <if test="realX != null ">and real_x = #{realX}</if>
+            <if test="realY != null ">and real_y = #{realY}</if>
+            <if test="realZ != null ">and real_z = #{realZ}</if>
+            <if test="latitude != null ">and latitude = #{latitude}</if>
+            <if test="longitude != null ">and longitude = #{longitude}</if>
+            <if test="pileLength != null ">and pile_length = #{pileLength}</if>
+            <if test="realPileLength != null ">and real_pile_length = #{realPileLength}</if>
+            <if test="speed != null ">and speed = #{speed}</if>
+            <if test="current != null ">and current = #{current}</if>
+            <if test="tiltAngle != null ">and tilt_angle = #{tiltAngle}</if>
+            <if test="forwardTiltAngle != null ">and forward_tilt_angle = #{forwardTiltAngle}</if>
+            <if test="verticalAngle != null ">and vertical_angle = #{verticalAngle}</if>
+            <if test="selfNum != null ">and self_num = #{selfNum}</if>
+            <if test="holdCurrent != null ">and hold_current = #{holdCurrent}</if>
+            <if test="sprayVolume != null ">and spray_volume = #{sprayVolume}</if>
+            <if test="realDrillHeight != null ">and real_drill_height = #{realDrillHeight}</if>
+            <if test="vibrationCurrent != null ">and vibration_current = #{vibrationCurrent}</if>
+            <if test="pumpCurrent != null ">and pump_current = #{pumpCurrent}</if>
+            <if test="sprayPressure != null ">and spray_pressure = #{sprayPressure}</if>
+            <if test="spraySpeed != null ">and spray_speed = #{spraySpeed}</if>
+            <if test="designLength != null ">and design_length = #{designLength}</if>
+            <if test="currentDrillNumber != null ">and current_drill_number = #{currentDrillNumber}</if>
+            <if test="startTime != null ">and start_time = #{startTime}</if>
+            <if test="endTime != null ">and end_time = #{endTime}</if>
+            <if test="currentMechanicalType != null ">and current_mechanical_type = #{currentMechanicalType}</if>
+            <if test="currentLayer != null ">and current_layer = #{currentLayer}</if>
+            <if test="currentLayerSendTime != null ">and current_layer_send_time = #{currentLayerSendTime}</if>
+            <if test="currentLayerHammerNumber != null ">and current_layer_hammer_number = #{currentLayerHammerNumber}
+            </if>
+            <if test="uuid != null  and uuid != ''">and uuid = #{uuid}</if>
+            <if test="dt != null  and dt != ''">and dt = #{dt}</if>
+        </where>
+    </select>
+
+    <select id="selectMachineProcessById" parameterType="Long" resultMap="MachineProcessResult">
+        <include refid="selectMachineProcessVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertMachineProcess" parameterType="MachineProcess" useGeneratedKeys="true" keyProperty="id">
+        insert into cons_machine_process
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="consType != null">cons_type,</if>
+            <if test="dataVersion != null">data_version,</if>
+            <if test="dataTime != null">data_time,</if>
+            <if test="pileId != null">pile_id,</if>
+            <if test="designId != null">design_id,</if>
+            <if test="machineId != null">machine_id,</if>
+            <if test="realX != null">real_x,</if>
+            <if test="realY != null">real_y,</if>
+            <if test="realZ != null">real_z,</if>
+            <if test="latitude != null">latitude,</if>
+            <if test="longitude != null">longitude,</if>
+            <if test="pileLength != null">pile_length,</if>
+            <if test="realPileLength != null">real_pile_length,</if>
+            <if test="speed != null">speed,</if>
+            <if test="current != null">current,</if>
+            <if test="tiltAngle != null">tilt_angle,</if>
+            <if test="forwardTiltAngle != null">forward_tilt_angle,</if>
+            <if test="verticalAngle != null">vertical_angle,</if>
+            <if test="selfNum != null">self_num,</if>
+            <if test="holdCurrent != null">hold_current,</if>
+            <if test="sprayVolume != null">spray_volume,</if>
+            <if test="realDrillHeight != null">real_drill_height,</if>
+            <if test="vibrationCurrent != null">vibration_current,</if>
+            <if test="pumpCurrent != null">pump_current,</if>
+            <if test="sprayPressure != null">spray_pressure,</if>
+            <if test="spraySpeed != null">spray_speed,</if>
+            <if test="designLength != null">design_length,</if>
+            <if test="currentDrillNumber != null">current_drill_number,</if>
+            <if test="startTime != null">start_time,</if>
+            <if test="endTime != null">end_time,</if>
+            <if test="currentMechanicalType != null">current_mechanical_type,</if>
+            <if test="currentLayer != null">current_layer,</if>
+            <if test="currentLayerSendTime != null">current_layer_send_time,</if>
+            <if test="currentLayerHammerNumber != null">current_layer_hammer_number,</if>
+            <if test="uuid != null">uuid,</if>
+            <if test="dt != null">dt,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="consType != null">#{consType},</if>
+            <if test="dataVersion != null">#{dataVersion},</if>
+            <if test="dataTime != null">#{dataTime},</if>
+            <if test="pileId != null">#{pileId},</if>
+            <if test="designId != null">#{designId},</if>
+            <if test="machineId != null">#{machineId},</if>
+            <if test="realX != null">#{realX},</if>
+            <if test="realY != null">#{realY},</if>
+            <if test="realZ != null">#{realZ},</if>
+            <if test="latitude != null">#{latitude},</if>
+            <if test="longitude != null">#{longitude},</if>
+            <if test="pileLength != null">#{pileLength},</if>
+            <if test="realPileLength != null">#{realPileLength},</if>
+            <if test="speed != null">#{speed},</if>
+            <if test="current != null">#{current},</if>
+            <if test="tiltAngle != null">#{tiltAngle},</if>
+            <if test="forwardTiltAngle != null">#{forwardTiltAngle},</if>
+            <if test="verticalAngle != null">#{verticalAngle},</if>
+            <if test="selfNum != null">#{selfNum},</if>
+            <if test="holdCurrent != null">#{holdCurrent},</if>
+            <if test="sprayVolume != null">#{sprayVolume},</if>
+            <if test="realDrillHeight != null">#{realDrillHeight},</if>
+            <if test="vibrationCurrent != null">#{vibrationCurrent},</if>
+            <if test="pumpCurrent != null">#{pumpCurrent},</if>
+            <if test="sprayPressure != null">#{sprayPressure},</if>
+            <if test="spraySpeed != null">#{spraySpeed},</if>
+            <if test="designLength != null">#{designLength},</if>
+            <if test="currentDrillNumber != null">#{currentDrillNumber},</if>
+            <if test="startTime != null">#{startTime},</if>
+            <if test="endTime != null">#{endTime},</if>
+            <if test="currentMechanicalType != null">#{currentMechanicalType},</if>
+            <if test="currentLayer != null">#{currentLayer},</if>
+            <if test="currentLayerSendTime != null">#{currentLayerSendTime},</if>
+            <if test="currentLayerHammerNumber != null">#{currentLayerHammerNumber},</if>
+            <if test="uuid != null">#{uuid},</if>
+            <if test="dt != null">#{dt},</if>
+        </trim>
+    </insert>
+
+    <insert id="insertMachineProcessOrUpdate" parameterType="MachineProcess" useGeneratedKeys="true" keyProperty="id">
+        insert into cons_machine_process
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="consType != null">cons_type,</if>
+            <if test="dataVersion != null">data_version,</if>
+            <if test="dataTime != null">data_time,</if>
+            <if test="pileId != null">pile_id,</if>
+            <if test="designId != null">design_id,</if>
+            <if test="machineId != null">machine_id,</if>
+            <if test="realX != null">real_x,</if>
+            <if test="realY != null">real_y,</if>
+            <if test="realZ != null">real_z,</if>
+            <if test="latitude != null">latitude,</if>
+            <if test="longitude != null">longitude,</if>
+            <if test="pileLength != null">pile_length,</if>
+            <if test="realPileLength != null">real_pile_length,</if>
+            <if test="speed != null">speed,</if>
+            <if test="current != null">current,</if>
+            <if test="tiltAngle != null">tilt_angle,</if>
+            <if test="forwardTiltAngle != null">forward_tilt_angle,</if>
+            <if test="verticalAngle != null">vertical_angle,</if>
+            <if test="selfNum != null">self_num,</if>
+            <if test="holdCurrent != null">hold_current,</if>
+            <if test="sprayVolume != null">spray_volume,</if>
+            <if test="realDrillHeight != null">real_drill_height,</if>
+            <if test="vibrationCurrent != null">vibration_current,</if>
+            <if test="pumpCurrent != null">pump_current,</if>
+            <if test="sprayPressure != null">spray_pressure,</if>
+            <if test="spraySpeed != null">spray_speed,</if>
+            <if test="designLength != null">design_length,</if>
+            <if test="currentDrillNumber != null">current_drill_number,</if>
+            <if test="startTime != null">start_time,</if>
+            <if test="endTime != null">end_time,</if>
+            <if test="currentMechanicalType != null">current_mechanical_type,</if>
+            <if test="currentLayer != null">current_layer,</if>
+            <if test="currentLayerSendTime != null">current_layer_send_time,</if>
+            <if test="currentLayerHammerNumber != null">current_layer_hammer_number,</if>
+            <if test="uuid != null">uuid,</if>
+            <if test="dt != null">dt,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="consType != null">#{consType},</if>
+            <if test="dataVersion != null">#{dataVersion},</if>
+            <if test="dataTime != null">#{dataTime},</if>
+            <if test="pileId != null">#{pileId},</if>
+            <if test="designId != null">#{designId},</if>
+            <if test="machineId != null">#{machineId},</if>
+            <if test="realX != null">#{realX},</if>
+            <if test="realY != null">#{realY},</if>
+            <if test="realZ != null">#{realZ},</if>
+            <if test="latitude != null">#{latitude},</if>
+            <if test="longitude != null">#{longitude},</if>
+            <if test="pileLength != null">#{pileLength},</if>
+            <if test="realPileLength != null">#{realPileLength},</if>
+            <if test="speed != null">#{speed},</if>
+            <if test="current != null">#{current},</if>
+            <if test="tiltAngle != null">#{tiltAngle},</if>
+            <if test="forwardTiltAngle != null">#{forwardTiltAngle},</if>
+            <if test="verticalAngle != null">#{verticalAngle},</if>
+            <if test="selfNum != null">#{selfNum},</if>
+            <if test="holdCurrent != null">#{holdCurrent},</if>
+            <if test="sprayVolume != null">#{sprayVolume},</if>
+            <if test="realDrillHeight != null">#{realDrillHeight},</if>
+            <if test="vibrationCurrent != null">#{vibrationCurrent},</if>
+            <if test="pumpCurrent != null">#{pumpCurrent},</if>
+            <if test="sprayPressure != null">#{sprayPressure},</if>
+            <if test="spraySpeed != null">#{spraySpeed},</if>
+            <if test="designLength != null">#{designLength},</if>
+            <if test="currentDrillNumber != null">#{currentDrillNumber},</if>
+            <if test="startTime != null">#{startTime},</if>
+            <if test="endTime != null">#{endTime},</if>
+            <if test="currentMechanicalType != null">#{currentMechanicalType},</if>
+            <if test="currentLayer != null">#{currentLayer},</if>
+            <if test="currentLayerSendTime != null">#{currentLayerSendTime},</if>
+            <if test="currentLayerHammerNumber != null">#{currentLayerHammerNumber},</if>
+            <if test="uuid != null">#{uuid},</if>
+            <if test="dt != null">#{dt},</if>
+        </trim>
+        on duplicate key update
+        <trim suffixOverrides=",">
+            <!-- 根据唯一约束字段自动更新(假设唯一键为uuid) -->
+            <if test="consType != null">cons_type = VALUES(cons_type),</if>
+            <if test="dataVersion != null">data_version = VALUES(data_version),</if>
+            <if test="dataTime != null">data_time = VALUES(data_time),</if>
+            <if test="pileId != null">pile_id = VALUES(pile_id),</if>
+            <if test="designId != null">design_id = VALUES(design_id),</if>
+            <if test="machineId != null">machine_id = VALUES(machine_id),</if>
+            <if test="realX != null">real_x = VALUES(real_x),</if>
+            <if test="realY != null">real_y = VALUES(real_y),</if>
+            <if test="realZ != null">real_z = VALUES(real_z),</if>
+            <if test="latitude != null">latitude = VALUES(latitude),</if>
+            <if test="longitude != null">longitude = VALUES(longitude),</if>
+            <if test="pileLength != null">pile_length = VALUES(pile_length),</if>
+            <if test="realPileLength != null">real_pile_length = VALUES(real_pile_length),</if>
+            <if test="speed != null">speed = VALUES(speed),</if>
+            <if test="current != null">current = VALUES(current),</if>
+            <if test="tiltAngle != null">tilt_angle = VALUES(tilt_angle),</if>
+            <if test="forwardTiltAngle != null">forward_tilt_angle = VALUES(forward_tilt_angle),</if>
+            <if test="verticalAngle != null">vertical_angle = VALUES(vertical_angle),</if>
+            <if test="selfNum != null">self_num = VALUES(self_num),</if>
+            <if test="holdCurrent != null">hold_current = VALUES(hold_current),</if>
+            <if test="sprayVolume != null">spray_volume = VALUES(spray_volume),</if>
+            <if test="realDrillHeight != null">real_drill_height = VALUES(real_drill_height),</if>
+            <if test="vibrationCurrent != null">vibration_current = VALUES(vibration_current),</if>
+            <if test="pumpCurrent != null">pump_current = VALUES(pump_current),</if>
+            <if test="sprayPressure != null">spray_pressure = VALUES(spray_pressure),</if>
+            <if test="spraySpeed != null">spray_speed = VALUES(spray_speed),</if>
+            <if test="designLength != null">design_length = VALUES(design_length),</if>
+            <if test="currentDrillNumber != null">current_drill_number = VALUES(current_drill_number),</if>
+            <if test="startTime != null">start_time = VALUES(start_time),</if>
+            <if test="endTime != null">end_time = VALUES(end_time),</if>
+            <if test="currentMechanicalType != null">current_mechanical_type = VALUES(current_mechanical_type),</if>
+            <if test="currentLayer != null">current_layer = VALUES(current_layer),</if>
+            <if test="currentLayerSendTime != null">current_layer_send_time = VALUES(current_layer_send_time),</if>
+            <if test="currentLayerHammerNumber != null">current_layer_hammer_number = VALUES(current_layer_hammer_number),</if>
+            <if test="dt != null">dt = VALUES(dt),</if>
+        </trim>
+    </insert>
+
+    <update id="updateMachineProcess" parameterType="MachineProcess">
+        update cons_machine_process
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="consType != null">cons_type = #{consType},</if>
+            <if test="dataVersion != null">data_version = #{dataVersion},</if>
+            <if test="dataTime != null">data_time = #{dataTime},</if>
+            <if test="pileId != null">pile_id = #{pileId},</if>
+            <if test="designId != null">design_id = #{designId},</if>
+            <if test="machineId != null">machine_id = #{machineId},</if>
+            <if test="realX != null">real_x = #{realX},</if>
+            <if test="realY != null">real_y = #{realY},</if>
+            <if test="realZ != null">real_z = #{realZ},</if>
+            <if test="latitude != null">latitude = #{latitude},</if>
+            <if test="longitude != null">longitude = #{longitude},</if>
+            <if test="pileLength != null">pile_length = #{pileLength},</if>
+            <if test="realPileLength != null">real_pile_length = #{realPileLength},</if>
+            <if test="speed != null">speed = #{speed},</if>
+            <if test="current != null">current = #{current},</if>
+            <if test="tiltAngle != null">tilt_angle = #{tiltAngle},</if>
+            <if test="forwardTiltAngle != null">forward_tilt_angle = #{forwardTiltAngle},</if>
+            <if test="verticalAngle != null">vertical_angle = #{verticalAngle},</if>
+            <if test="selfNum != null">self_num = #{selfNum},</if>
+            <if test="holdCurrent != null">hold_current = #{holdCurrent},</if>
+            <if test="sprayVolume != null">spray_volume = #{sprayVolume},</if>
+            <if test="realDrillHeight != null">real_drill_height = #{realDrillHeight},</if>
+            <if test="vibrationCurrent != null">vibration_current = #{vibrationCurrent},</if>
+            <if test="pumpCurrent != null">pump_current = #{pumpCurrent},</if>
+            <if test="sprayPressure != null">spray_pressure = #{sprayPressure},</if>
+            <if test="spraySpeed != null">spray_speed = #{spraySpeed},</if>
+            <if test="designLength != null">design_length = #{designLength},</if>
+            <if test="currentDrillNumber != null">current_drill_number = #{currentDrillNumber},</if>
+            <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</if>
+            <if test="currentMechanicalType != null">current_mechanical_type = #{currentMechanicalType},</if>
+            <if test="currentLayer != null">current_layer = #{currentLayer},</if>
+            <if test="currentLayerSendTime != null">current_layer_send_time = #{currentLayerSendTime},</if>
+            <if test="currentLayerHammerNumber != null">current_layer_hammer_number = #{currentLayerHammerNumber},</if>
+            <if test="uuid != null">uuid = #{uuid},</if>
+            <if test="dt != null">dt = #{dt},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteMachineProcessById" parameterType="Long">
+        delete
+        from cons_machine_process
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteMachineProcessByIds" parameterType="String">
+        delete from cons_machine_process where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 384 - 0
bd-park/park-backend/park-core/src/main/resources/mapper/cons/MachineProcessResultMapper.xml

@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huashe.park.core.mapper.MachineProcessResultMapper">
+
+    <resultMap type="MachineProcessResult" id="MachineProcessResultResult">
+        <result property="id" column="id"/>
+        <result property="consType" column="cons_type"/>
+        <result property="dataVersion" column="data_version"/>
+        <result property="dataTime" column="data_time"/>
+        <result property="pileId" column="pile_id"/>
+        <result property="designId" column="design_id"/>
+        <result property="machineId" column="machine_id"/>
+        <result property="designX" column="design_x"/>
+        <result property="designY" column="design_y"/>
+        <result property="realX" column="real_x"/>
+        <result property="realY" column="real_y"/>
+        <result property="latitude" column="latitude"/>
+        <result property="longitude" column="longitude"/>
+        <result property="pileLength" column="pile_length"/>
+        <result property="avgSpeed" column="avg_speed"/>
+        <result property="avgCurrent" column="avg_current"/>
+        <result property="holdCurrent" column="hold_current"/>
+        <result property="verticalDeviation" column="vertical_deviation"/>
+        <result property="sprayVolume" column="spray_volume"/>
+        <result property="startTime" column="start_time"/>
+        <result property="endTime" column="end_time"/>
+        <result property="resultEvaluation" column="result_evaluation"/>
+        <result property="startHeight" column="start_height"/>
+        <result property="inDepth" column="in_depth"/>
+        <result property="effectiveDown" column="effective_down"/>
+        <result property="effectiveLength" column="effective_length"/>
+        <result property="pileNumber" column="pile_number"/>
+        <result property="avgSprayPressure" column="avg_spray_pressure"/>
+        <result property="avgSpraySpeed" column="avg_spray_speed"/>
+        <result property="designLength" column="design_length"/>
+        <result property="avgUpSpeed" column="avg_up_speed"/>
+        <result property="drillTotalNumber" column="drill_total_number"/>
+        <result property="currentMechanicalType" column="current_mechanical_type"/>
+        <result property="sendTotalNumber" column="send_total_number"/>
+        <result property="sendTotalTime" column="send_total_time"/>
+        <result property="totalHammerNumber" column="total_hammer_number"/>
+        <result property="uuid" column="uuid"/>
+    </resultMap>
+
+    <sql id="selectMachineProcessResultVo">
+        select id,
+               cons_type,
+               data_version,
+               data_time,
+               pile_id,
+               design_id,
+               machine_id,
+               design_x,
+               design_y,
+               real_x,
+               real_y,
+               latitude,
+               longitude,
+               pile_length,
+               avg_speed,
+               avg_current,
+               hold_current,
+               vertical_deviation,
+               spray_volume,
+               start_time,
+               end_time,
+               result_evaluation,
+               start_height,
+               in_depth,
+               effective_down,
+               effective_length,
+               pile_number,
+               avg_spray_pressure,
+               avg_spray_speed,
+               design_length,
+               avg_up_speed,
+               drill_total_number,
+               current_mechanical_type,
+               send_total_number,
+               send_total_time,
+               total_hammer_number,
+               uuid
+        from cons_machine_process_result
+    </sql>
+
+    <select id="selectMachineProcessResultList" parameterType="MachineProcessResult"
+            resultMap="MachineProcessResultResult">
+        <include refid="selectMachineProcessResultVo"/>
+        <where>
+            <if test="designY != null ">and design_y = #{designY}</if>
+            <if test="realX != null ">and real_x = #{realX}</if>
+            <if test="realY != null ">and real_y = #{realY}</if>
+            <if test="latitude != null ">and latitude = #{latitude}</if>
+            <if test="longitude != null ">and longitude = #{longitude}</if>
+            <if test="pileLength != null ">and pile_length = #{pileLength}</if>
+            <if test="avgSpeed != null ">and avg_speed = #{avgSpeed}</if>
+            <if test="avgCurrent != null ">and avg_current = #{avgCurrent}</if>
+            <if test="holdCurrent != null ">and hold_current = #{holdCurrent}</if>
+            <if test="verticalDeviation != null ">and vertical_deviation = #{verticalDeviation}</if>
+            <if test="sprayVolume != null ">and spray_volume = #{sprayVolume}</if>
+            <if test="startTime != null ">and start_time = #{startTime}</if>
+            <if test="endTime != null ">and end_time = #{endTime}</if>
+            <if test="resultEvaluation != null ">and result_evaluation = #{resultEvaluation}</if>
+            <if test="startHeight != null ">and start_height = #{startHeight}</if>
+            <if test="inDepth != null ">and in_depth = #{inDepth}</if>
+            <if test="effectiveDown != null ">and effective_down = #{effectiveDown}</if>
+            <if test="effectiveLength != null ">and effective_length = #{effectiveLength}</if>
+            <if test="pileNumber != null ">and pile_number = #{pileNumber}</if>
+            <if test="avgSprayPressure != null ">and avg_spray_pressure = #{avgSprayPressure}</if>
+            <if test="avgSpraySpeed != null ">and avg_spray_speed = #{avgSpraySpeed}</if>
+            <if test="designLength != null ">and design_length = #{designLength}</if>
+            <if test="avgUpSpeed != null ">and avg_up_speed = #{avgUpSpeed}</if>
+            <if test="drillTotalNumber != null ">and drill_total_number = #{drillTotalNumber}</if>
+            <if test="currentMechanicalType != null ">and current_mechanical_type = #{currentMechanicalType}</if>
+            <if test="sendTotalNumber != null ">and send_total_number = #{sendTotalNumber}</if>
+            <if test="sendTotalTime != null ">and send_total_time = #{sendTotalTime}</if>
+            <if test="totalHammerNumber != null ">and total_hammer_number = #{totalHammerNumber}</if>
+            <if test="uuid != null  and uuid != ''">and uuid = #{uuid}</if>
+        </where>
+    </select>
+
+    <select id="selectMachineProcessResultById" parameterType="Long" resultMap="MachineProcessResultResult">
+        <include refid="selectMachineProcessResultVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertMachineProcessResult" parameterType="MachineProcessResult" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into cons_machine_process_result
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="consType != null">cons_type,</if>
+            <if test="dataVersion != null">data_version,</if>
+            <if test="dataTime != null">data_time,</if>
+            <if test="pileId != null">pile_id,</if>
+            <if test="designId != null">design_id,</if>
+            <if test="machineId != null">machine_id,</if>
+            <if test="designX != null">design_x,</if>
+            <if test="designY != null">design_y,</if>
+            <if test="realX != null">real_x,</if>
+            <if test="realY != null">real_y,</if>
+            <if test="latitude != null">latitude,</if>
+            <if test="longitude != null">longitude,</if>
+            <if test="pileLength != null">pile_length,</if>
+            <if test="avgSpeed != null">avg_speed,</if>
+            <if test="avgCurrent != null">avg_current,</if>
+            <if test="holdCurrent != null">hold_current,</if>
+            <if test="verticalDeviation != null">vertical_deviation,</if>
+            <if test="sprayVolume != null">spray_volume,</if>
+            <if test="startTime != null">start_time,</if>
+            <if test="endTime != null">end_time,</if>
+            <if test="resultEvaluation != null">result_evaluation,</if>
+            <if test="startHeight != null">start_height,</if>
+            <if test="inDepth != null">in_depth,</if>
+            <if test="effectiveDown != null">effective_down,</if>
+            <if test="effectiveLength != null">effective_length,</if>
+            <if test="pileNumber != null">pile_number,</if>
+            <if test="avgSprayPressure != null">avg_spray_pressure,</if>
+            <if test="avgSpraySpeed != null">avg_spray_speed,</if>
+            <if test="designLength != null">design_length,</if>
+            <if test="avgUpSpeed != null">avg_up_speed,</if>
+            <if test="drillTotalNumber != null">drill_total_number,</if>
+            <if test="currentMechanicalType != null">current_mechanical_type,</if>
+            <if test="sendTotalNumber != null">send_total_number,</if>
+            <if test="sendTotalTime != null">send_total_time,</if>
+            <if test="totalHammerNumber != null">total_hammer_number,</if>
+            <if test="uuid != null">uuid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="consType != null">#{consType},</if>
+            <if test="dataVersion != null">#{dataVersion},</if>
+            <if test="dataTime != null">#{dataTime},</if>
+            <if test="pileId != null">#{pileId},</if>
+            <if test="designId != null">#{designId},</if>
+            <if test="machineId != null">#{machineId},</if>
+            <if test="designX != null">#{designX},</if>
+            <if test="designY != null">#{designY},</if>
+            <if test="realX != null">#{realX},</if>
+            <if test="realY != null">#{realY},</if>
+            <if test="latitude != null">#{latitude},</if>
+            <if test="longitude != null">#{longitude},</if>
+            <if test="pileLength != null">#{pileLength},</if>
+            <if test="avgSpeed != null">#{avgSpeed},</if>
+            <if test="avgCurrent != null">#{avgCurrent},</if>
+            <if test="holdCurrent != null">#{holdCurrent},</if>
+            <if test="verticalDeviation != null">#{verticalDeviation},</if>
+            <if test="sprayVolume != null">#{sprayVolume},</if>
+            <if test="startTime != null">#{startTime},</if>
+            <if test="endTime != null">#{endTime},</if>
+            <if test="resultEvaluation != null">#{resultEvaluation},</if>
+            <if test="startHeight != null">#{startHeight},</if>
+            <if test="inDepth != null">#{inDepth},</if>
+            <if test="effectiveDown != null">#{effectiveDown},</if>
+            <if test="effectiveLength != null">#{effectiveLength},</if>
+            <if test="pileNumber != null">#{pileNumber},</if>
+            <if test="avgSprayPressure != null">#{avgSprayPressure},</if>
+            <if test="avgSpraySpeed != null">#{avgSpraySpeed},</if>
+            <if test="designLength != null">#{designLength},</if>
+            <if test="avgUpSpeed != null">#{avgUpSpeed},</if>
+            <if test="drillTotalNumber != null">#{drillTotalNumber},</if>
+            <if test="currentMechanicalType != null">#{currentMechanicalType},</if>
+            <if test="sendTotalNumber != null">#{sendTotalNumber},</if>
+            <if test="sendTotalTime != null">#{sendTotalTime},</if>
+            <if test="totalHammerNumber != null">#{totalHammerNumber},</if>
+            <if test="uuid != null">#{uuid},</if>
+        </trim>
+    </insert>
+    <insert id="insertMachineProcessResultOnUpdate" parameterType="MachineProcessResult" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into cons_machine_process_result
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="consType != null">cons_type,</if>
+            <if test="dataVersion != null">data_version,</if>
+            <if test="dataTime != null">data_time,</if>
+            <if test="pileId != null">pile_id,</if>
+            <if test="designId != null">design_id,</if>
+            <if test="machineId != null">machine_id,</if>
+            <if test="designX != null">design_x,</if>
+            <if test="designY != null">design_y,</if>
+            <if test="realX != null">real_x,</if>
+            <if test="realY != null">real_y,</if>
+            <if test="latitude != null">latitude,</if>
+            <if test="longitude != null">longitude,</if>
+            <if test="pileLength != null">pile_length,</if>
+            <if test="avgSpeed != null">avg_speed,</if>
+            <if test="avgCurrent != null">avg_current,</if>
+            <if test="holdCurrent != null">hold_current,</if>
+            <if test="verticalDeviation != null">vertical_deviation,</if>
+            <if test="sprayVolume != null">spray_volume,</if>
+            <if test="startTime != null">start_time,</if>
+            <if test="endTime != null">end_time,</if>
+            <if test="resultEvaluation != null">result_evaluation,</if>
+            <if test="startHeight != null">start_height,</if>
+            <if test="inDepth != null">in_depth,</if>
+            <if test="effectiveDown != null">effective_down,</if>
+            <if test="effectiveLength != null">effective_length,</if>
+            <if test="pileNumber != null">pile_number,</if>
+            <if test="avgSprayPressure != null">avg_spray_pressure,</if>
+            <if test="avgSpraySpeed != null">avg_spray_speed,</if>
+            <if test="designLength != null">design_length,</if>
+            <if test="avgUpSpeed != null">avg_up_speed,</if>
+            <if test="drillTotalNumber != null">drill_total_number,</if>
+            <if test="currentMechanicalType != null">current_mechanical_type,</if>
+            <if test="sendTotalNumber != null">send_total_number,</if>
+            <if test="sendTotalTime != null">send_total_time,</if>
+            <if test="totalHammerNumber != null">total_hammer_number,</if>
+            <if test="uuid != null">uuid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="consType != null">#{consType},</if>
+            <if test="dataVersion != null">#{dataVersion},</if>
+            <if test="dataTime != null">#{dataTime},</if>
+            <if test="pileId != null">#{pileId},</if>
+            <if test="designId != null">#{designId},</if>
+            <if test="machineId != null">#{machineId},</if>
+            <if test="designX != null">#{designX},</if>
+            <if test="designY != null">#{designY},</if>
+            <if test="realX != null">#{realX},</if>
+            <if test="realY != null">#{realY},</if>
+            <if test="latitude != null">#{latitude},</if>
+            <if test="longitude != null">#{longitude},</if>
+            <if test="pileLength != null">#{pileLength},</if>
+            <if test="avgSpeed != null">#{avgSpeed},</if>
+            <if test="avgCurrent != null">#{avgCurrent},</if>
+            <if test="holdCurrent != null">#{holdCurrent},</if>
+            <if test="verticalDeviation != null">#{verticalDeviation},</if>
+            <if test="sprayVolume != null">#{sprayVolume},</if>
+            <if test="startTime != null">#{startTime},</if>
+            <if test="endTime != null">#{endTime},</if>
+            <if test="resultEvaluation != null">#{resultEvaluation},</if>
+            <if test="startHeight != null">#{startHeight},</if>
+            <if test="inDepth != null">#{inDepth},</if>
+            <if test="effectiveDown != null">#{effectiveDown},</if>
+            <if test="effectiveLength != null">#{effectiveLength},</if>
+            <if test="pileNumber != null">#{pileNumber},</if>
+            <if test="avgSprayPressure != null">#{avgSprayPressure},</if>
+            <if test="avgSpraySpeed != null">#{avgSpraySpeed},</if>
+            <if test="designLength != null">#{designLength},</if>
+            <if test="avgUpSpeed != null">#{avgUpSpeed},</if>
+            <if test="drillTotalNumber != null">#{drillTotalNumber},</if>
+            <if test="currentMechanicalType != null">#{currentMechanicalType},</if>
+            <if test="sendTotalNumber != null">#{sendTotalNumber},</if>
+            <if test="sendTotalTime != null">#{sendTotalTime},</if>
+            <if test="totalHammerNumber != null">#{totalHammerNumber},</if>
+            <if test="uuid != null">#{uuid},</if>
+        </trim>
+        ON DUPLICATE KEY UPDATE
+        <trim suffixOverrides=",">
+            <if test="consType != null">cons_type = VALUES(cons_type),</if>
+            <if test="dataVersion != null">data_version = VALUES(data_version),</if>
+            <if test="dataTime != null">data_time = VALUES(data_time),</if>
+            <if test="pileId != null">pile_id = VALUES(pile_id),</if>
+            <if test="designId != null">design_id = VALUES(design_id),</if>
+            <if test="machineId != null">machine_id = VALUES(machine_id),</if>
+            <if test="designX != null">design_x = VALUES(design_x),</if>
+            <if test="designY != null">design_y = VALUES(design_y),</if>
+            <if test="realX != null">real_x = VALUES(real_x),</if>
+            <if test="realY != null">real_y = VALUES(real_y),</if>
+            <if test="latitude != null">latitude = VALUES(latitude),</if>
+            <if test="longitude != null">longitude = VALUES(longitude),</if>
+            <if test="pileLength != null">pile_length = VALUES(pile_length),</if>
+            <if test="avgSpeed != null">avg_speed = VALUES(avg_speed),</if>
+            <if test="avgCurrent != null">avg_current = VALUES(avg_current),</if>
+            <if test="holdCurrent != null">hold_current = VALUES(hold_current),</if>
+            <if test="verticalDeviation != null">vertical_deviation = VALUES(vertical_deviation),</if>
+            <if test="sprayVolume != null">spray_volume = VALUES(spray_volume),</if>
+            <if test="startTime != null">start_time = VALUES(start_time),</if>
+            <if test="endTime != null">end_time = VALUES(end_time),</if>
+            <if test="resultEvaluation != null">result_evaluation = VALUES(result_evaluation),</if>
+            <if test="startHeight != null">start_height = VALUES(start_height),</if>
+            <if test="inDepth != null">in_depth = VALUES(in_depth),</if>
+            <if test="effectiveDown != null">effective_down = VALUES(effective_down),</if>
+            <if test="effectiveLength != null">effective_length = VALUES(effective_length),</if>
+            <if test="pileNumber != null">pile_number = VALUES(pile_number),</if>
+            <if test="avgSprayPressure != null">avg_spray_pressure = VALUES(avg_spray_pressure),</if>
+            <if test="avgSpraySpeed != null">avg_spray_speed = VALUES(avg_spray_speed),</if>
+            <if test="designLength != null">design_length = VALUES(design_length),</if>
+            <if test="avgUpSpeed != null">avg_up_speed = VALUES(avg_up_speed),</if>
+            <if test="drillTotalNumber != null">drill_total_number = VALUES(drill_total_number),</if>
+            <if test="currentMechanicalType != null">current_mechanical_type = VALUES(current_mechanical_type),</if>
+            <if test="sendTotalNumber != null">send_total_number = VALUES(send_total_number),</if>
+            <if test="sendTotalTime != null">send_total_time = VALUES(send_total_time),</if>
+            <if test="totalHammerNumber != null">total_hammer_number = VALUES(total_hammer_number),</if>
+        </trim>
+
+    </insert>
+
+    <update id="updateMachineProcessResult" parameterType="MachineProcessResult">
+        update cons_machine_process_result
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="consType != null">cons_type = #{consType},</if>
+            <if test="dataVersion != null">data_version = #{dataVersion},</if>
+            <if test="dataTime != null">data_time = #{dataTime},</if>
+            <if test="pileId != null">pile_id = #{pileId},</if>
+            <if test="designId != null">design_id = #{designId},</if>
+            <if test="machineId != null">machine_id = #{machineId},</if>
+            <if test="designX != null">design_x = #{designX},</if>
+            <if test="designY != null">design_y = #{designY},</if>
+            <if test="realX != null">real_x = #{realX},</if>
+            <if test="realY != null">real_y = #{realY},</if>
+            <if test="latitude != null">latitude = #{latitude},</if>
+            <if test="longitude != null">longitude = #{longitude},</if>
+            <if test="pileLength != null">pile_length = #{pileLength},</if>
+            <if test="avgSpeed != null">avg_speed = #{avgSpeed},</if>
+            <if test="avgCurrent != null">avg_current = #{avgCurrent},</if>
+            <if test="holdCurrent != null">hold_current = #{holdCurrent},</if>
+            <if test="verticalDeviation != null">vertical_deviation = #{verticalDeviation},</if>
+            <if test="sprayVolume != null">spray_volume = #{sprayVolume},</if>
+            <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</if>
+            <if test="resultEvaluation != null">result_evaluation = #{resultEvaluation},</if>
+            <if test="startHeight != null">start_height = #{startHeight},</if>
+            <if test="inDepth != null">in_depth = #{inDepth},</if>
+            <if test="effectiveDown != null">effective_down = #{effectiveDown},</if>
+            <if test="effectiveLength != null">effective_length = #{effectiveLength},</if>
+            <if test="pileNumber != null">pile_number = #{pileNumber},</if>
+            <if test="avgSprayPressure != null">avg_spray_pressure = #{avgSprayPressure},</if>
+            <if test="avgSpraySpeed != null">avg_spray_speed = #{avgSpraySpeed},</if>
+            <if test="designLength != null">design_length = #{designLength},</if>
+            <if test="avgUpSpeed != null">avg_up_speed = #{avgUpSpeed},</if>
+            <if test="drillTotalNumber != null">drill_total_number = #{drillTotalNumber},</if>
+            <if test="currentMechanicalType != null">current_mechanical_type = #{currentMechanicalType},</if>
+            <if test="sendTotalNumber != null">send_total_number = #{sendTotalNumber},</if>
+            <if test="sendTotalTime != null">send_total_time = #{sendTotalTime},</if>
+            <if test="totalHammerNumber != null">total_hammer_number = #{totalHammerNumber},</if>
+            <if test="uuid != null">uuid = #{uuid},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteMachineProcessResultById" parameterType="Long">
+        delete
+        from cons_machine_process_result
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteMachineProcessResultByIds" parameterType="String">
+        delete from cons_machine_process_result where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 38 - 12
bd-park/park-backend/park-core/src/main/resources/mapper/cons/PileMachineInfoMapper.xml

@@ -11,6 +11,13 @@
         <result property="no" column="no"/>
         <result property="pwd" column="pwd"/>
         <result property="sn" column="sn"/>
+        <result property="productKey" column="product_key"/>
+        <result property="deviceSecret" column="device_secret"/>
+        <result property="topic" column="topic"/>
+        <result property="serverHost" column="server_host"/>
+        <result property="serverPort" column="server_port"/>
+        <result property="serverUserName" column="server_user_name"/>
+        <result property="serverPassword" column="server_password"/>
         <result property="updateTime" column="update_time"/>
         <result property="createTime" column="create_time"/>
         <result property="createBy" column="create_by"/>
@@ -20,7 +27,7 @@
     <sql id="selectPileMachineInfoVo">
         select id,
                machine_num,
-               equipment, no, pwd, sn, update_time, create_time, create_by, update_by
+               equipment, no, pwd, sn, product_key, device_secret, topic, server_host, server_port, server_user_name, server_password, update_time, create_time, create_by, update_by
         from cons_pile_machine_info
     </sql>
 
@@ -30,8 +37,6 @@
             <if test="machineNum != null  and machineNum != ''">and machine_num = #{machineNum}</if>
             <if test="equipment != null  and equipment != ''">and equipment = #{equipment}</if>
             <if test="no != null  and no != ''">and no = #{no}</if>
-            <if test="pwd != null  and pwd != ''">and pwd = #{pwd}</if>
-            <if test="sn != null  and sn != ''">and sn = #{sn}</if>
         </where>
     </select>
 
@@ -45,9 +50,16 @@
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="machineNum != null and machineNum != ''">machine_num,</if>
             <if test="equipment != null and equipment != ''">equipment,</if>
-            <if test="no !=null and no !='' ">no,</if>
-            <if test="pwd != null and pwd != ''">pwd,</if>
-            <if test="sn != null and sn != ''">sn,</if>
+            <if test="no != null">no,</if>
+            <if test="pwd != null">pwd,</if>
+            <if test="sn != null">sn,</if>
+            <if test="productKey != null">product_key,</if>
+            <if test="deviceSecret != null">device_secret,</if>
+            <if test="topic != null">topic,</if>
+            <if test="serverHost != null">server_host,</if>
+            <if test="serverPort != null">server_port,</if>
+            <if test="serverUserName != null">server_user_name,</if>
+            <if test="serverPassword != null">server_password,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="createTime != null">create_time,</if>
             <if test="createBy != null">create_by,</if>
@@ -56,9 +68,16 @@
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="machineNum != null and machineNum != ''">#{machineNum},</if>
             <if test="equipment != null and equipment != ''">#{equipment},</if>
-            <if test="no !=null and no !='' ">#{no},</if>
-            <if test="pwd != null and pwd != ''">#{pwd},</if>
-            <if test="sn != null and sn != ''">#{sn},</if>
+            <if test="no != null">#{no},</if>
+            <if test="pwd != null">#{pwd},</if>
+            <if test="sn != null">#{sn},</if>
+            <if test="productKey != null">#{productKey},</if>
+            <if test="deviceSecret != null">#{deviceSecret},</if>
+            <if test="topic != null">#{topic},</if>
+            <if test="serverHost != null">#{serverHost},</if>
+            <if test="serverPort != null">#{serverPort},</if>
+            <if test="serverUserName != null">#{serverUserName},</if>
+            <if test="serverPassword != null">#{serverPassword},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -71,9 +90,16 @@
         <trim prefix="SET" suffixOverrides=",">
             <if test="machineNum != null and machineNum != ''">machine_num = #{machineNum},</if>
             <if test="equipment != null and equipment != ''">equipment = #{equipment},</if>
-            <if test="no !=null and no !='' ">no = #{no},</if>
-            <if test="pwd != null and pwd != ''">pwd = #{pwd},</if>
-            <if test="sn != null and sn != ''">sn = #{sn},</if>
+            <if test="no != null">no = #{no},</if>
+            <if test="pwd != null">pwd = #{pwd},</if>
+            <if test="sn != null">sn = #{sn},</if>
+            <if test="productKey != null">product_key = #{productKey},</if>
+            <if test="deviceSecret != null">device_secret = #{deviceSecret},</if>
+            <if test="topic != null">topic = #{topic},</if>
+            <if test="serverHost != null">server_host = #{serverHost},</if>
+            <if test="serverPort != null">server_port = #{serverPort},</if>
+            <if test="serverUserName != null">server_user_name = #{serverUserName},</if>
+            <if test="serverPassword != null">server_password = #{serverPassword},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="createBy != null">create_by = #{createBy},</if>

+ 12 - 1
bd-park/park-backend/park-domain/src/main/java/com/huashe/park/domain/entity/ConsPileHoleInfo.java

@@ -2,7 +2,6 @@ package com.huashe.park.domain.entity;
 
 import java.util.Date;
 
-import cn.idev.excel.annotation.ExcelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
@@ -11,6 +10,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.huashe.common.annotation.Excel;
 import com.huashe.common.domain.BaseEntity;
 
+import cn.idev.excel.annotation.ExcelProperty;
+
 /**
  * 施工桩点信息对象 cons_pile_hole_info
  * 
@@ -33,6 +34,8 @@ public class ConsPileHoleInfo extends BaseEntity {
      */
     private Integer type = 200;
 
+    private String holeKey;
+
     /** dx */
     @Excel(name = "dx")
     @JSONField(name = "x")
@@ -99,6 +102,14 @@ public class ConsPileHoleInfo extends BaseEntity {
         return holeNum;
     }
 
+    public String getHoleKey() {
+        return deltaY.toString() + deltaX.toString();
+    }
+
+    public void setHoleKey(String holeKey) {
+        this.holeKey = holeKey;
+    }
+
     public Double getDeltaX() {
         return deltaX;
     }

+ 480 - 0
bd-park/park-backend/park-domain/src/main/java/com/huashe/park/domain/entity/MachineProcess.java

@@ -0,0 +1,480 @@
+package com.huashe.park.domain.entity;
+
+import com.huashe.common.annotation.Excel;
+import com.huashe.common.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 桩机施工过程数据对象 cons_machine_process
+ * 
+ * @author ruoyi
+ * @date 2025-02-26
+ */
+public class MachineProcess extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** 设备类型(0-1字节) */
+    @Excel(name = "设备类型", readConverterExp = "0=-1字节")
+    private Integer consType;
+
+    /** 数据版本(2字节) */
+    @Excel(name = "数据版本", readConverterExp = "2=字节")
+    private Integer dataVersion;
+
+    /** 数据时间(3-10字节,大端序) */
+    @Excel(name = "数据时间", readConverterExp = "3=-10字节,大端序")
+    private Long dataTime;
+
+    /** 桩号(11-18字节) */
+    @Excel(name = "桩号", readConverterExp = "1=1-18字节")
+    private String pileId;
+
+    /** 设计编号(19-26字节) */
+    @Excel(name = "设计编号", readConverterExp = "1=9-26字节")
+    private String designId;
+
+    /** 机器编号(27-34字节) */
+    @Excel(name = "机器编号", readConverterExp = "2=7-34字节")
+    private String machineId;
+
+    /** 实际X坐标(35-42字节) */
+    @Excel(name = "实际X坐标", readConverterExp = "3=5-42字节")
+    private Double realX;
+
+    /** 实际Y坐标(43-50字节) */
+    @Excel(name = "实际Y坐标", readConverterExp = "4=3-50字节")
+    private Double realY;
+
+    /** 高程(51-54字节) */
+    @Excel(name = "高程", readConverterExp = "5=1-54字节")
+    private Double realZ;
+
+    /** 纬度(55-62字节) */
+    @Excel(name = "纬度", readConverterExp = "5=5-62字节")
+    private Double latitude;
+
+    /** 经度(63-70字节) */
+    @Excel(name = "经度", readConverterExp = "6=3-70字节")
+    private Double longitude;
+
+    /** 设计桩长(71-74字节) */
+    @Excel(name = "设计桩长", readConverterExp = "7=1-74字节")
+    private Double pileLength;
+
+    /** 实际桩长(75-78字节) */
+    @Excel(name = "实际桩长", readConverterExp = "7=5-78字节")
+    private Double realPileLength;
+
+    /** 速度(79-82字节) */
+    @Excel(name = "速度", readConverterExp = "7=9-82字节")
+    private Double speed;
+
+    /** 电流(83-86字节) */
+    @Excel(name = "电流", readConverterExp = "8=3-86字节")
+    private Double current;
+
+    /** 倾侧角(87-90字节) */
+    @Excel(name = "倾侧角", readConverterExp = "8=7-90字节")
+    private Double tiltAngle;
+
+    /** 前倾角(91-94字节) */
+    @Excel(name = "前倾角", readConverterExp = "9=1-94字节")
+    private Double forwardTiltAngle;
+
+    /** 垂直度(95-98字节) */
+    @Excel(name = "垂直度", readConverterExp = "9=5-98字节")
+    private Double verticalAngle;
+
+    /** 自编号(99-102字节) */
+    @Excel(name = "自编号", readConverterExp = "9=9-102字节")
+    private Integer selfNum;
+
+    /** 持力层电流(103-106字节) */
+    @Excel(name = "持力层电流", readConverterExp = "1=03-106字节")
+    private Double holdCurrent;
+
+    /** 灌浆体积(107-110字节) */
+    @Excel(name = "灌浆体积", readConverterExp = "1=07-110字节")
+    private Double sprayVolume;
+
+    /** 实时钻头高程(111-114字节) */
+    @Excel(name = "实时钻头高程", readConverterExp = "1=11-114字节")
+    private Double realDrillHeight;
+
+    /** 振动电流(115-118字节) */
+    @Excel(name = "振动电流", readConverterExp = "1=15-118字节")
+    private Double vibrationCurrent;
+
+    /** 水泵电流(119-122字节) */
+    @Excel(name = "水泵电流", readConverterExp = "1=19-122字节")
+    private Double pumpCurrent;
+
+    /** 喷浆压力(123-126字节) */
+    @Excel(name = "喷浆压力", readConverterExp = "1=23-126字节")
+    private Double sprayPressure;
+
+    /** 喷浆速度(127-130字节) */
+    @Excel(name = "喷浆速度", readConverterExp = "1=27-130字节")
+    private Double spraySpeed;
+
+    /** 设计桩长(131-134字节) */
+    @Excel(name = "设计桩长", readConverterExp = "1=31-134字节")
+    private Double designLength;
+
+    /** 当前钻杆节数(135-138字节) */
+    @Excel(name = "当前钻杆节数", readConverterExp = "1=35-138字节")
+    private Integer currentDrillNumber;
+
+    /** 每节开始时间(139-146字节,大端序) */
+    @Excel(name = "每节开始时间", readConverterExp = "1=39-146字节,大端序")
+    private Long startTime;
+
+    /** 每节结束时间(147-154字节,大端序) */
+    @Excel(name = "每节结束时间", readConverterExp = "1=47-154字节,大端序")
+    private Long endTime;
+
+    /** 当前机械类型(155-158字节) */
+    @Excel(name = "当前机械类型", readConverterExp = "1=55-158字节")
+    private Integer currentMechanicalType;
+
+    /** 当前层(159-163字节) */
+    @Excel(name = "当前层", readConverterExp = "1=59-163字节")
+    private Integer currentLayer;
+
+    /** 当前层送土时长(164-167字节) */
+    @Excel(name = "当前层送土时长", readConverterExp = "1=64-167字节")
+    private Double currentLayerSendTime;
+
+    /** 当前层夯击次数(168-171字节) */
+    @Excel(name = "当前层夯击次数", readConverterExp = "1=68-171字节")
+    private Integer currentLayerHammerNumber;
+
+    /** UUID(172+字节) */
+    @Excel(name = "UUID", readConverterExp = "1=72+字节")
+    private String uuid;
+
+    /** 时间分区,yyyyMMdd */
+    @Excel(name = "时间分区,yyyyMMdd")
+    private String dt;
+
+    /** 自增主键 */
+    private Long id;
+
+    public void setConsType(Integer consType) {
+        this.consType = consType;
+    }
+
+    public Integer getConsType() {
+        return consType;
+    }
+
+    public void setDataVersion(Integer dataVersion) {
+        this.dataVersion = dataVersion;
+    }
+
+    public Integer getDataVersion() {
+        return dataVersion;
+    }
+
+    public void setDataTime(Long dataTime) {
+        this.dataTime = dataTime;
+    }
+
+    public Long getDataTime() {
+        return dataTime;
+    }
+
+    public void setPileId(String pileId) {
+        this.pileId = pileId;
+    }
+
+    public String getPileId() {
+        return pileId;
+    }
+
+    public void setDesignId(String designId) {
+        this.designId = designId;
+    }
+
+    public String getDesignId() {
+        return designId;
+    }
+
+    public void setMachineId(String machineId) {
+        this.machineId = machineId;
+    }
+
+    public String getMachineId() {
+        return machineId;
+    }
+
+    public void setRealX(Double realX) {
+        this.realX = realX;
+    }
+
+    public Double getRealX() {
+        return realX;
+    }
+
+    public void setRealY(Double realY) {
+        this.realY = realY;
+    }
+
+    public Double getRealY() {
+        return realY;
+    }
+
+    public void setRealZ(Double realZ) {
+        this.realZ = realZ;
+    }
+
+    public Double getRealZ() {
+        return realZ;
+    }
+
+    public void setLatitude(Double latitude) {
+        this.latitude = latitude;
+    }
+
+    public Double getLatitude() {
+        return latitude;
+    }
+
+    public void setLongitude(Double longitude) {
+        this.longitude = longitude;
+    }
+
+    public Double getLongitude() {
+        return longitude;
+    }
+
+    public void setPileLength(Double pileLength) {
+        this.pileLength = pileLength;
+    }
+
+    public Double getPileLength() {
+        return pileLength;
+    }
+
+    public void setRealPileLength(Double realPileLength) {
+        this.realPileLength = realPileLength;
+    }
+
+    public Double getRealPileLength() {
+        return realPileLength;
+    }
+
+    public void setSpeed(Double speed) {
+        this.speed = speed;
+    }
+
+    public Double getSpeed() {
+        return speed;
+    }
+
+    public void setCurrent(Double current) {
+        this.current = current;
+    }
+
+    public Double getCurrent() {
+        return current;
+    }
+
+    public void setTiltAngle(Double tiltAngle) {
+        this.tiltAngle = tiltAngle;
+    }
+
+    public Double getTiltAngle() {
+        return tiltAngle;
+    }
+
+    public void setForwardTiltAngle(Double forwardTiltAngle) {
+        this.forwardTiltAngle = forwardTiltAngle;
+    }
+
+    public Double getForwardTiltAngle() {
+        return forwardTiltAngle;
+    }
+
+    public void setVerticalAngle(Double verticalAngle) {
+        this.verticalAngle = verticalAngle;
+    }
+
+    public Double getVerticalAngle() {
+        return verticalAngle;
+    }
+
+    public void setSelfNum(Integer selfNum) {
+        this.selfNum = selfNum;
+    }
+
+    public Integer getSelfNum() {
+        return selfNum;
+    }
+
+    public void setHoldCurrent(Double holdCurrent) {
+        this.holdCurrent = holdCurrent;
+    }
+
+    public Double getHoldCurrent() {
+        return holdCurrent;
+    }
+
+    public void setSprayVolume(Double sprayVolume) {
+        this.sprayVolume = sprayVolume;
+    }
+
+    public Double getSprayVolume() {
+        return sprayVolume;
+    }
+
+    public void setRealDrillHeight(Double realDrillHeight) {
+        this.realDrillHeight = realDrillHeight;
+    }
+
+    public Double getRealDrillHeight() {
+        return realDrillHeight;
+    }
+
+    public void setVibrationCurrent(Double vibrationCurrent) {
+        this.vibrationCurrent = vibrationCurrent;
+    }
+
+    public Double getVibrationCurrent() {
+        return vibrationCurrent;
+    }
+
+    public void setPumpCurrent(Double pumpCurrent) {
+        this.pumpCurrent = pumpCurrent;
+    }
+
+    public Double getPumpCurrent() {
+        return pumpCurrent;
+    }
+
+    public void setSprayPressure(Double sprayPressure) {
+        this.sprayPressure = sprayPressure;
+    }
+
+    public Double getSprayPressure() {
+        return sprayPressure;
+    }
+
+    public void setSpraySpeed(Double spraySpeed) {
+        this.spraySpeed = spraySpeed;
+    }
+
+    public Double getSpraySpeed() {
+        return spraySpeed;
+    }
+
+    public void setDesignLength(Double designLength) {
+        this.designLength = designLength;
+    }
+
+    public Double getDesignLength() {
+        return designLength;
+    }
+
+    public void setCurrentDrillNumber(Integer currentDrillNumber) {
+        this.currentDrillNumber = currentDrillNumber;
+    }
+
+    public Integer getCurrentDrillNumber() {
+        return currentDrillNumber;
+    }
+
+    public void setStartTime(Long startTime) {
+        this.startTime = startTime;
+    }
+
+    public Long getStartTime() {
+        return startTime;
+    }
+
+    public void setEndTime(Long endTime) {
+        this.endTime = endTime;
+    }
+
+    public Long getEndTime() {
+        return endTime;
+    }
+
+    public void setCurrentMechanicalType(Integer currentMechanicalType) {
+        this.currentMechanicalType = currentMechanicalType;
+    }
+
+    public Integer getCurrentMechanicalType() {
+        return currentMechanicalType;
+    }
+
+    public void setCurrentLayer(Integer currentLayer) {
+        this.currentLayer = currentLayer;
+    }
+
+    public Integer getCurrentLayer() {
+        return currentLayer;
+    }
+
+    public void setCurrentLayerSendTime(Double currentLayerSendTime) {
+        this.currentLayerSendTime = currentLayerSendTime;
+    }
+
+    public Double getCurrentLayerSendTime() {
+        return currentLayerSendTime;
+    }
+
+    public void setCurrentLayerHammerNumber(Integer currentLayerHammerNumber) {
+        this.currentLayerHammerNumber = currentLayerHammerNumber;
+    }
+
+    public Integer getCurrentLayerHammerNumber() {
+        return currentLayerHammerNumber;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setDt(String dt) {
+        this.dt = dt;
+    }
+
+    public String getDt() {
+        return dt;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("consType", getConsType())
+            .append("dataVersion", getDataVersion()).append("dataTime", getDataTime()).append("pileId", getPileId())
+            .append("designId", getDesignId()).append("machineId", getMachineId()).append("realX", getRealX())
+            .append("realY", getRealY()).append("realZ", getRealZ()).append("latitude", getLatitude())
+            .append("longitude", getLongitude()).append("pileLength", getPileLength())
+            .append("realPileLength", getRealPileLength()).append("speed", getSpeed()).append("current", getCurrent())
+            .append("tiltAngle", getTiltAngle()).append("forwardTiltAngle", getForwardTiltAngle())
+            .append("verticalAngle", getVerticalAngle()).append("selfNum", getSelfNum())
+            .append("holdCurrent", getHoldCurrent()).append("sprayVolume", getSprayVolume())
+            .append("realDrillHeight", getRealDrillHeight()).append("vibrationCurrent", getVibrationCurrent())
+            .append("pumpCurrent", getPumpCurrent()).append("sprayPressure", getSprayPressure())
+            .append("spraySpeed", getSpraySpeed()).append("designLength", getDesignLength())
+            .append("currentDrillNumber", getCurrentDrillNumber()).append("startTime", getStartTime())
+            .append("endTime", getEndTime()).append("currentMechanicalType", getCurrentMechanicalType())
+            .append("currentLayer", getCurrentLayer()).append("currentLayerSendTime", getCurrentLayerSendTime())
+            .append("currentLayerHammerNumber", getCurrentLayerHammerNumber()).append("uuid", getUuid())
+            .append("dt", getDt()).append("id", getId()).toString();
+    }
+}

+ 482 - 0
bd-park/park-backend/park-domain/src/main/java/com/huashe/park/domain/entity/MachineProcessResult.java

@@ -0,0 +1,482 @@
+package com.huashe.park.domain.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import com.huashe.common.annotation.Excel;
+import com.huashe.common.domain.BaseEntity;
+
+/**
+ * 桩机施工结果数据(2025-02-26版协议)对象 cons_machine_process_result
+ * 
+ * @author ruoyi
+ * @date 2025-02-26
+ */
+public class MachineProcessResult extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** 自增主键 */
+    private Long id;
+
+    /** 施工类型编码(0-1字节) */
+    @Excel(name = "施工类型编码", readConverterExp = "0=-1字节")
+    private Integer consType;
+
+    /** 数据协议版本(2-2字节) */
+    @Excel(name = "数据协议版本", readConverterExp = "2=-2字节")
+    private Integer dataVersion;
+
+    /** 数据采集时间戳(3-10字节) */
+    @Excel(name = "数据采集时间戳", readConverterExp = "3=-10字节")
+    private Long dataTime;
+
+    /** 桩体编号(11-18字节) */
+    @Excel(name = "桩体编号", readConverterExp = "1=1-18字节")
+    private String pileId;
+
+    /** 设计图纸编号(19-26字节) */
+    @Excel(name = "设计图纸编号", readConverterExp = "1=9-26字节")
+    private String designId;
+
+    /** 施工机械编号(27-34字节) */
+    @Excel(name = "施工机械编号", readConverterExp = "2=7-34字节")
+    private String machineId;
+
+    /** 设计X坐标(米) */
+    @Excel(name = "设计X坐标", readConverterExp = "米=")
+    private Double designX;
+
+    /** 设计Y坐标(米) */
+    @Excel(name = "设计Y坐标", readConverterExp = "米=")
+    private Double designY;
+
+    /** 实际X坐标(米) */
+    @Excel(name = "实际X坐标", readConverterExp = "米=")
+    private Double realX;
+
+    /** 实际Y坐标(米) */
+    @Excel(name = "实际Y坐标", readConverterExp = "米=")
+    private Double realY;
+
+    /** 纬度 */
+    @Excel(name = "纬度")
+    private Double latitude;
+
+    /** 经度 */
+    @Excel(name = "经度")
+    private Double longitude;
+
+    /** 成桩长度(米) */
+    @Excel(name = "成桩长度", readConverterExp = "米=")
+    private Double pileLength;
+
+    /** 平均钻速(mm/min) */
+    @Excel(name = "平均钻速", readConverterExp = "m=m/min")
+    private Double avgSpeed;
+
+    /** 平均电流(A) */
+    @Excel(name = "平均电流", readConverterExp = "A=")
+    private Double avgCurrent;
+
+    /** 持力层电流阈值(A) */
+    @Excel(name = "持力层电流阈值", readConverterExp = "A=")
+    private Double holdCurrent;
+
+    /** 垂直度偏差(%) */
+    @Excel(name = "垂直度偏差", readConverterExp = "%=")
+    private Double verticalDeviation;
+
+    /** 灌浆体积(m³) */
+    @Excel(name = "灌浆体积", readConverterExp = "m=³")
+    private Double sprayVolume;
+
+    /** 施工开始时间 */
+    @Excel(name = "施工开始时间")
+    private Long startTime;
+
+    /** 施工结束时间 */
+    @Excel(name = "施工结束时间")
+    private Long endTime;
+
+    /** 结果评价(0:合格 1:异常) */
+    @Excel(name = "结果评价", readConverterExp = "0=:合格,1=:异常")
+    private Integer resultEvaluation;
+
+    /** 起桩高度(米) */
+    @Excel(name = "起桩高度", readConverterExp = "米=")
+    private Double startHeight;
+
+    /** 入岩深度(米) */
+    @Excel(name = "入岩深度", readConverterExp = "米=")
+    private Double inDepth;
+
+    /** 有效下行深度(米) */
+    @Excel(name = "有效下行深度", readConverterExp = "米=")
+    private Double effectiveDown;
+
+    /** 有效桩长(米) */
+    @Excel(name = "有效桩长", readConverterExp = "米=")
+    private Double effectiveLength;
+
+    /** 桩点编号 */
+    @Excel(name = "桩点编号")
+    private Integer pileNumber;
+
+    /** 平均喷浆压力(MPa) */
+    @Excel(name = "平均喷浆压力", readConverterExp = "M=Pa")
+    private Double avgSprayPressure;
+
+    /** 平均喷浆速度(L/min) */
+    @Excel(name = "平均喷浆速度", readConverterExp = "L=/min")
+    private Double avgSpraySpeed;
+
+    /** 设计桩长(米) */
+    @Excel(name = "设计桩长", readConverterExp = "米=")
+    private Double designLength;
+
+    /** 平均上行速度(mm/min) */
+    @Excel(name = "平均上行速度", readConverterExp = "m=m/min")
+    private Double avgUpSpeed;
+
+    /** 钻杆总节数 */
+    @Excel(name = "钻杆总节数")
+    private Integer drillTotalNumber;
+
+    /** 机械类型(1:旋挖 2:冲击) */
+    @Excel(name = "机械类型", readConverterExp = "1=:旋挖,2=:冲击")
+    private Integer currentMechanicalType;
+
+    /** 送土次数 */
+    @Excel(name = "送土次数")
+    private Integer sendTotalNumber;
+
+    /** 送土总时长(秒) */
+    @Excel(name = "送土总时长", readConverterExp = "秒=")
+    private Double sendTotalTime;
+
+    /** 总夯击次数 */
+    @Excel(name = "总夯击次数")
+    private Integer totalHammerNumber;
+
+    /** 设备唯一标识(UUID) */
+    @Excel(name = "设备唯一标识", readConverterExp = "U=UID")
+    private String uuid;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setConsType(Integer consType) {
+        this.consType = consType;
+    }
+
+    public Integer getConsType() {
+        return consType;
+    }
+
+    public void setDataVersion(Integer dataVersion) {
+        this.dataVersion = dataVersion;
+    }
+
+    public Integer getDataVersion() {
+        return dataVersion;
+    }
+
+    public void setDataTime(Long dataTime) {
+        this.dataTime = dataTime;
+    }
+
+    public Long getDataTime() {
+        return dataTime;
+    }
+
+    public void setPileId(String pileId) {
+        this.pileId = pileId;
+    }
+
+    public String getPileId() {
+        return pileId;
+    }
+
+    public void setDesignId(String designId) {
+        this.designId = designId;
+    }
+
+    public String getDesignId() {
+        return designId;
+    }
+
+    public void setMachineId(String machineId) {
+        this.machineId = machineId;
+    }
+
+    public String getMachineId() {
+        return machineId;
+    }
+
+    public void setDesignX(Double designX) {
+        this.designX = designX;
+    }
+
+    public Double getDesignX() {
+        return designX;
+    }
+
+    public void setDesignY(Double designY) {
+        this.designY = designY;
+    }
+
+    public Double getDesignY() {
+        return designY;
+    }
+
+    public void setRealX(Double realX) {
+        this.realX = realX;
+    }
+
+    public Double getRealX() {
+        return realX;
+    }
+
+    public void setRealY(Double realY) {
+        this.realY = realY;
+    }
+
+    public Double getRealY() {
+        return realY;
+    }
+
+    public void setLatitude(Double latitude) {
+        this.latitude = latitude;
+    }
+
+    public Double getLatitude() {
+        return latitude;
+    }
+
+    public void setLongitude(Double longitude) {
+        this.longitude = longitude;
+    }
+
+    public Double getLongitude() {
+        return longitude;
+    }
+
+    public void setPileLength(Double pileLength) {
+        this.pileLength = pileLength;
+    }
+
+    public Double getPileLength() {
+        return pileLength;
+    }
+
+    public void setAvgSpeed(Double avgSpeed) {
+        this.avgSpeed = avgSpeed;
+    }
+
+    public Double getAvgSpeed() {
+        return avgSpeed;
+    }
+
+    public void setAvgCurrent(Double avgCurrent) {
+        this.avgCurrent = avgCurrent;
+    }
+
+    public Double getAvgCurrent() {
+        return avgCurrent;
+    }
+
+    public void setHoldCurrent(Double holdCurrent) {
+        this.holdCurrent = holdCurrent;
+    }
+
+    public Double getHoldCurrent() {
+        return holdCurrent;
+    }
+
+    public void setVerticalDeviation(Double verticalDeviation) {
+        this.verticalDeviation = verticalDeviation;
+    }
+
+    public Double getVerticalDeviation() {
+        return verticalDeviation;
+    }
+
+    public void setSprayVolume(Double sprayVolume) {
+        this.sprayVolume = sprayVolume;
+    }
+
+    public Double getSprayVolume() {
+        return sprayVolume;
+    }
+
+    public void setStartTime(Long startTime) {
+        this.startTime = startTime;
+    }
+
+    public Long getStartTime() {
+        return startTime;
+    }
+
+    public void setEndTime(Long endTime) {
+        this.endTime = endTime;
+    }
+
+    public Long getEndTime() {
+        return endTime;
+    }
+
+    public void setResultEvaluation(Integer resultEvaluation) {
+        this.resultEvaluation = resultEvaluation;
+    }
+
+    public Integer getResultEvaluation() {
+        return resultEvaluation;
+    }
+
+    public void setStartHeight(Double startHeight) {
+        this.startHeight = startHeight;
+    }
+
+    public Double getStartHeight() {
+        return startHeight;
+    }
+
+    public void setInDepth(Double inDepth) {
+        this.inDepth = inDepth;
+    }
+
+    public Double getInDepth() {
+        return inDepth;
+    }
+
+    public void setEffectiveDown(Double effectiveDown) {
+        this.effectiveDown = effectiveDown;
+    }
+
+    public Double getEffectiveDown() {
+        return effectiveDown;
+    }
+
+    public void setEffectiveLength(Double effectiveLength) {
+        this.effectiveLength = effectiveLength;
+    }
+
+    public Double getEffectiveLength() {
+        return effectiveLength;
+    }
+
+    public void setPileNumber(Integer pileNumber) {
+        this.pileNumber = pileNumber;
+    }
+
+    public Integer getPileNumber() {
+        return pileNumber;
+    }
+
+    public void setAvgSprayPressure(Double avgSprayPressure) {
+        this.avgSprayPressure = avgSprayPressure;
+    }
+
+    public Double getAvgSprayPressure() {
+        return avgSprayPressure;
+    }
+
+    public void setAvgSpraySpeed(Double avgSpraySpeed) {
+        this.avgSpraySpeed = avgSpraySpeed;
+    }
+
+    public Double getAvgSpraySpeed() {
+        return avgSpraySpeed;
+    }
+
+    public void setDesignLength(Double designLength) {
+        this.designLength = designLength;
+    }
+
+    public Double getDesignLength() {
+        return designLength;
+    }
+
+    public void setAvgUpSpeed(Double avgUpSpeed) {
+        this.avgUpSpeed = avgUpSpeed;
+    }
+
+    public Double getAvgUpSpeed() {
+        return avgUpSpeed;
+    }
+
+    public void setDrillTotalNumber(Integer drillTotalNumber) {
+        this.drillTotalNumber = drillTotalNumber;
+    }
+
+    public Integer getDrillTotalNumber() {
+        return drillTotalNumber;
+    }
+
+    public void setCurrentMechanicalType(Integer currentMechanicalType) {
+        this.currentMechanicalType = currentMechanicalType;
+    }
+
+    public Integer getCurrentMechanicalType() {
+        return currentMechanicalType;
+    }
+
+    public void setSendTotalNumber(Integer sendTotalNumber) {
+        this.sendTotalNumber = sendTotalNumber;
+    }
+
+    public Integer getSendTotalNumber() {
+        return sendTotalNumber;
+    }
+
+    public void setSendTotalTime(Double sendTotalTime) {
+        this.sendTotalTime = sendTotalTime;
+    }
+
+    public Double getSendTotalTime() {
+        return sendTotalTime;
+    }
+
+    public void setTotalHammerNumber(Integer totalHammerNumber) {
+        this.totalHammerNumber = totalHammerNumber;
+    }
+
+    public Integer getTotalHammerNumber() {
+        return totalHammerNumber;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", getId())
+            .append("consType", getConsType()).append("dataVersion", getDataVersion()).append("dataTime", getDataTime())
+            .append("pileId", getPileId()).append("designId", getDesignId()).append("machineId", getMachineId())
+            .append("designX", getDesignX()).append("designY", getDesignY()).append("realX", getRealX())
+            .append("realY", getRealY()).append("latitude", getLatitude()).append("longitude", getLongitude())
+            .append("pileLength", getPileLength()).append("avgSpeed", getAvgSpeed())
+            .append("avgCurrent", getAvgCurrent()).append("holdCurrent", getHoldCurrent())
+            .append("verticalDeviation", getVerticalDeviation()).append("sprayVolume", getSprayVolume())
+            .append("startTime", getStartTime()).append("endTime", getEndTime())
+            .append("resultEvaluation", getResultEvaluation()).append("startHeight", getStartHeight())
+            .append("inDepth", getInDepth()).append("effectiveDown", getEffectiveDown())
+            .append("effectiveLength", getEffectiveLength()).append("pileNumber", getPileNumber())
+            .append("avgSprayPressure", getAvgSprayPressure()).append("avgSpraySpeed", getAvgSpraySpeed())
+            .append("designLength", getDesignLength()).append("avgUpSpeed", getAvgUpSpeed())
+            .append("drillTotalNumber", getDrillTotalNumber())
+            .append("currentMechanicalType", getCurrentMechanicalType()).append("sendTotalNumber", getSendTotalNumber())
+            .append("sendTotalTime", getSendTotalTime()).append("totalHammerNumber", getTotalHammerNumber())
+            .append("uuid", getUuid()).toString();
+    }
+}

+ 1 - 0
bd-park/park-backend/park-domain/src/main/java/com/huashe/park/domain/entity/PileMachineInfo.java

@@ -26,6 +26,7 @@ public class PileMachineInfo extends BaseEntity {
 
     /** 设备信息 */
     @Excel(name = "设备信息")
+    @JsonProperty("name")
     private String equipment;
 
     private String no;

+ 1 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mybatis/CustomWrapper.java → bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/CustomWrapper.java

@@ -1,4 +1,4 @@
-package com.huashe.park.application.mybatis;
+package com.huashe.park.infrastructure.cfg.mybatis;
 
 import java.util.Map;
 

+ 1 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mybatis/MapWrapperFactory.java → bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/MapWrapperFactory.java

@@ -1,4 +1,4 @@
-package com.huashe.park.application.mybatis;
+package com.huashe.park.infrastructure.cfg.mybatis;
 
 import org.apache.ibatis.reflection.MetaObject;
 import org.apache.ibatis.reflection.wrapper.ObjectWrapper;

+ 40 - 24
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mybatis/MybatisInterceptor.java → bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/MybatisInterceptor.java

@@ -1,8 +1,11 @@
-package com.huashe.park.application.mybatis;
+package com.huashe.park.infrastructure.cfg.mybatis;
 
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
 
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.utils.SecurityUtils;
 import org.apache.ibatis.binding.MapperMethod;
 import org.apache.ibatis.binding.MapperMethod.ParamMap;
 import org.apache.ibatis.executor.Executor;
@@ -17,14 +20,16 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.SecurityUtils;
 
 @Component
-@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})})
+@Intercepts({
+    @Signature(type = Executor.class, method = "update", args = {
+        MappedStatement.class, Object.class
+    })
+})
 public class MybatisInterceptor implements Interceptor {
     private static final Logger log = LoggerFactory.getLogger(MybatisInterceptor.class);
 
@@ -54,7 +59,7 @@ public class MybatisInterceptor implements Interceptor {
                             if (sysUser != null) {
                                 // 登录人账号
                                 field.setAccessible(true);
-                                field.set(parameter, sysUser.getUserId().toString());
+                                field.set(parameter, sysUser.getUser().getNickName());
                                 field.setAccessible(false);
                             }
                         }
@@ -84,7 +89,8 @@ public class MybatisInterceptor implements Interceptor {
                         }
                     }
 
-                } catch (Exception e) {
+                }
+                catch (Exception e) {
                     log.error("------MybatisInterceptor field.name------{},error:", field.getName(), e);
                 }
             }
@@ -94,24 +100,27 @@ public class MybatisInterceptor implements Interceptor {
             Field[] fields = null;
             if (parameter instanceof MapperMethod.ParamMap) {
                 MapperMethod.ParamMap<?> p = (ParamMap<?>) parameter;
-                //update-begin-author:scott date:20190729 for:批量更新报错issues/IZA3Q--
+                // update-begin-author:scott date:20190729 for:批量更新报错issues/IZA3Q--
                 if (p.containsKey("et")) {
                     parameter = p.get("arg0");
-                } else if (p.containsKey("arg0")) {
+                }
+                else if (p.containsKey("arg0")) {
                     parameter = p.get("arg0");
-                } else {
+                }
+                else {
                     parameter = p.get("param1");
                 }
-                //update-end-author:scott date:20190729 for:批量更新报错issues/IZA3Q-
+                // update-end-author:scott date:20190729 for:批量更新报错issues/IZA3Q-
 
-                //update-begin-author:scott date:20190729 for:更新指定字段时报错 issues/#516-
+                // update-begin-author:scott date:20190729 for:更新指定字段时报错 issues/#516-
                 if (parameter == null) {
                     return invocation.proceed();
                 }
-                //update-end-author:scott date:20190729 for:更新指定字段时报错 issues/#516-
+                // update-end-author:scott date:20190729 for:更新指定字段时报错 issues/#516-
 
                 fields = this.getAllFields(parameter);
-            } else {
+            }
+            else {
                 fields = this.getAllFields(parameter);
             }
 
@@ -119,10 +128,10 @@ public class MybatisInterceptor implements Interceptor {
                 field.setAccessible(true);
                 try {
                     if ("updateBy".equals(field.getName())) {
-                        //获取登录用户信息
+                        // 获取登录用户信息
                         if (sysUser != null) {
                             // 登录账号
-                            field.set(parameter, sysUser.getUserId().toString());
+                            field.set(parameter, sysUser.getUser().getNickName());
                             field.setAccessible(false);
                         }
                     }
@@ -130,7 +139,8 @@ public class MybatisInterceptor implements Interceptor {
                         field.set(parameter, new Date());
                         field.setAccessible(false);
                     }
-                } catch (Exception e) {
+                }
+                catch (Exception e) {
                     log.error("------ MybatisInterceptor field.name------{},error:", field.getName(), e);
                 }
             }
@@ -144,11 +154,17 @@ public class MybatisInterceptor implements Interceptor {
     }
 
     private LoginUser getLoginUser() {
-        LoginUser userNow = null;
+        LoginUser userNow = new LoginUser();
+        userNow.setUser(new SysUser() {
+            {
+                setNickName(Thread.currentThread().getName());
+            }
+        });
         try {
-//			try catch避免线程任务出错
+            // try catch避免线程任务出错
             userNow = SecurityUtils.getLoginUser() != null ? SecurityUtils.getLoginUser() : null;
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             log.debug("------MybatisInterceptor getLoginUser------,error:", e);
         }
         return userNow;

+ 1 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mybatis/RegisterCustomerInterceptor.java → bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/RegisterCustomerInterceptor.java

@@ -1,4 +1,4 @@
-package com.huashe.park.application.mybatis;
+package com.huashe.park.infrastructure.cfg.mybatis;
 
 import java.util.List;
 

+ 13 - 0
bd-park/park-backend/pom.xml

@@ -16,6 +16,7 @@
         <module>park-infrastructure</module>
         <module>park-domain</module>
         <module>park-cloud</module>
+        <module>park-collect</module>
     </modules>
 
     <description>
@@ -55,6 +56,8 @@
         <prod-commons.version>1.0-SNAPSHOT</prod-commons.version>
         <transmittable-thread-local.version>2.14.4</transmittable-thread-local.version>
         <fastexcel.version>1.1.0</fastexcel.version>
+        <paho.version>1.2.5</paho.version>
+        <common.collect>4.4</common.collect>
     </properties>
 
     <!-- 依赖声明 -->
@@ -358,7 +361,17 @@
                 <artifactId>fastexcel</artifactId>
                 <version>${fastexcel.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.eclipse.paho</groupId>
+                <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+                <version>${paho.version}</version>
+            </dependency>
 
+            <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-collections4</artifactId>
+                <version>${common.collect}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
     <repositories>