From 7bc78d8f70a4d11e46f8bd640228804a3dd0dc68 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期一, 22 四月 2024 10:52:29 +0800
Subject: [PATCH] Merge branch 'master2'

---
 src/main/java/com/boying/controller/phone/TicketController.java    |   20 +
 src/main/java/com/boying/controller/EnterParkController.java       |    9 
 src/main/resources/logback.xml                                     |    2 
 src/main/java/com/boying/controller/WhiteListController.java       |    7 
 pom.xml                                                            |   26 ++
 src/main/java/com/boying/controller/BarrierController.java         |   10 
 src/main/java/com/boying/controller/phone/NoticeController.java    |    7 
 src/main/java/com/boying/controller/car/MqttSample.java            |   66 +++++
 src/main/java/com/boying/controller/CostRuleController.java        |    7 
 src/main/java/com/boying/job/PayResult2Scheduled.java              |    2 
 src/main/java/com/boying/controller/TicketBlackController.java     |    8 
 src/main/java/com/boying/controller/FileInfoController.java        |    8 
 src/main/java/com/boying/controller/ViolationTypeController.java   |    8 
 src/main/java/com/boying/controller/phone/PayController.java       |    9 
 src/main/java/com/boying/controller/LedShowController.java         |    2 
 src/main/java/com/boying/controller/UserController.java            |    9 
 src/main/java/com/boying/job/DaPingScheduled.java                  |    2 
 src/main/java/com/boying/controller/StatisticController.java       |    6 
 src/main/java/com/boying/controller/phone/UpdateAppController.java |    4 
 src/main/java/com/boying/controller/phone/YCPayController.java     |   15 +
 src/main/java/com/boying/controller/car/MqttSample2.java           |   69 +++++
 src/main/java/com/boying/controller/car/PlateServlet2.java         |  146 ++++++++---
 src/main/java/com/boying/controller/OrderRecordController.java     |    6 
 src/main/java/com/boying/controller/FileInfo2Controller.java       |    8 
 src/main/java/com/boying/controller/car/PushCallback.java          |   44 +++
 src/main/java/com/boying/controller/StreetController.java          |   12 +
 src/main/java/com/boying/controller/OutParkController.java         |   14 +
 src/main/java/com/boying/controller/BarrierOpenLogController.java  |    4 
 src/main/java/com/boying/Application.java                          |   16 
 src/main/java/com/boying/controller/car/ServerMQTT.java            |   93 +++++++
 src/main/resources/application.yml                                 |   24 +
 31 files changed, 606 insertions(+), 57 deletions(-)

diff --git a/pom.xml b/pom.xml
index 32afc3d..8b1c7d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -121,6 +121,32 @@
             <artifactId>signature</artifactId>
             <version>1.1.0.6</version>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.paho</groupId>
+            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+            <version>1.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
+            <version>4.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>1.6.14</version>
+        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.led</groupId>-->
+<!--            <artifactId>show</artifactId>-->
+<!--            <version>0.0.0.1</version>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>net.sf</groupId>-->
+<!--            <artifactId>jni4net</artifactId>-->
+<!--            <version>0.8.8.0</version>-->
+<!--        </dependency>-->
+
     </dependencies>
 
     <build>
diff --git a/src/main/java/com/boying/Application.java b/src/main/java/com/boying/Application.java
index 5a2e03a..5659c90 100644
--- a/src/main/java/com/boying/Application.java
+++ b/src/main/java/com/boying/Application.java
@@ -2,7 +2,7 @@
 
 
 import cn.hutool.core.io.resource.ClassPathResource;
-import net.sf.jni4net.Bridge;
+//import net.sf.jni4net.Bridge;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.Bean;
@@ -26,11 +26,11 @@
         SpringApplication.run(Application.class, args);
     }
 
-    @Bean
-    public static void getBean() throws IOException {
-        Bridge.setVerbose(true);
-        Bridge.init();
-        File loadDll = new File("LedShow.j4n.dll");
-        Bridge.LoadAndRegisterAssemblyFrom(loadDll);
-    }
+//    @Bean
+//    public static void getBean() throws IOException {
+//        Bridge.setVerbose(true);
+//        Bridge.init();
+//        File loadDll = new File("LedShow.j4n.dll");
+//        Bridge.LoadAndRegisterAssemblyFrom(loadDll);
+//    }
 }
diff --git a/src/main/java/com/boying/controller/BarrierController.java b/src/main/java/com/boying/controller/BarrierController.java
index 8fb48d4..a05bf04 100644
--- a/src/main/java/com/boying/controller/BarrierController.java
+++ b/src/main/java/com/boying/controller/BarrierController.java
@@ -12,6 +12,8 @@
 import com.boying.service.OutParkService;
 import com.boying.service.ParkService;
 import com.boying.util.RedisJsonUtil;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -27,6 +29,7 @@
 @RestController
 @RequestMapping("ffzf/barrier")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/barrier" , name = "閬撻椄鎺ュ彛" )
 public class BarrierController {
 
     private final BarrierService barrierService;
@@ -37,6 +40,7 @@
 
 
     @PostMapping("findPage")
+    @Operation(summary = "鏍规嵁鍋滆溅鍦哄垎椤垫煡璇㈤亾闂�" , description = "鏍规嵁鍋滆溅鍦哄垎椤垫煡璇㈤亾闂�" )
     public Object findPage(Page page, String parkId) {
         QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -54,6 +58,7 @@
     }
 
     @PostMapping("save")
+    @Operation(summary = "鏂板閬撻椄" , description = "鏂板閬撻椄" )
     public Object save(Barrier barrier) {
         barrier.setUpdateTime(LocalDateTime.now());
         barrierService.saveOrUpdate(barrier);
@@ -67,6 +72,7 @@
     }
 
     @PostMapping("delete")
+    @Operation(summary = "鍒犻櫎閬撻椄" , description = "鍒犻櫎閬撻椄" )
     public Object delete(Integer id) {
         Barrier byId = barrierService.getById(id);
         barrierService.removeById(id);
@@ -75,6 +81,7 @@
     }
 
     @PostMapping("findAll")
+    @Operation(summary = "鏌ヨ鎵�鏈夐亾闂革紙APP锛�" , description = "鏌ヨ鎵�鏈夐亾闂革紙APP锛�" )
     public Object findAll(Long parkId) {
         if (parkId==null) {
             return R.failed("鏈彂鐜拌鍋滆溅鍦�");
@@ -86,6 +93,7 @@
     }
 
     @PostMapping("open")
+    @Operation(summary = "鎵嬪姩寮�闂革紙搴熷純锛�" , description = "鎵嬪姩寮�闂革紙搴熷純锛�" )
     public Object open(Long barrierId) {
         Barrier b=  barrierService.getById(barrierId);
         if (b==null) {
@@ -104,6 +112,7 @@
     }
 
     @PostMapping("getByCode")
+    @Operation(summary = "鏍规嵁code鏌ヨ閬撻椄" , description = "鏍规嵁code鏌ヨ閬撻椄" )
     public Object getByCode(String code) {
         Barrier b=  barrierService.findByCode2(code);
         if (b==null) {
@@ -116,6 +125,7 @@
 
 
     @PostMapping("openBarrier")
+    @Operation(summary = "鎵嬫寔鎵嬪姩寮�闂�" , description = "鎵嬫寔鎵嬪姩寮�闂�" )
     public Object openBarrier(Long barrierId,Integer type,String carNo,String remark) {
         Barrier b=  barrierService.getById(barrierId);
         if (b==null) {
diff --git a/src/main/java/com/boying/controller/BarrierOpenLogController.java b/src/main/java/com/boying/controller/BarrierOpenLogController.java
index 60ce86e..526ad99 100644
--- a/src/main/java/com/boying/controller/BarrierOpenLogController.java
+++ b/src/main/java/com/boying/controller/BarrierOpenLogController.java
@@ -13,6 +13,8 @@
 import com.boying.service.BarrierService;
 import com.boying.service.OutParkService;
 import com.boying.service.ParkService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -26,6 +28,7 @@
 @RestController
 @RequestMapping("ffzf/barrierOpenLog")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/barrierOpenLog" , name = "鎵嬪姩寮�闂告棩蹇�" )
 public class BarrierOpenLogController {
 
     private final BarrierOpenLogService barrierOpenLogService;
@@ -33,6 +36,7 @@
 
 
     @PostMapping("findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page, Integer parkId,String carNo) {
         QueryWrapper<BarrierOpenLog> wrapper = new QueryWrapper<>();
         wrapper.lambda()
diff --git a/src/main/java/com/boying/controller/CostRuleController.java b/src/main/java/com/boying/controller/CostRuleController.java
index 1d198a1..5f72406 100644
--- a/src/main/java/com/boying/controller/CostRuleController.java
+++ b/src/main/java/com/boying/controller/CostRuleController.java
@@ -13,6 +13,8 @@
 import com.boying.service.ParkService;
 import com.boying.util.DateUtilOther;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -25,18 +27,21 @@
 @RestController
 @RequestMapping("ffzf/rule")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/rule" , name = "缂磋垂瑙勫垯" )
 public class CostRuleController{
 
     private final CostRuleService costRuleService;
     private final ParkService parkService;
 
     @GetMapping("test")
+    @Operation(summary = "娴嬭瘯" , description = "娴嬭瘯" )
     public Object save(String start,String end) throws ParseException {
         double money = costRuleService.getMoney(4, DateUtilOther.stringToLocalDate(start,null), DateUtilOther.stringToLocalDate(end, null), 1);
         return R.ok(money);
     }
 
     @PostMapping("/findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page,CostRule costRule) {
         QueryWrapper<CostRule> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -51,6 +56,7 @@
         return R.ok(page1);}
 
     @PostMapping("/save")
+    @Operation(summary = "鏂板瑙勫垯" , description = "鏂板瑙勫垯" )
     public Object save(CostRule costRule) {
         costRuleService.saveOrUpdate(costRule);
         return R.ok("淇濆瓨鎴愬姛");
@@ -58,6 +64,7 @@
 
 
     @PostMapping("/delete")
+    @Operation(summary = "鍒犻櫎瑙勫垯" , description = "鍒犻櫎瑙勫垯" )
     public Object delete(Long id) {
         costRuleService.removeById(id);
         return R.ok("鍒犻櫎鎴愬姛");
diff --git a/src/main/java/com/boying/controller/EnterParkController.java b/src/main/java/com/boying/controller/EnterParkController.java
index ec9488d..00b0fcc 100644
--- a/src/main/java/com/boying/controller/EnterParkController.java
+++ b/src/main/java/com/boying/controller/EnterParkController.java
@@ -14,6 +14,8 @@
 import com.boying.service.ParkService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 
 import org.springframework.web.bind.annotation.*;
@@ -33,6 +35,7 @@
 @RequiredArgsConstructor
 @RequestMapping("ffzf/enterpark" )
 @Api(value = "enterpark", tags = "鍏ュ満琛ㄧ鐞�")
+@Tag(description = "ffzf/enterpark" , name = "鍏ュ満琛ㄨ褰�" )
 public class EnterParkController {
 
     private final EnterParkService enterParkService;
@@ -65,6 +68,7 @@
 //    }
 
     @PostMapping("/findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page, String  carNo,Integer parkId,String date) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         if(StringUtils.isNotBlank(date)){
@@ -92,6 +96,7 @@
      */
     @ApiOperation(value = "閫氳繃id鏌ヨ", notes = "閫氳繃id鏌ヨ")
     @GetMapping("/{id}" )
+    @Operation(summary = "鏍规嵁id鏌ヨ" , description = "鏍规嵁id鏌ヨ" )
     public R getById(@PathVariable("id" ) Integer id) {
         return R.ok(enterParkService.getById(id));
     }
@@ -103,6 +108,7 @@
      */
     @ApiOperation(value = "鏂板鍏ュ満琛�", notes = "鏂板鍏ュ満琛�")
     @PostMapping
+    @Operation(summary = "鏂板鍏ュ満" , description = "鏂板鍏ュ満" )
     public R save(@RequestBody EnterPark enterPark) {
         return R.ok(enterParkService.save(enterPark));
     }
@@ -114,6 +120,7 @@
      */
     @ApiOperation(value = "淇敼鍏ュ満琛�", notes = "淇敼鍏ュ満琛�")
     @PutMapping
+    @Operation(summary = "淇敼鍏ュ満" , description = "淇敼鍏ュ満" )
     public R updateById(@RequestBody EnterPark enterPark) {
         return R.ok(enterParkService.updateById(enterPark));
     }
@@ -125,6 +132,7 @@
      */
     @ApiOperation(value = "閫氳繃id鍒犻櫎鍏ュ満琛�", notes = "閫氳繃id鍒犻櫎鍏ュ満琛�")
     @DeleteMapping("/{id}" )
+    @Operation(summary = "鍒犻櫎鍏ュ満" , description = "鍒犻櫎鍏ュ満" )
     public R removeById(@PathVariable Integer id) {
         return R.ok(enterParkService.removeById(id));
     }
@@ -136,6 +144,7 @@
      * @return excel 鏂囦欢娴�
      */
     @GetMapping("/export")
+    @Operation(summary = "瀵煎嚭鍏ュ満" , description = "瀵煎嚭鍏ュ満" )
     public List<EnterPark> export(EnterPark enterPark) {
         return enterParkService.list(Wrappers.query(enterPark));
     }
diff --git a/src/main/java/com/boying/controller/FileInfo2Controller.java b/src/main/java/com/boying/controller/FileInfo2Controller.java
index 1fceedb..17c56b6 100644
--- a/src/main/java/com/boying/controller/FileInfo2Controller.java
+++ b/src/main/java/com/boying/controller/FileInfo2Controller.java
@@ -3,6 +3,8 @@
 import com.boying.entity.FileInfo;
 import com.boying.service.FileInfoService;
 import io.lettuce.core.dynamic.annotation.Param;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
@@ -14,6 +16,7 @@
 @RestController
 @RequestMapping("ffzf/fileInfo")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/fileInfo" , name = "鏂囦欢涓婁紶鎺ュ彛" )
 public class FileInfo2Controller {
 
     private final FileInfoService fileInfoService;
@@ -23,12 +26,14 @@
      * @Param downloadPath 鏂囦欢璺緞
      */
     @GetMapping("/download/downloadZip")
+    @Operation(summary = "涓嬭浇zip" , description = "涓嬭浇zip" )
     public void downloadZip(@Param("downloadPath") String downloadPath, HttpServletRequest request, HttpServletResponse response) {
         //涓嬭浇鍥剧墖
         String down = fileInfoService.downloadPathFile(downloadPath, request, response);
     }
 
     @PostMapping("/download/downloadZips")
+    @Operation(summary = "涓嬭浇澶氫釜zip" , description = "涓嬭浇澶氫釜zip" )
     public void downloadZips(String fileIds, HttpServletRequest request, HttpServletResponse response) {
         List<FileInfo> fileInfoList = new ArrayList<>();
         if(fileIds.contains(",")){
@@ -46,17 +51,20 @@
         fileInfoService.downForZip(fileInfoList, request, response);
     }
     @PostMapping("/download/downloadPng")
+    @Operation(summary = "涓嬭浇鍥剧墖" , description = "涓嬭浇鍥剧墖" )
     public void downloadPng(String fileId, HttpServletRequest request, HttpServletResponse response) {
         FileInfo byId = fileInfoService.getById(Integer.parseInt(fileId));
         fileInfoService.downloadPng(byId,request,response);
     }
 
     @GetMapping("/showImg")
+    @Operation(summary = "鏍规嵁璺緞棰勮鍥剧墖" , description = "鏍规嵁璺緞棰勮鍥剧墖" )
     public void showImg( String path,HttpServletResponse response) {
         fileInfoService.getFile(path,response);
     }
 
     @GetMapping("/showImgById/{fileId}")
+    @Operation(summary = "鏍规嵁鏂囦欢id棰勮鍥剧墖" , description = "鏍规嵁鏂囦欢id棰勮鍥剧墖" )
     public void showImgById(@PathVariable Long fileId,HttpServletResponse response) {
         fileInfoService.getFileById(fileId,response);
     }
diff --git a/src/main/java/com/boying/controller/FileInfoController.java b/src/main/java/com/boying/controller/FileInfoController.java
index 09514f8..a6caf79 100644
--- a/src/main/java/com/boying/controller/FileInfoController.java
+++ b/src/main/java/com/boying/controller/FileInfoController.java
@@ -6,6 +6,8 @@
 import com.boying.service.FileInfoService;
 import io.lettuce.core.dynamic.annotation.Param;
 import io.swagger.models.auth.In;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
@@ -17,6 +19,7 @@
 @RestController
 @RequestMapping("ffzf/fileinfo")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/fileinfo" , name = "鏂囦欢鎺ュ彛锛堝凡搴熷純锛�" )
 public class FileInfoController {
 
     private final FileInfoService fileInfoService;
@@ -26,12 +29,14 @@
      * @Param downloadPath 鏂囦欢璺緞
      */
     @GetMapping("/download/downloadZip")
+    @Operation(summary = "涓嬭浇zip" , description = "涓嬭浇zip" )
     public void downloadZip(@Param("downloadPath") String downloadPath, HttpServletRequest request, HttpServletResponse response) {
         //涓嬭浇鍥剧墖
         String down = fileInfoService.downloadPathFile(downloadPath, request, response);
     }
 
     @PostMapping("/download/downloadZips")
+    @Operation(summary = "涓嬭浇澶氫釜zip" , description = "涓嬭浇澶氫釜zip" )
     public void downloadZips(String fileIds, HttpServletRequest request, HttpServletResponse response) {
         List<FileInfo> fileInfoList = new ArrayList<>();
         if(fileIds.contains(",")){
@@ -49,17 +54,20 @@
         fileInfoService.downForZip(fileInfoList, request, response);
     }
     @PostMapping("/download/downloadPng")
+    @Operation(summary = "涓嬭浇鍥剧墖" , description = "涓嬭浇鍥剧墖" )
     public void downloadPng(String fileId, HttpServletRequest request, HttpServletResponse response) {
         FileInfo byId = fileInfoService.getById(Integer.parseInt(fileId));
         fileInfoService.downloadPng(byId,request,response);
     }
 
     @GetMapping("/showImg/{filename}")
+    @Operation(summary = "鏍规嵁璺緞棰勮鍥剧墖" , description = "鏍规嵁璺緞棰勮鍥剧墖" )
     public void showImg(@PathVariable String filename,HttpServletResponse response) {
         fileInfoService.getFile(filename,response);
     }
 
     @GetMapping("/showImgById/{fileId}")
+    @Operation(summary = "鏍规嵁鏂囦欢id棰勮鍥剧墖" , description = "鏍规嵁鏂囦欢id棰勮鍥剧墖" )
     public void showImgById(@PathVariable Long fileId,HttpServletResponse response) {
         fileInfoService.getFileById(fileId,response);
     }
diff --git a/src/main/java/com/boying/controller/LedShowController.java b/src/main/java/com/boying/controller/LedShowController.java
index 1089c0c..b26fc70 100644
--- a/src/main/java/com/boying/controller/LedShowController.java
+++ b/src/main/java/com/boying/controller/LedShowController.java
@@ -8,6 +8,7 @@
 import com.boying.service.BarrierService;
 import com.boying.service.LedShowService;
 import com.boying.service.ParkService;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -26,6 +27,7 @@
 @RestController
 @RequestMapping("ledshow")
 @RequiredArgsConstructor
+@Tag(description = "ledshow" , name = "led鏃ュ織锛堝凡搴熷純锛�" )
 public class LedShowController {
 
     private final LedShowService ledShowService;
diff --git a/src/main/java/com/boying/controller/OrderRecordController.java b/src/main/java/com/boying/controller/OrderRecordController.java
index 19fa916..3b426cd 100644
--- a/src/main/java/com/boying/controller/OrderRecordController.java
+++ b/src/main/java/com/boying/controller/OrderRecordController.java
@@ -16,6 +16,8 @@
 import com.boying.service.UserService;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.models.auth.In;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -33,6 +35,7 @@
 @RestController
 @RequestMapping("ffzf/orderrecord")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/orderrecord" , name = "璁㈠崟鎺ュ彛" )
 public class OrderRecordController {
 
     private final OrderRecordService orderRecordService;
@@ -48,6 +51,7 @@
      */
     @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "鍒嗛〉鏌ヨ")
     @PostMapping("/findPage" )
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public R getOrderRecordPage(Page page, OrderRecord orderRecord) {
         QueryWrapper<OrderRecord> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -72,6 +76,7 @@
 
 
     @PostMapping("/getByCarNo")
+    @Operation(summary = "閫氳繃杞︾墝鍙锋湀浠藉垎椤垫煡璇�" , description = "閫氳繃杞︾墝鍙锋湀浠藉垎椤垫煡璇�" )
     public Object getByCarNo(Page page,String carNo,String month,String phone) {
         List<OrderRecordVo> recordVos = new ArrayList<>();
         QueryWrapper<OrderRecord> wrapper = new QueryWrapper<>();
@@ -100,6 +105,7 @@
     }
 
     @PostMapping("/findCountPage")
+    @Operation(summary = "鏌ヨ鍋滆溅鍦鸿鍗曢噾棰濈粺璁�" , description = "鏌ヨ鍋滆溅鍦鸿鍗曢噾棰濈粺璁�" )
     public Object findCountPage(Integer parkId,String startTime,String endTime) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         QueryWrapper<OutPark> wrapper = new QueryWrapper<>();
diff --git a/src/main/java/com/boying/controller/OutParkController.java b/src/main/java/com/boying/controller/OutParkController.java
index 927f18a..45ada89 100644
--- a/src/main/java/com/boying/controller/OutParkController.java
+++ b/src/main/java/com/boying/controller/OutParkController.java
@@ -9,6 +9,8 @@
 import com.boying.entity.*;
 import com.boying.service.*;
 import com.boying.util.DateUtilOther;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -36,6 +38,7 @@
 @RestController
 @RequestMapping("ffzf/outpark")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/outpark" , name = "鍑哄満琛ㄦ帴鍙�" )
 public class OutParkController  {
 
 
@@ -54,6 +57,7 @@
     private StringRedisTemplate redisTemplate;
 
     @PostMapping("/findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page, String  carNo,Long parkId,String  payCode,String date) throws ParseException {
         List<OutPark> list = outParkService.getList(page.getCurrent(), page.getSize(), carNo,parkId,payCode, date);
         System.out.println(list);
@@ -75,11 +79,13 @@
     }
     //getById
     @PostMapping("/getById")
+    @Operation(summary = "鏍规嵁id鏌ヨ" , description = "鏍规嵁id鏌ヨ" )
     public Object getById(Long id) {
         return R.ok(outParkService.getById(id));
     }
     //閬撻椄code
     @PostMapping("/findByBarrierCode")
+    @Operation(summary = "鏍规嵁閬撻椄code鏌ヨ鍑哄満锛堝凡搴熷純锛�" , description = "鏍规嵁閬撻椄code鏌ヨ鍑哄満锛堝凡搴熷純锛�" )
     public Object findById(String code) {
         if(StringUtils.isBlank(code)){
             return R.failed(null,"鍙傛暟閿欒");
@@ -112,6 +118,7 @@
 
     //閬撻椄code
     @PostMapping("/findByBarrierCode2")
+    @Operation(summary = "鏍规嵁閬撻椄code鏌ヨ鍑哄満" , description = "鏍规嵁閬撻椄code鏌ヨ鍑哄満" )
     public Object findById2(String code2) {
         if(StringUtils.isBlank(code2)){
             return R.failed(null,"鍙傛暟閿欒");
@@ -143,12 +150,14 @@
     }
 
     @PostMapping("/delete")
+    @Operation(summary = "鍒犻櫎鍑哄満" , description = "鍒犻櫎鍑哄満" )
     public Object delete(Long id) {
         outParkService.removeById(id);
         return R.ok("鍒犻櫎鎴愬姛");
     }
 
     @PostMapping("enterPark2")
+    @Operation(summary = "鏂板鍏ュ満锛堝簾寮冿級" , description = "鏂板鍏ュ満锛堝簾寮冿級" )
     public Object enterPark(String carNo,Integer barrierId,Integer parkId,String code2) {
         Barrier barrier1 = findBarrier(code2);
         barrierId = barrier1.getId();
@@ -189,6 +198,7 @@
     }
 
     @PostMapping("outPark2")
+    @Operation(summary = "鏂板鍑哄満锛堝簾寮冿級" , description = "鏂板鍑哄満锛堝簾寮冿級" )
     public Object outPark(String carNo,Integer barrierId,Integer parkId,String code2) {
         String s = "寮�濮嬫墽琛屽嚭鍦烘帴鍙�------>\n";
         Barrier barrier1 = findBarrier(code2);
@@ -254,6 +264,7 @@
     }
 
     @GetMapping("/statisticParkOrder/count")
+    @Operation(summary = "缁熻鐢ㄦ埛绠$悊鐨勫仠杞﹀満璁㈠崟鏁伴噺" , description = "缁熻鐢ㄦ埛绠$悊鐨勫仠杞﹀満璁㈠崟鏁伴噺" )
     public R statisticParkOrder(String parkIds) {
         Map<String,Object> resultMap = new HashMap<>();
         if(StringUtils.isNotBlank(parkIds)){
@@ -290,6 +301,7 @@
     }
 
     @GetMapping("/isJS")
+    @Operation(summary = "鍍靛案杞︽煡璇�" , description = "鍍靛案杞︽煡璇�" )
     public Object isJS(String carNo ,Integer parkId) {
         List<EnterPark> byCarNo = enterParkService.findByCarNo(carNo, parkId);
         if(byCarNo.size() > 0){
@@ -300,6 +312,7 @@
     }
 
     @GetMapping("/getByCarAndPark")
+    @Operation(summary = "鏍规嵁杞︾墝鍜屽仠杞﹀満鑾峰彇鏈�鏂板嚭鍦�" , description = "鏍规嵁杞︾墝鍜屽仠杞﹀満鑾峰彇鏈�鏂板嚭鍦�" )
     public Object getByCarAndPark(String carNo ,Integer parkId) {
         QueryWrapper<OutPark> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -348,6 +361,7 @@
     }
 
     @GetMapping("/editEnterPark")
+    @Operation(summary = "淇敼鍏ュ満淇℃伅" , description = "淇敼鍏ュ満淇℃伅" )
     public Object editEnterPark(String carNo ,Integer parkId,String time) {
         QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
         wrapper.lambda()
diff --git a/src/main/java/com/boying/controller/StatisticController.java b/src/main/java/com/boying/controller/StatisticController.java
index 9058863..56873d3 100644
--- a/src/main/java/com/boying/controller/StatisticController.java
+++ b/src/main/java/com/boying/controller/StatisticController.java
@@ -9,6 +9,8 @@
 import com.boying.service.StatisticService;
 import com.boying.service.StreetLogoService;
 import com.boying.service.TicketBlackService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.PageRequest;
@@ -30,6 +32,7 @@
 @RestController
 @RequestMapping("statistic")
 @RequiredArgsConstructor
+@Tag(description = "statistic" , name = "澶у睆缁熻鎺ュ彛" )
 public class StatisticController{
 
     private final StatisticService statisticService;
@@ -40,6 +43,7 @@
 
     //鎸囨尌椤甸潰鏁版嵁
     @PostMapping("/getData1")
+    @Operation(summary = "鏌ヨ鎵�鏈夋硦杞︾粺璁�" , description = "鏌ヨ鎵�鏈夋硦杞︾粺璁�" )
     public Object card1() {
         List<Statistic> all = statisticService.list();
         if(all.size() >0){
@@ -50,6 +54,7 @@
     }
 
     @PostMapping("/getBlackRecord")
+    @Operation(summary = "鏌ヨ鎵�鏈夎繚娉曠粺璁�" , description = "鏌ヨ鎵�鏈夎繚娉曠粺璁�" )
     public Object getList1(Page page) {
         QueryWrapper<TicketBlack> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -58,6 +63,7 @@
     }
 
     @PostMapping("/getLogo")
+    @Operation(summary = "鏌ヨ鎵�鏈夎閬撹繚绔犵粺璁�" , description = "鏌ヨ鎵�鏈夎閬撹繚绔犵粺璁�" )
     public Object getLogo() {
         return R.ok(streetLogoService.list());
     }
diff --git a/src/main/java/com/boying/controller/StreetController.java b/src/main/java/com/boying/controller/StreetController.java
index 27ecd22..7cf1b0a 100644
--- a/src/main/java/com/boying/controller/StreetController.java
+++ b/src/main/java/com/boying/controller/StreetController.java
@@ -11,6 +11,8 @@
 import com.boying.service.StreetReRoadService;
 import com.boying.service.StreetService;
 import com.boying.util.LngLatUtil;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -27,6 +29,7 @@
 @RestController
 @RequestMapping("ffzf/street")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/street" , name = "琛楅亾缁熻" )
 public class StreetController {
 
 
@@ -35,6 +38,7 @@
     private final StreetLogoService streetLogoService;
 
     @PostMapping("/findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page, Street street) {
         QueryWrapper<Street> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -43,6 +47,7 @@
     }
 
     @PostMapping("/save")
+    @Operation(summary = "鏂板琛楅亾" , description = "鏂板琛楅亾" )
     public Object save(Street street) {
         QueryWrapper<Street> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -63,6 +68,7 @@
     }
 
     @PostMapping("/save2")
+    @Operation(summary = "鏂板璺�" , description = "鏂板璺�" )
     public Object save2(StreetReRoad streetReRoad) {
         streetReRoadService.saveOrUpdate(streetReRoad);
         return R.ok();
@@ -70,18 +76,21 @@
 
 
     @PostMapping("/delete")
+    @Operation(summary = "鍒犻櫎琛�" , description = "鍒犻櫎琛�" )
     public Object delete(Long id) {
         streetService.removeById(id);
         return R.ok();
     }
 
     @PostMapping("/delete2")
+    @Operation(summary = "鍒犻櫎璺�" , description = "鍒犻櫎璺�" )
     public Object delete2(Long id) {
         streetReRoadService.removeById(id);
         return R.ok();
     }
 
     @GetMapping("/findById")
+    @Operation(summary = "鏍规嵁id鏌ヨ锛圓PP锛�" , description = "鏍规嵁id鏌ヨ锛圓PP锛�" )
     public Object findById(Long id,int type) {
         if(type==0){
             QueryWrapper<StreetReRoad> roadQueryWrapper = new QueryWrapper<>();
@@ -110,6 +119,7 @@
     }
 
     @GetMapping("/findList")
+    @Operation(summary = "鏌ヨ鎵�鏈夎閬撳拰璺�" , description = "鏌ヨ鎵�鏈夎閬撳拰璺�" )
     public Object findAll() {
         Map<String,Object> map = new HashMap<>();
         QueryWrapper<Street> wrapper = new QueryWrapper<>();
@@ -125,11 +135,13 @@
     }
 
     @GetMapping("/findList2")
+    @Operation(summary = "鏌ヨ鎵�鏈夎閬�" , description = "鏌ヨ鎵�鏈夎閬�" )
     public Object findAll2() {
         return R.ok(streetService.list());
     }
 
     @PostMapping("findLogo")
+    @Operation(summary = "鏌ヨ鎵�鏈夎閬撹繚绔�" , description = "鏌ヨ鎵�鏈夎閬撹繚绔�" )
     public Object findLogo(String lng ,String lat) {
         List<StreetLogo> all = streetLogoService.list();
         List<StreetLogo> all2 = new ArrayList<>();
diff --git a/src/main/java/com/boying/controller/TicketBlackController.java b/src/main/java/com/boying/controller/TicketBlackController.java
index c71476c..4694209 100644
--- a/src/main/java/com/boying/controller/TicketBlackController.java
+++ b/src/main/java/com/boying/controller/TicketBlackController.java
@@ -11,6 +11,8 @@
 import com.boying.util.FileUtil;
 import com.boying.util.NumberToCN;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
@@ -32,6 +34,7 @@
 @RestController
 @RequestMapping("ffzf/ticketblack")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/ticketblack" , name = "榛戝悕鍗曡〃鎺ュ彛" )
 public class TicketBlackController {
 
 
@@ -43,6 +46,7 @@
 
 
     @PostMapping("findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page, TicketBlack ticket){
         QueryWrapper<TicketBlack> wrapper =  new QueryWrapper<>();
         wrapper.lambda()
@@ -53,6 +57,7 @@
     }
 
     @PostMapping("/save")
+    @Operation(summary = "鏂板榛戝悕鍗�" , description = "鏂板榛戝悕鍗�" )
     public Object save(TicketBlack ticket) throws IOException{
         QueryWrapper<TicketBlack> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -74,6 +79,7 @@
      */
     @ApiOperation(value = "閫氳繃id鏌ヨ", notes = "閫氳繃id鏌ヨ")
     @GetMapping("/{id}" )
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
     public R getById(@PathVariable("id" ) Integer id) {
         TicketBlack byId = ticketBlackService.getById(id);
         return R.ok(byId);
@@ -81,6 +87,7 @@
 
 
     @PostMapping("/delete")
+    @Operation(summary = "鍒犻櫎榛戝悕鍗�" , description = "鍒犻櫎榛戝悕鍗�" )
     public Object delete(Long id){
         TicketBlack ticket =ticketBlackService.getById(id);
         if(ticket!=null){
@@ -94,6 +101,7 @@
     }
 
     @PostMapping("/updateById")
+    @Operation(summary = "鏇存柊榛戝悕鍗�" , description = "鏇存柊榛戝悕鍗�" )
     public Object updateById(TicketBlack ticket){
         return R.ok( ticketBlackService.updateById(ticket));
     }
diff --git a/src/main/java/com/boying/controller/UserController.java b/src/main/java/com/boying/controller/UserController.java
index c741915..59b6f2a 100644
--- a/src/main/java/com/boying/controller/UserController.java
+++ b/src/main/java/com/boying/controller/UserController.java
@@ -9,6 +9,8 @@
 import com.boying.service.ParkService;
 import com.boying.service.UserService;
 import com.boying.util.LngLatUtil;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -25,12 +27,14 @@
 @RestController
 @RequestMapping("/ffzf/user")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/user" , name = "鐢ㄦ埛鎺ュ彛" )
 public class UserController{
 
     private final UserService userService;
     private final ParkService parkService;
 
     @PostMapping("/findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(User user, Page page) {
         QueryWrapper<User> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -39,12 +43,14 @@
     }
 
     @PostMapping("/findAll")
+    @Operation(summary = "鏌ヨ鎵�鏈�" , description = "鏌ヨ鎵�鏈�" )
     public Object findAll() {
         return R.ok(userService.list());
     }
 
 
     @PostMapping("/save")
+    @Operation(summary = "鏂板鐢ㄦ埛" , description = "鏂板鐢ㄦ埛" )
     public Object save(User user) {
         if(user.getId()==null){
             user.setPassword(user.getLoginName());
@@ -54,12 +60,14 @@
     }
 
     @PostMapping("/delete")
+    @Operation(summary = "鍒犻櫎鐢ㄦ埛" , description = "鍒犻櫎鐢ㄦ埛" )
     public Object delete(Long id) {
         userService.removeById(id);
         return R.ok("鍒犻櫎鎴愬姛");
     }
 
     @PostMapping("/login")
+    @Operation(summary = "鐧诲綍" , description = "鐧诲綍" )
     public Object login(String loginName,String password,String lng,String lat) {
         if(StringUtils.isBlank(loginName)||StringUtils.isBlank(password)){
             return R.failed("鐢ㄦ埛鍚嶅拰瀵嗙爜蹇呭~");
@@ -90,6 +98,7 @@
     }
 
     @PostMapping("updatePassword")
+    @Operation(summary = "淇敼瀵嗙爜" , description = "淇敼瀵嗙爜" )
     public Object updatePassword(Long userId,String oldPassword,String newPassword) {
         QueryWrapper<User> wrapper = new QueryWrapper<>();
         wrapper.lambda()
diff --git a/src/main/java/com/boying/controller/ViolationTypeController.java b/src/main/java/com/boying/controller/ViolationTypeController.java
index 9db1efc..3d05cce 100644
--- a/src/main/java/com/boying/controller/ViolationTypeController.java
+++ b/src/main/java/com/boying/controller/ViolationTypeController.java
@@ -6,17 +6,21 @@
 import com.boying.entity.ViolationType;
 import com.boying.service.ViolationTypeService;
 import io.swagger.models.auth.In;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("ffzf/violationtype")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/violationtype" , name = "杩濈珷绫诲瀷鎺ュ彛" )
 public class ViolationTypeController {
 
     private final ViolationTypeService violationTypeService;
 
     @PostMapping("/findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page) {
         QueryWrapper<ViolationType> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -25,23 +29,27 @@
     }
 
     @PostMapping("/save")
+    @Operation(summary = "鏂板杩濈珷绫诲瀷" , description = "鏂板杩濈珷绫诲瀷" )
     public Object save(ViolationType violationType) {
         violationTypeService.saveOrUpdate(violationType);
         return R.ok("淇濆瓨鎴愬姛");
     }
 
     @GetMapping("/{id}")
+    @Operation(summary = "鏍规嵁id鏌ヨ" , description = "鏍规嵁id鏌ヨ" )
     public Object getObj(@PathVariable Integer id) {
         return R.ok(violationTypeService.getById(id));
     }
 
     @PostMapping("/delete")
+    @Operation(summary = "鍒犻櫎杩濈珷绫诲瀷" , description = "鍒犻櫎杩濈珷绫诲瀷" )
     public Object delete(Long id) {
         violationTypeService.removeById(id);
         return R.ok("鍒犻櫎鎴愬姛");
     }
 
     @PostMapping("/findAll")
+    @Operation(summary = "鏌ヨ鎵�鏈�" , description = "鏌ヨ鎵�鏈�" )
     public Object findAll() {
         return R.ok(violationTypeService.list());
     }
diff --git a/src/main/java/com/boying/controller/WhiteListController.java b/src/main/java/com/boying/controller/WhiteListController.java
index 31d5e1a..4869fb2 100644
--- a/src/main/java/com/boying/controller/WhiteListController.java
+++ b/src/main/java/com/boying/controller/WhiteListController.java
@@ -8,6 +8,8 @@
 import com.boying.entity.WhiteList;
 import com.boying.service.ParkService;
 import com.boying.service.WhiteListService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,12 +19,14 @@
 @RestController
 @RequestMapping("ffzf/whiteList")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/whiteList" , name = "鐧藉悕鍗曟帴鍙�" )
 public class WhiteListController{
 
     private final WhiteListService whiteListService;
     private final ParkService parkService;
 
     @PostMapping("/findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page, String carNo) {
         QueryWrapper<WhiteList> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -38,6 +42,7 @@
     }
 
     @PostMapping("/findPageNew")
+    @Operation(summary = "鍒嗛〉鏌ヨ锛堟柊锛�" , description = "鍒嗛〉鏌ヨ锛堟柊锛�" )
     public Object findPageNew(Page page, String carNo) {
         QueryWrapper<WhiteList> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -64,12 +69,14 @@
     }
 
     @PostMapping("/save")
+    @Operation(summary = "鏂板鐧藉悕鍗�" , description = "鏂板鐧藉悕鍗�" )
     public Object save(WhiteList whiteList) {
         whiteListService.saveOrUpdate(whiteList);
         return R.ok("淇濆瓨鎴愬姛");
     }
 
     @PostMapping("/delete")
+    @Operation(summary = "鍒犻櫎鐧藉悕鍗�" , description = "鍒犻櫎鐧藉悕鍗�" )
     public Object delete(Long id) {
         whiteListService.removeById(id);
         return R.ok("鍒犻櫎鎴愬姛");
diff --git a/src/main/java/com/boying/controller/car/MqttSample.java b/src/main/java/com/boying/controller/car/MqttSample.java
new file mode 100644
index 0000000..8c05fd7
--- /dev/null
+++ b/src/main/java/com/boying/controller/car/MqttSample.java
@@ -0,0 +1,66 @@
+package com.boying.controller.car;
+
+import org.eclipse.paho.client.mqttv3.*;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName MqttSample.java
+ * @Description TODO
+ * @createTime 2024骞�03鏈�19鏃� 16:56:00
+ */
+public class MqttSample {
+
+    public static void main(String[] args) throws MqttException{
+        MqttSample client = new MqttSample();
+        client.start();
+    }
+    //MQTT瀹夎鐨勬湇鍔″櫒鍦板潃鍜岀鍙e彿锛堟湰鏈虹殑ip锛�
+    public static final String HOST = "tcp://39.96.92.240:9092";
+    //瀹氫箟涓�涓富棰�
+    public static final String TOPIC = "/device/message/up/keep_alive";
+    //瀹氫箟MQTT鐨処D锛屽彲浠ュ湪MQTT鏈嶅姟閰嶇疆涓寚瀹�
+    private static final String clientid = "client-2";
+    private MqttClient client;
+    private MqttConnectOptions options;
+    private String userName = "mqtt";
+    private String passWord = "mqtt";
+
+//    private ScheduledExecutorService scheduler;
+
+    private void start() {
+        try {
+            // host涓轰富鏈哄悕锛宑lientid鍗宠繛鎺QTT鐨勫鎴风ID锛屼竴鑸互鍞竴鏍囪瘑绗﹁〃绀猴紝MemoryPersistence璁剧疆clientid鐨勪繚瀛樺舰寮忥紝榛樿涓轰互鍐呭瓨淇濆瓨
+            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+            // MQTT鐨勮繛鎺ヨ缃�
+            options = new MqttConnectOptions();
+            // 璁剧疆鏄惁娓呯┖session,杩欓噷濡傛灉璁剧疆涓篺alse琛ㄧず鏈嶅姟鍣ㄤ細淇濈暀瀹㈡埛绔殑杩炴帴璁板綍锛岃繖閲岃缃负true琛ㄧず姣忔杩炴帴鍒版湇鍔″櫒閮戒互鏂扮殑韬唤杩炴帴
+            options.setCleanSession(false);
+            // 璁剧疆杩炴帴鐨勭敤鎴峰悕
+            options.setUserName(userName);
+            // 璁剧疆杩炴帴鐨勫瘑鐮�
+            options.setPassword(passWord.toCharArray());
+            // 璁剧疆瓒呮椂鏃堕棿 鍗曚綅涓虹
+            options.setConnectionTimeout(10);
+            // 璁剧疆浼氳瘽蹇冭烦鏃堕棿 鍗曚綅涓虹 鏈嶅姟鍣ㄤ細姣忛殧1.5*20绉掔殑鏃堕棿鍚戝鎴风鍙戦�佷釜娑堟伅鍒ゆ柇瀹㈡埛绔槸鍚﹀湪绾匡紝浣嗚繖涓柟娉曞苟娌℃湁閲嶈繛鐨勬満鍒�
+            options.setKeepAliveInterval(20);
+            // 璁剧疆鍥炶皟,client.setCallback灏卞彲浠ヨ皟鐢≒ushCallback绫讳腑鐨刴essageArrived()鏂规硶
+            client.setCallback(new PushCallback());
+            MqttTopic topic = client.getTopic(TOPIC);
+
+            int qos = 2;
+
+            //setWill鏂规硶锛屽鏋滈」鐩腑闇�瑕佺煡閬撳鎴风鏄惁鎺夌嚎鍙互璋冪敤璇ユ柟娉曘�傝缃渶缁堢鍙g殑閫氱煡娑堟伅
+            options.setWill(topic, "This is yizhu...".getBytes(), qos, true);
+            client.connect(options);
+            //璁㈤槄娑堟伅
+            int[] Qos  = {qos};
+            String[] topic1 = {TOPIC};
+            client.subscribe(topic1, Qos);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/src/main/java/com/boying/controller/car/MqttSample2.java b/src/main/java/com/boying/controller/car/MqttSample2.java
new file mode 100644
index 0000000..4be9c4f
--- /dev/null
+++ b/src/main/java/com/boying/controller/car/MqttSample2.java
@@ -0,0 +1,69 @@
+package com.boying.controller.car;
+
+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.MqttTopic;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName MqttSample.java
+ * @Description TODO
+ * @createTime 2024骞�03鏈�19鏃� 16:56:00
+ */
+public class MqttSample2 {
+
+    public static void main(String[] args) throws MqttException{
+        MqttSample2 client = new MqttSample2();
+        client.start();
+    }
+    //MQTT瀹夎鐨勬湇鍔″櫒鍦板潃鍜岀鍙e彿锛堟湰鏈虹殑ip锛�
+    public static final String HOST = "tcp://39.96.92.240:9092";
+    //瀹氫箟涓�涓富棰�
+    public static final String TOPIC = "/device/message/up/ivs_result";
+    //瀹氫箟MQTT鐨処D锛屽彲浠ュ湪MQTT鏈嶅姟閰嶇疆涓寚瀹�
+    private static final String clientid = "client-3";
+    private MqttClient client;
+    private MqttConnectOptions options;
+    private String userName = "mqtt";
+    private String passWord = "mqtt";
+
+//    private ScheduledExecutorService scheduler;
+
+    private void start() {
+        try {
+            // host涓轰富鏈哄悕锛宑lientid鍗宠繛鎺QTT鐨勫鎴风ID锛屼竴鑸互鍞竴鏍囪瘑绗﹁〃绀猴紝MemoryPersistence璁剧疆clientid鐨勪繚瀛樺舰寮忥紝榛樿涓轰互鍐呭瓨淇濆瓨
+            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+            // MQTT鐨勮繛鎺ヨ缃�
+            options = new MqttConnectOptions();
+            // 璁剧疆鏄惁娓呯┖session,杩欓噷濡傛灉璁剧疆涓篺alse琛ㄧず鏈嶅姟鍣ㄤ細淇濈暀瀹㈡埛绔殑杩炴帴璁板綍锛岃繖閲岃缃负true琛ㄧず姣忔杩炴帴鍒版湇鍔″櫒閮戒互鏂扮殑韬唤杩炴帴
+            options.setCleanSession(false);
+            // 璁剧疆杩炴帴鐨勭敤鎴峰悕
+            options.setUserName(userName);
+            // 璁剧疆杩炴帴鐨勫瘑鐮�
+            options.setPassword(passWord.toCharArray());
+            // 璁剧疆瓒呮椂鏃堕棿 鍗曚綅涓虹
+            options.setConnectionTimeout(10);
+            // 璁剧疆浼氳瘽蹇冭烦鏃堕棿 鍗曚綅涓虹 鏈嶅姟鍣ㄤ細姣忛殧1.5*20绉掔殑鏃堕棿鍚戝鎴风鍙戦�佷釜娑堟伅鍒ゆ柇瀹㈡埛绔槸鍚﹀湪绾匡紝浣嗚繖涓柟娉曞苟娌℃湁閲嶈繛鐨勬満鍒�
+            options.setKeepAliveInterval(20);
+            // 璁剧疆鍥炶皟,client.setCallback灏卞彲浠ヨ皟鐢≒ushCallback绫讳腑鐨刴essageArrived()鏂规硶
+            client.setCallback(new PushCallback());
+            MqttTopic topic = client.getTopic(TOPIC);
+
+            int qos = 2;
+
+            //setWill鏂规硶锛屽鏋滈」鐩腑闇�瑕佺煡閬撳鎴风鏄惁鎺夌嚎鍙互璋冪敤璇ユ柟娉曘�傝缃渶缁堢鍙g殑閫氱煡娑堟伅
+            options.setWill(topic, "This is yizhu...".getBytes(), qos, true);
+            client.connect(options);
+            //璁㈤槄娑堟伅
+            int[] Qos  = {qos};
+            String[] topic1 = {TOPIC};
+            client.subscribe(topic1, Qos);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/src/main/java/com/boying/controller/car/PlateServlet2.java b/src/main/java/com/boying/controller/car/PlateServlet2.java
index 302f3a5..f9f294e 100644
--- a/src/main/java/com/boying/controller/car/PlateServlet2.java
+++ b/src/main/java/com/boying/controller/car/PlateServlet2.java
@@ -16,6 +16,8 @@
 import com.google.gson.JsonParser;
 
 import com.sun.media.jfxmedia.track.Track;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -33,6 +35,7 @@
 import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.util.Base64;
@@ -44,8 +47,9 @@
  * Servlet implementation class PlateServlet
  */
 @Controller
-@RequestMapping("/car2")
+@RequestMapping("/ffzf/car2")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/car3" , name = "娉婅溅娴佺▼鎺ュ彛" )
 public class PlateServlet2 extends HttpServlet {
     private static final long serialVersionUID = 1L;
     @Value("${ffpark.logPath}")
@@ -60,6 +64,7 @@
     private final TicketService ticketService;
     private final CostRuleService costRuleService;
     private final WhiteListService whiteListService;
+    private final OutParkLogService outParkLogService;
     private final String LEDURL = "http://192.168.31.212:9988/LedShow/IGetResultDataAllLine";
 
     /**
@@ -120,20 +125,41 @@
         out.close();
     }
 
+//    protected void easyOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
+//        response.setContentType("text/json");
+//        PrintWriter out = response.getWriter();
+//        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"ok\",\"content\":\"...\",\"is_pay\":\"true\",\"ivs_ioctrl\":{\"delay\":800,\"io\":0,\"value\":2}}}");
+//        out.flush();
+//        out.close();
+//    }
+
     protected void easyOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
         response.setContentType("text/json");
         PrintWriter out = response.getWriter();
-        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"ok\",\"content\":\"...\",\"is_pay\":\"true\"}}");
+        out.println("{\"Response_AlarmInfoPlate\":{\"ivs_ioctrl\":{\"delay\":1000,\"io\":0,\"value\":2}}}");
+        out.flush();
+        out.close();
+    }
+
+    protected void easyNoOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        response.setContentType("text/json");
+        PrintWriter out = response.getWriter();
+        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"error\",\"content\":\"...\",\"is_pay\":\"false\"}}");
         out.flush();
         out.close();
     }
 
     @PostMapping("/status")
+    @Operation(summary = "鐩告満蹇冭烦鎺ュ彛" , description = "鐩告満蹇冭烦鎺ュ彛" )
     public void heart(String serialno,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
         Barrier barrier = barrierService.findByCode(serialno);
-        Park park = parkService.getById(barrier.getParkId());
-        String redis = redisTemplate.opsForValue().get("park_up_" + park.getId());
+        Park park = parkService.getOneById(barrier.getParkId());
+        //Park park = parkService.getById(barrier.getParkId());
+        //String redis = redisTemplate.opsForValue().get("park_up_" + park.getId());
         String redisnum = redisTemplate.opsForValue().get("car_park_" + park.getId());
+        if(StringUtils.isBlank(redisnum)){
+            redisnum = "0";
+        }
         if(barrier!=null){
             if(barrier.getType2()==1){
                 //寰呭紑闂�
@@ -145,9 +171,11 @@
                     int i = Integer.parseInt(redisnum);
                     i--;
                     if(i<0){
+                        String s= "2."+barrier.getCarNo()+"闂告満鎵嬪姩鍚姩锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
                         redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
                         redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
                     }else {
+                        String s= "2."+barrier.getCarNo()+"闂告満鎵嬪姩鍚姩锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
                         redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
                         redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
                     }
@@ -158,31 +186,52 @@
                 barrier.setStatus(0);
                 barrier.setUpdateTime(LocalDateTime.now());
                 barrierService.saveOrUpdate(barrier);
+
+                String jsonValue = JSON.toJSONString(barrier);
+                redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue);
                 easyOpen(request,response);
             }else {
                 //涓嶉渶寮�闂�
-                barrier.setStatus(0);
-                barrier.setUpdateTime(LocalDateTime.now());
-                barrierService.saveOrUpdate(barrier);
-                OutPark outPark = outParkService.count4(barrier.getId());
-                if(outPark!=null){
-                    if(barrier.getType() == 0){
-                        int i = Integer.parseInt(redisnum);
-                        i--;
-                        if(i<0){
-                            redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
-                            redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
-                        }else {
-                            redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
-                            redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+                LocalDateTime now = LocalDateTime.now();
+                LocalDateTime updateTime = barrier.getUpdateTime();
+                Duration duration = Duration.between(updateTime,now);
+                long minutes = duration.toMinutes();
+                if(minutes>=2){
+                    barrier.setStatus(0);
+                    barrier.setUpdateTime(LocalDateTime.now());
+                    barrierService.saveOrUpdate(barrier);
+                }
+
+                String jsonValue = JSON.toJSONString(barrier);
+                redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue);
+                if(barrier.getType() == 0){
+                    OutPark outPark = outParkService.count4(barrier.getId());
+                    if(outPark!=null){
+                        if(barrier.getType() == 0){
+                            int i = Integer.parseInt(redisnum);
+                            i--;
+                            if(i<0){
+                                String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+                                redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
+                                redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+                            }else {
+                                String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+                                redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
+                                redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+                            }
                         }
+                        outPark.setStatus2(1);
+                        outParkService.saveOrUpdate(outPark);
+                        easyOpen(request,response);
+                        OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
+                        byOutPark.setOpenTime(LocalDateTime.now());
+                        outParkLogService.saveOrUpdate(byOutPark);
+                        enterParkService.deleteByCarNo(outPark.getCarNo(), barrier.getParkId());
+                        redisTemplate.delete("outPark-"+outPark.getBarrierId());
                     }
-                    outPark.setStatus2(1);
-                    outParkService.saveOrUpdate(outPark);
-                    easyOpen(request,response);
                 }
                 if(barrier.getType() == 1){
-                    boolean in = barrierService.getDateDifIn(barrier.getId());
+                    boolean in = barrierService.getDateDifIn(park.getId());
                     if(in){
                         inLedShowDefault(park.getId(),request,response);
                     }
@@ -194,12 +243,15 @@
                 }
             }
 
+        }else {
+            easyNoOpen(request,response);
         }
     }
     /**
      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
     @PostMapping("/PlateServlet")
+    @Operation(summary = "杞﹁締璇嗗埆鎺ュ彛" , description = "杞﹁締璇嗗埆鎺ュ彛" )
     protected void info(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         String s= "";
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
@@ -261,29 +313,31 @@
                     s+="鏌ヨ閬撻椄涓虹┖\n";
                 }else{
                     if(barrier.getType()==0){
+                        easyOpen(request,response);
                         //noOpen(request,response);
-                        outPark(license, barrier.getId(), barrier.getParkId(),request,response);
-                        s+=license+"-淇濆瓨鍑哄満璁板綍\n";
+//                        outPark(license, barrier.getId(), barrier.getParkId(),request,response);
+//                        s+=license+"-淇濆瓨鍑哄満璁板綍\n";
                     }else{
-                        String num = redisTemplate.opsForValue().get("car_park_" +  barrier.getParkId());
-                        if(StringUtils.isBlank(num)){
-                            num = "0";
-                            redisTemplate.opsForValue().set("car_park_" + barrier.getParkId(),num,30, TimeUnit.DAYS);
-                            redisTemplate.opsForValue().set("park_up_" + barrier.getParkId(),"true",30, TimeUnit.DAYS);
-                        }
-                        Park byId = parkService.getById(barrier.getParkId());
-                        if(Integer.parseInt(num) >= byId.getNum() ){
-                            //led鏄剧ず
-                            inLedFullShow(code, license,barrier.getParkId(),request,response);
-                        }else {
-                            //led鏄剧ず
-                            inLedShow(code, license,barrier.getParkId(),request,response);
-                            enterPark(license,barrier.getId(),barrier.getParkId());
-                            s+=license+"-淇濆瓨鍏ュ満璁板綍\n";
-                        }
+                        easyOpen(request,response);
+//                        String num = redisTemplate.opsForValue().get("car_park_" +  barrier.getParkId());
+//                        if(StringUtils.isBlank(num)){
+//                            num = "0";
+//                            redisTemplate.opsForValue().set("car_park_" + barrier.getParkId(),num,30, TimeUnit.DAYS);
+//                            redisTemplate.opsForValue().set("park_up_" + barrier.getParkId(),"true",30, TimeUnit.DAYS);
+//                        }
+//                        Park byId = parkService.getById(barrier.getParkId());
+//                        if(Integer.parseInt(num) >= byId.getNum() ){
+//                            //led鏄剧ず
+//                            inLedFullShow(code, license,barrier.getParkId(),request,response);
+//                        }else {
+//                            //led鏄剧ず
+//                            inLedShow(code, license,barrier.getParkId(),request,response);
+//                            enterPark(license,barrier.getId(),barrier.getParkId());
+//                            s+=license+"-淇濆瓨鍏ュ満璁板綍\n";
+//                        }
                     }
                 }
-                writeTxt(s);
+               // writeTxt(s);
             }while(false);
         }
         catch (Exception e) {
@@ -346,6 +400,8 @@
             enterPark.setStatus(1);//鍙戠幇鏈夎繚绔�
         }
         enterParkService.saveOrUpdate(enterPark);
+        String jsonValue = JSON.toJSONString(enterPark);
+        redisTemplate.opsForValue().set("enterPark_dif_"+ parkId, jsonValue);
 
         Barrier barrier = barrierService.getById(barrierId);
         barrier.setType2(1);
@@ -403,6 +459,8 @@
                     byCarNoAndBarrierId.setStatus(1);
                     byCarNoAndBarrierId.setStatus2(1);
                     outParkService.saveOrUpdate(byCarNoAndBarrierId);
+                    String jsonValue = JSON.toJSONString(byCarNoAndBarrierId);
+                    redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
                     return 0.0;
                 }else{
                     if(w.getParkIds()!=null){
@@ -417,6 +475,8 @@
                                     byCarNoAndBarrierId.setStatus(1);
                                     byCarNoAndBarrierId.setStatus2(1);
                                     outParkService.saveOrUpdate(byCarNoAndBarrierId);
+                                    String jsonValue = JSON.toJSONString(byCarNoAndBarrierId);
+                                    redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
                                     return 0.0;
                                 }
                             }
@@ -427,10 +487,14 @@
         }
         if(outPark.getPrice()==0&&outPark.getStatus3()==0){
             System.out.println(outPark.getCarNo()+"璇ヨ溅涓嶉渶瑕佺即璐�");
+            String jsonValue = JSON.toJSONString(outPark);
+            redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
             outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0);
         }else {
             //闇�瑕佺即璐规垨鑰呮湁杩濈珷
             System.out.println(outPark.getCarNo()+"璇ヨ溅闇�瑕佺即璐�"+outPark.getPrice());
+            String jsonValue = JSON.toJSONString(outPark);
+            redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
             outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1);
         }
         barrierService.saveOrUpdate(barrier);
diff --git a/src/main/java/com/boying/controller/car/PushCallback.java b/src/main/java/com/boying/controller/car/PushCallback.java
new file mode 100644
index 0000000..412adbe
--- /dev/null
+++ b/src/main/java/com/boying/controller/car/PushCallback.java
@@ -0,0 +1,44 @@
+package com.boying.controller.car;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName PushCallback.java
+ * @Description TODO
+ * @createTime 2024骞�03鏈�20鏃� 15:42:00
+ */
+import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
+import org.eclipse.paho.client.mqttv3.MqttCallback;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+
+/**
+ * 蹇呴』瀹炵幇MqttCallback鐨勬帴鍙e苟瀹炵幇瀵瑰簲鐨勭浉鍏虫帴鍙f柟娉旵allBack 绫诲皢瀹炵幇 MqttCallBack銆�
+ * 姣忎釜瀹㈡埛鏈烘爣璇嗛兘闇�瑕佷竴涓洖璋冨疄渚嬨�傚湪姝ょず渚嬩腑锛屾瀯閫犲嚱鏁颁紶閫掑鎴锋満鏍囪瘑浠ュ彟瀛樹负瀹炰緥鏁版嵁銆�
+ * 鍦ㄥ洖璋冧腑锛屽皢瀹冪敤鏉ユ爣璇嗗凡缁忓惎鍔ㄤ簡璇ュ洖璋冪殑鍝釜瀹炰緥銆�
+ * 蹇呴』鍦ㄥ洖璋冪被涓疄鐜颁笁涓柟娉曪細
+ *  public void messageArrived(MqttTopic topic, MqttMessage message)鎺ユ敹宸茬粡棰勮鐨勫彂甯冦��
+ *  public void connectionLost(Throwable cause)鍦ㄦ柇寮�杩炴帴鏃惰皟鐢ㄣ��
+ *  public void deliveryComplete(MqttDeliveryToken token))
+ *  鎺ユ敹鍒板凡缁忓彂甯冪殑 QoS 1 鎴� QoS 2 娑堟伅鐨勪紶閫掍护鐗屾椂璋冪敤銆�
+ *  鐢� MqttClient.connect 婵�娲绘鍥炶皟銆�
+ */
+public class PushCallback implements MqttCallback{
+
+    @Override
+    public void connectionLost(Throwable cause) {
+        // 杩炴帴涓㈠け鍚庯紝涓�鑸湪杩欓噷闈㈣繘琛岄噸杩�
+        System.out.println("杩炴帴鏂紑鈥︹�︼紙鍙互鍋氶噸杩烇級");
+    }
+
+    @Override
+    public void deliveryComplete(IMqttDeliveryToken token) {
+        System.out.println("deliveryComplete---------" + token.isComplete());
+    }
+
+    @Override
+    public void messageArrived(String topic, MqttMessage message) throws Exception {
+        // subscribe鍚庡緱鍒扮殑娑堟伅浼氭墽琛屽埌杩欓噷闈�
+        System.out.println("鎺ユ敹娑堟伅涓婚:" + topic + "  鎺ユ敹娑堟伅Qos:" + message.getQos() + "鎺ユ敹娑堟伅鍐呭:" + new String(message.getPayload()));
+
+    }
+}
diff --git a/src/main/java/com/boying/controller/car/ServerMQTT.java b/src/main/java/com/boying/controller/car/ServerMQTT.java
new file mode 100644
index 0000000..e2254a9
--- /dev/null
+++ b/src/main/java/com/boying/controller/car/ServerMQTT.java
@@ -0,0 +1,93 @@
+package com.boying.controller.car;
+
+import org.eclipse.paho.client.mqttv3.*;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName ServerMQTT.java
+ * @Description TODO
+ * @createTime 2024骞�03鏈�20鏃� 15:43:00
+ */
+public class ServerMQTT {
+
+    public static void main(String[] args) throws MqttException {
+        ServerMQTT server = new ServerMQTT();
+
+        server.message = new MqttMessage();
+        server.message.setQos(2);
+        server.message.setRetained(true);
+        server.message.setPayload("ServerMQTT".getBytes());
+        server.publish(server.topic , server.message);
+        System.out.println(server.message.isRetained() + "------ratained鐘舵��");
+    }
+
+    //MQTT瀹夎鐨勬湇鍔″櫒鍦板潃鍜岀鍙e彿
+    public static final String HOST = "tcp://39.96.92.240:9092";
+    //瀹氫箟涓�涓富棰�
+    public static final String TOPIC = "/device/message/up/ivs_result";
+    //瀹氫箟MQTT鐨処D锛屽彲浠ュ湪MQTT鏈嶅姟閰嶇疆涓寚瀹�
+    private static final String clientid = "client-1";
+
+    private MqttClient client;
+    private MqttTopic topic;
+    private String userName = "mqtt";
+    private String passWord = "mqtt";
+    private MqttMessage message;
+
+    /**
+     * g鏋勯�犲嚱鏁�
+     */
+    public ServerMQTT() throws MqttException {
+        // MemoryPersistence璁剧疆clientid鐨勪繚瀛樺舰寮忥紝榛樿涓轰互鍐呭瓨淇濆瓨
+        client = new MqttClient(HOST, clientid, new MemoryPersistence());
+        connect();
+    }
+
+    /**
+     * l杩炴帴鏈嶅姟鍣�
+     */
+    private void connect() {
+        MqttConnectOptions options = new MqttConnectOptions();
+        options.setCleanSession(false);
+        options.setUserName(userName);
+        options.setPassword(passWord.toCharArray());
+        // 璁剧疆瓒呮椂鏃堕棿
+        options.setConnectionTimeout(10);
+        // 璁剧疆浼氳瘽蹇冭烦鏃堕棿
+        options.setKeepAliveInterval(20);
+        try {
+            client.setCallback(new MqttCallback() {
+                @Override
+                public void connectionLost(Throwable cause) {
+                    // 杩炴帴涓㈠け鍚庯紝涓�鑸湪杩欓噷闈㈣繘琛岄噸杩�
+                    System.out.println("杩炴帴鏂紑鈥︹�︼紙鍙互鍋氶噸杩烇級");
+                }
+                @Override
+                public void deliveryComplete(IMqttDeliveryToken token) {
+                    System.out.println("deliveryComplete---------" + token.isComplete());
+                }
+                @Override
+                public void messageArrived(String topic, MqttMessage message) throws Exception {
+                    // subscribe鍚庡緱鍒扮殑娑堟伅浼氭墽琛屽埌杩欓噷闈�
+                    System.out.println("鎺ユ敹娑堟伅涓婚:" + topic + "  鎺ユ敹娑堟伅Qos:" + message.getQos() + "鎺ユ敹娑堟伅鍐呭:" + new String(message.getPayload()));
+                }
+            });
+            client.connect(options);
+
+            topic = client.getTopic(TOPIC);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * t鎺ㄩ�佹秷鎭�
+     */
+    public void publish(MqttTopic topic , MqttMessage message) throws MqttPersistenceException, MqttException {
+        MqttDeliveryToken token = topic.publish(message);
+        token.waitForCompletion();
+        System.out.println("message is published completely! " + token.isComplete());
+    }
+}
diff --git a/src/main/java/com/boying/controller/phone/NoticeController.java b/src/main/java/com/boying/controller/phone/NoticeController.java
index 6e6aec6..c23b309 100644
--- a/src/main/java/com/boying/controller/phone/NoticeController.java
+++ b/src/main/java/com/boying/controller/phone/NoticeController.java
@@ -7,6 +7,8 @@
 import com.boying.entity.Park;
 import com.boying.service.EnterParkService;
 import com.boying.service.ParkService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,6 +19,7 @@
 @RestController
 @RequestMapping("ffzf/notice")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/notice" , name = "杩濇硶閫氱煡鎺ュ彛" )
 public class NoticeController {
 
     private final EnterParkService enterParkService;
@@ -24,6 +27,7 @@
 
     //鍋滆溅鍦哄唴鏈夎繚娉曠殑杞﹁締
     @PostMapping("/illegalCar")
+    @Operation(summary = "鏍规嵁id鏌ヨ鍋滆溅鍦哄唴鎵�鏈夎繚娉曡溅杈�" , description = "鏍规嵁id鏌ヨ鍋滆溅鍦哄唴鎵�鏈夎繚娉曡溅杈�" )
     public Object illegalCar(Long parkId){
         QueryWrapper<EnterPark> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -35,6 +39,7 @@
 
     //鍋滆溅鍦哄唴鏈夎繚娉曠殑杞﹁締
     @PostMapping("/illegalCar2")
+    @Operation(summary = "鏌ヨ鎵�鏈夊仠杞﹀満鍐呮墍鏈夎繚娉曡溅杈�" , description = "鏌ヨ鎵�鏈夊仠杞﹀満鍐呮墍鏈夎繚娉曡溅杈�" )
     public Object illegalCar2(){
         QueryWrapper<EnterPark> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -48,8 +53,8 @@
         return R.ok(all);
     }
 
-    //鍋滆溅鍦哄唴鐨勮溅杈� 鏍规嵁鐘舵�佹煡璇�
     @PostMapping("/enterPark")
+    @Operation(summary = "鍋滆溅鍦哄唴鐨勮溅杈� 鏍规嵁鐘舵�佹煡璇�" , description = "鍋滆溅鍦哄唴鐨勮溅杈� 鏍规嵁鐘舵�佹煡璇�" )
     public Object enterPark(Integer status, Page page){
         if(status==null){
             Page page1 = enterParkService.page(page);
diff --git a/src/main/java/com/boying/controller/phone/PayController.java b/src/main/java/com/boying/controller/phone/PayController.java
index c3322aa..c69da84 100644
--- a/src/main/java/com/boying/controller/phone/PayController.java
+++ b/src/main/java/com/boying/controller/phone/PayController.java
@@ -15,6 +15,8 @@
 import com.boying.service.*;
 import com.boying.util.HTTPEntityUtil;
 import com.google.gson.Gson;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -45,6 +47,7 @@
 @RestController
 @RequestMapping("ffzf/ffPay")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/ffPay" , name = "瀵规帴璐㈡斂鏀粯鎺ュ彛" )
 public class PayController extends BaseController {
 
     private final OrderRecordService orderRecordService;
@@ -67,6 +70,7 @@
 
     //鐢熸垚鐢靛瓙缂存鐮�
     @PostMapping("zhiFa")
+    @Operation(summary = "鎵ф硶鐢熸垚缂存鐮�" , description = "鎵ф硶鐢熸垚缂存鐮�" )
     public Object zhiFa(Long id){
         Ticket ticket = ticketService.getById(id);
         if(ticket.getPayStatus()==1){
@@ -168,6 +172,7 @@
 
     //鏀粯鎺ュ彛閫氱煡
     @PostMapping("result")
+    @Operation(summary = "缂磋垂缁撴灉閫氱煡" , description = "缂磋垂缁撴灉閫氱煡" )
     public String result(HttpServletRequest request, String payKey, String payerTypeCode, String payerNum, String payCode, Double amt, String status, String errorInfo, String sign, String signType) throws Exception{
         try {
            // updateOrderRecord(payCode,status);
@@ -179,6 +184,7 @@
 
     //鐢熸垚鐢靛瓙缂存鐮�
     @PostMapping("park2")
+    @Operation(summary = "璐㈡斂缂磋垂鏇存柊鐢熸垚缂存鐮�" , description = "璐㈡斂缂磋垂鏇存柊鐢熸垚缂存鐮�" )
     public Object park2(Long id){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
         String logs = sdf.format(new Date())+"寮�濮嬫壂鐮佺即璐�------銆媆n";
@@ -277,6 +283,7 @@
      * 缂存涔�
      */
     @PostMapping("park")
+    @Operation(summary = "瀵规帴閭偍鐢熸垚缂存涔�" , description = "瀵规帴閭偍鐢熸垚缂存涔�" )
     public Object park(Long id){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
         String logs = sdf.format(new Date())+"寮�濮嬫壂鐮佺即璐�------銆媆n";
@@ -389,6 +396,7 @@
      * 鑾峰彇鎵ф硶id
      */
     @PostMapping("getZhifaId")
+    @Operation(summary = "鏇存柊澶у巺缂存鐮�" , description = "鏇存柊澶у巺缂存鐮�" )
     public Object getZhifaId(){
         QueryWrapper<NowPayOrder> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -407,6 +415,7 @@
      * 缂存涔�
      */
     @PostMapping("zhifa")
+    @Operation(summary = "鎵ф硶缂磋垂锛堟柊锛�" , description = "鎵ф硶缂磋垂锛堟柊锛�" )
     public Object zhifa(Long id){
         System.out.println(id+"寮�濮嬬即璐�");
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
diff --git a/src/main/java/com/boying/controller/phone/TicketController.java b/src/main/java/com/boying/controller/phone/TicketController.java
index 9c4c681..6e17f23 100644
--- a/src/main/java/com/boying/controller/phone/TicketController.java
+++ b/src/main/java/com/boying/controller/phone/TicketController.java
@@ -12,6 +12,8 @@
 import com.boying.util.FileUtil;
 import com.boying.util.NumberToCN;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
@@ -38,6 +40,7 @@
 @RestController
 @RequestMapping("ffzf/ticket")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/ticket" , name = "鎵嬫寔寮�缃氬崟鎺ュ彛" )
 public class TicketController{
 
 
@@ -65,6 +68,7 @@
 
     //鍥剧墖鍥炴樉
     @RequestMapping(value = "/showImg", method = RequestMethod.GET)
+    @Operation(summary = "鍥剧墖鍥炴樉" , description = "鍥剧墖鍥炴樉" )
     public void getAwardAsByteArray(HttpServletResponse response, HttpServletRequest request) throws IOException {
         String result = request.getParameter("result");
         InputStream in = null;
@@ -81,6 +85,7 @@
     }
 
     @PostMapping("findPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page, Ticket ticket){
         QueryWrapper<Ticket> wrapper =  new QueryWrapper<>();
         wrapper.lambda()
@@ -94,6 +99,7 @@
     }
 
     @PostMapping("/save")
+    @Operation(summary = "淇濆瓨缃氬崟" , description = "淇濆瓨缃氬崟" )
     public Object save(Ticket ticket,HttpServletRequest request) throws IOException{
         String imgStr = "";
         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
@@ -164,6 +170,7 @@
     }
 
     @PostMapping("/save2")
+    @Operation(summary = "淇濆瓨缃氬崟锛堝簾寮冿級" , description = "淇濆瓨缃氬崟锛堝簾寮冿級" )
     public Object save2(Ticket ticket) throws IOException{
         if(ticket.getUserId()!=null){
             User user = userService.getById(ticket.getUserId());
@@ -194,6 +201,7 @@
      */
     @ApiOperation(value = "閫氳繃id鏌ヨ", notes = "閫氳繃id鏌ヨ")
     @GetMapping("/{id}" )
+    @Operation(summary = "閫氳繃id鏌ヨ缃氬崟" , description = "閫氳繃id鏌ヨ缃氬崟" )
     public R getById(@PathVariable("id" ) Integer id) {
         Ticket byId = ticketService.getById(id);
         byId.setContent(violationTypeService.getById(byId.getViolationTypeId()).getContent());
@@ -217,6 +225,7 @@
 
 
     @PostMapping("/delete")
+    @Operation(summary = "鍒犻櫎缃氬崟" , description = "鍒犻櫎缃氬崟" )
     public Object delete(Long id){
         Ticket ticket =ticketService.getById(id);
         ticket.setStatus(3);
@@ -234,6 +243,7 @@
     }
 
     @PostMapping("/updateById")
+    @Operation(summary = "鏇存柊缃氬崟鐘舵��" , description = "鏇存柊缃氬崟鐘舵��" )
     public Object updateById(Ticket ticket){
         if(ticket.getMoney() >0){
             BigDecimal numberOfMoney = new BigDecimal(ticket.getMoney()+"");
@@ -264,6 +274,7 @@
 
     //涓庢墽娉曞鎺�
     @GetMapping("/getResult")
+    @Operation(summary = "涓庢墽娉曞钩鍙板鎺ワ紝鑾峰彇绛惧瓧缁撴灉" , description = "涓庢墽娉曞钩鍙板鎺ワ紝鑾峰彇绛惧瓧缁撴灉" )
     public Object getResult(Ticket ticket){
         ticketService.updateById(ticket);
         return R.ok();
@@ -302,6 +313,7 @@
     }
 
     @PostMapping("/getZhiFa")
+    @Operation(summary = "鏍规嵁鐘舵�佹煡璇㈢綒鍗�" , description = "鏍规嵁鐘舵�佹煡璇㈢綒鍗�" )
     public Object getZhiFa(Integer status,Page page){
 
         QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
@@ -313,6 +325,7 @@
     }
 
     @PostMapping("/getCar")
+    @Operation(summary = "鑾峰彇榛戝悕鍗曡溅杈�" , description = "鑾峰彇榛戝悕鍗曡溅杈�" )
     public Object getCar(String carNo,Page page,int type){
         QueryWrapper<TicketBlack> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -323,6 +336,7 @@
     }
 
     @PostMapping("/getCarList")
+    @Operation(summary = "鏍规嵁杞︾墝鍒嗛〉鑾峰彇缃氬崟" , description = "鏍规嵁杞︾墝鍒嗛〉鑾峰彇缃氬崟" )
     public Object getCarList(String carNo,Page page){
         QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -333,6 +347,7 @@
 
 
     @PostMapping("/noFound")
+    @Operation(summary = "鏇存柊缃氬崟鐘舵�侊紝澧炲姞澶囨敞" , description = "鏇存柊缃氬崟鐘舵�侊紝澧炲姞澶囨敞" )
     public Object noFound(Long ticketId,String remark){
         Ticket ticket = ticketService.getById(ticketId);
         ticket.setStatus(2);
@@ -342,6 +357,7 @@
     }
 
     @PostMapping("/getStatisticByYear")
+    @Operation(summary = "缁熻骞村害缃氬崟" , description = "缁熻骞村害缃氬崟" )
     public Object getStatistic(int year){
         Map<String,Object> map = new HashMap<>();
         List<Object> list = new ArrayList<>();
@@ -378,6 +394,7 @@
     }
 
     @PostMapping("/getOrderList")
+    @Operation(summary = "鏍规嵁骞村拰鏈堢粺璁$綒鍗�" , description = "鏍规嵁骞村拰鏈堢粺璁$綒鍗�" )
     public Object getOrderList(int year,int month){
 
         Date yearFirst = DateUtilOther.getFirstDayOfMonth(year,month);
@@ -391,6 +408,7 @@
     }
 
     @PostMapping("findById")
+    @Operation(summary = "鏍规嵁id鏌ヨ" , description = "鏍规嵁id鏌ヨ" )
     public Object findById(Long id){
         Ticket ticket = ticketService.getById(id);
         if(ticket.getViolationTypeId()!=null){
@@ -408,6 +426,7 @@
      */
     @ApiOperation(value = "鎵嬪姩缂磋垂", notes = "鎵嬪姩缂磋垂")
     @PostMapping("/jiaofei" )
+    @Operation(summary = "鎵嬪姩缂磋垂鏇存柊浜岀淮鐮�" , description = "鎵嬪姩缂磋垂鏇存柊浜岀淮鐮�" )
     public R jiaofei(Integer id) {
         Ticket byId = ticketService.getById(id);
         if(byId.getPayStatus() == 1){
@@ -431,6 +450,7 @@
      */
     @ApiOperation(value = "娴嬭瘯瀵规帴", notes = "娴嬭瘯瀵规帴")
     @GetMapping("/test" )
+    @Operation(summary = "娴嬭瘯瀵规帴鎵ф硶骞冲彴" , description = "娴嬭瘯瀵规帴鎵ф硶骞冲彴" )
     public R test() {
         Ticket byId = ticketService.getById(13);
         byId = ticketService.getNumber(byId);
diff --git a/src/main/java/com/boying/controller/phone/UpdateAppController.java b/src/main/java/com/boying/controller/phone/UpdateAppController.java
index 21a6bc4..de14b69 100644
--- a/src/main/java/com/boying/controller/phone/UpdateAppController.java
+++ b/src/main/java/com/boying/controller/phone/UpdateAppController.java
@@ -3,6 +3,8 @@
 import com.boying.common.R;
 import com.boying.entity.UpdateApp;
 import com.boying.service.UpdateAppService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -13,11 +15,13 @@
 @RestController
 @RequestMapping("ffzf/updateApp")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/updateApp" , name = "app鏇存柊鎺ュ彛" )
 public class UpdateAppController{
 
     private final UpdateAppService updateAppService;
 
     @PostMapping("/getUpdateApp")
+    @Operation(summary = "鑾峰彇鏈�鏂癮pp鐗堟湰" , description = "鑾峰彇鏈�鏂癮pp鐗堟湰" )
     public Object getUpdateApp(){
         List<UpdateApp> all = updateAppService.list();
         if(all.size()==0){
diff --git a/src/main/java/com/boying/controller/phone/YCPayController.java b/src/main/java/com/boying/controller/phone/YCPayController.java
index c556217..9f54dde 100644
--- a/src/main/java/com/boying/controller/phone/YCPayController.java
+++ b/src/main/java/com/boying/controller/phone/YCPayController.java
@@ -13,6 +13,8 @@
 import com.boying.service.*;
 import com.boying.util.DateUtilOther;
 import com.google.gson.Gson;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.ResponseEntity;
@@ -46,6 +48,7 @@
 @RestController
 @RequestMapping("/ffzf/api")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/api" , name = "閭偍/閭㈠彴閾惰 瀵规帴鏀粯鎺ュ彛" )
 public class YCPayController {
     private final OutParkService outParkService;
     private final PayLogService payLogService;
@@ -68,6 +71,7 @@
      * @return
      */
     @GetMapping("/getByQueryId")
+    @Operation(summary = "鏍规嵁鍑哄満id鑾峰彇鍑哄満鏁版嵁" , description = "鏍规嵁鍑哄満id鑾峰彇鍑哄満鏁版嵁" )
     public Object getByQueryId(Long queryId){
         if(queryId == null){
             return R.failed("鍙傛暟涓虹┖");
@@ -83,6 +87,7 @@
      * 缂存涔�
      */
     @PostMapping("park")
+    @Operation(summary = "閭偍鐢宠缂存涔�" , description = "閭偍鐢宠缂存涔�" )
     public Object park(Long id){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
         OutPark outPark =  outParkService.getById(id);
@@ -152,6 +157,7 @@
      * @return
      */
     @PostMapping("parkJudg")
+    @Operation(summary = "鍒ゆ柇鏀粯绔槸鍚﹀凡缁忕敵璇疯繃鏀粯" , description = "鍒ゆ柇鏀粯绔槸鍚﹀凡缁忕敵璇疯繃鏀粯" )
     public Object parkJudg(Long id){
         if(id == null){
             return R.failed("鏈壘鍒版暟鎹紝璇风◢鍚庨噸鏂扮偣鍑�");
@@ -182,6 +188,7 @@
      * 鍒ゆ柇鏄惁缂磋垂
      */
     @PostMapping("parkXT")
+    @Operation(summary = "閭㈠彴閾惰鐢宠缂磋垂" , description = "閭㈠彴閾惰鐢宠缂磋垂" )
     public Object parkXT(Long id){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
         OutPark outPark =  outParkService.getById(id);
@@ -256,6 +263,7 @@
      * 闃块噷缂磋垂
      */
     @PostMapping("payByAli")
+    @Operation(summary = "閭㈠彴閾惰鏀粯瀹濈即璐�" , description = "閭㈠彴閾惰鏀粯瀹濈即璐�" )
     public Object payByAli(Long id){
         OutPark outPark =  outParkService.getById(id);
         String xtyhpay = systemConfigProperties.getXTYHPAY();
@@ -331,6 +339,7 @@
      * 鑾峰彇寰俊openid
      */
     @PostMapping("getOpenId")
+    @Operation(summary = "閭㈠彴閾惰鑾峰彇寰俊鐢ㄦ埛openid" , description = "閭㈠彴閾惰鑾峰彇寰俊鐢ㄦ埛openid" )
     public Object park(Long id,String code){
         OutPark outPark =  outParkService.getById(id);
         String openIdByCode = wxService.getOpenIdByCode(code);
@@ -342,6 +351,7 @@
      * 寰俊缂磋垂
      */
     @PostMapping("payByWX")
+    @Operation(summary = "閭㈠彴閾惰寰俊鏀粯" , description = "閭㈠彴閾惰寰俊鏀粯" )
     public Object payByWX(Long id,String openId){
         System.out.println("寮�濮嬫敮浠�");
         OutPark outPark =  outParkService.getById(id);
@@ -434,6 +444,7 @@
      * @return
      */
     @GetMapping("/result")
+    @Operation(summary = "閭偍鑾峰緱鏀粯鍥炶皟" , description = "閭偍鑾峰緱鏀粯鍥炶皟" )
     public Object result(Long queryId,int success,int msg){
         OutPark byId = outParkService.getById(queryId);
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
@@ -468,6 +479,7 @@
      * @return
      */
     @PostMapping("/getResult")
+    @Operation(summary = "閭㈠彴閾惰鏀粯鍥炶皟鎺ュ彛" , description = "閭㈠彴閾惰鏀粯鍥炶皟鎺ュ彛" )
     public Object getResult(HttpServletRequest request){
         System.out.println("getResult鏀跺埌璁块棶");
         String respCode = request.getParameter("respCode");
@@ -522,6 +534,7 @@
      * @return
      */
     @PostMapping ("/checkbill")
+    @Operation(summary = "閭偍瀵硅处鎺ュ彛" , description = "閭偍瀵硅处鎺ュ彛" )
     public Object checkbill(@RequestBody Map params){
         String checkDate = (String) params.get("checkDate");
         String tranDate = (String) params.get("tranDate");
@@ -543,6 +556,7 @@
      * @return
      */
     @PostMapping ("/checkbillXTYH")
+    @Operation(summary = "閭㈠彴閾惰瀵硅处鎺ュ彛" , description = "閭㈠彴閾惰瀵硅处鎺ュ彛" )
     public Object checkbillXTYH(String date){
         String xtyhpay = systemConfigProperties.getXTYHPAY();
         Map<String,Object> map = new HashMap<>();
@@ -587,6 +601,7 @@
      * @return
      */
     @PostMapping ("/searchPayStatus")
+    @Operation(summary = "浜ゆ槗鐘舵�佹煡璇�" , description = "浜ゆ槗鐘舵�佹煡璇�" )
     public Object searchPayStatus(String txnOrderId,String txnOrderTime){
         OutPark outPark = outParkService.findByOrderId(txnOrderId);
         if(outPark == null){
diff --git a/src/main/java/com/boying/job/DaPingScheduled.java b/src/main/java/com/boying/job/DaPingScheduled.java
index 512abef..acd4274 100644
--- a/src/main/java/com/boying/job/DaPingScheduled.java
+++ b/src/main/java/com/boying/job/DaPingScheduled.java
@@ -29,7 +29,7 @@
     @Autowired
     private TicketBlackService ticketBlackService;
 
-    @Scheduled(cron = "0 0/40 * * * ?")
+    //@Scheduled(cron = "0 0/40 * * * ?")
     public void execute() throws IOException {
         System.out.println("寮�濮嬪畾鏃朵换鍔�-------銆�");
 //        List<TicketBlack> list = ticketBlackService.updateType();
diff --git a/src/main/java/com/boying/job/PayResult2Scheduled.java b/src/main/java/com/boying/job/PayResult2Scheduled.java
index 32b927c..a40ded2 100644
--- a/src/main/java/com/boying/job/PayResult2Scheduled.java
+++ b/src/main/java/com/boying/job/PayResult2Scheduled.java
@@ -37,7 +37,7 @@
 
     Boolean taskFlag = false;
 
-    @Scheduled(cron = "0/2 * * * * ?")
+    //@Scheduled(cron = "0/2 * * * * ?")
     public void execute() throws Exception {
         if(taskFlag == true){
             System.out.println("姝e湪杩愯锛屽己鍒堕��鍑�-------銆�");
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index fd1c5ce..7c84428 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -5,7 +5,7 @@
   datasource:
     url: jdbc:mysql://localhost:3306/ffparknew?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
     username: root
-    password: 2009Boying!@#
+    password: rootroot
     driverClassName: com.mysql.cj.jdbc.Driver
     #杩炴帴姹�
     hikari:
@@ -17,7 +17,13 @@
       max-lifetime: 1800000
       connection-timeout: 30000
       connection-test-query: SELECT 1
-
+security:
+  oauth2:
+    client:
+      ignore-urls:
+        - /webjars/**
+        - /v3/api-docs/**
+        - /doc.html
   jpa:
     database: mysql
     show-sql: true
@@ -32,8 +38,8 @@
       max-file-size: 50MB
       max-request-size: 50MB
 mybatis-plus:
-  #configuration:
-    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 # slf4j鏃ュ織閰嶇疆
 logging:
   config: classpath:logback.xml
@@ -77,12 +83,22 @@
   logPath: D:/FFproject/log/
   filePath: D:/FFproject/file/
 
+
 #椤圭洰閰嶇疆
 ffzf:
   ip: http://36.134.129.218:6060/
   loginIp: http://36.134.129.218:9999/auth/oauth/token
   info: api/getInfo
   getNumber: api/getNumber
+  #XTYHPAY: http://xiangniupaydev.xtbank.com:28085/ifsp-payweb/SOA/txnAccept
+  XTYHPAY: https://xiangniupay.xtbank.com/ifsp-payweb/SOA/txnAccept
+  #XTYHRESULT: http://39.96.92.240:8089/ffzf/api/getResult
+  XTYHRESULT: http://183.196.93.178:8089/ffzf/api/getResult
+  #XTYHMERID: 8202309110000001
+  XTYHMERID: 8202308300000015
+  XTYHMERNAME: 閭兏甯傚嘲宄扮熆鍖烘粡婧愬缓璁惧彂灞曟湁闄愬叕鍙�
+  XTYHAPPID: wx46e756aed958f895
+
 
 
 
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
index 24c9ced..0ac120f 100644
--- a/src/main/resources/logback.xml
+++ b/src/main/resources/logback.xml
@@ -47,7 +47,7 @@
 
     <!-- 鎸囧畾椤圭洰涓煇涓寘锛屽綋鏈夋棩蹇楁搷浣滆涓烘椂鐨勬棩蹇楄褰曠骇鍒� -->
     <!-- 鍦ㄨ繖涓牴鍖呬笅闈㈢殑鎵�鏈夋棩蹇楁搷浣滆涓虹殑鏉冮檺閮芥槸DEBUG -->
-    <logger name="com.boying.scheduled" level="INFO">
+    <logger name="com.boying.scheduled" level="DEBUG">
         <!--涓庝笂闈ppender鐨刵ame瑕佷竴鑷�-->
         <appender-ref ref="mylog" />
     </logger>

--
Gitblit v1.9.1