From 3f0fb748ae4ecf0a28fbcffa8637b04f6d739a58 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期日, 28 四月 2024 16:46:40 +0800
Subject: [PATCH] 代码初始化

---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitProblemLogMapper.java                    |   12 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitParkController.java                        |   90 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformShowParam.java                  |   66 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarParksServiceImpl.java             |  133 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformController.java                         |   85 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java                                      |   11 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformQueue.java                      |  106 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/web/request/BookingsRequest.java                      |    7 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java               |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java                  |   82 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformInterfaceLog.java               |   91 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarParksService.java                      |   97 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitorController.java                          |   90 
 server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java            |    7 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerParamController.java                |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitProblemLogServiceImpl.java      |  128 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitProblemsServiceImpl.java        |  125 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitProblemLogController.java                  |   90 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarBookController.java                          |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarParks.java                           |  102 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java                      |   97 
 server/system_service/src/main/java/com/doumee/dao/system/MultifileMapper.java                                    |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformShowParamServiceImpl.java    |  121 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java                    |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformQueueService.java                 |   97 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Devices.java                           |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformJobMapper.java                        |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitReasonService.java                   |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarDriver.java                          |   70 
 server/system_service/src/main/java/com/doumee/service/system/impl/MultifileServiceImpl.java                      |    8 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerLog.java                    |   82 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformGroupMapper.java                      |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Tasks.java                              |  105 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visitor.java                            |  137 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformInterfaceLogController.java             |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformLogMapper.java                        |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitReasonMapper.java                        |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitParkService.java                     |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarParksMapper.java                           |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitReason.java                        |   41 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarDriverService.java                     |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java         |  120 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/FormParamMapper.java                          |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java             |  133 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitParkServiceImpl.java            |  131 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java                       |   62 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformJobController.java                      |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformLog.java                        |   82 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarBookServiceImpl.java              |  135 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformQueueServiceImpl.java        |  131 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitProblemLogService.java               |   97 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerLogController.java                  |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitProblemsMapper.java                      |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformInterfaceLogService.java          |   97 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/business/join/MultifileJoinMapper.java                |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveTemplService.java                  |   97 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerController.java                     |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java                       |   95 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformMapper.java                           |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarDriverMapper.java                          |   12 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformGroupController.java                    |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformQueueMapper.java                      |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/FormParamService.java                     |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerLogService.java               |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerMapper.java                       |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/FormParam.java                          |   82 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java         |  129 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java           |  146 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java                           |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java          |  177 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java          |  121 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarDriverController.java                        |   85 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/ApproveTemplController.java                     |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java                  |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitParkMapper.java                          |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarDriverServiceImpl.java            |  122 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformLogService.java                   |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformShowParamService.java             |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java    |  125 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformShowParamController.java                |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java                        |  255 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformShowParamMapper.java                  |   12 
 server/system_gateway/src/main/resources/bootstrap.yml                                                            |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitorServiceImpl.java              |  141 
 server/meeting/meeting_admin/src/main/java/com/doumee/api/business/MultifileController.java                       |    4 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java                          |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java                         |  148 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/TasksMapper.java                              |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerLogServiceImpl.java      |  125 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveTemplMapper.java                       |   12 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarParksController.java                         |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java                             |    1 
 server/system_service/src/main/java/com/doumee/service/system/MultifileService.java                               |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitProblemLog.java                    |   95 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarBookService.java                       |   97 
 server/meeting/meeting_admin/src/main/resources/bootstrap.yml                                                     |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformInterfaceLogMapper.java               |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerParamMapper.java                  |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerParamService.java             |   97 
 server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java                                    |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitProblems.java                      |   83 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitReasonController.java                      |   90 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java        |  121 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java                          |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformGroupService.java                 |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TasksServiceImpl.java                |  133 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/FormParamController.java                        |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitorMapper.java                            |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/FormParamServiceImpl.java            |  125 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java                           |  111 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitorService.java                       |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java                   |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarBook.java                            |  113 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/TasksController.java                            |   85 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitProblemsController.java                    |   90 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformGroup.java                      |   39 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformInterfaceLogServiceImpl.java |  128 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformLogController.java                      |   85 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarUseBookController.java                       |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerLogMapper.java                    |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarUseBookMapper.java                         |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarBookMapper.java                            |   12 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformQueueController.java                    |   85 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitProblemsService.java                 |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/TasksService.java                         |   97 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformLogServiceImpl.java          |  125 
 126 files changed, 9,290 insertions(+), 90 deletions(-)

diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/business/MultifileController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/business/MultifileController.java
index 6eeeab7..35db9e8 100644
--- a/server/meeting/meeting_admin/src/main/java/com/doumee/api/business/MultifileController.java
+++ b/server/meeting/meeting_admin/src/main/java/com/doumee/api/business/MultifileController.java
@@ -6,8 +6,8 @@
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.Multifile;
-import com.doumee.service.business.MultifileService;
+import com.doumee.dao.system.model.Multifile;
+import com.doumee.service.system.MultifileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.authz.annotation.RequiresPermissions;    
diff --git a/server/meeting/meeting_admin/src/main/resources/bootstrap.yml b/server/meeting/meeting_admin/src/main/resources/bootstrap.yml
index d788ad7..a4c86a6 100644
--- a/server/meeting/meeting_admin/src/main/resources/bootstrap.yml
+++ b/server/meeting/meeting_admin/src/main/resources/bootstrap.yml
@@ -17,7 +17,7 @@
       password: nacos
       config:
         server-addr: http://175.27.187.84:8848 #閰嶇疆Nacos鍦板潃
-        namespace: dmvisit
+        namespace: dev_renkang
         username: nacos
         password: nacos
 #        file-extension: yaml
@@ -25,7 +25,7 @@
 #        data-id: com.doumee.meeting.admin
       discovery:
         server-addr: http://175.27.187.84:8848 #閰嶇疆Nacos鍦板潃
-        namespace: dmvisit
+        namespace: dev_renkang
         username: nacos
         password: nacos
       # 瀹夊叏閰嶇疆
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/join/MultifileJoinMapper.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/join/MultifileJoinMapper.java
index c44d310..4d45f15 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/join/MultifileJoinMapper.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/join/MultifileJoinMapper.java
@@ -1,7 +1,6 @@
 package com.doumee.dao.business.join;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.doumee.dao.business.model.Multifile;
+import com.doumee.dao.system.model.Multifile;
 import com.github.yulichang.base.mapper.MPJJoinMapper;
 
 /**
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java
index fcfac74..5f89c12 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java
@@ -2,13 +2,13 @@
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.system.model.Multifile;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Devices.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Devices.java
index 08f0d54..0d3630b 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Devices.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Devices.java
@@ -79,6 +79,7 @@
     @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
     @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
     private Integer status;
+
     @ApiModelProperty(value = "蹇冭烦鎺ㄩ�佹椂闂�", example = "1")
     @ExcelColumn(name="蹇冭烦鎺ㄩ�佹椂闂�")
     private Date heartTime;
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/request/BookingsRequest.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/request/BookingsRequest.java
index b8627d8..ad11b15 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/request/BookingsRequest.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/request/BookingsRequest.java
@@ -1,12 +1,7 @@
 package com.doumee.dao.web.request;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.dao.business.model.BookingTime;
-import com.doumee.dao.business.model.Multifile;
+import com.doumee.dao.system.model.Multifile;
 import com.doumee.dao.business.model.ProjectRel;
 import com.doumee.dao.business.model.UserRel;
 import com.fasterxml.jackson.annotation.JsonFormat;
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java
index 6dcf780..41d2f7a 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java
@@ -1,8 +1,7 @@
 package com.doumee.dao.web.response;
 
 import com.doumee.dao.business.model.BookingTime;
-import com.doumee.dao.business.model.Multifile;
-import com.doumee.dao.business.model.Projects;
+import com.doumee.dao.system.model.Multifile;
 import com.doumee.dao.system.model.SystemUser;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
index fb949c1..9d2a774 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -22,13 +22,11 @@
 import com.doumee.dao.business.join.*;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.RoomStatisticsVo;
+import com.doumee.dao.system.MultifileMapper;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.dto.UserStatisticsDTO;
 import com.doumee.dao.system.join.NoticesJoinMapper;
-import com.doumee.dao.system.model.Notices;
-import com.doumee.dao.system.model.SystemDepartment;
-import com.doumee.dao.system.model.SystemDepartmentUser;
-import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.system.model.*;
 import com.doumee.dao.system.vo.UserStatisticsVo;
 import com.doumee.dao.web.request.BookingsRequest;
 import com.doumee.dao.web.request.MeetingPageRequest;
@@ -36,7 +34,6 @@
 import com.doumee.service.business.BookingsService;
 import com.doumee.service.business.DevicesService;
 import com.doumee.service.business.ProjectsService;
-import com.doumee.service.system.NoticesService;
 import com.doumee.service.system.SystemUserService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
diff --git a/server/system_gateway/src/main/resources/bootstrap.yml b/server/system_gateway/src/main/resources/bootstrap.yml
index 59e04cc..e97a7ee 100644
--- a/server/system_gateway/src/main/resources/bootstrap.yml
+++ b/server/system_gateway/src/main/resources/bootstrap.yml
@@ -14,7 +14,7 @@
       password: nacos
       discovery:
         server-addr: http://175.27.187.84:8848 #閰嶇疆Nacos鍦板潃
-        namespace: dmvisit
+        namespace: dev_renkang
         username: nacos
         password: nacos
     gateway:
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/MultifileMapper.java b/server/system_service/src/main/java/com/doumee/dao/system/MultifileMapper.java
similarity index 68%
rename from server/meeting/meeting_service/src/main/java/com/doumee/dao/business/MultifileMapper.java
rename to server/system_service/src/main/java/com/doumee/dao/system/MultifileMapper.java
index aedbeb6..c13a8fc 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/MultifileMapper.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/MultifileMapper.java
@@ -1,7 +1,7 @@
-package com.doumee.dao.business;
+package com.doumee.dao.system;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.doumee.dao.business.model.Multifile;
+import com.doumee.dao.system.model.Multifile;
 
 /**
  * @author 姹熻箘韫�
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java b/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
similarity index 98%
rename from server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java
rename to server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
index c15f488..7986a80 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
@@ -1,4 +1,4 @@
-package com.doumee.dao.business.model;
+package com.doumee.dao.system.model;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/MultifileService.java b/server/system_service/src/main/java/com/doumee/service/system/MultifileService.java
similarity index 94%
rename from server/meeting/meeting_service/src/main/java/com/doumee/service/business/MultifileService.java
rename to server/system_service/src/main/java/com/doumee/service/system/MultifileService.java
index 44cf93c..04648df 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/MultifileService.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/MultifileService.java
@@ -1,8 +1,8 @@
-package com.doumee.service.business;
+package com.doumee.service.system;
 
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.model.Multifile;
+import com.doumee.dao.system.model.Multifile;
 import java.util.List;
 
 /**
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/MultifileServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/MultifileServiceImpl.java
similarity index 96%
rename from server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/MultifileServiceImpl.java
rename to server/system_service/src/main/java/com/doumee/service/system/impl/MultifileServiceImpl.java
index e452f53..212d2de 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/MultifileServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/MultifileServiceImpl.java
@@ -1,11 +1,11 @@
-package com.doumee.service.business.impl;
+package com.doumee.service.system.impl;
 
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.MultifileMapper;
-import com.doumee.dao.business.model.Multifile;
-import com.doumee.service.business.MultifileService;
+import com.doumee.dao.system.MultifileMapper;
+import com.doumee.dao.system.model.Multifile;
+import com.doumee.service.system.MultifileService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java
index a390450..60776bf 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java
@@ -7,6 +7,8 @@
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Controller鍩虹被
@@ -37,4 +39,13 @@
     }
 
 
+    public List<Integer> getIdList(String ids){
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        return idList;
+    }
+
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/ApproveTemplController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/ApproveTemplController.java
new file mode 100644
index 0000000..32ed594
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/ApproveTemplController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.ApproveTempl;
+import com.doumee.service.business.ApproveTemplService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "瀹℃壒妯$増淇℃伅琛�")
+@RestController
+@RequestMapping("/business/approveTempl")
+public class ApproveTemplController extends BaseController {
+
+    @Autowired
+    private ApproveTemplService approveTemplService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:approvetempl:create")
+    public ApiResponse create(@RequestBody ApproveTempl approveTempl) {
+        return ApiResponse.success(approveTemplService.create(approveTempl));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:approvetempl:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        approveTemplService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:approvetempl:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        approveTemplService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:approvetempl:update")
+    public ApiResponse updateById(@RequestBody ApproveTempl approveTempl) {
+        approveTemplService.updateById(approveTempl);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:approvetempl:query")
+    public ApiResponse<PageData<ApproveTempl>> findPage (@RequestBody PageWrap<ApproveTempl> pageWrap) {
+        return ApiResponse.success(approveTemplService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:approvetempl:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<ApproveTempl> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(ApproveTempl.class).export(approveTemplService.findPage(pageWrap).getRecords(), "瀹℃壒妯$増淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:approvetempl:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(approveTemplService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarBookController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarBookController.java
new file mode 100644
index 0000000..cd1591f
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarBookController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.CarBook;
+import com.doumee.service.business.CarBookService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "杞﹁締棰勭害璁板綍淇℃伅琛�")
+@RestController
+@RequestMapping("/business/carBook")
+public class CarBookController extends BaseController {
+
+    @Autowired
+    private CarBookService carBookService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:carbook:create")
+    public ApiResponse create(@RequestBody CarBook carBook) {
+        return ApiResponse.success(carBookService.create(carBook));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:carbook:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        carBookService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:carbook:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        carBookService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:carbook:update")
+    public ApiResponse updateById(@RequestBody CarBook carBook) {
+        carBookService.updateById(carBook);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:carbook:query")
+    public ApiResponse<PageData<CarBook>> findPage (@RequestBody PageWrap<CarBook> pageWrap) {
+        return ApiResponse.success(carBookService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:carbook:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<CarBook> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CarBook.class).export(carBookService.findPage(pageWrap).getRecords(), "杞﹁締棰勭害璁板綍淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:carbook:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(carBookService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarDriverController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarDriverController.java
new file mode 100644
index 0000000..2c7c785
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarDriverController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.CarDriver;
+import com.doumee.service.business.CarDriverService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鍙告満淇℃伅琛�")
+@RestController
+@RequestMapping("/business/carDriver")
+public class CarDriverController extends BaseController {
+
+    @Autowired
+    private CarDriverService carDriverService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:cardriver:create")
+    public ApiResponse create(@RequestBody CarDriver carDriver) {
+        return ApiResponse.success(carDriverService.create(carDriver));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:cardriver:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        carDriverService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:cardriver:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        carDriverService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:cardriver:update")
+    public ApiResponse updateById(@RequestBody CarDriver carDriver) {
+        carDriverService.updateById(carDriver);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:cardriver:query")
+    public ApiResponse<PageData<CarDriver>> findPage (@RequestBody PageWrap<CarDriver> pageWrap) {
+        return ApiResponse.success(carDriverService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:cardriver:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<CarDriver> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CarDriver.class).export(carDriverService.findPage(pageWrap).getRecords(), "鍙告満淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:cardriver:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(carDriverService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarParksController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarParksController.java
new file mode 100644
index 0000000..175eb9b
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarParksController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.CarParks;
+import com.doumee.service.business.CarParksService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鍋滆溅搴撲俊鎭〃")
+@RestController
+@RequestMapping("/business/carParks")
+public class CarParksController extends BaseController {
+
+    @Autowired
+    private CarParksService carParksService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:carparks:create")
+    public ApiResponse create(@RequestBody CarParks carParks) {
+        return ApiResponse.success(carParksService.create(carParks));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:carparks:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        carParksService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:carparks:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        carParksService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:carparks:update")
+    public ApiResponse updateById(@RequestBody CarParks carParks) {
+        carParksService.updateById(carParks);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:carparks:query")
+    public ApiResponse<PageData<CarParks>> findPage (@RequestBody PageWrap<CarParks> pageWrap) {
+        return ApiResponse.success(carParksService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:carparks:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<CarParks> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CarParks.class).export(carParksService.findPage(pageWrap).getRecords(), "鍋滆溅搴撲俊鎭〃", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:carparks:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(carParksService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarUseBookController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarUseBookController.java
new file mode 100644
index 0000000..be6f1e0
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarUseBookController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.CarUseBook;
+import com.doumee.service.business.CarUseBookService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "杞﹁締_鐢ㄨ溅鐢宠淇℃伅琛�")
+@RestController
+@RequestMapping("/business/carUseBook")
+public class CarUseBookController extends BaseController {
+
+    @Autowired
+    private CarUseBookService carUseBookService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:carusebook:create")
+    public ApiResponse create(@RequestBody CarUseBook carUseBook) {
+        return ApiResponse.success(carUseBookService.create(carUseBook));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:carusebook:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        carUseBookService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:carusebook:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        carUseBookService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:carusebook:update")
+    public ApiResponse updateById(@RequestBody CarUseBook carUseBook) {
+        carUseBookService.updateById(carUseBook);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:carusebook:query")
+    public ApiResponse<PageData<CarUseBook>> findPage (@RequestBody PageWrap<CarUseBook> pageWrap) {
+        return ApiResponse.success(carUseBookService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:carusebook:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<CarUseBook> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CarUseBook.class).export(carUseBookService.findPage(pageWrap).getRecords(), "杞﹁締_鐢ㄨ溅鐢宠淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:carusebook:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(carUseBookService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/FormParamController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/FormParamController.java
new file mode 100644
index 0000000..7261d03
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/FormParamController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.FormParam;
+import com.doumee.service.business.FormParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "琛ㄥ崟閰嶇疆淇℃伅琛�")
+@RestController
+@RequestMapping("/business/formParam")
+public class FormParamController extends BaseController {
+
+    @Autowired
+    private FormParamService formParamService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:formparam:create")
+    public ApiResponse create(@RequestBody FormParam formParam) {
+        return ApiResponse.success(formParamService.create(formParam));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:formparam:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        formParamService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:formparam:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        formParamService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:formparam:update")
+    public ApiResponse updateById(@RequestBody FormParam formParam) {
+        formParamService.updateById(formParam);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:formparam:query")
+    public ApiResponse<PageData<FormParam>> findPage (@RequestBody PageWrap<FormParam> pageWrap) {
+        return ApiResponse.success(formParamService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:formparam:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<FormParam> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(FormParam.class).export(formParamService.findPage(pageWrap).getRecords(), "琛ㄥ崟閰嶇疆淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:formparam:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(formParamService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerController.java
new file mode 100644
index 0000000..7762249
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.HiddenDanger;
+import com.doumee.service.business.HiddenDangerService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "闅愭偅淇℃伅琛�")
+@RestController
+@RequestMapping("/business/hiddenDanger")
+public class HiddenDangerController extends BaseController {
+
+    @Autowired
+    private HiddenDangerService hiddenDangerService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:hiddendanger:create")
+    public ApiResponse create(@RequestBody HiddenDanger hiddenDanger) {
+        return ApiResponse.success(hiddenDangerService.create(hiddenDanger));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:hiddendanger:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        hiddenDangerService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:hiddendanger:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        hiddenDangerService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:hiddendanger:update")
+    public ApiResponse updateById(@RequestBody HiddenDanger hiddenDanger) {
+        hiddenDangerService.updateById(hiddenDanger);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:hiddendanger:query")
+    public ApiResponse<PageData<HiddenDanger>> findPage (@RequestBody PageWrap<HiddenDanger> pageWrap) {
+        return ApiResponse.success(hiddenDangerService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:hiddendanger:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<HiddenDanger> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(HiddenDanger.class).export(hiddenDangerService.findPage(pageWrap).getRecords(), "闅愭偅淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:hiddendanger:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(hiddenDangerService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerLogController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerLogController.java
new file mode 100644
index 0000000..649c258
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerLogController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.HiddenDangerLog;
+import com.doumee.service.business.HiddenDangerLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鐞嗚碃鎿嶄綔鍘嗗彶琛�")
+@RestController
+@RequestMapping("/business/hiddenDangerLog")
+public class HiddenDangerLogController extends BaseController {
+
+    @Autowired
+    private HiddenDangerLogService hiddenDangerLogService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:hiddendangerlog:create")
+    public ApiResponse create(@RequestBody HiddenDangerLog hiddenDangerLog) {
+        return ApiResponse.success(hiddenDangerLogService.create(hiddenDangerLog));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:hiddendangerlog:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        hiddenDangerLogService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:hiddendangerlog:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        hiddenDangerLogService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:hiddendangerlog:update")
+    public ApiResponse updateById(@RequestBody HiddenDangerLog hiddenDangerLog) {
+        hiddenDangerLogService.updateById(hiddenDangerLog);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:hiddendangerlog:query")
+    public ApiResponse<PageData<HiddenDangerLog>> findPage (@RequestBody PageWrap<HiddenDangerLog> pageWrap) {
+        return ApiResponse.success(hiddenDangerLogService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:hiddendangerlog:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<HiddenDangerLog> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(HiddenDangerLog.class).export(hiddenDangerLogService.findPage(pageWrap).getRecords(), "鐞嗚碃鎿嶄綔鍘嗗彶琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:hiddendangerlog:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(hiddenDangerLogService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerParamController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerParamController.java
new file mode 100644
index 0000000..c72b11f
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HiddenDangerParamController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.HiddenDangerParam;
+import com.doumee.service.business.HiddenDangerParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "闅愭偅鍖哄煙閰嶇疆绫诲瀷淇℃伅琛�")
+@RestController
+@RequestMapping("/business/hiddenDangerParam")
+public class HiddenDangerParamController extends BaseController {
+
+    @Autowired
+    private HiddenDangerParamService hiddenDangerParamService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:hiddendangerparam:create")
+    public ApiResponse create(@RequestBody HiddenDangerParam hiddenDangerParam) {
+        return ApiResponse.success(hiddenDangerParamService.create(hiddenDangerParam));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:hiddendangerparam:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        hiddenDangerParamService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:hiddendangerparam:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        hiddenDangerParamService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:hiddendangerparam:update")
+    public ApiResponse updateById(@RequestBody HiddenDangerParam hiddenDangerParam) {
+        hiddenDangerParamService.updateById(hiddenDangerParam);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:hiddendangerparam:query")
+    public ApiResponse<PageData<HiddenDangerParam>> findPage (@RequestBody PageWrap<HiddenDangerParam> pageWrap) {
+        return ApiResponse.success(hiddenDangerParamService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:hiddendangerparam:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<HiddenDangerParam> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(HiddenDangerParam.class).export(hiddenDangerParamService.findPage(pageWrap).getRecords(), "闅愭偅鍖哄煙閰嶇疆绫诲瀷淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:hiddendangerparam:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(hiddenDangerParamService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformController.java
new file mode 100644
index 0000000..a069b5e
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.Platform;
+import com.doumee.service.business.PlatformService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鏈堝彴淇℃伅琛�")
+@RestController
+@RequestMapping("/business/platform")
+public class PlatformController extends BaseController {
+
+    @Autowired
+    private PlatformService platformService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:platform:create")
+    public ApiResponse create(@RequestBody Platform platform) {
+        return ApiResponse.success(platformService.create(platform));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:platform:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        platformService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:platform:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        platformService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:platform:update")
+    public ApiResponse updateById(@RequestBody Platform platform) {
+        platformService.updateById(platform);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:platform:query")
+    public ApiResponse<PageData<Platform>> findPage (@RequestBody PageWrap<Platform> pageWrap) {
+        return ApiResponse.success(platformService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:platform:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Platform> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Platform.class).export(platformService.findPage(pageWrap).getRecords(), "鏈堝彴淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:platform:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(platformService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformGroupController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformGroupController.java
new file mode 100644
index 0000000..61255de
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformGroupController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.PlatformGroup;
+import com.doumee.service.business.PlatformGroupService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鏈堝彴_鍒嗙粍淇℃伅琛�")
+@RestController
+@RequestMapping("/business/platformGroup")
+public class PlatformGroupController extends BaseController {
+
+    @Autowired
+    private PlatformGroupService platformGroupService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:platformgroup:create")
+    public ApiResponse create(@RequestBody PlatformGroup platformGroup) {
+        return ApiResponse.success(platformGroupService.create(platformGroup));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:platformgroup:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        platformGroupService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:platformgroup:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        platformGroupService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:platformgroup:update")
+    public ApiResponse updateById(@RequestBody PlatformGroup platformGroup) {
+        platformGroupService.updateById(platformGroup);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:platformgroup:query")
+    public ApiResponse<PageData<PlatformGroup>> findPage (@RequestBody PageWrap<PlatformGroup> pageWrap) {
+        return ApiResponse.success(platformGroupService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:platformgroup:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformGroup> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(PlatformGroup.class).export(platformGroupService.findPage(pageWrap).getRecords(), "鏈堝彴_鍒嗙粍淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:platformgroup:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(platformGroupService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformInterfaceLogController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformInterfaceLogController.java
new file mode 100644
index 0000000..2f9278f
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformInterfaceLogController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.PlatformInterfaceLog;
+import com.doumee.service.business.PlatformInterfaceLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "浣滀笟璋冨害骞冲彴鎺ュ彛浜や簰璁板綍")
+@RestController
+@RequestMapping("/business/platformInterfaceLog")
+public class PlatformInterfaceLogController extends BaseController {
+
+    @Autowired
+    private PlatformInterfaceLogService platformInterfaceLogService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:platforminterfacelog:create")
+    public ApiResponse create(@RequestBody PlatformInterfaceLog platformInterfaceLog) {
+        return ApiResponse.success(platformInterfaceLogService.create(platformInterfaceLog));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:platforminterfacelog:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        platformInterfaceLogService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:platforminterfacelog:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        platformInterfaceLogService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:platforminterfacelog:update")
+    public ApiResponse updateById(@RequestBody PlatformInterfaceLog platformInterfaceLog) {
+        platformInterfaceLogService.updateById(platformInterfaceLog);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:platforminterfacelog:query")
+    public ApiResponse<PageData<PlatformInterfaceLog>> findPage (@RequestBody PageWrap<PlatformInterfaceLog> pageWrap) {
+        return ApiResponse.success(platformInterfaceLogService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:platforminterfacelog:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformInterfaceLog> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(PlatformInterfaceLog.class).export(platformInterfaceLogService.findPage(pageWrap).getRecords(), "浣滀笟璋冨害骞冲彴鎺ュ彛浜や簰璁板綍", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:platforminterfacelog:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(platformInterfaceLogService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformJobController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformJobController.java
new file mode 100644
index 0000000..fef2705
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformJobController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.PlatformJob;
+import com.doumee.service.business.PlatformJobService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鏈堝彴璋冨害浣滀笟淇℃伅琛�")
+@RestController
+@RequestMapping("/business/platformJob")
+public class PlatformJobController extends BaseController {
+
+    @Autowired
+    private PlatformJobService platformJobService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:platformjob:create")
+    public ApiResponse create(@RequestBody PlatformJob platformJob) {
+        return ApiResponse.success(platformJobService.create(platformJob));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:platformjob:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        platformJobService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:platformjob:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        platformJobService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:platformjob:update")
+    public ApiResponse updateById(@RequestBody PlatformJob platformJob) {
+        platformJobService.updateById(platformJob);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:platformjob:query")
+    public ApiResponse<PageData<PlatformJob>> findPage (@RequestBody PageWrap<PlatformJob> pageWrap) {
+        return ApiResponse.success(platformJobService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:platformjob:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformJob> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(PlatformJob.class).export(platformJobService.findPage(pageWrap).getRecords(), "鏈堝彴璋冨害浣滀笟淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:platformjob:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(platformJobService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformLogController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformLogController.java
new file mode 100644
index 0000000..595ff3c
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformLogController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.PlatformLog;
+import com.doumee.service.business.PlatformLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鏈堝彴_浣滀笟鎿嶄綔鍘嗗彶琛�")
+@RestController
+@RequestMapping("/business/platformLog")
+public class PlatformLogController extends BaseController {
+
+    @Autowired
+    private PlatformLogService platformLogService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:platformlog:create")
+    public ApiResponse create(@RequestBody PlatformLog platformLog) {
+        return ApiResponse.success(platformLogService.create(platformLog));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:platformlog:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        platformLogService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:platformlog:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        platformLogService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:platformlog:update")
+    public ApiResponse updateById(@RequestBody PlatformLog platformLog) {
+        platformLogService.updateById(platformLog);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:platformlog:query")
+    public ApiResponse<PageData<PlatformLog>> findPage (@RequestBody PageWrap<PlatformLog> pageWrap) {
+        return ApiResponse.success(platformLogService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:platformlog:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformLog> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(PlatformLog.class).export(platformLogService.findPage(pageWrap).getRecords(), "鏈堝彴_浣滀笟鎿嶄綔鍘嗗彶琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:platformlog:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(platformLogService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformQueueController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformQueueController.java
new file mode 100644
index 0000000..86f5828
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformQueueController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.PlatformQueue;
+import com.doumee.service.business.PlatformQueueService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鏈堝彴_鍙彿鎺掗槦淇℃伅琛�")
+@RestController
+@RequestMapping("/business/platformQueue")
+public class PlatformQueueController extends BaseController {
+
+    @Autowired
+    private PlatformQueueService platformQueueService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:platformqueue:create")
+    public ApiResponse create(@RequestBody PlatformQueue platformQueue) {
+        return ApiResponse.success(platformQueueService.create(platformQueue));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:platformqueue:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        platformQueueService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:platformqueue:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        platformQueueService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:platformqueue:update")
+    public ApiResponse updateById(@RequestBody PlatformQueue platformQueue) {
+        platformQueueService.updateById(platformQueue);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:platformqueue:query")
+    public ApiResponse<PageData<PlatformQueue>> findPage (@RequestBody PageWrap<PlatformQueue> pageWrap) {
+        return ApiResponse.success(platformQueueService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:platformqueue:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformQueue> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(PlatformQueue.class).export(platformQueueService.findPage(pageWrap).getRecords(), "鏈堝彴_鍙彿鎺掗槦淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:platformqueue:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(platformQueueService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformShowParamController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformShowParamController.java
new file mode 100644
index 0000000..5385ae7
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformShowParamController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.PlatformShowParam;
+import com.doumee.service.business.PlatformShowParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "鏈堝彴_鏄剧ず閰嶇疆淇℃伅琛�")
+@RestController
+@RequestMapping("/business/platformShowParam")
+public class PlatformShowParamController extends BaseController {
+
+    @Autowired
+    private PlatformShowParamService platformShowParamService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:platformshowparam:create")
+    public ApiResponse create(@RequestBody PlatformShowParam platformShowParam) {
+        return ApiResponse.success(platformShowParamService.create(platformShowParam));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:platformshowparam:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        platformShowParamService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:platformshowparam:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        platformShowParamService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:platformshowparam:update")
+    public ApiResponse updateById(@RequestBody PlatformShowParam platformShowParam) {
+        platformShowParamService.updateById(platformShowParam);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:platformshowparam:query")
+    public ApiResponse<PageData<PlatformShowParam>> findPage (@RequestBody PageWrap<PlatformShowParam> pageWrap) {
+        return ApiResponse.success(platformShowParamService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:platformshowparam:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformShowParam> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(PlatformShowParam.class).export(platformShowParamService.findPage(pageWrap).getRecords(), "鏈堝彴_鏄剧ず閰嶇疆淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:platformshowparam:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(platformShowParamService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/TasksController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/TasksController.java
new file mode 100644
index 0000000..5dbec82
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/TasksController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.Tasks;
+import com.doumee.service.business.TasksService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Api(tags = "瀹夐槻涓嬪彂骞冲彴浠诲姟淇℃伅琛�")
+@RestController
+@RequestMapping("/business/tasks")
+public class TasksController extends BaseController {
+
+    @Autowired
+    private TasksService tasksService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:tasks:create")
+    public ApiResponse create(@RequestBody Tasks tasks) {
+        return ApiResponse.success(tasksService.create(tasks));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:tasks:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        tasksService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:tasks:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        tasksService.deleteByIdInBatch(this.getIdList(ids));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:tasks:update")
+    public ApiResponse updateById(@RequestBody Tasks tasks) {
+        tasksService.updateById(tasks);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:tasks:query")
+    public ApiResponse<PageData<Tasks>> findPage (@RequestBody PageWrap<Tasks> pageWrap) {
+        return ApiResponse.success(tasksService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:tasks:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Tasks> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Tasks.class).export(tasksService.findPage(pageWrap).getRecords(), "瀹夐槻涓嬪彂骞冲彴浠诲姟淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:tasks:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(tasksService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitParkController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitParkController.java
new file mode 100644
index 0000000..c35934e
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitParkController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.VisitPark;
+import com.doumee.service.business.VisitParkService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Api(tags = "璁垮鎶ュ鍋滆溅搴撳叧鑱旇〃")
+@RestController
+@RequestMapping("/business/visitPark")
+public class VisitParkController extends BaseController {
+
+    @Autowired
+    private VisitParkService visitParkService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:visitpark:create")
+    public ApiResponse create(@RequestBody VisitPark visitPark) {
+        return ApiResponse.success(visitParkService.create(visitPark));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:visitpark:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        visitParkService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:visitpark:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        visitParkService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:visitpark:update")
+    public ApiResponse updateById(@RequestBody VisitPark visitPark) {
+        visitParkService.updateById(visitPark);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:visitpark:query")
+    public ApiResponse<PageData<VisitPark>> findPage (@RequestBody PageWrap<VisitPark> pageWrap) {
+        return ApiResponse.success(visitParkService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:visitpark:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<VisitPark> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(VisitPark.class).export(visitParkService.findPage(pageWrap).getRecords(), "璁垮鎶ュ鍋滆溅搴撳叧鑱旇〃", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:visitpark:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(visitParkService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitProblemLogController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitProblemLogController.java
new file mode 100644
index 0000000..508e340
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitProblemLogController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.VisitProblemLog;
+import com.doumee.service.business.VisitProblemLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Api(tags = "璁垮绛旈璁板綍琛�")
+@RestController
+@RequestMapping("/business/visitProblemLog")
+public class VisitProblemLogController extends BaseController {
+
+    @Autowired
+    private VisitProblemLogService visitProblemLogService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:visitproblemlog:create")
+    public ApiResponse create(@RequestBody VisitProblemLog visitProblemLog) {
+        return ApiResponse.success(visitProblemLogService.create(visitProblemLog));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:visitproblemlog:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        visitProblemLogService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:visitproblemlog:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        visitProblemLogService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:visitproblemlog:update")
+    public ApiResponse updateById(@RequestBody VisitProblemLog visitProblemLog) {
+        visitProblemLogService.updateById(visitProblemLog);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:visitproblemlog:query")
+    public ApiResponse<PageData<VisitProblemLog>> findPage (@RequestBody PageWrap<VisitProblemLog> pageWrap) {
+        return ApiResponse.success(visitProblemLogService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:visitproblemlog:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<VisitProblemLog> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(VisitProblemLog.class).export(visitProblemLogService.findPage(pageWrap).getRecords(), "璁垮绛旈璁板綍琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:visitproblemlog:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(visitProblemLogService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitProblemsController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitProblemsController.java
new file mode 100644
index 0000000..b042590
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitProblemsController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.VisitProblems;
+import com.doumee.service.business.VisitProblemsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Api(tags = "璇曢淇℃伅琛�")
+@RestController
+@RequestMapping("/business/visitProblems")
+public class VisitProblemsController extends BaseController {
+
+    @Autowired
+    private VisitProblemsService visitProblemsService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:visitproblems:create")
+    public ApiResponse create(@RequestBody VisitProblems visitProblems) {
+        return ApiResponse.success(visitProblemsService.create(visitProblems));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:visitproblems:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        visitProblemsService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:visitproblems:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        visitProblemsService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:visitproblems:update")
+    public ApiResponse updateById(@RequestBody VisitProblems visitProblems) {
+        visitProblemsService.updateById(visitProblems);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:visitproblems:query")
+    public ApiResponse<PageData<VisitProblems>> findPage (@RequestBody PageWrap<VisitProblems> pageWrap) {
+        return ApiResponse.success(visitProblemsService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:visitproblems:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<VisitProblems> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(VisitProblems.class).export(visitProblemsService.findPage(pageWrap).getRecords(), "璇曢淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:visitproblems:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(visitProblemsService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitReasonController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitReasonController.java
new file mode 100644
index 0000000..970e1a8
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitReasonController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.VisitReason;
+import com.doumee.service.business.VisitReasonService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Api(tags = "璁垮浜嬬敱淇℃伅琛�")
+@RestController
+@RequestMapping("/business/visitReason")
+public class VisitReasonController extends BaseController {
+
+    @Autowired
+    private VisitReasonService visitReasonService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:visitreason:create")
+    public ApiResponse create(@RequestBody VisitReason visitReason) {
+        return ApiResponse.success(visitReasonService.create(visitReason));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:visitreason:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        visitReasonService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:visitreason:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        visitReasonService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:visitreason:update")
+    public ApiResponse updateById(@RequestBody VisitReason visitReason) {
+        visitReasonService.updateById(visitReason);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:visitreason:query")
+    public ApiResponse<PageData<VisitReason>> findPage (@RequestBody PageWrap<VisitReason> pageWrap) {
+        return ApiResponse.success(visitReasonService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:visitreason:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<VisitReason> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(VisitReason.class).export(visitReasonService.findPage(pageWrap).getRecords(), "璁垮浜嬬敱淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:visitreason:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(visitReasonService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitorController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitorController.java
new file mode 100644
index 0000000..0113f47
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitorController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.Visitor;
+import com.doumee.service.business.VisitorService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Api(tags = "璁垮淇℃伅琛�")
+@RestController
+@RequestMapping("/business/visitor")
+public class VisitorController extends BaseController {
+
+    @Autowired
+    private VisitorService visitorService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:visitor:create")
+    public ApiResponse create(@RequestBody Visitor visitor) {
+        return ApiResponse.success(visitorService.create(visitor));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:visitor:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        visitorService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:visitor:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        visitorService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:visitor:update")
+    public ApiResponse updateById(@RequestBody Visitor visitor) {
+        visitorService.updateById(visitor);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:visitor:query")
+    public ApiResponse<PageData<Visitor>> findPage (@RequestBody PageWrap<Visitor> pageWrap) {
+        return ApiResponse.success(visitorService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:visitor:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Visitor> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Visitor.class).export(visitorService.findPage(pageWrap).getRecords(), "璁垮淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:visitor:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(visitorService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveTemplMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveTemplMapper.java
new file mode 100644
index 0000000..bcf7243
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveTemplMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.ApproveTempl;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface ApproveTemplMapper extends BaseMapper<ApproveTempl> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarBookMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarBookMapper.java
new file mode 100644
index 0000000..e516069
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarBookMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.CarBook;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface CarBookMapper extends BaseMapper<CarBook> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarDriverMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarDriverMapper.java
new file mode 100644
index 0000000..5e4b919
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarDriverMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.CarDriver;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface CarDriverMapper extends BaseMapper<CarDriver> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarParksMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarParksMapper.java
new file mode 100644
index 0000000..99b86c7
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarParksMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.CarParks;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface CarParksMapper extends BaseMapper<CarParks> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarUseBookMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarUseBookMapper.java
new file mode 100644
index 0000000..406cf2f
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarUseBookMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.CarUseBook;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface CarUseBookMapper extends BaseMapper<CarUseBook> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/FormParamMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/FormParamMapper.java
new file mode 100644
index 0000000..e2eb096
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/FormParamMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.FormParam;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface FormParamMapper extends BaseMapper<FormParam> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerLogMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerLogMapper.java
new file mode 100644
index 0000000..b463779
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerLogMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.HiddenDangerLog;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface HiddenDangerLogMapper extends BaseMapper<HiddenDangerLog> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerMapper.java
new file mode 100644
index 0000000..91715e6
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.HiddenDanger;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface HiddenDangerMapper extends BaseMapper<HiddenDanger> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerParamMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerParamMapper.java
new file mode 100644
index 0000000..5ce0ac1
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/HiddenDangerParamMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.HiddenDangerParam;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface HiddenDangerParamMapper extends BaseMapper<HiddenDangerParam> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformGroupMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformGroupMapper.java
new file mode 100644
index 0000000..f4db406
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformGroupMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.PlatformGroup;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformGroupMapper extends BaseMapper<PlatformGroup> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformInterfaceLogMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformInterfaceLogMapper.java
new file mode 100644
index 0000000..d44d8e5
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformInterfaceLogMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.PlatformInterfaceLog;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformInterfaceLogMapper extends BaseMapper<PlatformInterfaceLog> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformJobMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformJobMapper.java
new file mode 100644
index 0000000..7c85aac
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformJobMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.PlatformJob;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformJobMapper extends BaseMapper<PlatformJob> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformLogMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformLogMapper.java
new file mode 100644
index 0000000..0b069ff
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformLogMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.PlatformLog;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformLogMapper extends BaseMapper<PlatformLog> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformMapper.java
new file mode 100644
index 0000000..3e86dd8
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.Platform;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformMapper extends BaseMapper<Platform> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformQueueMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformQueueMapper.java
new file mode 100644
index 0000000..9e5cd67
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformQueueMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.PlatformQueue;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformQueueMapper extends BaseMapper<PlatformQueue> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformShowParamMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformShowParamMapper.java
new file mode 100644
index 0000000..2f1c7a5
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformShowParamMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.PlatformShowParam;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformShowParamMapper extends BaseMapper<PlatformShowParam> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/TasksMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/TasksMapper.java
new file mode 100644
index 0000000..5e29a17
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/TasksMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.Tasks;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface TasksMapper extends BaseMapper<Tasks> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitParkMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitParkMapper.java
new file mode 100644
index 0000000..7824596
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitParkMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.VisitPark;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitParkMapper extends BaseMapper<VisitPark> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitProblemLogMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitProblemLogMapper.java
new file mode 100644
index 0000000..ab121ca
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitProblemLogMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.VisitProblemLog;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitProblemLogMapper extends BaseMapper<VisitProblemLog> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitProblemsMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitProblemsMapper.java
new file mode 100644
index 0000000..20ba66d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitProblemsMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.VisitProblems;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitProblemsMapper extends BaseMapper<VisitProblems> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitReasonMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitReasonMapper.java
new file mode 100644
index 0000000..69c9356
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitReasonMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.VisitReason;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitReasonMapper extends BaseMapper<VisitReason> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitorMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitorMapper.java
new file mode 100644
index 0000000..05c8f24
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitorMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.Visitor;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitorMapper extends BaseMapper<Visitor> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java
new file mode 100644
index 0000000..452f499
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java
@@ -0,0 +1,62 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 瀹℃壒妯$増淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("瀹℃壒妯$増淇℃伅琛�")
+@TableName("`approve_templ`")
+public class ApproveTempl {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鍚嶇О 0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害", example = "1")
+    @ExcelColumn(name="鍚嶇О 0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害")
+    private Integer type;
+
+    @ApiModelProperty(value = "鍚嶇О")
+    @ExcelColumn(name="鍚嶇О")
+    private String name;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarBook.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarBook.java
new file mode 100644
index 0000000..2667ca9
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarBook.java
@@ -0,0 +1,113 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 杞﹁締棰勭害璁板綍淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("杞﹁締棰勭害璁板綍淇℃伅琛�")
+@TableName("`car_book`")
+public class CarBook {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private String creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private String edirot;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "棰勭害鏍囪瘑", example = "1")
+    @ExcelColumn(name="棰勭害鏍囪瘑")
+    private Integer hkId;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "璁垮鐢宠璁板綍", example = "1")
+    @ExcelColumn(name="璁垮鐢宠璁板綍")
+    private Integer visitId;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    @ExcelColumn(name="杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "杞﹀簱缂栫爜锛堝叧鑱攑arks)", example = "1")
+    @ExcelColumn(name="杞﹀簱缂栫爜锛堝叧鑱攑arks)")
+    private Integer parkId;
+
+    @ApiModelProperty(value = "绫诲瀷 0鍐呴儴浜哄憳鍥哄畾杞﹁締 1鍔冲姟璁垮鐢宠闅忕▼杞﹁締 2璁垮鐢宠闅忕▼杞﹁締", example = "1")
+    @ExcelColumn(name="绫诲瀷 0鍐呴儴浜哄憳鍥哄畾杞﹁締 1鍔冲姟璁垮鐢宠闅忕▼杞﹁締 2璁垮鐢宠闅忕▼杞﹁締")
+    private Integer origin;
+
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    @ExcelColumn(name="寮�濮嬫椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startTime;
+
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    @ExcelColumn(name="缁撴潫鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+
+    @ApiModelProperty(value = "浜哄憳缂栫爜", example = "1")
+    @ExcelColumn(name="浜哄憳缂栫爜")
+    private Integer memberId;
+
+    @ApiModelProperty(value = "鏃堕棿绫诲瀷 0闀挎湡鏈夋晥 1鏃堕棿娈�", example = "1")
+    @ExcelColumn(name="鏃堕棿绫诲瀷 0闀挎湡鏈夋晥 1鏃堕棿娈�")
+    private Integer timeType;
+
+    @ApiModelProperty(value = "娴峰悍鏍囪瘑", example = "1")
+    @ExcelColumn(name="娴峰悍鏍囪瘑")
+    private Integer hkId2;
+
+    @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0寰呬笅鍙� 1涓嬪彂鎴愬姛 2涓嬪彂澶辫触 3鍙栨秷涓嬪彂", example = "1")
+    @ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0寰呬笅鍙� 1涓嬪彂鎴愬姛 2涓嬪彂澶辫触 3鍙栨秷涓嬪彂")
+    private Integer hkStatus;
+
+    @ApiModelProperty(value = "娴峰悍鏈�杩戝悓姝ユ椂闂�")
+    @ExcelColumn(name="娴峰悍鏈�杩戝悓姝ユ椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date hkDate;
+
+    @ApiModelProperty(value = "灏濊瘯涓嬪彂娆℃暟", example = "1")
+    @ExcelColumn(name="灏濊瘯涓嬪彂娆℃暟")
+    private Integer tryNum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarDriver.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarDriver.java
new file mode 100644
index 0000000..31a6630
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarDriver.java
@@ -0,0 +1,70 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鍙告満淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("鍙告満淇℃伅琛�")
+@TableName("`car_driver`")
+public class CarDriver {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private String creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private String edirot;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "鎵�灞炵粍缁囩紪鐮侊紙鍏宠仈company锛�", example = "1")
+    @ExcelColumn(name="鎵�灞炵粍缁囩紪鐮侊紙鍏宠仈company锛�")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "鐘舵�� 0绂佺敤 1鍚敤", example = "1")
+    @ExcelColumn(name="鐘舵�� 0绂佺敤 1鍚敤")
+    private Integer status;
+
+    @ApiModelProperty(value = "浜哄憳缂栫爜锛堝叧鑱攎ember琛�)", example = "1")
+    @ExcelColumn(name="浜哄憳缂栫爜锛堝叧鑱攎ember琛�)")
+    private Integer memberId;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java
index d135487..439f378 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarEvent.java
@@ -221,6 +221,9 @@
     @ExcelColumn(name="鍥剧墖鏈嶅姟鍣ㄧ紪鍙�	")
     private String svrIndex;
 
+    @ApiModelProperty(value = "浜哄憳缂栫爜 ")
+    private Integer memberId  ;
+
 
     // 鏉′欢鏌ヨ鍙傛暟
     @ApiModelProperty(value = "濮撳悕/鎵嬫満鍙�")
@@ -248,8 +251,6 @@
     @ApiModelProperty(value = "灏忔椂 ")
     @TableField(exist = false)
     private Integer hour  ;
-    @ApiModelProperty(value = "浜哄憳缂栫爜 ")
-    private Integer memberId  ;
     @ApiModelProperty(value = "浜哄憳绫诲瀷 0鍔冲姟璁垮 1鏅�氳瀹�  2鍛樺伐")
     @TableField(exist = false)
     private Integer memberType  ;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarParks.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarParks.java
new file mode 100644
index 0000000..4f5e839
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarParks.java
@@ -0,0 +1,102 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鍋滆溅搴撲俊鎭〃
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("鍋滆溅搴撲俊鎭〃")
+@TableName("`car_parks`")
+public class CarParks {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private String creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private String edirot;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鍚嶇О")
+    @ExcelColumn(name="鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "娴峰悍鏍囪瘑", example = "1")
+    @ExcelColumn(name="娴峰悍鏍囪瘑")
+    private Integer hkId;
+
+    @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�")
+    @ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�")
+    private String hkStatus;
+
+    @ApiModelProperty(value = "娴峰悍鏈�杩戝悓姝ユ椂闂�")
+    @ExcelColumn(name="娴峰悍鏈�杩戝悓姝ユ椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date hkDate;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "杞﹀簱鍒涘缓鏃堕棿")
+    @ExcelColumn(name="杞﹀簱鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date parkCreateDate;
+
+    @ApiModelProperty(value = "鐖惰溅搴撶紪鐮�", example = "1")
+    @ExcelColumn(name="鐖惰溅搴撶紪鐮�")
+    private Integer parentHkId;
+
+    @ApiModelProperty(value = "杞﹀簱鏇存柊鏃堕棿")
+    @ExcelColumn(name="杞﹀簱鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date parkEditDate;
+
+    @ApiModelProperty(value = "ERP鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� 2鍚屾澶辫触", example = "1")
+    @ExcelColumn(name="ERP鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� 2鍚屾澶辫触")
+    private Integer erpStatus;
+
+    @ApiModelProperty(value = "ERP鏈�杩戝悓姝ユ椂闂�")
+    @ExcelColumn(name="ERP鏈�杩戝悓姝ユ椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date erpDate;
+
+    @ApiModelProperty(value = "鐘舵�� 0绂佺敤 1鍚敤", example = "1")
+    @ExcelColumn(name="鐘舵�� 0绂佺敤 1鍚敤")
+    private Integer status;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java
new file mode 100644
index 0000000..32d6904
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java
@@ -0,0 +1,148 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 杞﹁締_鐢ㄨ溅鐢宠淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("杞﹁締_鐢ㄨ溅鐢宠淇℃伅琛�")
+@TableName("`car_use_book`")
+public class CarUseBook {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    @ExcelColumn(name="杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "杞﹁締缂栫爜锛堝叧鑱攃ars)", example = "1")
+    @ExcelColumn(name="杞﹁締缂栫爜锛堝叧鑱攃ars)")
+    private Integer carId;
+
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    @ExcelColumn(name="寮�濮嬫椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startTime;
+
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    @ExcelColumn(name="缁撴潫鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+
+    @ApiModelProperty(value = "棰勮鍑哄彂鏃堕棿")
+    @ExcelColumn(name="棰勮鍑哄彂鏃堕棿")
+    private String planUseDate;
+
+    @ApiModelProperty(value = "鐘舵�� 0鐢宠涓� 1瀹℃牳涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃  4宸插彇娑�", example = "1")
+    @ExcelColumn(name="鐘舵�� 0鐢宠涓� 1瀹℃牳涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃  4宸插彇娑�")
+    private Integer status;
+
+    @ApiModelProperty(value = "瀹℃壒鏃堕棿(鏈�杩戜竴娆★級")
+    @ExcelColumn(name="瀹℃壒鏃堕棿(鏈�杩戜竴娆★級")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date checkDate;
+
+    @ApiModelProperty(value = "瀹℃壒浜�(鏈�杩戜竴娆★級", example = "1")
+    @ExcelColumn(name="瀹℃壒浜�(鏈�杩戜竴娆★級")
+    private Integer checkUserId;
+
+    @ApiModelProperty(value = "瀹℃壒澶囨敞(鏈�杩戜竴娆★級")
+    @ExcelColumn(name="瀹℃壒澶囨敞(鏈�杩戜竴娆★級")
+    private String checkInfo;
+
+    @ApiModelProperty(value = "鍙栨秷绫诲瀷 0鐢宠浜哄彇娑� 1娲捐溅鍛樻挙閿�")
+    @ExcelColumn(name="鍙栨秷绫诲瀷 0鐢宠浜哄彇娑� 1娲捐溅鍛樻挙閿�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date cancelType;
+
+    @ApiModelProperty(value = "鏄惁宸插彇娑� 0鏈彇娑� 1宸插彇娑�")
+    @ExcelColumn(name="鏄惁宸插彇娑� 0鏈彇娑� 1宸插彇娑�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date cancelStatus;
+
+    @ApiModelProperty(value = "鍙栨秷鏃堕棿")
+    @ExcelColumn(name="鍙栨秷鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date cancelTime;
+
+    @ApiModelProperty(value = "鍙栨秷浜�", example = "1")
+    @ExcelColumn(name="鍙栨秷浜�")
+    private Integer cancelUser;
+
+    @ApiModelProperty(value = "鍙栨秷澶囨敞")
+    @ExcelColumn(name="鍙栨秷澶囨敞")
+    private String cancelInfo;
+
+    @ApiModelProperty(value = "鐩殑鍦扮被鍨� 0甯傚唴鐢ㄨ溅 1甯傚鐢ㄨ溅", example = "1")
+    @ExcelColumn(name="鐩殑鍦扮被鍨� 0甯傚唴鐢ㄨ溅 1甯傚鐢ㄨ溅")
+    private Integer type;
+
+    @ApiModelProperty(value = "涔樿溅浜虹紪鐮侀泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑", example = "1")
+    @ExcelColumn(name="涔樿溅浜虹紪鐮侀泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    private Integer memberIds;
+
+    @ApiModelProperty(value = "涔樿溅浜哄鍚嶉泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    @ExcelColumn(name="涔樿溅浜哄鍚嶉泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    private String memberNames;
+
+    @ApiModelProperty(value = "鐢ㄨ溅浜嬬敱")
+    @ExcelColumn(name="鐢ㄨ溅浜嬬敱")
+    private String content;
+
+    @ApiModelProperty(value = "鐩殑鍦�")
+    @ExcelColumn(name="鐩殑鍦�")
+    private String addr;
+
+    @ApiModelProperty(value = "鐢宠浜虹紪鐮�(鍏宠仈member)", example = "1")
+    @ExcelColumn(name="鐢宠浜虹紪鐮�(鍏宠仈member)")
+    private Integer memberId;
+
+    @ApiModelProperty(value = "鍙告満缂栫爜锛堝叧鑱攃ar_driver锛�", example = "1")
+    @ExcelColumn(name="鍙告満缂栫爜锛堝叧鑱攃ar_driver锛�")
+    private Integer driverId;
+
+    @ApiModelProperty(value = "鐢ㄨ溅浜哄憳", example = "1")
+    @ExcelColumn(name="鐢ㄨ溅浜哄憳")
+    private Integer memberNum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
index 43410d8..93fd1bf 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
@@ -164,5 +164,4 @@
 
 
 
-
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/FormParam.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/FormParam.java
new file mode 100644
index 0000000..16bd393
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/FormParam.java
@@ -0,0 +1,82 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 琛ㄥ崟閰嶇疆淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("琛ㄥ崟閰嶇疆淇℃伅琛�")
+@TableName("`form_param`")
+public class FormParam {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "妯″潡 0璁垮琛ㄥ崟 1璁垮鎶ュ", example = "1")
+    @ExcelColumn(name="妯″潡 0璁垮琛ㄥ崟 1璁垮鎶ュ")
+    private Integer module;
+
+    @ApiModelProperty(value = "绫诲瀷 0璁垮濮撳悕 1璁垮韬唤璇佸彿 2璁垮鎵嬫満鍙� 3琚浜烘墜鏈哄彿 4琚浜哄鍚�", example = "1")
+    @ExcelColumn(name="绫诲瀷 0璁垮濮撳悕 1璁垮韬唤璇佸彿 2璁垮鎵嬫満鍙� 3琚浜烘墜鏈哄彿 4琚浜哄鍚�")
+    private Integer type;
+
+    @ApiModelProperty(value = "鏄惁鏄剧ず 0鏄剧ず 1涓嶆樉绀�", example = "1")
+    @ExcelColumn(name="鏄惁鏄剧ず 0鏄剧ず 1涓嶆樉绀�")
+    private Integer isshow;
+
+    @ApiModelProperty(value = "鏄惁蹇呭~ 0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁蹇呭~ 0鍚� 1鏄�")
+    private Integer isrequired;
+
+    @ApiModelProperty(value = "闀垮害鏈�澶ч檺鍒讹紙鍖呭惈锛�", example = "1")
+    @ExcelColumn(name="闀垮害鏈�澶ч檺鍒讹紙鍖呭惈锛�")
+    private Integer maxLength;
+
+    @ApiModelProperty(value = "闀垮害鏈�灏忛檺鍒讹紙鍖呭惈锛�", example = "1")
+    @ExcelColumn(name="闀垮害鏈�灏忛檺鍒讹紙鍖呭惈锛�")
+    private Integer minLength;
+
+    @ApiModelProperty(value = "鍚嶇О")
+    @ExcelColumn(name="鍚嶇О")
+    private String name;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
new file mode 100644
index 0000000..2ab44d4
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
@@ -0,0 +1,95 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 闅愭偅淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("闅愭偅淇℃伅琛�")
+@TableName("`hidden_danger`")
+public class HiddenDanger {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "闅愭偅鍖哄煙缂栫爜锛堝叧鑱攈idden_danger_param)", example = "1")
+    @ExcelColumn(name="闅愭偅鍖哄煙缂栫爜锛堝叧鑱攈idden_danger_param)")
+    private Integer areaId;
+
+    @ApiModelProperty(value = "鐘舵�� 0寰呭鐞� 1宸插鐞� 2涓嶅鐞�", example = "1")
+    @ExcelColumn(name="鐘舵�� 0寰呭鐞� 1宸插鐞� 2涓嶅鐞�")
+    private Integer status;
+
+    @ApiModelProperty(value = "鐢宠澶勭悊浜虹紪鐮�(鍏宠仈member)", example = "1")
+    @ExcelColumn(name="鐢宠澶勭悊浜虹紪鐮�(鍏宠仈member)")
+    private Integer applyCheckUserId;
+
+    @ApiModelProperty(value = "闅愭偅绫诲瀷缂栫爜锛堝叧鑱攈idden_danger_param)", example = "1")
+    @ExcelColumn(name="闅愭偅绫诲瀷缂栫爜锛堝叧鑱攈idden_danger_param)")
+    private Integer cateId;
+
+    @ApiModelProperty(value = "鎯呭喌璇存槑")
+    @ExcelColumn(name="鎯呭喌璇存槑")
+    private String content;
+
+    @ApiModelProperty(value = "鎻愭姤浜虹紪鐮侊紙鍏宠仈member锛�", example = "1")
+    @ExcelColumn(name="鎻愭姤浜虹紪鐮侊紙鍏宠仈member锛�")
+    private Integer memberId;
+
+    @ApiModelProperty(value = "澶勭悊鏃堕棿")
+    @ExcelColumn(name="澶勭悊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date checkDate;
+
+    @ApiModelProperty(value = "澶勭悊璇存槑")
+    @ExcelColumn(name="澶勭悊璇存槑")
+    private String checklInfo;
+
+    @ApiModelProperty(value = "澶勭悊浜虹紪鐮侊紙鍏宠仈member)", example = "1")
+    @ExcelColumn(name="澶勭悊浜虹紪鐮侊紙鍏宠仈member)")
+    private Integer checkUserId;
+
+    @ApiModelProperty(value = "鍖哄煙鍚嶇О")
+    @ExcelColumn(name="鍖哄煙鍚嶇О")
+    private String areaName;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerLog.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerLog.java
new file mode 100644
index 0000000..4b3230a
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerLog.java
@@ -0,0 +1,82 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鐞嗚碃鎿嶄綔鍘嗗彶琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("鐞嗚碃鎿嶄綔鍘嗗彶琛�")
+@TableName("`hidden_danger_log`")
+public class HiddenDangerLog {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "闅愭偅缂栫爜锛堝叧鑱攈idden_danger锛�", example = "1")
+    @ExcelColumn(name="闅愭偅缂栫爜锛堝叧鑱攈idden_danger锛�")
+    private Integer hiddenDangerId;
+
+    @ApiModelProperty(value = "鏍囬")
+    @ExcelColumn(name="鏍囬")
+    private String title;
+
+    @ApiModelProperty(value = "绠�浠�")
+    @ExcelColumn(name="绠�浠�")
+    private String content;
+
+    @ApiModelProperty(value = "鎿嶄綔绫诲瀷 0鍙戣捣鐢宠 1杞氦 2閫�鍥� 3鍙栨秷 4鏁存敼澶勭悊", example = "1")
+    @ExcelColumn(name="鎿嶄綔绫诲瀷 0鍙戣捣鐢宠 1杞氦 2閫�鍥� 3鍙栨秷 4鏁存敼澶勭悊")
+    private Integer objType;
+
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜")
+    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜")
+    private String objId;
+
+    @ApiModelProperty(value = "鎿嶄綔鍓嶅唴瀹�")
+    @ExcelColumn(name="鎿嶄綔鍓嶅唴瀹�")
+    private String beforeContent;
+
+    @ApiModelProperty(value = "鎿嶄綔鍚庡唴瀹�")
+    @ExcelColumn(name="鎿嶄綔鍚庡唴瀹�")
+    private String afterContent;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
new file mode 100644
index 0000000..0ef1e7f
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
@@ -0,0 +1,82 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 闅愭偅鍖哄煙閰嶇疆绫诲瀷淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("闅愭偅鍖哄煙閰嶇疆绫诲瀷淇℃伅琛�")
+@TableName("`hidden_danger_param`")
+public class HiddenDangerParam {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "鍚嶇О")
+    @ExcelColumn(name="鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
+    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
+    private Integer status;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "鍥炬爣")
+    @ExcelColumn(name="鍥炬爣")
+    private String imgurl;
+
+    @ApiModelProperty(value = "瀹夊叏鍛樼紪鐮侀泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑", example = "1")
+    @ExcelColumn(name="瀹夊叏鍛樼紪鐮侀泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    private Integer memberIds;
+
+    @ApiModelProperty(value = "瀹夊叏鍛樺鍚嶉泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    @ExcelColumn(name="瀹夊叏鍛樺鍚嶉泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    private String memberNames;
+
+    @ApiModelProperty(value = "绫诲瀷 0闅愭偅鍖哄煙 1闅愭偅绫诲瀷", example = "1")
+    @ExcelColumn(name="绫诲瀷 0闅愭偅鍖哄煙 1闅愭偅绫诲瀷")
+    private Integer type;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
new file mode 100644
index 0000000..549fc8c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
@@ -0,0 +1,111 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鏈堝彴淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("鏈堝彴淇℃伅琛�")
+@TableName("`platform`")
+public class Platform {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "鍚嶇О")
+    @ExcelColumn(name="鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
+    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
+    private Integer status;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "鎵�灞炴湀鍙板垎閽熺紪鐮侊紙g鍏宠仈platform_group)", example = "1")
+    @ExcelColumn(name="鎵�灞炴湀鍙板垎閽熺紪鐮侊紙g鍏宠仈platform_group)")
+    private Integer groupId;
+
+    @ApiModelProperty(value = "宸ヤ綔寮�濮嬫椂闂�")
+    @ExcelColumn(name="宸ヤ綔寮�濮嬫椂闂�")
+    private String startTime;
+
+    @ApiModelProperty(value = "宸ヤ綔缁撴潫鏃堕棿")
+    @ExcelColumn(name="宸ヤ綔缁撴潫鏃堕棿")
+    private String endTime;
+
+    @ApiModelProperty(value = "鍏宠仈鏈堝彴鐩戞帶鐐硅澶囩紪鐮�(鍏宠仈devices)锛屽涓敤鑻辨枃閫楀彿闅斿紑")
+    @ExcelColumn(name="鍏宠仈鏈堝彴鐩戞帶鐐硅澶囩紪鐮�(鍏宠仈devices)锛屽涓敤鑻辨枃閫楀彿闅斿紑")
+    private String deviceIds;
+
+    @ApiModelProperty(value = "鍏宠仈鏈堝彴灞忓箷缂栫爜闆嗗悎锛堝叧鑱攄evices锛夛紝澶氫釜鐢ㄨ嫳鏂囬�楀彿闅斿紑")
+    @ExcelColumn(name="鍏宠仈鏈堝彴灞忓箷缂栫爜闆嗗悎锛堝叧鑱攄evices锛夛紝澶氫釜鐢ㄨ嫳鏂囬�楀彿闅斿紑")
+    private String screenIds;
+
+    @ApiModelProperty(value = "鍚屾椂浣滀笟鏁伴噺", example = "1")
+    @ExcelColumn(name="鍚屾椂浣滀笟鏁伴噺")
+    private Integer workingNum;
+
+    @ApiModelProperty(value = "绛夊緟鏁欏ソ鏃堕棿(绉掞級", example = "1")
+    @ExcelColumn(name="绛夊緟鏁欏ソ鏃堕棿(绉掞級")
+    private Integer wariCallTime;
+
+    @ApiModelProperty(value = "鍋滅暀瓒呮椂鎶ヨ鏃堕棿(绉掞級", example = "1")
+    @ExcelColumn(name="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(绉掞級")
+    private Integer alermTime;
+
+    @ApiModelProperty(value = "鏈�鍚庝簨浠舵帹閫佹椂闂�")
+    @ExcelColumn(name="鏈�鍚庝簨浠舵帹閫佹椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date lastEventTime;
+
+    @ApiModelProperty(value = "鐩戞帶鐐瑰悕绉帮紝澶氫釜鐢ㄨ嫳鏂囬�楀彿闅斿紑")
+    @ExcelColumn(name="鐩戞帶鐐瑰悕绉帮紝澶氫釜鐢ㄨ嫳鏂囬�楀彿闅斿紑")
+    private String deviceNames;
+
+    @ApiModelProperty(value = "鏈堝彴灞忓箷鍚嶇О锛屽涓敤鑻辨枃閫楀彿闅斿紑")
+    @ExcelColumn(name="鏈堝彴灞忓箷鍚嶇О锛屽涓敤鑻辨枃閫楀彿闅斿紑")
+    private String screenName;
+
+}
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformGroup.java
similarity index 60%
copy from server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java
copy to server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformGroup.java
index c15f488..519ccee 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformGroup.java
@@ -1,6 +1,5 @@
 package com.doumee.dao.business.model;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -12,14 +11,14 @@
 import java.util.Date;
 
 /**
- * 闄勪欢涓婁紶淇℃伅琛�
+ * 鏈堝彴_鍒嗙粍淇℃伅琛�
  * @author 姹熻箘韫�
- * @date 2023/05/04 18:18
+ * @since 2024/04/28 16:06
  */
 @Data
-@ApiModel("闄勪欢涓婁紶淇℃伅琛�")
-@TableName("`multifile`")
-public class Multifile {
+@ApiModel("鏈堝彴_鍒嗙粍淇℃伅琛�")
+@TableName("`platform_group`")
+public class PlatformGroup {
 
     @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "涓婚敭", example = "1")
@@ -48,36 +47,20 @@
     @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
     private Integer isdeleted;
 
-    @ApiModelProperty(value = "鏂囦欢鍚�")
-    @ExcelColumn(name="鏂囦欢鍚�")
+    @ApiModelProperty(value = "鍚嶇О")
+    @ExcelColumn(name="鍚嶇О")
     private String name;
 
     @ApiModelProperty(value = "澶囨敞")
     @ExcelColumn(name="澶囨敞")
-    private String info;
+    private String remark;
 
-    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜", example = "1")
-    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜")
-    private Integer objId;
-
-    @ApiModelProperty(value = "绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬", example = "1")
-    @ExcelColumn(name="绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬")
-    private Integer type;
-
-    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0浼氳瀹ら瀹氶檮浠�", example = "1")
-    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0浼氳瀹ら瀹氶檮浠�")
-    private Integer objType;
-
-    @ApiModelProperty(value = "鏂囦欢鍦板潃")
-    @ExcelColumn(name="鏂囦欢鍦板潃")
-    private String fileurl;
+    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
+    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
+    private Integer status;
 
     @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
     @ExcelColumn(name="鎺掑簭鐮�")
     private Integer sortnum;
-
-    @ApiModelProperty(value = "鏂囦欢鍦板潃")
-    @TableField(exist = false)
-    private String fileFullUrl;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformInterfaceLog.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformInterfaceLog.java
new file mode 100644
index 0000000..5fe4a7a
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformInterfaceLog.java
@@ -0,0 +1,91 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 浣滀笟璋冨害骞冲彴鎺ュ彛浜や簰璁板綍
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("浣滀笟璋冨害骞冲彴鎺ュ彛浜や簰璁板綍")
+@TableName("`platform_interface_log`")
+public class PlatformInterfaceLog {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "绫诲瀷 0璁垮绯荤粺璋冪敤 1璁垮绯荤粺鎺ュ彈鎺ㄩ��", example = "1")
+    @ExcelColumn(name="绫诲瀷 0璁垮绯荤粺璋冪敤 1璁垮绯荤粺鎺ュ彈鎺ㄩ��")
+    private Integer type;
+
+    @ApiModelProperty(value = "鎺ュ彛鍚嶇О")
+    @ExcelColumn(name="鎺ュ彛鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "鍦板潃淇℃伅")
+    @ExcelColumn(name="鍦板潃淇℃伅")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date url;
+
+    @ApiModelProperty(value = "璇锋眰鍙傛暟")
+    @ExcelColumn(name="璇锋眰鍙傛暟")
+    private String request;
+
+    @ApiModelProperty(value = "鍝嶅簲鍙傛暟")
+    @ExcelColumn(name="鍝嶅簲鍙傛暟")
+    private String repose;
+
+    @ApiModelProperty(value = "璋冪敤缁撴灉 0鎴愬姛 1澶辫触", example = "1")
+    @ExcelColumn(name="璋冪敤缁撴灉 0鎴愬姛 1澶辫触")
+    private Integer success;
+
+    @ApiModelProperty(value = "涓夋柟骞冲彴 0WMS", example = "1")
+    @ExcelColumn(name="涓夋柟骞冲彴 0WMS")
+    private Integer plat;
+
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷  0浣滀笟", example = "1")
+    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷  0浣滀笟")
+    private Integer objType;
+
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜锛堝涓敤鑻辨枃閫楀彿闅斿紑锛�")
+    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜锛堝涓敤鑻辨枃閫楀彿闅斿紑锛�")
+    private String objId;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
new file mode 100644
index 0000000..087be1d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -0,0 +1,255 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 鏈堝彴璋冨害浣滀笟淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("鏈堝彴璋冨害浣滀笟淇℃伅琛�")
+@TableName("`platform_job`")
+public class PlatformJob {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "鍚嶇О")
+    @ExcelColumn(name="鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鐘舵�� 0寰呯‘璁� 1寰呯鍒� 2绛夊緟鍙彿 3鍙彿涓� 4浣滀笟涓� 5浣滀笟瀹屾垚 6寮傚父鎸傝捣 7鏈堝彴绛夊緟 8宸蹭綔搴�", example = "1")
+    @ExcelColumn(name="鐘舵�� 0寰呯‘璁� 1寰呯鍒� 2绛夊緟鍙彿 3鍙彿涓� 4浣滀笟涓� 5浣滀笟瀹屾垚 6寮傚父鎸傝捣 7鏈堝彴绛夊緟 8宸蹭綔搴�")
+    private Integer status;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "浣滀笟鍗曞彿")
+    @ExcelColumn(name="浣滀笟鍗曞彿")
+    private String startTime;
+
+    @ApiModelProperty(value = "浣滀笟鍞竴鏍囪瘑")
+    @ExcelColumn(name="浣滀笟鍞竴鏍囪瘑")
+    private String endTime;
+
+    @ApiModelProperty(value = "鍙告満缂栫爜", example = "1")
+    @ExcelColumn(name="鍙告満缂栫爜")
+    private Integer deviceIds;
+
+    @ApiModelProperty(value = "鍙告満濮撳悕")
+    @ExcelColumn(name="鍙告満濮撳悕")
+    private String screenIds;
+
+    @ApiModelProperty(value = "鍙告満鎵嬫満鍙�")
+    @ExcelColumn(name="鍙告満鎵嬫満鍙�")
+    private String workingNum;
+
+    @ApiModelProperty(value = "骞挎挱鎻愰啋娆℃暟", example = "1")
+    @ExcelColumn(name="骞挎挱鎻愰啋娆℃暟")
+    private Integer broadcastNum;
+
+    @ApiModelProperty(value = "骞挎挱璁惧缂栫爜")
+    @ExcelColumn(name="骞挎挱璁惧缂栫爜")
+    private String broadcastIds;
+
+    @ApiModelProperty(value = "骞挎挱鎻愰啋鍐呭")
+    @ExcelColumn(name="骞挎挱鎻愰啋鍐呭")
+    private String broadcastInfo;
+
+    @ApiModelProperty(value = "骞挎挱鎻愰啋涓嬪彂鐘舵�� 0寰呬笅鍙� 1涓嬪彂涓� 2涓嬪彂鎴愬姛 3涓嬪彂澶辫触", example = "1")
+    @ExcelColumn(name="骞挎挱鎻愰啋涓嬪彂鐘舵�� 0寰呬笅鍙� 1涓嬪彂涓� 2涓嬪彂鎴愬姛 3涓嬪彂澶辫触")
+    private Integer broadcastHkstatus;
+
+    @ApiModelProperty(value = "骞挎挱鎻愰啋涓嬪彂鏃堕棿")
+    @ExcelColumn(name="骞挎挱鎻愰啋涓嬪彂鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date broadcastHkdate;
+
+    @ApiModelProperty(value = "骞挎挱鎻愰啋涓嬪彂澶囨敞")
+    @ExcelColumn(name="骞挎挱鎻愰啋涓嬪彂澶囨敞")
+    private String broadcastHkinfo;
+
+    @ApiModelProperty(value = "绛惧埌鏃堕棿")
+    @ExcelColumn(name="绛惧埌鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date signDate;
+
+    @ApiModelProperty(value = "绛惧埌鏂瑰紡 0app绛惧埌 1鎵爜绛惧埌", example = "1")
+    @ExcelColumn(name="绛惧埌鏂瑰紡 0app绛惧埌 1鎵爜绛惧埌")
+    private Integer singType;
+
+    @ApiModelProperty(value = "绛惧埌璺濈(绫筹級", example = "1")
+    @ExcelColumn(name="绛惧埌璺濈(绫筹級")
+    private BigDecimal signDistance;
+
+    @ApiModelProperty(value = "鍒嗛厤鏈堝彴缂栫爜锛堝叧鑱攑latform)", example = "1")
+    @ExcelColumn(name="鍒嗛厤鏈堝彴缂栫爜锛堝叧鑱攑latform)")
+    private Integer platformId;
+
+    @ApiModelProperty(value = "鍙彿鏃堕棿")
+    @ExcelColumn(name="鍙彿鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date callDate;
+
+    @ApiModelProperty(value = "鍙彿浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍙彿浜虹紪鐮�")
+    private Integer callUserId;
+
+    @ApiModelProperty(value = "鍙彿澶囨敞")
+    @ExcelColumn(name="鍙彿澶囨敞")
+    private String callInfo;
+
+    @ApiModelProperty(value = "寮�濮嬩綔涓氭椂闂�")
+    @ExcelColumn(name="寮�濮嬩綔涓氭椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startDate;
+
+    @ApiModelProperty(value = "浣滀笟瀹屾垚鏃堕棿锛堟渶缁堟椂闂达級")
+    @ExcelColumn(name="浣滀笟瀹屾垚鏃堕棿锛堟渶缁堟椂闂达級")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date doneDate;
+
+    @ApiModelProperty(value = "寮傚父鎸傝捣鏃堕棿")
+    @ExcelColumn(name="寮傚父鎸傝捣鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date errorDate;
+
+    @ApiModelProperty(value = "寮傚父鎸傝捣浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="寮傚父鎸傝捣浜虹紪鐮�")
+    private Integer errorUserId;
+
+    @ApiModelProperty(value = "寮傚父鎸傝捣澶囨敞")
+    @ExcelColumn(name="寮傚父鎸傝捣澶囨敞")
+    private String errorInfo;
+
+    @ApiModelProperty(value = "鏈堝彴杞氦鏃堕棿")
+    @ExcelColumn(name="鏈堝彴杞氦鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date transPlatformDate;
+
+    @ApiModelProperty(value = "鏈堝彴杞氦澶勭悊浜�", example = "1")
+    @ExcelColumn(name="鏈堝彴杞氦澶勭悊浜�")
+    private Integer transPlatformUserId;
+
+    @ApiModelProperty(value = "鏈堝彴杞氦澶囨敞")
+    @ExcelColumn(name="鏈堝彴杞氦澶囨敞")
+    private String transPlatformInfo;
+
+    @ApiModelProperty(value = "杞﹁締杩涘巶鏃堕棿")
+    @ExcelColumn(name="杞﹁締杩涘巶鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inDate;
+
+    @ApiModelProperty(value = "杞﹁締绂诲巶鏃堕棿")
+    @ExcelColumn(name="杞﹁締绂诲巶鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date outDate;
+
+    @ApiModelProperty(value = "绂诲巶鏂瑰紡 0鑷姩绂诲巶 1鎵嬪姩绂诲満", example = "1")
+    @ExcelColumn(name="绂诲巶鏂瑰紡 0鑷姩绂诲巶 1鎵嬪姩绂诲満")
+    private Integer outType;
+
+    @ApiModelProperty(value = "杞﹁締绂诲巶涓嬪彂鐘舵�� 0寰呬笅鍙� 1涓嬪彂涓� 2涓嬪彂鎴愬姛 3涓嬪彂澶辫触", example = "1")
+    @ExcelColumn(name="杞﹁締绂诲巶涓嬪彂鐘舵�� 0寰呬笅鍙� 1涓嬪彂涓� 2涓嬪彂鎴愬姛 3涓嬪彂澶辫触")
+    private Integer outHkstatus;
+
+    @ApiModelProperty(value = "杞﹁締绂诲巶涓嬪彂鏃堕棿")
+    @ExcelColumn(name="杞﹁締绂诲巶涓嬪彂鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date outHkdate;
+
+    @ApiModelProperty(value = "杞﹁締绂诲巶涓嬪彂澶囨敞")
+    @ExcelColumn(name="杞﹁締绂诲巶涓嬪彂澶囨敞")
+    private String outHkinfo;
+
+    @ApiModelProperty(value = "杞﹁締杩涘巶涓嬪彂鐘舵�� 0寰呬笅鍙� 1涓嬪彂涓� 2涓嬪彂鎴愬姛 3涓嬪彂澶辫触", example = "1")
+    @ExcelColumn(name="杞﹁締杩涘巶涓嬪彂鐘舵�� 0寰呬笅鍙� 1涓嬪彂涓� 2涓嬪彂鎴愬姛 3涓嬪彂澶辫触")
+    private Integer inHkstatus;
+
+    @ApiModelProperty(value = "杞﹁締杩涘巶涓嬪彂澶囨敞")
+    @ExcelColumn(name="杞﹁締杩涘巶涓嬪彂澶囨敞")
+    private String nHkinfo;
+
+    @ApiModelProperty(value = "杞﹁締杩涘巶涓嬪彂鏃堕棿")
+    @ExcelColumn(name="杞﹁締杩涘巶涓嬪彂鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inHkdate;
+
+    @ApiModelProperty(value = "浣滀笟绫诲瀷 0鑷湁杞﹀嵏璐� 1鑷湁杞﹁璐� 2澶栧崗杞﹀嵏璐� 3澶栧崗杞﹁璐� 4甯傚叕鍙稿鍗忚溅鍗歌揣", example = "1")
+    @ExcelColumn(name="浣滀笟绫诲瀷 0鑷湁杞﹀嵏璐� 1鑷湁杞﹁璐� 2澶栧崗杞﹀嵏璐� 3澶栧崗杞﹁璐� 4甯傚叕鍙稿鍗忚溅鍗歌揣")
+    private Integer type;
+
+    @ApiModelProperty(value = "鍓嶈溅鐗屽彿")
+    @ExcelColumn(name="鍓嶈溅鐗屽彿")
+    private String carCodeFront;
+
+    @ApiModelProperty(value = "鍚庤溅鐗屽彿")
+    @ExcelColumn(name="鍚庤溅鐗屽彿")
+    private String carCodeBack;
+
+    @ApiModelProperty(value = "鍙告満鎵�灞為儴闂ㄧ紪鐮�", example = "1")
+    @ExcelColumn(name="鍙告満鎵�灞為儴闂ㄧ紪鐮�")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "鍙告満鎵�灞為儴闂ㄥ悕绉拌矾寰�")
+    @ExcelColumn(name="鍙告満鎵�灞為儴闂ㄥ悕绉拌矾寰�")
+    private String companyNamePath;
+
+    @ApiModelProperty(value = "浣滃簾鏃堕棿")
+    @ExcelColumn(name="浣滃簾鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date cancelDate;
+
+    @ApiModelProperty(value = "浣滃簾澶勭悊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="浣滃簾澶勭悊浜虹紪鐮�")
+    private Integer cancelUserId;
+
+    @ApiModelProperty(value = "浣滀负澶勭悊澶囨敞")
+    @ExcelColumn(name="浣滀负澶勭悊澶囨敞")
+    private String cancelInfo;
+
+    @ApiModelProperty(value = "鍏ュ洯浜嬬敱")
+    @ExcelColumn(name="鍏ュ洯浜嬬敱")
+    private String reason;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformLog.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformLog.java
new file mode 100644
index 0000000..1ae3037
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformLog.java
@@ -0,0 +1,82 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鏈堝彴_浣滀笟鎿嶄綔鍘嗗彶琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("鏈堝彴_浣滀笟鎿嶄綔鍘嗗彶琛�")
+@TableName("`platform_log`")
+public class PlatformLog {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鏈堝彴浣滀笟缂栫爜锛堝叧鑱攑latform_job)", example = "1")
+    @ExcelColumn(name="鏈堝彴浣滀笟缂栫爜锛堝叧鑱攑latform_job)")
+    private Integer jobId;
+
+    @ApiModelProperty(value = "鏍囬")
+    @ExcelColumn(name="鏍囬")
+    private String title;
+
+    @ApiModelProperty(value = "绠�浠�")
+    @ExcelColumn(name="绠�浠�")
+    private String content;
+
+    @ApiModelProperty(value = "鎿嶄綔绫诲瀷 0涓嬪彂浠诲姟 1鍙告満绛惧埌 2瀹℃牳閫氳繃 3瀹℃壒涓嶉�氳繃 4鍙彿 5杞氦鏈堝彴 6鎸傝捣 7鍙告満杩涘巶 8鍙告満绂诲巶 9浣滀笟浣滃簾鍙栨秷 10浣滀笟瀹屾垚", example = "1")
+    @ExcelColumn(name="鎿嶄綔绫诲瀷 0涓嬪彂浠诲姟 1鍙告満绛惧埌 2瀹℃牳閫氳繃 3瀹℃壒涓嶉�氳繃 4鍙彿 5杞氦鏈堝彴 6鎸傝捣 7鍙告満杩涘巶 8鍙告満绂诲巶 9浣滀笟浣滃簾鍙栨秷 10浣滀笟瀹屾垚")
+    private Integer objType;
+
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜")
+    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜")
+    private String objId;
+
+    @ApiModelProperty(value = "鎿嶄綔鍓嶅唴瀹�")
+    @ExcelColumn(name="鎿嶄綔鍓嶅唴瀹�")
+    private String beforeContent;
+
+    @ApiModelProperty(value = "鎿嶄綔鍚庡唴瀹�")
+    @ExcelColumn(name="鎿嶄綔鍚庡唴瀹�")
+    private String afterContent;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformQueue.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformQueue.java
new file mode 100644
index 0000000..85e93fe
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformQueue.java
@@ -0,0 +1,106 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鏈堝彴_鍙彿鎺掗槦淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("鏈堝彴_鍙彿鎺掗槦淇℃伅琛�")
+@TableName("`platform_queue`")
+public class PlatformQueue {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鏈堝彴浣滀笟缂栫爜锛堝叧鑱攑latform_job)", example = "1")
+    @ExcelColumn(name="鏈堝彴浣滀笟缂栫爜锛堝叧鑱攑latform_job)")
+    private Integer jobId;
+
+    @ApiModelProperty(value = "鏍囬")
+    @ExcelColumn(name="鏍囬")
+    private String title;
+
+    @ApiModelProperty(value = "绠�浠�")
+    @ExcelColumn(name="绠�浠�")
+    private String content;
+
+    @ApiModelProperty(value = "鐘舵�� 0绛夊緟涓� 1鍙彿涓� 2浣滀笟涓�", example = "1")
+    @ExcelColumn(name="鐘舵�� 0绛夊緟涓� 1鍙彿涓� 2浣滀笟涓�")
+    private Integer status;
+
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜 0浣滀笟", example = "1")
+    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜 0浣滀笟")
+    private Integer objType;
+
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜", example = "1")
+    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜")
+    private Integer objId;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    @ExcelColumn(name="杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "鏈堝彴缂栫爜", example = "1")
+    @ExcelColumn(name="鏈堝彴缂栫爜")
+    private Integer platformId;
+
+    @ApiModelProperty(value = "鏈堝彴鍚嶇О")
+    @ExcelColumn(name="鏈堝彴鍚嶇О")
+    private String platformName;
+
+    @ApiModelProperty(value = "鍙告満鎵嬫満鍙�")
+    @ExcelColumn(name="鍙告満鎵嬫満鍙�")
+    private String driverPhone;
+
+    @ApiModelProperty(value = "鍙告満鍚�")
+    @ExcelColumn(name="鍙告満鍚�")
+    private String driverName;
+
+    @ApiModelProperty(value = "鍙告満缂栫爜", example = "1")
+    @ExcelColumn(name="鍙告満缂栫爜")
+    private Integer driverId;
+
+    @ApiModelProperty(value = "璁㈠崟鍚堝悓鍙�")
+    @ExcelColumn(name="璁㈠崟鍚堝悓鍙�")
+    private String orderCode;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformShowParam.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformShowParam.java
new file mode 100644
index 0000000..e1129fd
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformShowParam.java
@@ -0,0 +1,66 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鏈堝彴_鏄剧ず閰嶇疆淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("鏈堝彴_鏄剧ず閰嶇疆淇℃伅琛�")
+@TableName("`platform_show_param`")
+public class PlatformShowParam {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鏈堝彴缂栫爜锛堝叧鑱攑latforms)", example = "1")
+    @ExcelColumn(name="鏈堝彴缂栫爜锛堝叧鑱攑latforms)")
+    private Integer platformId;
+
+    @ApiModelProperty(value = "浜哄憳缂栫爜锛堝叧鑱攎ember)", example = "1")
+    @ExcelColumn(name="浜哄憳缂栫爜锛堝叧鑱攎ember)")
+    private Integer memberId;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Tasks.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Tasks.java
new file mode 100644
index 0000000..3d12b4e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Tasks.java
@@ -0,0 +1,105 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 瀹夐槻涓嬪彂骞冲彴浠诲姟淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Data
+@ApiModel("瀹夐槻涓嬪彂骞冲彴浠诲姟淇℃伅琛�")
+@TableName("`tasks`")
+public class Tasks {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private String creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private String edirot;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鍚嶇О")
+    @ExcelColumn(name="鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "绫诲瀷 0鍔冲姟璁垮 1鍐呴儴浜哄憳")
+    @ExcelColumn(name="绫诲瀷 0鍔冲姟璁垮 1鍐呴儴浜哄憳")
+    private String type;
+
+    @ApiModelProperty(value = "鐘舵�� 0姝e父 1宸插彇娑� 2宸茬粓姝�", example = "1")
+    @ExcelColumn(name="鐘舵�� 0姝e父 1宸插彇娑� 2宸茬粓姝�")
+    private Integer status;
+
+    @ApiModelProperty(value = "娴峰悍鏍囪瘑", example = "1")
+    @ExcelColumn(name="娴峰悍鏍囪瘑")
+    private Integer hkId;
+
+    @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1浠诲姟宸插垱寤� 2浠诲姟宸叉墽琛� 3浠诲姟涓嬭浇瀹屾垚 4浠诲姟涓嬭浇澶辫触 5浠诲姟宸茬粓姝�", example = "1")
+    @ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1浠诲姟宸插垱寤� 2浠诲姟宸叉墽琛� 3浠诲姟涓嬭浇瀹屾垚 4浠诲姟涓嬭浇澶辫触 5浠诲姟宸茬粓姝�")
+    private Integer hkStatus;
+
+    @ApiModelProperty(value = "娴峰悍鏈�杩戝悓姝ユ椂闂�")
+    @ExcelColumn(name="娴峰悍鏈�杩戝悓姝ユ椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date hkDate;
+
+    @ApiModelProperty(value = "鏈�杩戞煡璇换鍔℃墽琛岀粨鏋滐紙鏌ヨ杩涘害缁撴灉杩斿洖json锛�")
+    @ExcelColumn(name="鏈�杩戞煡璇换鍔℃墽琛岀粨鏋滐紙鏌ヨ杩涘害缁撴灉杩斿洖json锛�")
+    private String hkResponse;
+
+    @ApiModelProperty(value = "浠诲姟涓嬭浇瀹屾垚鏃堕棿")
+    @ExcelColumn(name="浠诲姟涓嬭浇瀹屾垚鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date hkDoneDate;
+
+    @ApiModelProperty(value = "缁堟鍘熷洜")
+    @ExcelColumn(name="缁堟鍘熷洜")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date stopInfo;
+
+    @ApiModelProperty(value = "缁堟鏃堕棿")
+    @ExcelColumn(name="缁堟鏃堕棿")
+    private String shopDate;
+
+    @ApiModelProperty(value = "缁堟鎿嶄綔浜虹紪鐮�(鍏宠仈system_user)", example = "1")
+    @ExcelColumn(name="缁堟鎿嶄綔浜虹紪鐮�(鍏宠仈system_user)")
+    private Integer stopUserId;
+
+    @ApiModelProperty(value = "")
+    @ExcelColumn(name="")
+    private String column19;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java
new file mode 100644
index 0000000..3923e9a
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java
@@ -0,0 +1,97 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 璁垮鎶ュ鍋滆溅搴撳叧鑱旇〃
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Data
+@ApiModel("璁垮鎶ュ鍋滆溅搴撳叧鑱旇〃")
+@TableName("`visit_park`")
+public class VisitPark {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鍋滆溅搴撶紪鐮侊紙鍏宠仈car_parks)")
+    @ExcelColumn(name="鍋滆溅搴撶紪鐮侊紙鍏宠仈car_parks)")
+    private String parkId;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "鎶ュ缂栫爜锛堝叧鑱攙isit_apply)")
+    @ExcelColumn(name="鎶ュ缂栫爜锛堝叧鑱攙isit_apply)")
+    private String visitApplyId;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    @ExcelColumn(name="杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "娴峰悍鏍囪瘑", example = "1")
+    @ExcelColumn(name="娴峰悍鏍囪瘑")
+    private Integer hkId;
+
+    @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� 2鍚屾澶辫触", example = "1")
+    @ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� 2鍚屾澶辫触")
+    private Integer hkStatus;
+
+    @ApiModelProperty(value = "娴峰悍鏈�杩戝悓姝ユ椂闂�")
+    @ExcelColumn(name="娴峰悍鏈�杩戝悓姝ユ椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date hkDate;
+
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    @ExcelColumn(name="寮�濮嬫椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startTime;
+
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    @ExcelColumn(name="缁撴潫鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+
+    @ApiModelProperty(value = "鍋滆溅搴撴捣搴风紪鐮�")
+    @ExcelColumn(name="鍋滆溅搴撴捣搴风紪鐮�")
+    private String parkHkId;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitProblemLog.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitProblemLog.java
new file mode 100644
index 0000000..64e2db7
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitProblemLog.java
@@ -0,0 +1,95 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 璁垮绛旈璁板綍琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Data
+@ApiModel("璁垮绛旈璁板綍琛�")
+@TableName("`visit_problem_log`")
+public class VisitProblemLog {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "璁垮缂栫爜", example = "1")
+    @ExcelColumn(name="璁垮缂栫爜")
+    private Integer userId;
+
+    @ApiModelProperty(value = "鏄惁宸插畬鎴愮敵璇� 0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁宸插畬鎴愮敵璇� 0鍚� 1鏄�")
+    private Integer status;
+
+    @ApiModelProperty(value = "缁戝畾鐢宠缂栫爜")
+    @ExcelColumn(name="缁戝畾鐢宠缂栫爜")
+    private String logId;
+
+    @ApiModelProperty(value = "寰楀垎", example = "1")
+    @ExcelColumn(name="寰楀垎")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "绛旈鏄庣粏锛宩son瀛樺偍")
+    @ExcelColumn(name="绛旈鏄庣粏锛宩son瀛樺偍")
+    private String content;
+
+    @ApiModelProperty(value = "绛旈浜哄鍚�")
+    @ExcelColumn(name="绛旈浜哄鍚�")
+    private String name;
+
+    @ApiModelProperty(value = "绛旈浜烘墜鏈哄悗")
+    @ExcelColumn(name="绛旈浜烘墜鏈哄悗")
+    private String phone;
+
+    @ApiModelProperty(value = "绛旈浜烘墍灞炵粍缁囩紪鐮�", example = "1")
+    @ExcelColumn(name="绛旈浜烘墍灞炵粍缁囩紪鐮�")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "缁勭粐鍚嶇О")
+    @ExcelColumn(name="缁勭粐鍚嶇О")
+    private String companyName;
+
+    @ApiModelProperty(value = "openid")
+    @ExcelColumn(name="openid")
+    private String openid;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitProblems.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitProblems.java
new file mode 100644
index 0000000..fb8ddd3
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitProblems.java
@@ -0,0 +1,83 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 璇曢淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Data
+@ApiModel("璇曢淇℃伅琛�")
+@TableName("`visit_problems`")
+public class VisitProblems {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "棰樼洰")
+    @ExcelColumn(name="棰樼洰")
+    private String title;
+
+    @ApiModelProperty(value = "閫夐」闆嗗悎")
+    @ExcelColumn(name="閫夐」闆嗗悎")
+    private String options;
+
+    @ApiModelProperty(value = "姝g‘绛旀")
+    @ExcelColumn(name="姝g‘绛旀")
+    private String answer;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnu;
+
+    @ApiModelProperty(value = "绫诲瀷 0鍗曢�� 1澶氶��", example = "1")
+    @ExcelColumn(name="绫诲瀷 0鍗曢�� 1澶氶��")
+    private Integer type;
+
+    @ApiModelProperty(value = "鍒嗗��", example = "1")
+    @ExcelColumn(name="鍒嗗��")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "浣跨敤鍦烘櫙 0鍔冲姟浜哄憳 1鏅�氳瀹�", example = "1")
+    @ExcelColumn(name="浣跨敤鍦烘櫙 0鍔冲姟浜哄憳 1鏅�氳瀹�")
+    private Integer useType;
+
+}
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitReason.java
similarity index 60%
copy from server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java
copy to server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitReason.java
index c15f488..a2c9a2f 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Multifile.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitReason.java
@@ -1,6 +1,5 @@
 package com.doumee.dao.business.model;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -12,14 +11,14 @@
 import java.util.Date;
 
 /**
- * 闄勪欢涓婁紶淇℃伅琛�
+ * 璁垮浜嬬敱淇℃伅琛�
  * @author 姹熻箘韫�
- * @date 2023/05/04 18:18
+ * @since 2024/04/28 15:44
  */
 @Data
-@ApiModel("闄勪欢涓婁紶淇℃伅琛�")
-@TableName("`multifile`")
-public class Multifile {
+@ApiModel("璁垮浜嬬敱淇℃伅琛�")
+@TableName("`visit_reason`")
+public class VisitReason {
 
     @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "涓婚敭", example = "1")
@@ -48,36 +47,20 @@
     @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
     private Integer isdeleted;
 
-    @ApiModelProperty(value = "鏂囦欢鍚�")
-    @ExcelColumn(name="鏂囦欢鍚�")
-    private String name;
-
     @ApiModelProperty(value = "澶囨敞")
     @ExcelColumn(name="澶囨敞")
-    private String info;
+    private String remark;
 
-    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜", example = "1")
-    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜")
-    private Integer objId;
-
-    @ApiModelProperty(value = "绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬", example = "1")
-    @ExcelColumn(name="绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬")
-    private Integer type;
-
-    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0浼氳瀹ら瀹氶檮浠�", example = "1")
-    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0浼氳瀹ら瀹氶檮浠�")
-    private Integer objType;
-
-    @ApiModelProperty(value = "鏂囦欢鍦板潃")
-    @ExcelColumn(name="鏂囦欢鍦板潃")
-    private String fileurl;
+    @ApiModelProperty(value = "棰樼洰")
+    @ExcelColumn(name="棰樼洰")
+    private String title;
 
     @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
     @ExcelColumn(name="鎺掑簭鐮�")
     private Integer sortnum;
 
-    @ApiModelProperty(value = "鏂囦欢鍦板潃")
-    @TableField(exist = false)
-    private String fileFullUrl;
+    @ApiModelProperty(value = "绫诲瀷", example = "1")
+    @ExcelColumn(name="绫诲瀷")
+    private Integer type;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visitor.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visitor.java
new file mode 100644
index 0000000..0068d40
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visitor.java
@@ -0,0 +1,137 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 璁垮淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Data
+@ApiModel("璁垮淇℃伅琛�")
+@TableName("`visitor`")
+public class Visitor {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鎵�灞炵粍缁囩紪鐮�(鍏宠仈company琛�)", example = "1")
+    @ExcelColumn(name="鎵�灞炵粍缁囩紪鐮�(鍏宠仈company琛�)")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "浜鸿劯鐓х墖")
+    @ExcelColumn(name="浜鸿劯鐓х墖")
+    private String faceImg;
+
+    @ApiModelProperty(value = "鍋ュ悍鐮�")
+    @ExcelColumn(name="鍋ュ悍鐮�")
+    private String imgurl;
+
+    @ApiModelProperty(value = "绫诲瀷 0鍔冲姟璁垮 1鏅�氳瀹�  2鍐呴儴浜哄憳 3澶栧崗鍙告満", example = "1")
+    @ExcelColumn(name="绫诲瀷 0鍔冲姟璁垮 1鏅�氳瀹�  2鍐呴儴浜哄憳 3澶栧崗鍙告満")
+    private Integer type;
+
+    @ApiModelProperty(value = "璁垮鍚嶇О")
+    @ExcelColumn(name="璁垮鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "璁垮骞撮緞")
+    @ExcelColumn(name="璁垮骞撮緞")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date birthday;
+
+    @ApiModelProperty(value = "鎵嬫満鍙�")
+    @ExcelColumn(name="鎵嬫満鍙�")
+    private String phone;
+
+    @ApiModelProperty(value = "韬唤璇佸彿锛圡D4鍔犲瘑锛�")
+    @ExcelColumn(name="韬唤璇佸彿锛圡D4鍔犲瘑锛�")
+    private String idcardNo;
+
+    @ApiModelProperty(value = "璇佷欢鏄剧ず淇℃伅")
+    @ExcelColumn(name="璇佷欢鏄剧ず淇℃伅")
+    private String idcardDecode;
+
+    @ApiModelProperty(value = "宸ュ彿")
+    @ExcelColumn(name="宸ュ彿")
+    private String code;
+
+    @ApiModelProperty(value = "鐝")
+    @ExcelColumn(name="鐝")
+    private String classes;
+
+    @ApiModelProperty(value = "鍦ㄨ亴鐘舵�� 0鍦ㄨ亴 1绂昏亴", example = "1")
+    @ExcelColumn(name="鍦ㄨ亴鐘舵�� 0鍦ㄨ亴 1绂昏亴")
+    private Integer workStatus;
+
+    @ApiModelProperty(value = "鐘舵�� 0姝e父 1绂佺敤 2鎷夐粦/鍐荤粨", example = "1")
+    @ExcelColumn(name="鐘舵�� 0姝e父 1绂佺敤 2鎷夐粦/鍐荤粨")
+    private Integer status;
+
+    @ApiModelProperty(value = "娣诲姞浜虹紪鐮侊紙鑷叧鑱旓級", example = "1")
+    @ExcelColumn(name="娣诲姞浜虹紪鐮侊紙鑷叧鑱旓級")
+    private Integer parentId;
+
+    @ApiModelProperty(value = "寰俊openid")
+    @ExcelColumn(name="寰俊openid")
+    private String openid;
+
+    @ApiModelProperty(value = "鐧婚檰瀵嗙爜")
+    @ExcelColumn(name="鐧婚檰瀵嗙爜")
+    private String passward;
+
+    @ApiModelProperty(value = "鏈�杩戠櫥褰曟椂闂�")
+    @ExcelColumn(name="鏈�杩戠櫥褰曟椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date lastLoginDate;
+
+    @ApiModelProperty(value = "鐧诲綍娆℃暟", example = "1")
+    @ExcelColumn(name="鐧诲綍娆℃暟")
+    private Integer loginNum;
+
+    @ApiModelProperty(value = "鎬у埆 1鐢� 2濂�", example = "1")
+    @ExcelColumn(name="鎬у埆 1鐢� 2濂�")
+    private Integer sex;
+
+    @ApiModelProperty(value = "鏈�鍚庝竴娆$鍒版椂闂�")
+    @ExcelColumn(name="鏈�鍚庝竴娆$鍒版椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date lastVisitDate;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveTemplService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveTemplService.java
new file mode 100644
index 0000000..47b8bcb
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveTemplService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.ApproveTempl;
+import java.util.List;
+
+/**
+ * 瀹℃壒妯$増淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface ApproveTemplService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param approveTempl 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(ApproveTempl approveTempl);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param approveTempl 瀹炰綋瀵硅薄
+     */
+    void delete(ApproveTempl approveTempl);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param approveTempl 瀹炰綋瀵硅薄
+     */
+    void updateById(ApproveTempl approveTempl);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param approveTempls 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<ApproveTempl> approveTempls);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return ApproveTempl
+     */
+    ApproveTempl findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param approveTempl 瀹炰綋瀵硅薄
+     * @return ApproveTempl
+     */
+    ApproveTempl findOne(ApproveTempl approveTempl);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param approveTempl 瀹炰綋瀵硅薄
+     * @return List<ApproveTempl>
+     */
+    List<ApproveTempl> findList(ApproveTempl approveTempl);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<ApproveTempl>
+     */
+    PageData<ApproveTempl> findPage(PageWrap<ApproveTempl> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param approveTempl 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(ApproveTempl approveTempl);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarBookService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarBookService.java
new file mode 100644
index 0000000..9733270
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarBookService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CarBook;
+import java.util.List;
+
+/**
+ * 杞﹁締棰勭害璁板綍淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface CarBookService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param carBook 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(CarBook carBook);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param carBook 瀹炰綋瀵硅薄
+     */
+    void delete(CarBook carBook);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param carBook 瀹炰綋瀵硅薄
+     */
+    void updateById(CarBook carBook);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param carBooks 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<CarBook> carBooks);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return CarBook
+     */
+    CarBook findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param carBook 瀹炰綋瀵硅薄
+     * @return CarBook
+     */
+    CarBook findOne(CarBook carBook);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param carBook 瀹炰綋瀵硅薄
+     * @return List<CarBook>
+     */
+    List<CarBook> findList(CarBook carBook);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<CarBook>
+     */
+    PageData<CarBook> findPage(PageWrap<CarBook> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param carBook 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(CarBook carBook);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarDriverService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarDriverService.java
new file mode 100644
index 0000000..3d15f0d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarDriverService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CarDriver;
+import java.util.List;
+
+/**
+ * 鍙告満淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface CarDriverService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param carDriver 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(CarDriver carDriver);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param carDriver 瀹炰綋瀵硅薄
+     */
+    void delete(CarDriver carDriver);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param carDriver 瀹炰綋瀵硅薄
+     */
+    void updateById(CarDriver carDriver);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param carDrivers 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<CarDriver> carDrivers);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return CarDriver
+     */
+    CarDriver findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param carDriver 瀹炰綋瀵硅薄
+     * @return CarDriver
+     */
+    CarDriver findOne(CarDriver carDriver);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param carDriver 瀹炰綋瀵硅薄
+     * @return List<CarDriver>
+     */
+    List<CarDriver> findList(CarDriver carDriver);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<CarDriver>
+     */
+    PageData<CarDriver> findPage(PageWrap<CarDriver> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param carDriver 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(CarDriver carDriver);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarParksService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarParksService.java
new file mode 100644
index 0000000..9039af1
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarParksService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CarParks;
+import java.util.List;
+
+/**
+ * 鍋滆溅搴撲俊鎭〃Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface CarParksService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param carParks 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(CarParks carParks);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param carParks 瀹炰綋瀵硅薄
+     */
+    void delete(CarParks carParks);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param carParks 瀹炰綋瀵硅薄
+     */
+    void updateById(CarParks carParks);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param carParkss 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<CarParks> carParkss);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return CarParks
+     */
+    CarParks findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param carParks 瀹炰綋瀵硅薄
+     * @return CarParks
+     */
+    CarParks findOne(CarParks carParks);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param carParks 瀹炰綋瀵硅薄
+     * @return List<CarParks>
+     */
+    List<CarParks> findList(CarParks carParks);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<CarParks>
+     */
+    PageData<CarParks> findPage(PageWrap<CarParks> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param carParks 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(CarParks carParks);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
new file mode 100644
index 0000000..af6ea00
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CarUseBook;
+import java.util.List;
+
+/**
+ * 杞﹁締_鐢ㄨ溅鐢宠淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface CarUseBookService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param carUseBook 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(CarUseBook carUseBook);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param carUseBook 瀹炰綋瀵硅薄
+     */
+    void delete(CarUseBook carUseBook);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param carUseBook 瀹炰綋瀵硅薄
+     */
+    void updateById(CarUseBook carUseBook);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param carUseBooks 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<CarUseBook> carUseBooks);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return CarUseBook
+     */
+    CarUseBook findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param carUseBook 瀹炰綋瀵硅薄
+     * @return CarUseBook
+     */
+    CarUseBook findOne(CarUseBook carUseBook);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param carUseBook 瀹炰綋瀵硅薄
+     * @return List<CarUseBook>
+     */
+    List<CarUseBook> findList(CarUseBook carUseBook);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<CarUseBook>
+     */
+    PageData<CarUseBook> findPage(PageWrap<CarUseBook> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param carUseBook 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(CarUseBook carUseBook);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/FormParamService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/FormParamService.java
new file mode 100644
index 0000000..d78ab35
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/FormParamService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.FormParam;
+import java.util.List;
+
+/**
+ * 琛ㄥ崟閰嶇疆淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface FormParamService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param formParam 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(FormParam formParam);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param formParam 瀹炰綋瀵硅薄
+     */
+    void delete(FormParam formParam);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param formParam 瀹炰綋瀵硅薄
+     */
+    void updateById(FormParam formParam);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param formParams 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<FormParam> formParams);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return FormParam
+     */
+    FormParam findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param formParam 瀹炰綋瀵硅薄
+     * @return FormParam
+     */
+    FormParam findOne(FormParam formParam);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param formParam 瀹炰綋瀵硅薄
+     * @return List<FormParam>
+     */
+    List<FormParam> findList(FormParam formParam);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<FormParam>
+     */
+    PageData<FormParam> findPage(PageWrap<FormParam> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param formParam 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(FormParam formParam);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerLogService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerLogService.java
new file mode 100644
index 0000000..9fcc313
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerLogService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.HiddenDangerLog;
+import java.util.List;
+
+/**
+ * 鐞嗚碃鎿嶄綔鍘嗗彶琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface HiddenDangerLogService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param hiddenDangerLog 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(HiddenDangerLog hiddenDangerLog);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param hiddenDangerLog 瀹炰綋瀵硅薄
+     */
+    void delete(HiddenDangerLog hiddenDangerLog);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param hiddenDangerLog 瀹炰綋瀵硅薄
+     */
+    void updateById(HiddenDangerLog hiddenDangerLog);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param hiddenDangerLogs 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<HiddenDangerLog> hiddenDangerLogs);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return HiddenDangerLog
+     */
+    HiddenDangerLog findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param hiddenDangerLog 瀹炰綋瀵硅薄
+     * @return HiddenDangerLog
+     */
+    HiddenDangerLog findOne(HiddenDangerLog hiddenDangerLog);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param hiddenDangerLog 瀹炰綋瀵硅薄
+     * @return List<HiddenDangerLog>
+     */
+    List<HiddenDangerLog> findList(HiddenDangerLog hiddenDangerLog);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<HiddenDangerLog>
+     */
+    PageData<HiddenDangerLog> findPage(PageWrap<HiddenDangerLog> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param hiddenDangerLog 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(HiddenDangerLog hiddenDangerLog);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerParamService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerParamService.java
new file mode 100644
index 0000000..9c18753
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerParamService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.HiddenDangerParam;
+import java.util.List;
+
+/**
+ * 闅愭偅鍖哄煙閰嶇疆绫诲瀷淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface HiddenDangerParamService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param hiddenDangerParam 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(HiddenDangerParam hiddenDangerParam);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param hiddenDangerParam 瀹炰綋瀵硅薄
+     */
+    void delete(HiddenDangerParam hiddenDangerParam);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param hiddenDangerParam 瀹炰綋瀵硅薄
+     */
+    void updateById(HiddenDangerParam hiddenDangerParam);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param hiddenDangerParams 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<HiddenDangerParam> hiddenDangerParams);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return HiddenDangerParam
+     */
+    HiddenDangerParam findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param hiddenDangerParam 瀹炰綋瀵硅薄
+     * @return HiddenDangerParam
+     */
+    HiddenDangerParam findOne(HiddenDangerParam hiddenDangerParam);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param hiddenDangerParam 瀹炰綋瀵硅薄
+     * @return List<HiddenDangerParam>
+     */
+    List<HiddenDangerParam> findList(HiddenDangerParam hiddenDangerParam);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<HiddenDangerParam>
+     */
+    PageData<HiddenDangerParam> findPage(PageWrap<HiddenDangerParam> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param hiddenDangerParam 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(HiddenDangerParam hiddenDangerParam);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java
new file mode 100644
index 0000000..0813a64
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.HiddenDanger;
+import java.util.List;
+
+/**
+ * 闅愭偅淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface HiddenDangerService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param hiddenDanger 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(HiddenDanger hiddenDanger);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param hiddenDanger 瀹炰綋瀵硅薄
+     */
+    void delete(HiddenDanger hiddenDanger);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param hiddenDanger 瀹炰綋瀵硅薄
+     */
+    void updateById(HiddenDanger hiddenDanger);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param hiddenDangers 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<HiddenDanger> hiddenDangers);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return HiddenDanger
+     */
+    HiddenDanger findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param hiddenDanger 瀹炰綋瀵硅薄
+     * @return HiddenDanger
+     */
+    HiddenDanger findOne(HiddenDanger hiddenDanger);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param hiddenDanger 瀹炰綋瀵硅薄
+     * @return List<HiddenDanger>
+     */
+    List<HiddenDanger> findList(HiddenDanger hiddenDanger);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<HiddenDanger>
+     */
+    PageData<HiddenDanger> findPage(PageWrap<HiddenDanger> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param hiddenDanger 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(HiddenDanger hiddenDanger);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformGroupService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformGroupService.java
new file mode 100644
index 0000000..d43b533
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformGroupService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.PlatformGroup;
+import java.util.List;
+
+/**
+ * 鏈堝彴_鍒嗙粍淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformGroupService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param platformGroup 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(PlatformGroup platformGroup);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param platformGroup 瀹炰綋瀵硅薄
+     */
+    void delete(PlatformGroup platformGroup);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param platformGroup 瀹炰綋瀵硅薄
+     */
+    void updateById(PlatformGroup platformGroup);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param platformGroups 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<PlatformGroup> platformGroups);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return PlatformGroup
+     */
+    PlatformGroup findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param platformGroup 瀹炰綋瀵硅薄
+     * @return PlatformGroup
+     */
+    PlatformGroup findOne(PlatformGroup platformGroup);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param platformGroup 瀹炰綋瀵硅薄
+     * @return List<PlatformGroup>
+     */
+    List<PlatformGroup> findList(PlatformGroup platformGroup);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<PlatformGroup>
+     */
+    PageData<PlatformGroup> findPage(PageWrap<PlatformGroup> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param platformGroup 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(PlatformGroup platformGroup);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformInterfaceLogService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformInterfaceLogService.java
new file mode 100644
index 0000000..4f4a6eb
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformInterfaceLogService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.PlatformInterfaceLog;
+import java.util.List;
+
+/**
+ * 浣滀笟璋冨害骞冲彴鎺ュ彛浜や簰璁板綍Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformInterfaceLogService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param platformInterfaceLog 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(PlatformInterfaceLog platformInterfaceLog);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param platformInterfaceLog 瀹炰綋瀵硅薄
+     */
+    void delete(PlatformInterfaceLog platformInterfaceLog);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param platformInterfaceLog 瀹炰綋瀵硅薄
+     */
+    void updateById(PlatformInterfaceLog platformInterfaceLog);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param platformInterfaceLogs 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<PlatformInterfaceLog> platformInterfaceLogs);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return PlatformInterfaceLog
+     */
+    PlatformInterfaceLog findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param platformInterfaceLog 瀹炰綋瀵硅薄
+     * @return PlatformInterfaceLog
+     */
+    PlatformInterfaceLog findOne(PlatformInterfaceLog platformInterfaceLog);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param platformInterfaceLog 瀹炰綋瀵硅薄
+     * @return List<PlatformInterfaceLog>
+     */
+    List<PlatformInterfaceLog> findList(PlatformInterfaceLog platformInterfaceLog);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<PlatformInterfaceLog>
+     */
+    PageData<PlatformInterfaceLog> findPage(PageWrap<PlatformInterfaceLog> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param platformInterfaceLog 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(PlatformInterfaceLog platformInterfaceLog);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
new file mode 100644
index 0000000..0e778f3
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.PlatformJob;
+import java.util.List;
+
+/**
+ * 鏈堝彴璋冨害浣滀笟淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformJobService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param platformJob 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(PlatformJob platformJob);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param platformJob 瀹炰綋瀵硅薄
+     */
+    void delete(PlatformJob platformJob);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param platformJob 瀹炰綋瀵硅薄
+     */
+    void updateById(PlatformJob platformJob);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param platformJobs 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<PlatformJob> platformJobs);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return PlatformJob
+     */
+    PlatformJob findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param platformJob 瀹炰綋瀵硅薄
+     * @return PlatformJob
+     */
+    PlatformJob findOne(PlatformJob platformJob);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param platformJob 瀹炰綋瀵硅薄
+     * @return List<PlatformJob>
+     */
+    List<PlatformJob> findList(PlatformJob platformJob);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<PlatformJob>
+     */
+    PageData<PlatformJob> findPage(PageWrap<PlatformJob> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param platformJob 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(PlatformJob platformJob);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformLogService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformLogService.java
new file mode 100644
index 0000000..2c8cc6a
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformLogService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.PlatformLog;
+import java.util.List;
+
+/**
+ * 鏈堝彴_浣滀笟鎿嶄綔鍘嗗彶琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformLogService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param platformLog 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(PlatformLog platformLog);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param platformLog 瀹炰綋瀵硅薄
+     */
+    void delete(PlatformLog platformLog);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param platformLog 瀹炰綋瀵硅薄
+     */
+    void updateById(PlatformLog platformLog);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param platformLogs 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<PlatformLog> platformLogs);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return PlatformLog
+     */
+    PlatformLog findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param platformLog 瀹炰綋瀵硅薄
+     * @return PlatformLog
+     */
+    PlatformLog findOne(PlatformLog platformLog);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param platformLog 瀹炰綋瀵硅薄
+     * @return List<PlatformLog>
+     */
+    List<PlatformLog> findList(PlatformLog platformLog);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<PlatformLog>
+     */
+    PageData<PlatformLog> findPage(PageWrap<PlatformLog> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param platformLog 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(PlatformLog platformLog);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformQueueService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformQueueService.java
new file mode 100644
index 0000000..7840cbc
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformQueueService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.PlatformQueue;
+import java.util.List;
+
+/**
+ * 鏈堝彴_鍙彿鎺掗槦淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformQueueService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param platformQueue 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(PlatformQueue platformQueue);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param platformQueue 瀹炰綋瀵硅薄
+     */
+    void delete(PlatformQueue platformQueue);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param platformQueue 瀹炰綋瀵硅薄
+     */
+    void updateById(PlatformQueue platformQueue);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param platformQueues 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<PlatformQueue> platformQueues);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return PlatformQueue
+     */
+    PlatformQueue findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param platformQueue 瀹炰綋瀵硅薄
+     * @return PlatformQueue
+     */
+    PlatformQueue findOne(PlatformQueue platformQueue);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param platformQueue 瀹炰綋瀵硅薄
+     * @return List<PlatformQueue>
+     */
+    List<PlatformQueue> findList(PlatformQueue platformQueue);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<PlatformQueue>
+     */
+    PageData<PlatformQueue> findPage(PageWrap<PlatformQueue> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param platformQueue 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(PlatformQueue platformQueue);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java
new file mode 100644
index 0000000..3b7c794
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Platform;
+import java.util.List;
+
+/**
+ * 鏈堝彴淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param platform 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(Platform platform);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param platform 瀹炰綋瀵硅薄
+     */
+    void delete(Platform platform);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param platform 瀹炰綋瀵硅薄
+     */
+    void updateById(Platform platform);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param platforms 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<Platform> platforms);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return Platform
+     */
+    Platform findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param platform 瀹炰綋瀵硅薄
+     * @return Platform
+     */
+    Platform findOne(Platform platform);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param platform 瀹炰綋瀵硅薄
+     * @return List<Platform>
+     */
+    List<Platform> findList(Platform platform);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<Platform>
+     */
+    PageData<Platform> findPage(PageWrap<Platform> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param platform 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(Platform platform);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformShowParamService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformShowParamService.java
new file mode 100644
index 0000000..79ba49d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformShowParamService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.PlatformShowParam;
+import java.util.List;
+
+/**
+ * 鏈堝彴_鏄剧ず閰嶇疆淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface PlatformShowParamService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param platformShowParam 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(PlatformShowParam platformShowParam);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param platformShowParam 瀹炰綋瀵硅薄
+     */
+    void delete(PlatformShowParam platformShowParam);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param platformShowParam 瀹炰綋瀵硅薄
+     */
+    void updateById(PlatformShowParam platformShowParam);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param platformShowParams 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<PlatformShowParam> platformShowParams);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return PlatformShowParam
+     */
+    PlatformShowParam findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param platformShowParam 瀹炰綋瀵硅薄
+     * @return PlatformShowParam
+     */
+    PlatformShowParam findOne(PlatformShowParam platformShowParam);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param platformShowParam 瀹炰綋瀵硅薄
+     * @return List<PlatformShowParam>
+     */
+    List<PlatformShowParam> findList(PlatformShowParam platformShowParam);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<PlatformShowParam>
+     */
+    PageData<PlatformShowParam> findPage(PageWrap<PlatformShowParam> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param platformShowParam 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(PlatformShowParam platformShowParam);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/TasksService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/TasksService.java
new file mode 100644
index 0000000..5b77636
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/TasksService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Tasks;
+import java.util.List;
+
+/**
+ * 瀹夐槻涓嬪彂骞冲彴浠诲姟淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+public interface TasksService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param tasks 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(Tasks tasks);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param tasks 瀹炰綋瀵硅薄
+     */
+    void delete(Tasks tasks);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param tasks 瀹炰綋瀵硅薄
+     */
+    void updateById(Tasks tasks);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param taskss 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<Tasks> taskss);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return Tasks
+     */
+    Tasks findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param tasks 瀹炰綋瀵硅薄
+     * @return Tasks
+     */
+    Tasks findOne(Tasks tasks);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param tasks 瀹炰綋瀵硅薄
+     * @return List<Tasks>
+     */
+    List<Tasks> findList(Tasks tasks);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<Tasks>
+     */
+    PageData<Tasks> findPage(PageWrap<Tasks> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param tasks 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(Tasks tasks);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitParkService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitParkService.java
new file mode 100644
index 0000000..14cbc8e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitParkService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.VisitPark;
+import java.util.List;
+
+/**
+ * 璁垮鎶ュ鍋滆溅搴撳叧鑱旇〃Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitParkService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param visitPark 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(VisitPark visitPark);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param visitPark 瀹炰綋瀵硅薄
+     */
+    void delete(VisitPark visitPark);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param visitPark 瀹炰綋瀵硅薄
+     */
+    void updateById(VisitPark visitPark);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param visitParks 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<VisitPark> visitParks);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return VisitPark
+     */
+    VisitPark findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param visitPark 瀹炰綋瀵硅薄
+     * @return VisitPark
+     */
+    VisitPark findOne(VisitPark visitPark);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param visitPark 瀹炰綋瀵硅薄
+     * @return List<VisitPark>
+     */
+    List<VisitPark> findList(VisitPark visitPark);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<VisitPark>
+     */
+    PageData<VisitPark> findPage(PageWrap<VisitPark> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param visitPark 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(VisitPark visitPark);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitProblemLogService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitProblemLogService.java
new file mode 100644
index 0000000..f143005
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitProblemLogService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.VisitProblemLog;
+import java.util.List;
+
+/**
+ * 璁垮绛旈璁板綍琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitProblemLogService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param visitProblemLog 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(VisitProblemLog visitProblemLog);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param visitProblemLog 瀹炰綋瀵硅薄
+     */
+    void delete(VisitProblemLog visitProblemLog);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param visitProblemLog 瀹炰綋瀵硅薄
+     */
+    void updateById(VisitProblemLog visitProblemLog);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param visitProblemLogs 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<VisitProblemLog> visitProblemLogs);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return VisitProblemLog
+     */
+    VisitProblemLog findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param visitProblemLog 瀹炰綋瀵硅薄
+     * @return VisitProblemLog
+     */
+    VisitProblemLog findOne(VisitProblemLog visitProblemLog);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param visitProblemLog 瀹炰綋瀵硅薄
+     * @return List<VisitProblemLog>
+     */
+    List<VisitProblemLog> findList(VisitProblemLog visitProblemLog);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<VisitProblemLog>
+     */
+    PageData<VisitProblemLog> findPage(PageWrap<VisitProblemLog> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param visitProblemLog 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(VisitProblemLog visitProblemLog);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitProblemsService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitProblemsService.java
new file mode 100644
index 0000000..e8e34c7
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitProblemsService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.VisitProblems;
+import java.util.List;
+
+/**
+ * 璇曢淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitProblemsService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param visitProblems 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(VisitProblems visitProblems);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param visitProblems 瀹炰綋瀵硅薄
+     */
+    void delete(VisitProblems visitProblems);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param visitProblems 瀹炰綋瀵硅薄
+     */
+    void updateById(VisitProblems visitProblems);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param visitProblemss 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<VisitProblems> visitProblemss);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return VisitProblems
+     */
+    VisitProblems findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param visitProblems 瀹炰綋瀵硅薄
+     * @return VisitProblems
+     */
+    VisitProblems findOne(VisitProblems visitProblems);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param visitProblems 瀹炰綋瀵硅薄
+     * @return List<VisitProblems>
+     */
+    List<VisitProblems> findList(VisitProblems visitProblems);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<VisitProblems>
+     */
+    PageData<VisitProblems> findPage(PageWrap<VisitProblems> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param visitProblems 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(VisitProblems visitProblems);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitReasonService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitReasonService.java
new file mode 100644
index 0000000..f37ddbc
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitReasonService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.VisitReason;
+import java.util.List;
+
+/**
+ * 璁垮浜嬬敱淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitReasonService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param visitReason 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(VisitReason visitReason);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param visitReason 瀹炰綋瀵硅薄
+     */
+    void delete(VisitReason visitReason);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param visitReason 瀹炰綋瀵硅薄
+     */
+    void updateById(VisitReason visitReason);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param visitReasons 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<VisitReason> visitReasons);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return VisitReason
+     */
+    VisitReason findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param visitReason 瀹炰綋瀵硅薄
+     * @return VisitReason
+     */
+    VisitReason findOne(VisitReason visitReason);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param visitReason 瀹炰綋瀵硅薄
+     * @return List<VisitReason>
+     */
+    List<VisitReason> findList(VisitReason visitReason);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<VisitReason>
+     */
+    PageData<VisitReason> findPage(PageWrap<VisitReason> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param visitReason 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(VisitReason visitReason);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitorService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitorService.java
new file mode 100644
index 0000000..95182c0
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitorService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Visitor;
+import java.util.List;
+
+/**
+ * 璁垮淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+public interface VisitorService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param visitor 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(Visitor visitor);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param visitor 瀹炰綋瀵硅薄
+     */
+    void delete(Visitor visitor);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param visitor 瀹炰綋瀵硅薄
+     */
+    void updateById(Visitor visitor);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param visitors 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<Visitor> visitors);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return Visitor
+     */
+    Visitor findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param visitor 瀹炰綋瀵硅薄
+     * @return Visitor
+     */
+    Visitor findOne(Visitor visitor);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param visitor 瀹炰綋瀵硅薄
+     * @return List<Visitor>
+     */
+    List<Visitor> findList(Visitor visitor);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<Visitor>
+     */
+    PageData<Visitor> findPage(PageWrap<Visitor> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param visitor 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(Visitor visitor);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java
new file mode 100644
index 0000000..0932412
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java
@@ -0,0 +1,120 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.ApproveTemplMapper;
+import com.doumee.dao.business.model.ApproveTempl;
+import com.doumee.service.business.ApproveTemplService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 瀹℃壒妯$増淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class ApproveTemplServiceImpl implements ApproveTemplService {
+
+    @Autowired
+    private ApproveTemplMapper approveTemplMapper;
+
+    @Override
+    public Integer create(ApproveTempl approveTempl) {
+        approveTemplMapper.insert(approveTempl);
+        return approveTempl.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        approveTemplMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(ApproveTempl approveTempl) {
+        UpdateWrapper<ApproveTempl> deleteWrapper = new UpdateWrapper<>(approveTempl);
+        approveTemplMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        approveTemplMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(ApproveTempl approveTempl) {
+        approveTemplMapper.updateById(approveTempl);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<ApproveTempl> approveTempls) {
+        if (CollectionUtils.isEmpty(approveTempls)) {
+            return;
+        }
+        for (ApproveTempl approveTempl: approveTempls) {
+            this.updateById(approveTempl);
+        }
+    }
+
+    @Override
+    public ApproveTempl findById(Integer id) {
+        return approveTemplMapper.selectById(id);
+    }
+
+    @Override
+    public ApproveTempl findOne(ApproveTempl approveTempl) {
+        QueryWrapper<ApproveTempl> wrapper = new QueryWrapper<>(approveTempl);
+        return approveTemplMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<ApproveTempl> findList(ApproveTempl approveTempl) {
+        QueryWrapper<ApproveTempl> wrapper = new QueryWrapper<>(approveTempl);
+        return approveTemplMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<ApproveTempl> findPage(PageWrap<ApproveTempl> pageWrap) {
+        IPage<ApproveTempl> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<ApproveTempl> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, ApproveTempl::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, ApproveTempl::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, ApproveTempl::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, ApproveTempl::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, ApproveTempl::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, ApproveTempl::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, ApproveTempl::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, ApproveTempl::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, ApproveTempl::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getType() != null, ApproveTempl::getType, pageWrap.getModel().getType())
+                .eq(pageWrap.getModel().getName() != null, ApproveTempl::getName, pageWrap.getModel().getName())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(approveTemplMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(ApproveTempl approveTempl) {
+        QueryWrapper<ApproveTempl> wrapper = new QueryWrapper<>(approveTempl);
+        return approveTemplMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarBookServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarBookServiceImpl.java
new file mode 100644
index 0000000..75bd3a5
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarBookServiceImpl.java
@@ -0,0 +1,135 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CarBookMapper;
+import com.doumee.dao.business.model.CarBook;
+import com.doumee.service.business.CarBookService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 杞﹁締棰勭害璁板綍淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class CarBookServiceImpl implements CarBookService {
+
+    @Autowired
+    private CarBookMapper carBookMapper;
+
+    @Override
+    public Integer create(CarBook carBook) {
+        carBookMapper.insert(carBook);
+        return carBook.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        carBookMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(CarBook carBook) {
+        UpdateWrapper<CarBook> deleteWrapper = new UpdateWrapper<>(carBook);
+        carBookMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        carBookMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(CarBook carBook) {
+        carBookMapper.updateById(carBook);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<CarBook> carBooks) {
+        if (CollectionUtils.isEmpty(carBooks)) {
+            return;
+        }
+        for (CarBook carBook: carBooks) {
+            this.updateById(carBook);
+        }
+    }
+
+    @Override
+    public CarBook findById(Integer id) {
+        return carBookMapper.selectById(id);
+    }
+
+    @Override
+    public CarBook findOne(CarBook carBook) {
+        QueryWrapper<CarBook> wrapper = new QueryWrapper<>(carBook);
+        return carBookMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<CarBook> findList(CarBook carBook) {
+        QueryWrapper<CarBook> wrapper = new QueryWrapper<>(carBook);
+        return carBookMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<CarBook> findPage(PageWrap<CarBook> pageWrap) {
+        IPage<CarBook> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<CarBook> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, CarBook::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, CarBook::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, CarBook::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, CarBook::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEdirot() != null, CarBook::getEdirot, pageWrap.getModel().getEdirot())
+                .ge(pageWrap.getModel().getEditDate() != null, CarBook::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, CarBook::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, CarBook::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, CarBook::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getHkId() != null, CarBook::getHkId, pageWrap.getModel().getHkId())
+                .eq(pageWrap.getModel().getSortnum() != null, CarBook::getSortnum, pageWrap.getModel().getSortnum())
+                .eq(pageWrap.getModel().getVisitId() != null, CarBook::getVisitId, pageWrap.getModel().getVisitId())
+                .eq(pageWrap.getModel().getCarCode() != null, CarBook::getCarCode, pageWrap.getModel().getCarCode())
+                .eq(pageWrap.getModel().getParkId() != null, CarBook::getParkId, pageWrap.getModel().getParkId())
+                .eq(pageWrap.getModel().getOrigin() != null, CarBook::getOrigin, pageWrap.getModel().getOrigin())
+                .ge(pageWrap.getModel().getStartTime() != null, CarBook::getStartTime, Utils.Date.getStart(pageWrap.getModel().getStartTime()))
+                .le(pageWrap.getModel().getStartTime() != null, CarBook::getStartTime, Utils.Date.getEnd(pageWrap.getModel().getStartTime()))
+                .ge(pageWrap.getModel().getEndTime() != null, CarBook::getEndTime, Utils.Date.getStart(pageWrap.getModel().getEndTime()))
+                .le(pageWrap.getModel().getEndTime() != null, CarBook::getEndTime, Utils.Date.getEnd(pageWrap.getModel().getEndTime()))
+                .eq(pageWrap.getModel().getMemberId() != null, CarBook::getMemberId, pageWrap.getModel().getMemberId())
+                .eq(pageWrap.getModel().getTimeType() != null, CarBook::getTimeType, pageWrap.getModel().getTimeType())
+                .eq(pageWrap.getModel().getHkId2() != null, CarBook::getHkId2, pageWrap.getModel().getHkId2())
+                .eq(pageWrap.getModel().getHkStatus() != null, CarBook::getHkStatus, pageWrap.getModel().getHkStatus())
+                .ge(pageWrap.getModel().getHkDate() != null, CarBook::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()))
+                .le(pageWrap.getModel().getHkDate() != null, CarBook::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()))
+                .eq(pageWrap.getModel().getTryNum() != null, CarBook::getTryNum, pageWrap.getModel().getTryNum())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(carBookMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(CarBook carBook) {
+        QueryWrapper<CarBook> wrapper = new QueryWrapper<>(carBook);
+        return carBookMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarDriverServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarDriverServiceImpl.java
new file mode 100644
index 0000000..662a111
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarDriverServiceImpl.java
@@ -0,0 +1,122 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CarDriverMapper;
+import com.doumee.dao.business.model.CarDriver;
+import com.doumee.service.business.CarDriverService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鍙告満淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class CarDriverServiceImpl implements CarDriverService {
+
+    @Autowired
+    private CarDriverMapper carDriverMapper;
+
+    @Override
+    public Integer create(CarDriver carDriver) {
+        carDriverMapper.insert(carDriver);
+        return carDriver.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        carDriverMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(CarDriver carDriver) {
+        UpdateWrapper<CarDriver> deleteWrapper = new UpdateWrapper<>(carDriver);
+        carDriverMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        carDriverMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(CarDriver carDriver) {
+        carDriverMapper.updateById(carDriver);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<CarDriver> carDrivers) {
+        if (CollectionUtils.isEmpty(carDrivers)) {
+            return;
+        }
+        for (CarDriver carDriver: carDrivers) {
+            this.updateById(carDriver);
+        }
+    }
+
+    @Override
+    public CarDriver findById(Integer id) {
+        return carDriverMapper.selectById(id);
+    }
+
+    @Override
+    public CarDriver findOne(CarDriver carDriver) {
+        QueryWrapper<CarDriver> wrapper = new QueryWrapper<>(carDriver);
+        return carDriverMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<CarDriver> findList(CarDriver carDriver) {
+        QueryWrapper<CarDriver> wrapper = new QueryWrapper<>(carDriver);
+        return carDriverMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<CarDriver> findPage(PageWrap<CarDriver> pageWrap) {
+        IPage<CarDriver> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<CarDriver> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, CarDriver::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, CarDriver::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, CarDriver::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, CarDriver::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEdirot() != null, CarDriver::getEdirot, pageWrap.getModel().getEdirot())
+                .ge(pageWrap.getModel().getEditDate() != null, CarDriver::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, CarDriver::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, CarDriver::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, CarDriver::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getSortnum() != null, CarDriver::getSortnum, pageWrap.getModel().getSortnum())
+                .eq(pageWrap.getModel().getCompanyId() != null, CarDriver::getCompanyId, pageWrap.getModel().getCompanyId())
+                .eq(pageWrap.getModel().getStatus() != null, CarDriver::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getMemberId() != null, CarDriver::getMemberId, pageWrap.getModel().getMemberId())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(carDriverMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(CarDriver carDriver) {
+        QueryWrapper<CarDriver> wrapper = new QueryWrapper<>(carDriver);
+        return carDriverMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarParksServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarParksServiceImpl.java
new file mode 100644
index 0000000..b5b4f8f
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarParksServiceImpl.java
@@ -0,0 +1,133 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CarParksMapper;
+import com.doumee.dao.business.model.CarParks;
+import com.doumee.service.business.CarParksService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鍋滆溅搴撲俊鎭〃Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class CarParksServiceImpl implements CarParksService {
+
+    @Autowired
+    private CarParksMapper carParksMapper;
+
+    @Override
+    public Integer create(CarParks carParks) {
+        carParksMapper.insert(carParks);
+        return carParks.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        carParksMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(CarParks carParks) {
+        UpdateWrapper<CarParks> deleteWrapper = new UpdateWrapper<>(carParks);
+        carParksMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        carParksMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(CarParks carParks) {
+        carParksMapper.updateById(carParks);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<CarParks> carParkss) {
+        if (CollectionUtils.isEmpty(carParkss)) {
+            return;
+        }
+        for (CarParks carParks: carParkss) {
+            this.updateById(carParks);
+        }
+    }
+
+    @Override
+    public CarParks findById(Integer id) {
+        return carParksMapper.selectById(id);
+    }
+
+    @Override
+    public CarParks findOne(CarParks carParks) {
+        QueryWrapper<CarParks> wrapper = new QueryWrapper<>(carParks);
+        return carParksMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<CarParks> findList(CarParks carParks) {
+        QueryWrapper<CarParks> wrapper = new QueryWrapper<>(carParks);
+        return carParksMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<CarParks> findPage(PageWrap<CarParks> pageWrap) {
+        IPage<CarParks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<CarParks> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, CarParks::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, CarParks::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, CarParks::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, CarParks::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEdirot() != null, CarParks::getEdirot, pageWrap.getModel().getEdirot())
+                .ge(pageWrap.getModel().getEditDate() != null, CarParks::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, CarParks::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, CarParks::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, CarParks::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getName() != null, CarParks::getName, pageWrap.getModel().getName())
+                .eq(pageWrap.getModel().getHkId() != null, CarParks::getHkId, pageWrap.getModel().getHkId())
+                .eq(pageWrap.getModel().getHkStatus() != null, CarParks::getHkStatus, pageWrap.getModel().getHkStatus())
+                .ge(pageWrap.getModel().getHkDate() != null, CarParks::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()))
+                .le(pageWrap.getModel().getHkDate() != null, CarParks::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()))
+                .eq(pageWrap.getModel().getSortnum() != null, CarParks::getSortnum, pageWrap.getModel().getSortnum())
+                .ge(pageWrap.getModel().getParkCreateDate() != null, CarParks::getParkCreateDate, Utils.Date.getStart(pageWrap.getModel().getParkCreateDate()))
+                .le(pageWrap.getModel().getParkCreateDate() != null, CarParks::getParkCreateDate, Utils.Date.getEnd(pageWrap.getModel().getParkCreateDate()))
+                .eq(pageWrap.getModel().getParentHkId() != null, CarParks::getParentHkId, pageWrap.getModel().getParentHkId())
+                .ge(pageWrap.getModel().getParkEditDate() != null, CarParks::getParkEditDate, Utils.Date.getStart(pageWrap.getModel().getParkEditDate()))
+                .le(pageWrap.getModel().getParkEditDate() != null, CarParks::getParkEditDate, Utils.Date.getEnd(pageWrap.getModel().getParkEditDate()))
+                .eq(pageWrap.getModel().getErpStatus() != null, CarParks::getErpStatus, pageWrap.getModel().getErpStatus())
+                .ge(pageWrap.getModel().getErpDate() != null, CarParks::getErpDate, Utils.Date.getStart(pageWrap.getModel().getErpDate()))
+                .le(pageWrap.getModel().getErpDate() != null, CarParks::getErpDate, Utils.Date.getEnd(pageWrap.getModel().getErpDate()))
+                .eq(pageWrap.getModel().getStatus() != null, CarParks::getStatus, pageWrap.getModel().getStatus())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(carParksMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(CarParks carParks) {
+        QueryWrapper<CarParks> wrapper = new QueryWrapper<>(carParks);
+        return carParksMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
new file mode 100644
index 0000000..8e5d6f7
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -0,0 +1,146 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CarUseBookMapper;
+import com.doumee.dao.business.model.CarUseBook;
+import com.doumee.service.business.CarUseBookService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 杞﹁締_鐢ㄨ溅鐢宠淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class CarUseBookServiceImpl implements CarUseBookService {
+
+    @Autowired
+    private CarUseBookMapper carUseBookMapper;
+
+    @Override
+    public Integer create(CarUseBook carUseBook) {
+        carUseBookMapper.insert(carUseBook);
+        return carUseBook.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        carUseBookMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(CarUseBook carUseBook) {
+        UpdateWrapper<CarUseBook> deleteWrapper = new UpdateWrapper<>(carUseBook);
+        carUseBookMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        carUseBookMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(CarUseBook carUseBook) {
+        carUseBookMapper.updateById(carUseBook);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<CarUseBook> carUseBooks) {
+        if (CollectionUtils.isEmpty(carUseBooks)) {
+            return;
+        }
+        for (CarUseBook carUseBook: carUseBooks) {
+            this.updateById(carUseBook);
+        }
+    }
+
+    @Override
+    public CarUseBook findById(Integer id) {
+        return carUseBookMapper.selectById(id);
+    }
+
+    @Override
+    public CarUseBook findOne(CarUseBook carUseBook) {
+        QueryWrapper<CarUseBook> wrapper = new QueryWrapper<>(carUseBook);
+        return carUseBookMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<CarUseBook> findList(CarUseBook carUseBook) {
+        QueryWrapper<CarUseBook> wrapper = new QueryWrapper<>(carUseBook);
+        return carUseBookMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<CarUseBook> findPage(PageWrap<CarUseBook> pageWrap) {
+        IPage<CarUseBook> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<CarUseBook> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, CarUseBook::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, CarUseBook::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, CarUseBook::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, CarUseBook::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, CarUseBook::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, CarUseBook::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, CarUseBook::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, CarUseBook::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, CarUseBook::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getCarCode() != null, CarUseBook::getCarCode, pageWrap.getModel().getCarCode())
+                .eq(pageWrap.getModel().getCarId() != null, CarUseBook::getCarId, pageWrap.getModel().getCarId())
+                .ge(pageWrap.getModel().getStartTime() != null, CarUseBook::getStartTime, Utils.Date.getStart(pageWrap.getModel().getStartTime()))
+                .le(pageWrap.getModel().getStartTime() != null, CarUseBook::getStartTime, Utils.Date.getEnd(pageWrap.getModel().getStartTime()))
+                .ge(pageWrap.getModel().getEndTime() != null, CarUseBook::getEndTime, Utils.Date.getStart(pageWrap.getModel().getEndTime()))
+                .le(pageWrap.getModel().getEndTime() != null, CarUseBook::getEndTime, Utils.Date.getEnd(pageWrap.getModel().getEndTime()))
+                .eq(pageWrap.getModel().getPlanUseDate() != null, CarUseBook::getPlanUseDate, pageWrap.getModel().getPlanUseDate())
+                .eq(pageWrap.getModel().getStatus() != null, CarUseBook::getStatus, pageWrap.getModel().getStatus())
+                .ge(pageWrap.getModel().getCheckDate() != null, CarUseBook::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate()))
+                .le(pageWrap.getModel().getCheckDate() != null, CarUseBook::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()))
+                .eq(pageWrap.getModel().getCheckUserId() != null, CarUseBook::getCheckUserId, pageWrap.getModel().getCheckUserId())
+                .eq(pageWrap.getModel().getCheckInfo() != null, CarUseBook::getCheckInfo, pageWrap.getModel().getCheckInfo())
+                .ge(pageWrap.getModel().getCancelType() != null, CarUseBook::getCancelType, Utils.Date.getStart(pageWrap.getModel().getCancelType()))
+                .le(pageWrap.getModel().getCancelType() != null, CarUseBook::getCancelType, Utils.Date.getEnd(pageWrap.getModel().getCancelType()))
+                .ge(pageWrap.getModel().getCancelStatus() != null, CarUseBook::getCancelStatus, Utils.Date.getStart(pageWrap.getModel().getCancelStatus()))
+                .le(pageWrap.getModel().getCancelStatus() != null, CarUseBook::getCancelStatus, Utils.Date.getEnd(pageWrap.getModel().getCancelStatus()))
+                .ge(pageWrap.getModel().getCancelTime() != null, CarUseBook::getCancelTime, Utils.Date.getStart(pageWrap.getModel().getCancelTime()))
+                .le(pageWrap.getModel().getCancelTime() != null, CarUseBook::getCancelTime, Utils.Date.getEnd(pageWrap.getModel().getCancelTime()))
+                .eq(pageWrap.getModel().getCancelUser() != null, CarUseBook::getCancelUser, pageWrap.getModel().getCancelUser())
+                .eq(pageWrap.getModel().getCancelInfo() != null, CarUseBook::getCancelInfo, pageWrap.getModel().getCancelInfo())
+                .eq(pageWrap.getModel().getType() != null, CarUseBook::getType, pageWrap.getModel().getType())
+                .eq(pageWrap.getModel().getMemberIds() != null, CarUseBook::getMemberIds, pageWrap.getModel().getMemberIds())
+                .eq(pageWrap.getModel().getMemberNames() != null, CarUseBook::getMemberNames, pageWrap.getModel().getMemberNames())
+                .eq(pageWrap.getModel().getContent() != null, CarUseBook::getContent, pageWrap.getModel().getContent())
+                .eq(pageWrap.getModel().getAddr() != null, CarUseBook::getAddr, pageWrap.getModel().getAddr())
+                .eq(pageWrap.getModel().getMemberId() != null, CarUseBook::getMemberId, pageWrap.getModel().getMemberId())
+                .eq(pageWrap.getModel().getDriverId() != null, CarUseBook::getDriverId, pageWrap.getModel().getDriverId())
+                .eq(pageWrap.getModel().getMemberNum() != null, CarUseBook::getMemberNum, pageWrap.getModel().getMemberNum())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(carUseBookMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(CarUseBook carUseBook) {
+        QueryWrapper<CarUseBook> wrapper = new QueryWrapper<>(carUseBook);
+        return carUseBookMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/FormParamServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/FormParamServiceImpl.java
new file mode 100644
index 0000000..3e9515d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/FormParamServiceImpl.java
@@ -0,0 +1,125 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.FormParamMapper;
+import com.doumee.dao.business.model.FormParam;
+import com.doumee.service.business.FormParamService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 琛ㄥ崟閰嶇疆淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class FormParamServiceImpl implements FormParamService {
+
+    @Autowired
+    private FormParamMapper formParamMapper;
+
+    @Override
+    public Integer create(FormParam formParam) {
+        formParamMapper.insert(formParam);
+        return formParam.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        formParamMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(FormParam formParam) {
+        UpdateWrapper<FormParam> deleteWrapper = new UpdateWrapper<>(formParam);
+        formParamMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        formParamMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(FormParam formParam) {
+        formParamMapper.updateById(formParam);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<FormParam> formParams) {
+        if (CollectionUtils.isEmpty(formParams)) {
+            return;
+        }
+        for (FormParam formParam: formParams) {
+            this.updateById(formParam);
+        }
+    }
+
+    @Override
+    public FormParam findById(Integer id) {
+        return formParamMapper.selectById(id);
+    }
+
+    @Override
+    public FormParam findOne(FormParam formParam) {
+        QueryWrapper<FormParam> wrapper = new QueryWrapper<>(formParam);
+        return formParamMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<FormParam> findList(FormParam formParam) {
+        QueryWrapper<FormParam> wrapper = new QueryWrapper<>(formParam);
+        return formParamMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<FormParam> findPage(PageWrap<FormParam> pageWrap) {
+        IPage<FormParam> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<FormParam> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, FormParam::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, FormParam::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, FormParam::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, FormParam::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, FormParam::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, FormParam::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, FormParam::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, FormParam::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, FormParam::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getModule() != null, FormParam::getModule, pageWrap.getModel().getModule())
+                .eq(pageWrap.getModel().getType() != null, FormParam::getType, pageWrap.getModel().getType())
+                .eq(pageWrap.getModel().getIsshow() != null, FormParam::getIsshow, pageWrap.getModel().getIsshow())
+                .eq(pageWrap.getModel().getIsrequired() != null, FormParam::getIsrequired, pageWrap.getModel().getIsrequired())
+                .eq(pageWrap.getModel().getMaxLength() != null, FormParam::getMaxLength, pageWrap.getModel().getMaxLength())
+                .eq(pageWrap.getModel().getMinLength() != null, FormParam::getMinLength, pageWrap.getModel().getMinLength())
+                .eq(pageWrap.getModel().getName() != null, FormParam::getName, pageWrap.getModel().getName())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(formParamMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(FormParam formParam) {
+        QueryWrapper<FormParam> wrapper = new QueryWrapper<>(formParam);
+        return formParamMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerLogServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerLogServiceImpl.java
new file mode 100644
index 0000000..c9e8154
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerLogServiceImpl.java
@@ -0,0 +1,125 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.HiddenDangerLogMapper;
+import com.doumee.dao.business.model.HiddenDangerLog;
+import com.doumee.service.business.HiddenDangerLogService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鐞嗚碃鎿嶄綔鍘嗗彶琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class HiddenDangerLogServiceImpl implements HiddenDangerLogService {
+
+    @Autowired
+    private HiddenDangerLogMapper hiddenDangerLogMapper;
+
+    @Override
+    public Integer create(HiddenDangerLog hiddenDangerLog) {
+        hiddenDangerLogMapper.insert(hiddenDangerLog);
+        return hiddenDangerLog.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        hiddenDangerLogMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(HiddenDangerLog hiddenDangerLog) {
+        UpdateWrapper<HiddenDangerLog> deleteWrapper = new UpdateWrapper<>(hiddenDangerLog);
+        hiddenDangerLogMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        hiddenDangerLogMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(HiddenDangerLog hiddenDangerLog) {
+        hiddenDangerLogMapper.updateById(hiddenDangerLog);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<HiddenDangerLog> hiddenDangerLogs) {
+        if (CollectionUtils.isEmpty(hiddenDangerLogs)) {
+            return;
+        }
+        for (HiddenDangerLog hiddenDangerLog: hiddenDangerLogs) {
+            this.updateById(hiddenDangerLog);
+        }
+    }
+
+    @Override
+    public HiddenDangerLog findById(Integer id) {
+        return hiddenDangerLogMapper.selectById(id);
+    }
+
+    @Override
+    public HiddenDangerLog findOne(HiddenDangerLog hiddenDangerLog) {
+        QueryWrapper<HiddenDangerLog> wrapper = new QueryWrapper<>(hiddenDangerLog);
+        return hiddenDangerLogMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<HiddenDangerLog> findList(HiddenDangerLog hiddenDangerLog) {
+        QueryWrapper<HiddenDangerLog> wrapper = new QueryWrapper<>(hiddenDangerLog);
+        return hiddenDangerLogMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<HiddenDangerLog> findPage(PageWrap<HiddenDangerLog> pageWrap) {
+        IPage<HiddenDangerLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<HiddenDangerLog> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, HiddenDangerLog::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, HiddenDangerLog::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, HiddenDangerLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, HiddenDangerLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, HiddenDangerLog::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, HiddenDangerLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, HiddenDangerLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, HiddenDangerLog::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, HiddenDangerLog::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getHiddenDangerId() != null, HiddenDangerLog::getHiddenDangerId, pageWrap.getModel().getHiddenDangerId())
+                .eq(pageWrap.getModel().getTitle() != null, HiddenDangerLog::getTitle, pageWrap.getModel().getTitle())
+                .eq(pageWrap.getModel().getContent() != null, HiddenDangerLog::getContent, pageWrap.getModel().getContent())
+                .eq(pageWrap.getModel().getObjType() != null, HiddenDangerLog::getObjType, pageWrap.getModel().getObjType())
+                .eq(pageWrap.getModel().getObjId() != null, HiddenDangerLog::getObjId, pageWrap.getModel().getObjId())
+                .eq(pageWrap.getModel().getBeforeContent() != null, HiddenDangerLog::getBeforeContent, pageWrap.getModel().getBeforeContent())
+                .eq(pageWrap.getModel().getAfterContent() != null, HiddenDangerLog::getAfterContent, pageWrap.getModel().getAfterContent())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(hiddenDangerLogMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(HiddenDangerLog hiddenDangerLog) {
+        QueryWrapper<HiddenDangerLog> wrapper = new QueryWrapper<>(hiddenDangerLog);
+        return hiddenDangerLogMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
new file mode 100644
index 0000000..a096272
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
@@ -0,0 +1,125 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.HiddenDangerParamMapper;
+import com.doumee.dao.business.model.HiddenDangerParam;
+import com.doumee.service.business.HiddenDangerParamService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 闅愭偅鍖哄煙閰嶇疆绫诲瀷淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class HiddenDangerParamServiceImpl implements HiddenDangerParamService {
+
+    @Autowired
+    private HiddenDangerParamMapper hiddenDangerParamMapper;
+
+    @Override
+    public Integer create(HiddenDangerParam hiddenDangerParam) {
+        hiddenDangerParamMapper.insert(hiddenDangerParam);
+        return hiddenDangerParam.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        hiddenDangerParamMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(HiddenDangerParam hiddenDangerParam) {
+        UpdateWrapper<HiddenDangerParam> deleteWrapper = new UpdateWrapper<>(hiddenDangerParam);
+        hiddenDangerParamMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        hiddenDangerParamMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(HiddenDangerParam hiddenDangerParam) {
+        hiddenDangerParamMapper.updateById(hiddenDangerParam);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<HiddenDangerParam> hiddenDangerParams) {
+        if (CollectionUtils.isEmpty(hiddenDangerParams)) {
+            return;
+        }
+        for (HiddenDangerParam hiddenDangerParam: hiddenDangerParams) {
+            this.updateById(hiddenDangerParam);
+        }
+    }
+
+    @Override
+    public HiddenDangerParam findById(Integer id) {
+        return hiddenDangerParamMapper.selectById(id);
+    }
+
+    @Override
+    public HiddenDangerParam findOne(HiddenDangerParam hiddenDangerParam) {
+        QueryWrapper<HiddenDangerParam> wrapper = new QueryWrapper<>(hiddenDangerParam);
+        return hiddenDangerParamMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<HiddenDangerParam> findList(HiddenDangerParam hiddenDangerParam) {
+        QueryWrapper<HiddenDangerParam> wrapper = new QueryWrapper<>(hiddenDangerParam);
+        return hiddenDangerParamMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<HiddenDangerParam> findPage(PageWrap<HiddenDangerParam> pageWrap) {
+        IPage<HiddenDangerParam> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<HiddenDangerParam> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, HiddenDangerParam::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, HiddenDangerParam::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, HiddenDangerParam::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, HiddenDangerParam::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, HiddenDangerParam::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, HiddenDangerParam::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, HiddenDangerParam::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, HiddenDangerParam::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getName() != null, HiddenDangerParam::getName, pageWrap.getModel().getName())
+                .eq(pageWrap.getModel().getRemark() != null, HiddenDangerParam::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getStatus() != null, HiddenDangerParam::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getSortnum() != null, HiddenDangerParam::getSortnum, pageWrap.getModel().getSortnum())
+                .eq(pageWrap.getModel().getImgurl() != null, HiddenDangerParam::getImgurl, pageWrap.getModel().getImgurl())
+                .eq(pageWrap.getModel().getMemberIds() != null, HiddenDangerParam::getMemberIds, pageWrap.getModel().getMemberIds())
+                .eq(pageWrap.getModel().getMemberNames() != null, HiddenDangerParam::getMemberNames, pageWrap.getModel().getMemberNames())
+                .eq(pageWrap.getModel().getType() != null, HiddenDangerParam::getType, pageWrap.getModel().getType())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(hiddenDangerParamMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(HiddenDangerParam hiddenDangerParam) {
+        QueryWrapper<HiddenDangerParam> wrapper = new QueryWrapper<>(hiddenDangerParam);
+        return hiddenDangerParamMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
new file mode 100644
index 0000000..7fee8ac
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -0,0 +1,129 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.HiddenDangerMapper;
+import com.doumee.dao.business.model.HiddenDanger;
+import com.doumee.service.business.HiddenDangerService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 闅愭偅淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class HiddenDangerServiceImpl implements HiddenDangerService {
+
+    @Autowired
+    private HiddenDangerMapper hiddenDangerMapper;
+
+    @Override
+    public Integer create(HiddenDanger hiddenDanger) {
+        hiddenDangerMapper.insert(hiddenDanger);
+        return hiddenDanger.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        hiddenDangerMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(HiddenDanger hiddenDanger) {
+        UpdateWrapper<HiddenDanger> deleteWrapper = new UpdateWrapper<>(hiddenDanger);
+        hiddenDangerMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        hiddenDangerMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(HiddenDanger hiddenDanger) {
+        hiddenDangerMapper.updateById(hiddenDanger);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<HiddenDanger> hiddenDangers) {
+        if (CollectionUtils.isEmpty(hiddenDangers)) {
+            return;
+        }
+        for (HiddenDanger hiddenDanger: hiddenDangers) {
+            this.updateById(hiddenDanger);
+        }
+    }
+
+    @Override
+    public HiddenDanger findById(Integer id) {
+        return hiddenDangerMapper.selectById(id);
+    }
+
+    @Override
+    public HiddenDanger findOne(HiddenDanger hiddenDanger) {
+        QueryWrapper<HiddenDanger> wrapper = new QueryWrapper<>(hiddenDanger);
+        return hiddenDangerMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<HiddenDanger> findList(HiddenDanger hiddenDanger) {
+        QueryWrapper<HiddenDanger> wrapper = new QueryWrapper<>(hiddenDanger);
+        return hiddenDangerMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<HiddenDanger> findPage(PageWrap<HiddenDanger> pageWrap) {
+        IPage<HiddenDanger> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<HiddenDanger> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, HiddenDanger::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, HiddenDanger::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, HiddenDanger::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, HiddenDanger::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, HiddenDanger::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, HiddenDanger::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, HiddenDanger::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, HiddenDanger::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, HiddenDanger::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getAreaId() != null, HiddenDanger::getAreaId, pageWrap.getModel().getAreaId())
+                .eq(pageWrap.getModel().getStatus() != null, HiddenDanger::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getApplyCheckUserId() != null, HiddenDanger::getApplyCheckUserId, pageWrap.getModel().getApplyCheckUserId())
+                .eq(pageWrap.getModel().getCateId() != null, HiddenDanger::getCateId, pageWrap.getModel().getCateId())
+                .eq(pageWrap.getModel().getContent() != null, HiddenDanger::getContent, pageWrap.getModel().getContent())
+                .eq(pageWrap.getModel().getMemberId() != null, HiddenDanger::getMemberId, pageWrap.getModel().getMemberId())
+                .ge(pageWrap.getModel().getCheckDate() != null, HiddenDanger::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate()))
+                .le(pageWrap.getModel().getCheckDate() != null, HiddenDanger::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()))
+                .eq(pageWrap.getModel().getChecklInfo() != null, HiddenDanger::getChecklInfo, pageWrap.getModel().getChecklInfo())
+                .eq(pageWrap.getModel().getCheckUserId() != null, HiddenDanger::getCheckUserId, pageWrap.getModel().getCheckUserId())
+                .eq(pageWrap.getModel().getAreaName() != null, HiddenDanger::getAreaName, pageWrap.getModel().getAreaName())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(hiddenDangerMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(HiddenDanger hiddenDanger) {
+        QueryWrapper<HiddenDanger> wrapper = new QueryWrapper<>(hiddenDanger);
+        return hiddenDangerMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
new file mode 100644
index 0000000..1ce214b
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
@@ -0,0 +1,121 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformGroupMapper;
+import com.doumee.dao.business.model.PlatformGroup;
+import com.doumee.service.business.PlatformGroupService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鏈堝彴_鍒嗙粍淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class PlatformGroupServiceImpl implements PlatformGroupService {
+
+    @Autowired
+    private PlatformGroupMapper platformGroupMapper;
+
+    @Override
+    public Integer create(PlatformGroup platformGroup) {
+        platformGroupMapper.insert(platformGroup);
+        return platformGroup.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        platformGroupMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(PlatformGroup platformGroup) {
+        UpdateWrapper<PlatformGroup> deleteWrapper = new UpdateWrapper<>(platformGroup);
+        platformGroupMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        platformGroupMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(PlatformGroup platformGroup) {
+        platformGroupMapper.updateById(platformGroup);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<PlatformGroup> platformGroups) {
+        if (CollectionUtils.isEmpty(platformGroups)) {
+            return;
+        }
+        for (PlatformGroup platformGroup: platformGroups) {
+            this.updateById(platformGroup);
+        }
+    }
+
+    @Override
+    public PlatformGroup findById(Integer id) {
+        return platformGroupMapper.selectById(id);
+    }
+
+    @Override
+    public PlatformGroup findOne(PlatformGroup platformGroup) {
+        QueryWrapper<PlatformGroup> wrapper = new QueryWrapper<>(platformGroup);
+        return platformGroupMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<PlatformGroup> findList(PlatformGroup platformGroup) {
+        QueryWrapper<PlatformGroup> wrapper = new QueryWrapper<>(platformGroup);
+        return platformGroupMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<PlatformGroup> findPage(PageWrap<PlatformGroup> pageWrap) {
+        IPage<PlatformGroup> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<PlatformGroup> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, PlatformGroup::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, PlatformGroup::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, PlatformGroup::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, PlatformGroup::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, PlatformGroup::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, PlatformGroup::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, PlatformGroup::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, PlatformGroup::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getName() != null, PlatformGroup::getName, pageWrap.getModel().getName())
+                .eq(pageWrap.getModel().getRemark() != null, PlatformGroup::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getStatus() != null, PlatformGroup::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getSortnum() != null, PlatformGroup::getSortnum, pageWrap.getModel().getSortnum())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(platformGroupMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(PlatformGroup platformGroup) {
+        QueryWrapper<PlatformGroup> wrapper = new QueryWrapper<>(platformGroup);
+        return platformGroupMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformInterfaceLogServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformInterfaceLogServiceImpl.java
new file mode 100644
index 0000000..99055b2
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformInterfaceLogServiceImpl.java
@@ -0,0 +1,128 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformInterfaceLogMapper;
+import com.doumee.dao.business.model.PlatformInterfaceLog;
+import com.doumee.service.business.PlatformInterfaceLogService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 浣滀笟璋冨害骞冲彴鎺ュ彛浜や簰璁板綍Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class PlatformInterfaceLogServiceImpl implements PlatformInterfaceLogService {
+
+    @Autowired
+    private PlatformInterfaceLogMapper platformInterfaceLogMapper;
+
+    @Override
+    public Integer create(PlatformInterfaceLog platformInterfaceLog) {
+        platformInterfaceLogMapper.insert(platformInterfaceLog);
+        return platformInterfaceLog.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        platformInterfaceLogMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(PlatformInterfaceLog platformInterfaceLog) {
+        UpdateWrapper<PlatformInterfaceLog> deleteWrapper = new UpdateWrapper<>(platformInterfaceLog);
+        platformInterfaceLogMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        platformInterfaceLogMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(PlatformInterfaceLog platformInterfaceLog) {
+        platformInterfaceLogMapper.updateById(platformInterfaceLog);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<PlatformInterfaceLog> platformInterfaceLogs) {
+        if (CollectionUtils.isEmpty(platformInterfaceLogs)) {
+            return;
+        }
+        for (PlatformInterfaceLog platformInterfaceLog: platformInterfaceLogs) {
+            this.updateById(platformInterfaceLog);
+        }
+    }
+
+    @Override
+    public PlatformInterfaceLog findById(Integer id) {
+        return platformInterfaceLogMapper.selectById(id);
+    }
+
+    @Override
+    public PlatformInterfaceLog findOne(PlatformInterfaceLog platformInterfaceLog) {
+        QueryWrapper<PlatformInterfaceLog> wrapper = new QueryWrapper<>(platformInterfaceLog);
+        return platformInterfaceLogMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<PlatformInterfaceLog> findList(PlatformInterfaceLog platformInterfaceLog) {
+        QueryWrapper<PlatformInterfaceLog> wrapper = new QueryWrapper<>(platformInterfaceLog);
+        return platformInterfaceLogMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<PlatformInterfaceLog> findPage(PageWrap<PlatformInterfaceLog> pageWrap) {
+        IPage<PlatformInterfaceLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<PlatformInterfaceLog> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, PlatformInterfaceLog::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, PlatformInterfaceLog::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, PlatformInterfaceLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, PlatformInterfaceLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, PlatformInterfaceLog::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, PlatformInterfaceLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, PlatformInterfaceLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, PlatformInterfaceLog::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, PlatformInterfaceLog::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getType() != null, PlatformInterfaceLog::getType, pageWrap.getModel().getType())
+                .eq(pageWrap.getModel().getName() != null, PlatformInterfaceLog::getName, pageWrap.getModel().getName())
+                .ge(pageWrap.getModel().getUrl() != null, PlatformInterfaceLog::getUrl, Utils.Date.getStart(pageWrap.getModel().getUrl()))
+                .le(pageWrap.getModel().getUrl() != null, PlatformInterfaceLog::getUrl, Utils.Date.getEnd(pageWrap.getModel().getUrl()))
+                .eq(pageWrap.getModel().getRequest() != null, PlatformInterfaceLog::getRequest, pageWrap.getModel().getRequest())
+                .eq(pageWrap.getModel().getRepose() != null, PlatformInterfaceLog::getRepose, pageWrap.getModel().getRepose())
+                .eq(pageWrap.getModel().getSuccess() != null, PlatformInterfaceLog::getSuccess, pageWrap.getModel().getSuccess())
+                .eq(pageWrap.getModel().getPlat() != null, PlatformInterfaceLog::getPlat, pageWrap.getModel().getPlat())
+                .eq(pageWrap.getModel().getObjType() != null, PlatformInterfaceLog::getObjType, pageWrap.getModel().getObjType())
+                .eq(pageWrap.getModel().getObjId() != null, PlatformInterfaceLog::getObjId, pageWrap.getModel().getObjId())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(platformInterfaceLogMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(PlatformInterfaceLog platformInterfaceLog) {
+        QueryWrapper<PlatformInterfaceLog> wrapper = new QueryWrapper<>(platformInterfaceLog);
+        return platformInterfaceLogMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
new file mode 100644
index 0000000..b561c14
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -0,0 +1,177 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformJobMapper;
+import com.doumee.dao.business.model.PlatformJob;
+import com.doumee.service.business.PlatformJobService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鏈堝彴璋冨害浣滀笟淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class PlatformJobServiceImpl implements PlatformJobService {
+
+    @Autowired
+    private PlatformJobMapper platformJobMapper;
+
+    @Override
+    public Integer create(PlatformJob platformJob) {
+        platformJobMapper.insert(platformJob);
+        return platformJob.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        platformJobMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(PlatformJob platformJob) {
+        UpdateWrapper<PlatformJob> deleteWrapper = new UpdateWrapper<>(platformJob);
+        platformJobMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        platformJobMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(PlatformJob platformJob) {
+        platformJobMapper.updateById(platformJob);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<PlatformJob> platformJobs) {
+        if (CollectionUtils.isEmpty(platformJobs)) {
+            return;
+        }
+        for (PlatformJob platformJob: platformJobs) {
+            this.updateById(platformJob);
+        }
+    }
+
+    @Override
+    public PlatformJob findById(Integer id) {
+        return platformJobMapper.selectById(id);
+    }
+
+    @Override
+    public PlatformJob findOne(PlatformJob platformJob) {
+        QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob);
+        return platformJobMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<PlatformJob> findList(PlatformJob platformJob) {
+        QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob);
+        return platformJobMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<PlatformJob> findPage(PageWrap<PlatformJob> pageWrap) {
+        IPage<PlatformJob> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<PlatformJob> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, PlatformJob::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, PlatformJob::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, PlatformJob::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, PlatformJob::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, PlatformJob::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, PlatformJob::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, PlatformJob::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getName() != null, PlatformJob::getName, pageWrap.getModel().getName())
+                .eq(pageWrap.getModel().getRemark() != null, PlatformJob::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getStatus() != null, PlatformJob::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getSortnum() != null, PlatformJob::getSortnum, pageWrap.getModel().getSortnum())
+                .eq(pageWrap.getModel().getStartTime() != null, PlatformJob::getStartTime, pageWrap.getModel().getStartTime())
+                .eq(pageWrap.getModel().getEndTime() != null, PlatformJob::getEndTime, pageWrap.getModel().getEndTime())
+                .eq(pageWrap.getModel().getDeviceIds() != null, PlatformJob::getDeviceIds, pageWrap.getModel().getDeviceIds())
+                .eq(pageWrap.getModel().getScreenIds() != null, PlatformJob::getScreenIds, pageWrap.getModel().getScreenIds())
+                .eq(pageWrap.getModel().getWorkingNum() != null, PlatformJob::getWorkingNum, pageWrap.getModel().getWorkingNum())
+                .eq(pageWrap.getModel().getBroadcastNum() != null, PlatformJob::getBroadcastNum, pageWrap.getModel().getBroadcastNum())
+                .eq(pageWrap.getModel().getBroadcastIds() != null, PlatformJob::getBroadcastIds, pageWrap.getModel().getBroadcastIds())
+                .eq(pageWrap.getModel().getBroadcastInfo() != null, PlatformJob::getBroadcastInfo, pageWrap.getModel().getBroadcastInfo())
+                .eq(pageWrap.getModel().getBroadcastHkstatus() != null, PlatformJob::getBroadcastHkstatus, pageWrap.getModel().getBroadcastHkstatus())
+                .ge(pageWrap.getModel().getBroadcastHkdate() != null, PlatformJob::getBroadcastHkdate, Utils.Date.getStart(pageWrap.getModel().getBroadcastHkdate()))
+                .le(pageWrap.getModel().getBroadcastHkdate() != null, PlatformJob::getBroadcastHkdate, Utils.Date.getEnd(pageWrap.getModel().getBroadcastHkdate()))
+                .eq(pageWrap.getModel().getBroadcastHkinfo() != null, PlatformJob::getBroadcastHkinfo, pageWrap.getModel().getBroadcastHkinfo())
+                .ge(pageWrap.getModel().getSignDate() != null, PlatformJob::getSignDate, Utils.Date.getStart(pageWrap.getModel().getSignDate()))
+                .le(pageWrap.getModel().getSignDate() != null, PlatformJob::getSignDate, Utils.Date.getEnd(pageWrap.getModel().getSignDate()))
+                .eq(pageWrap.getModel().getSingType() != null, PlatformJob::getSingType, pageWrap.getModel().getSingType())
+                .eq(pageWrap.getModel().getSignDistance() != null, PlatformJob::getSignDistance, pageWrap.getModel().getSignDistance())
+                .eq(pageWrap.getModel().getPlatformId() != null, PlatformJob::getPlatformId, pageWrap.getModel().getPlatformId())
+                .ge(pageWrap.getModel().getCallDate() != null, PlatformJob::getCallDate, Utils.Date.getStart(pageWrap.getModel().getCallDate()))
+                .le(pageWrap.getModel().getCallDate() != null, PlatformJob::getCallDate, Utils.Date.getEnd(pageWrap.getModel().getCallDate()))
+                .eq(pageWrap.getModel().getCallUserId() != null, PlatformJob::getCallUserId, pageWrap.getModel().getCallUserId())
+                .eq(pageWrap.getModel().getCallInfo() != null, PlatformJob::getCallInfo, pageWrap.getModel().getCallInfo())
+                .ge(pageWrap.getModel().getStartDate() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
+                .le(pageWrap.getModel().getStartDate() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate()))
+                .ge(pageWrap.getModel().getDoneDate() != null, PlatformJob::getDoneDate, Utils.Date.getStart(pageWrap.getModel().getDoneDate()))
+                .le(pageWrap.getModel().getDoneDate() != null, PlatformJob::getDoneDate, Utils.Date.getEnd(pageWrap.getModel().getDoneDate()))
+                .ge(pageWrap.getModel().getErrorDate() != null, PlatformJob::getErrorDate, Utils.Date.getStart(pageWrap.getModel().getErrorDate()))
+                .le(pageWrap.getModel().getErrorDate() != null, PlatformJob::getErrorDate, Utils.Date.getEnd(pageWrap.getModel().getErrorDate()))
+                .eq(pageWrap.getModel().getErrorUserId() != null, PlatformJob::getErrorUserId, pageWrap.getModel().getErrorUserId())
+                .eq(pageWrap.getModel().getErrorInfo() != null, PlatformJob::getErrorInfo, pageWrap.getModel().getErrorInfo())
+                .ge(pageWrap.getModel().getTransPlatformDate() != null, PlatformJob::getTransPlatformDate, Utils.Date.getStart(pageWrap.getModel().getTransPlatformDate()))
+                .le(pageWrap.getModel().getTransPlatformDate() != null, PlatformJob::getTransPlatformDate, Utils.Date.getEnd(pageWrap.getModel().getTransPlatformDate()))
+                .eq(pageWrap.getModel().getTransPlatformUserId() != null, PlatformJob::getTransPlatformUserId, pageWrap.getModel().getTransPlatformUserId())
+                .eq(pageWrap.getModel().getTransPlatformInfo() != null, PlatformJob::getTransPlatformInfo, pageWrap.getModel().getTransPlatformInfo())
+                .ge(pageWrap.getModel().getInDate() != null, PlatformJob::getInDate, Utils.Date.getStart(pageWrap.getModel().getInDate()))
+                .le(pageWrap.getModel().getInDate() != null, PlatformJob::getInDate, Utils.Date.getEnd(pageWrap.getModel().getInDate()))
+                .ge(pageWrap.getModel().getOutDate() != null, PlatformJob::getOutDate, Utils.Date.getStart(pageWrap.getModel().getOutDate()))
+                .le(pageWrap.getModel().getOutDate() != null, PlatformJob::getOutDate, Utils.Date.getEnd(pageWrap.getModel().getOutDate()))
+                .eq(pageWrap.getModel().getOutType() != null, PlatformJob::getOutType, pageWrap.getModel().getOutType())
+                .eq(pageWrap.getModel().getOutHkstatus() != null, PlatformJob::getOutHkstatus, pageWrap.getModel().getOutHkstatus())
+                .ge(pageWrap.getModel().getOutHkdate() != null, PlatformJob::getOutHkdate, Utils.Date.getStart(pageWrap.getModel().getOutHkdate()))
+                .le(pageWrap.getModel().getOutHkdate() != null, PlatformJob::getOutHkdate, Utils.Date.getEnd(pageWrap.getModel().getOutHkdate()))
+                .eq(pageWrap.getModel().getOutHkinfo() != null, PlatformJob::getOutHkinfo, pageWrap.getModel().getOutHkinfo())
+                .eq(pageWrap.getModel().getInHkstatus() != null, PlatformJob::getInHkstatus, pageWrap.getModel().getInHkstatus())
+                .eq(pageWrap.getModel().getNHkinfo() != null, PlatformJob::getNHkinfo, pageWrap.getModel().getNHkinfo())
+                .ge(pageWrap.getModel().getInHkdate() != null, PlatformJob::getInHkdate, Utils.Date.getStart(pageWrap.getModel().getInHkdate()))
+                .le(pageWrap.getModel().getInHkdate() != null, PlatformJob::getInHkdate, Utils.Date.getEnd(pageWrap.getModel().getInHkdate()))
+                .eq(pageWrap.getModel().getType() != null, PlatformJob::getType, pageWrap.getModel().getType())
+                .eq(pageWrap.getModel().getCarCodeFront() != null, PlatformJob::getCarCodeFront, pageWrap.getModel().getCarCodeFront())
+                .eq(pageWrap.getModel().getCarCodeBack() != null, PlatformJob::getCarCodeBack, pageWrap.getModel().getCarCodeBack())
+                .eq(pageWrap.getModel().getCompanyId() != null, PlatformJob::getCompanyId, pageWrap.getModel().getCompanyId())
+                .eq(pageWrap.getModel().getCompanyNamePath() != null, PlatformJob::getCompanyNamePath, pageWrap.getModel().getCompanyNamePath())
+                .ge(pageWrap.getModel().getCancelDate() != null, PlatformJob::getCancelDate, Utils.Date.getStart(pageWrap.getModel().getCancelDate()))
+                .le(pageWrap.getModel().getCancelDate() != null, PlatformJob::getCancelDate, Utils.Date.getEnd(pageWrap.getModel().getCancelDate()))
+                .eq(pageWrap.getModel().getCancelUserId() != null, PlatformJob::getCancelUserId, pageWrap.getModel().getCancelUserId())
+                .eq(pageWrap.getModel().getCancelInfo() != null, PlatformJob::getCancelInfo, pageWrap.getModel().getCancelInfo())
+                .eq(pageWrap.getModel().getReason() != null, PlatformJob::getReason, pageWrap.getModel().getReason())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(platformJobMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(PlatformJob platformJob) {
+        QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob);
+        return platformJobMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformLogServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformLogServiceImpl.java
new file mode 100644
index 0000000..af9ceb7
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformLogServiceImpl.java
@@ -0,0 +1,125 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformLogMapper;
+import com.doumee.dao.business.model.PlatformLog;
+import com.doumee.service.business.PlatformLogService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鏈堝彴_浣滀笟鎿嶄綔鍘嗗彶琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class PlatformLogServiceImpl implements PlatformLogService {
+
+    @Autowired
+    private PlatformLogMapper platformLogMapper;
+
+    @Override
+    public Integer create(PlatformLog platformLog) {
+        platformLogMapper.insert(platformLog);
+        return platformLog.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        platformLogMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(PlatformLog platformLog) {
+        UpdateWrapper<PlatformLog> deleteWrapper = new UpdateWrapper<>(platformLog);
+        platformLogMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        platformLogMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(PlatformLog platformLog) {
+        platformLogMapper.updateById(platformLog);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<PlatformLog> platformLogs) {
+        if (CollectionUtils.isEmpty(platformLogs)) {
+            return;
+        }
+        for (PlatformLog platformLog: platformLogs) {
+            this.updateById(platformLog);
+        }
+    }
+
+    @Override
+    public PlatformLog findById(Integer id) {
+        return platformLogMapper.selectById(id);
+    }
+
+    @Override
+    public PlatformLog findOne(PlatformLog platformLog) {
+        QueryWrapper<PlatformLog> wrapper = new QueryWrapper<>(platformLog);
+        return platformLogMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<PlatformLog> findList(PlatformLog platformLog) {
+        QueryWrapper<PlatformLog> wrapper = new QueryWrapper<>(platformLog);
+        return platformLogMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<PlatformLog> findPage(PageWrap<PlatformLog> pageWrap) {
+        IPage<PlatformLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<PlatformLog> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, PlatformLog::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, PlatformLog::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, PlatformLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, PlatformLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, PlatformLog::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, PlatformLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, PlatformLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, PlatformLog::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, PlatformLog::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getJobId() != null, PlatformLog::getJobId, pageWrap.getModel().getJobId())
+                .eq(pageWrap.getModel().getTitle() != null, PlatformLog::getTitle, pageWrap.getModel().getTitle())
+                .eq(pageWrap.getModel().getContent() != null, PlatformLog::getContent, pageWrap.getModel().getContent())
+                .eq(pageWrap.getModel().getObjType() != null, PlatformLog::getObjType, pageWrap.getModel().getObjType())
+                .eq(pageWrap.getModel().getObjId() != null, PlatformLog::getObjId, pageWrap.getModel().getObjId())
+                .eq(pageWrap.getModel().getBeforeContent() != null, PlatformLog::getBeforeContent, pageWrap.getModel().getBeforeContent())
+                .eq(pageWrap.getModel().getAfterContent() != null, PlatformLog::getAfterContent, pageWrap.getModel().getAfterContent())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(platformLogMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(PlatformLog platformLog) {
+        QueryWrapper<PlatformLog> wrapper = new QueryWrapper<>(platformLog);
+        return platformLogMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformQueueServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformQueueServiceImpl.java
new file mode 100644
index 0000000..ebcb9ef
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformQueueServiceImpl.java
@@ -0,0 +1,131 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformQueueMapper;
+import com.doumee.dao.business.model.PlatformQueue;
+import com.doumee.service.business.PlatformQueueService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鏈堝彴_鍙彿鎺掗槦淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class PlatformQueueServiceImpl implements PlatformQueueService {
+
+    @Autowired
+    private PlatformQueueMapper platformQueueMapper;
+
+    @Override
+    public Integer create(PlatformQueue platformQueue) {
+        platformQueueMapper.insert(platformQueue);
+        return platformQueue.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        platformQueueMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(PlatformQueue platformQueue) {
+        UpdateWrapper<PlatformQueue> deleteWrapper = new UpdateWrapper<>(platformQueue);
+        platformQueueMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        platformQueueMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(PlatformQueue platformQueue) {
+        platformQueueMapper.updateById(platformQueue);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<PlatformQueue> platformQueues) {
+        if (CollectionUtils.isEmpty(platformQueues)) {
+            return;
+        }
+        for (PlatformQueue platformQueue: platformQueues) {
+            this.updateById(platformQueue);
+        }
+    }
+
+    @Override
+    public PlatformQueue findById(Integer id) {
+        return platformQueueMapper.selectById(id);
+    }
+
+    @Override
+    public PlatformQueue findOne(PlatformQueue platformQueue) {
+        QueryWrapper<PlatformQueue> wrapper = new QueryWrapper<>(platformQueue);
+        return platformQueueMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<PlatformQueue> findList(PlatformQueue platformQueue) {
+        QueryWrapper<PlatformQueue> wrapper = new QueryWrapper<>(platformQueue);
+        return platformQueueMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<PlatformQueue> findPage(PageWrap<PlatformQueue> pageWrap) {
+        IPage<PlatformQueue> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<PlatformQueue> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, PlatformQueue::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, PlatformQueue::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, PlatformQueue::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, PlatformQueue::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, PlatformQueue::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, PlatformQueue::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, PlatformQueue::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, PlatformQueue::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, PlatformQueue::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getJobId() != null, PlatformQueue::getJobId, pageWrap.getModel().getJobId())
+                .eq(pageWrap.getModel().getTitle() != null, PlatformQueue::getTitle, pageWrap.getModel().getTitle())
+                .eq(pageWrap.getModel().getContent() != null, PlatformQueue::getContent, pageWrap.getModel().getContent())
+                .eq(pageWrap.getModel().getStatus() != null, PlatformQueue::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getObjType() != null, PlatformQueue::getObjType, pageWrap.getModel().getObjType())
+                .eq(pageWrap.getModel().getObjId() != null, PlatformQueue::getObjId, pageWrap.getModel().getObjId())
+                .eq(pageWrap.getModel().getCarCode() != null, PlatformQueue::getCarCode, pageWrap.getModel().getCarCode())
+                .eq(pageWrap.getModel().getPlatformId() != null, PlatformQueue::getPlatformId, pageWrap.getModel().getPlatformId())
+                .eq(pageWrap.getModel().getPlatformName() != null, PlatformQueue::getPlatformName, pageWrap.getModel().getPlatformName())
+                .eq(pageWrap.getModel().getDriverPhone() != null, PlatformQueue::getDriverPhone, pageWrap.getModel().getDriverPhone())
+                .eq(pageWrap.getModel().getDriverName() != null, PlatformQueue::getDriverName, pageWrap.getModel().getDriverName())
+                .eq(pageWrap.getModel().getDriverId() != null, PlatformQueue::getDriverId, pageWrap.getModel().getDriverId())
+                .eq(pageWrap.getModel().getOrderCode() != null, PlatformQueue::getOrderCode, pageWrap.getModel().getOrderCode())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(platformQueueMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(PlatformQueue platformQueue) {
+        QueryWrapper<PlatformQueue> wrapper = new QueryWrapper<>(platformQueue);
+        return platformQueueMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
new file mode 100644
index 0000000..b2e4027
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
@@ -0,0 +1,133 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformMapper;
+import com.doumee.dao.business.model.Platform;
+import com.doumee.service.business.PlatformService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鏈堝彴淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class PlatformServiceImpl implements PlatformService {
+
+    @Autowired
+    private PlatformMapper platformMapper;
+
+    @Override
+    public Integer create(Platform platform) {
+        platformMapper.insert(platform);
+        return platform.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        platformMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(Platform platform) {
+        UpdateWrapper<Platform> deleteWrapper = new UpdateWrapper<>(platform);
+        platformMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        platformMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(Platform platform) {
+        platformMapper.updateById(platform);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<Platform> platforms) {
+        if (CollectionUtils.isEmpty(platforms)) {
+            return;
+        }
+        for (Platform platform: platforms) {
+            this.updateById(platform);
+        }
+    }
+
+    @Override
+    public Platform findById(Integer id) {
+        return platformMapper.selectById(id);
+    }
+
+    @Override
+    public Platform findOne(Platform platform) {
+        QueryWrapper<Platform> wrapper = new QueryWrapper<>(platform);
+        return platformMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<Platform> findList(Platform platform) {
+        QueryWrapper<Platform> wrapper = new QueryWrapper<>(platform);
+        return platformMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<Platform> findPage(PageWrap<Platform> pageWrap) {
+        IPage<Platform> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<Platform> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, Platform::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, Platform::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, Platform::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, Platform::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, Platform::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, Platform::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, Platform::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, Platform::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getName() != null, Platform::getName, pageWrap.getModel().getName())
+                .eq(pageWrap.getModel().getRemark() != null, Platform::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getStatus() != null, Platform::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getSortnum() != null, Platform::getSortnum, pageWrap.getModel().getSortnum())
+                .eq(pageWrap.getModel().getGroupId() != null, Platform::getGroupId, pageWrap.getModel().getGroupId())
+                .eq(pageWrap.getModel().getStartTime() != null, Platform::getStartTime, pageWrap.getModel().getStartTime())
+                .eq(pageWrap.getModel().getEndTime() != null, Platform::getEndTime, pageWrap.getModel().getEndTime())
+                .eq(pageWrap.getModel().getDeviceIds() != null, Platform::getDeviceIds, pageWrap.getModel().getDeviceIds())
+                .eq(pageWrap.getModel().getScreenIds() != null, Platform::getScreenIds, pageWrap.getModel().getScreenIds())
+                .eq(pageWrap.getModel().getWorkingNum() != null, Platform::getWorkingNum, pageWrap.getModel().getWorkingNum())
+                .eq(pageWrap.getModel().getWariCallTime() != null, Platform::getWariCallTime, pageWrap.getModel().getWariCallTime())
+                .eq(pageWrap.getModel().getAlermTime() != null, Platform::getAlermTime, pageWrap.getModel().getAlermTime())
+                .ge(pageWrap.getModel().getLastEventTime() != null, Platform::getLastEventTime, Utils.Date.getStart(pageWrap.getModel().getLastEventTime()))
+                .le(pageWrap.getModel().getLastEventTime() != null, Platform::getLastEventTime, Utils.Date.getEnd(pageWrap.getModel().getLastEventTime()))
+                .eq(pageWrap.getModel().getDeviceNames() != null, Platform::getDeviceNames, pageWrap.getModel().getDeviceNames())
+                .eq(pageWrap.getModel().getScreenName() != null, Platform::getScreenName, pageWrap.getModel().getScreenName())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(platformMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(Platform platform) {
+        QueryWrapper<Platform> wrapper = new QueryWrapper<>(platform);
+        return platformMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformShowParamServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformShowParamServiceImpl.java
new file mode 100644
index 0000000..e33f7c1
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformShowParamServiceImpl.java
@@ -0,0 +1,121 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformShowParamMapper;
+import com.doumee.dao.business.model.PlatformShowParam;
+import com.doumee.service.business.PlatformShowParamService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 鏈堝彴_鏄剧ず閰嶇疆淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class PlatformShowParamServiceImpl implements PlatformShowParamService {
+
+    @Autowired
+    private PlatformShowParamMapper platformShowParamMapper;
+
+    @Override
+    public Integer create(PlatformShowParam platformShowParam) {
+        platformShowParamMapper.insert(platformShowParam);
+        return platformShowParam.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        platformShowParamMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(PlatformShowParam platformShowParam) {
+        UpdateWrapper<PlatformShowParam> deleteWrapper = new UpdateWrapper<>(platformShowParam);
+        platformShowParamMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        platformShowParamMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(PlatformShowParam platformShowParam) {
+        platformShowParamMapper.updateById(platformShowParam);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<PlatformShowParam> platformShowParams) {
+        if (CollectionUtils.isEmpty(platformShowParams)) {
+            return;
+        }
+        for (PlatformShowParam platformShowParam: platformShowParams) {
+            this.updateById(platformShowParam);
+        }
+    }
+
+    @Override
+    public PlatformShowParam findById(Integer id) {
+        return platformShowParamMapper.selectById(id);
+    }
+
+    @Override
+    public PlatformShowParam findOne(PlatformShowParam platformShowParam) {
+        QueryWrapper<PlatformShowParam> wrapper = new QueryWrapper<>(platformShowParam);
+        return platformShowParamMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<PlatformShowParam> findList(PlatformShowParam platformShowParam) {
+        QueryWrapper<PlatformShowParam> wrapper = new QueryWrapper<>(platformShowParam);
+        return platformShowParamMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<PlatformShowParam> findPage(PageWrap<PlatformShowParam> pageWrap) {
+        IPage<PlatformShowParam> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<PlatformShowParam> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, PlatformShowParam::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, PlatformShowParam::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, PlatformShowParam::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, PlatformShowParam::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, PlatformShowParam::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, PlatformShowParam::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, PlatformShowParam::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, PlatformShowParam::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, PlatformShowParam::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getPlatformId() != null, PlatformShowParam::getPlatformId, pageWrap.getModel().getPlatformId())
+                .eq(pageWrap.getModel().getMemberId() != null, PlatformShowParam::getMemberId, pageWrap.getModel().getMemberId())
+                .eq(pageWrap.getModel().getSortnum() != null, PlatformShowParam::getSortnum, pageWrap.getModel().getSortnum())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(platformShowParamMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(PlatformShowParam platformShowParam) {
+        QueryWrapper<PlatformShowParam> wrapper = new QueryWrapper<>(platformShowParam);
+        return platformShowParamMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TasksServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TasksServiceImpl.java
new file mode 100644
index 0000000..958dc5c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TasksServiceImpl.java
@@ -0,0 +1,133 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.TasksMapper;
+import com.doumee.dao.business.model.Tasks;
+import com.doumee.service.business.TasksService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 瀹夐槻涓嬪彂骞冲彴浠诲姟淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 16:06
+ */
+@Service
+public class TasksServiceImpl implements TasksService {
+
+    @Autowired
+    private TasksMapper tasksMapper;
+
+    @Override
+    public Integer create(Tasks tasks) {
+        tasksMapper.insert(tasks);
+        return tasks.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        tasksMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(Tasks tasks) {
+        UpdateWrapper<Tasks> deleteWrapper = new UpdateWrapper<>(tasks);
+        tasksMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        tasksMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(Tasks tasks) {
+        tasksMapper.updateById(tasks);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<Tasks> taskss) {
+        if (CollectionUtils.isEmpty(taskss)) {
+            return;
+        }
+        for (Tasks tasks: taskss) {
+            this.updateById(tasks);
+        }
+    }
+
+    @Override
+    public Tasks findById(Integer id) {
+        return tasksMapper.selectById(id);
+    }
+
+    @Override
+    public Tasks findOne(Tasks tasks) {
+        QueryWrapper<Tasks> wrapper = new QueryWrapper<>(tasks);
+        return tasksMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<Tasks> findList(Tasks tasks) {
+        QueryWrapper<Tasks> wrapper = new QueryWrapper<>(tasks);
+        return tasksMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<Tasks> findPage(PageWrap<Tasks> pageWrap) {
+        IPage<Tasks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<Tasks> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, Tasks::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, Tasks::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, Tasks::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, Tasks::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEdirot() != null, Tasks::getEdirot, pageWrap.getModel().getEdirot())
+                .ge(pageWrap.getModel().getEditDate() != null, Tasks::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, Tasks::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, Tasks::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, Tasks::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getName() != null, Tasks::getName, pageWrap.getModel().getName())
+                .eq(pageWrap.getModel().getType() != null, Tasks::getType, pageWrap.getModel().getType())
+                .eq(pageWrap.getModel().getStatus() != null, Tasks::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getHkId() != null, Tasks::getHkId, pageWrap.getModel().getHkId())
+                .eq(pageWrap.getModel().getHkStatus() != null, Tasks::getHkStatus, pageWrap.getModel().getHkStatus())
+                .ge(pageWrap.getModel().getHkDate() != null, Tasks::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()))
+                .le(pageWrap.getModel().getHkDate() != null, Tasks::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()))
+                .eq(pageWrap.getModel().getHkResponse() != null, Tasks::getHkResponse, pageWrap.getModel().getHkResponse())
+                .ge(pageWrap.getModel().getHkDoneDate() != null, Tasks::getHkDoneDate, Utils.Date.getStart(pageWrap.getModel().getHkDoneDate()))
+                .le(pageWrap.getModel().getHkDoneDate() != null, Tasks::getHkDoneDate, Utils.Date.getEnd(pageWrap.getModel().getHkDoneDate()))
+                .ge(pageWrap.getModel().getStopInfo() != null, Tasks::getStopInfo, Utils.Date.getStart(pageWrap.getModel().getStopInfo()))
+                .le(pageWrap.getModel().getStopInfo() != null, Tasks::getStopInfo, Utils.Date.getEnd(pageWrap.getModel().getStopInfo()))
+                .eq(pageWrap.getModel().getShopDate() != null, Tasks::getShopDate, pageWrap.getModel().getShopDate())
+                .eq(pageWrap.getModel().getStopUserId() != null, Tasks::getStopUserId, pageWrap.getModel().getStopUserId())
+                .eq(pageWrap.getModel().getColumn19() != null, Tasks::getColumn19, pageWrap.getModel().getColumn19())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(tasksMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(Tasks tasks) {
+        QueryWrapper<Tasks> wrapper = new QueryWrapper<>(tasks);
+        return tasksMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitParkServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitParkServiceImpl.java
new file mode 100644
index 0000000..ce13cd4
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitParkServiceImpl.java
@@ -0,0 +1,131 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.VisitParkMapper;
+import com.doumee.dao.business.model.VisitPark;
+import com.doumee.service.business.VisitParkService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 璁垮鎶ュ鍋滆溅搴撳叧鑱旇〃Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Service
+public class VisitParkServiceImpl implements VisitParkService {
+
+    @Autowired
+    private VisitParkMapper visitParkMapper;
+
+    @Override
+    public Integer create(VisitPark visitPark) {
+        visitParkMapper.insert(visitPark);
+        return visitPark.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        visitParkMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(VisitPark visitPark) {
+        UpdateWrapper<VisitPark> deleteWrapper = new UpdateWrapper<>(visitPark);
+        visitParkMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        visitParkMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(VisitPark visitPark) {
+        visitParkMapper.updateById(visitPark);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<VisitPark> visitParks) {
+        if (CollectionUtils.isEmpty(visitParks)) {
+            return;
+        }
+        for (VisitPark visitPark: visitParks) {
+            this.updateById(visitPark);
+        }
+    }
+
+    @Override
+    public VisitPark findById(Integer id) {
+        return visitParkMapper.selectById(id);
+    }
+
+    @Override
+    public VisitPark findOne(VisitPark visitPark) {
+        QueryWrapper<VisitPark> wrapper = new QueryWrapper<>(visitPark);
+        return visitParkMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<VisitPark> findList(VisitPark visitPark) {
+        QueryWrapper<VisitPark> wrapper = new QueryWrapper<>(visitPark);
+        return visitParkMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<VisitPark> findPage(PageWrap<VisitPark> pageWrap) {
+        IPage<VisitPark> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<VisitPark> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, VisitPark::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, VisitPark::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, VisitPark::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, VisitPark::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, VisitPark::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, VisitPark::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, VisitPark::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, VisitPark::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, VisitPark::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getParkId() != null, VisitPark::getParkId, pageWrap.getModel().getParkId())
+                .eq(pageWrap.getModel().getSortnum() != null, VisitPark::getSortnum, pageWrap.getModel().getSortnum())
+                .eq(pageWrap.getModel().getVisitApplyId() != null, VisitPark::getVisitApplyId, pageWrap.getModel().getVisitApplyId())
+                .eq(pageWrap.getModel().getCarCode() != null, VisitPark::getCarCode, pageWrap.getModel().getCarCode())
+                .eq(pageWrap.getModel().getHkId() != null, VisitPark::getHkId, pageWrap.getModel().getHkId())
+                .eq(pageWrap.getModel().getHkStatus() != null, VisitPark::getHkStatus, pageWrap.getModel().getHkStatus())
+                .ge(pageWrap.getModel().getHkDate() != null, VisitPark::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()))
+                .le(pageWrap.getModel().getHkDate() != null, VisitPark::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()))
+                .ge(pageWrap.getModel().getStartTime() != null, VisitPark::getStartTime, Utils.Date.getStart(pageWrap.getModel().getStartTime()))
+                .le(pageWrap.getModel().getStartTime() != null, VisitPark::getStartTime, Utils.Date.getEnd(pageWrap.getModel().getStartTime()))
+                .ge(pageWrap.getModel().getEndTime() != null, VisitPark::getEndTime, Utils.Date.getStart(pageWrap.getModel().getEndTime()))
+                .le(pageWrap.getModel().getEndTime() != null, VisitPark::getEndTime, Utils.Date.getEnd(pageWrap.getModel().getEndTime()))
+                .eq(pageWrap.getModel().getParkHkId() != null, VisitPark::getParkHkId, pageWrap.getModel().getParkHkId())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(visitParkMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(VisitPark visitPark) {
+        QueryWrapper<VisitPark> wrapper = new QueryWrapper<>(visitPark);
+        return visitParkMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitProblemLogServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitProblemLogServiceImpl.java
new file mode 100644
index 0000000..243668d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitProblemLogServiceImpl.java
@@ -0,0 +1,128 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.VisitProblemLogMapper;
+import com.doumee.dao.business.model.VisitProblemLog;
+import com.doumee.service.business.VisitProblemLogService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 璁垮绛旈璁板綍琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Service
+public class VisitProblemLogServiceImpl implements VisitProblemLogService {
+
+    @Autowired
+    private VisitProblemLogMapper visitProblemLogMapper;
+
+    @Override
+    public Integer create(VisitProblemLog visitProblemLog) {
+        visitProblemLogMapper.insert(visitProblemLog);
+        return visitProblemLog.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        visitProblemLogMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(VisitProblemLog visitProblemLog) {
+        UpdateWrapper<VisitProblemLog> deleteWrapper = new UpdateWrapper<>(visitProblemLog);
+        visitProblemLogMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        visitProblemLogMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(VisitProblemLog visitProblemLog) {
+        visitProblemLogMapper.updateById(visitProblemLog);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<VisitProblemLog> visitProblemLogs) {
+        if (CollectionUtils.isEmpty(visitProblemLogs)) {
+            return;
+        }
+        for (VisitProblemLog visitProblemLog: visitProblemLogs) {
+            this.updateById(visitProblemLog);
+        }
+    }
+
+    @Override
+    public VisitProblemLog findById(Integer id) {
+        return visitProblemLogMapper.selectById(id);
+    }
+
+    @Override
+    public VisitProblemLog findOne(VisitProblemLog visitProblemLog) {
+        QueryWrapper<VisitProblemLog> wrapper = new QueryWrapper<>(visitProblemLog);
+        return visitProblemLogMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<VisitProblemLog> findList(VisitProblemLog visitProblemLog) {
+        QueryWrapper<VisitProblemLog> wrapper = new QueryWrapper<>(visitProblemLog);
+        return visitProblemLogMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<VisitProblemLog> findPage(PageWrap<VisitProblemLog> pageWrap) {
+        IPage<VisitProblemLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<VisitProblemLog> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, VisitProblemLog::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, VisitProblemLog::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, VisitProblemLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, VisitProblemLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, VisitProblemLog::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, VisitProblemLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, VisitProblemLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, VisitProblemLog::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, VisitProblemLog::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getUserId() != null, VisitProblemLog::getUserId, pageWrap.getModel().getUserId())
+                .eq(pageWrap.getModel().getStatus() != null, VisitProblemLog::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getLogId() != null, VisitProblemLog::getLogId, pageWrap.getModel().getLogId())
+                .eq(pageWrap.getModel().getScore() != null, VisitProblemLog::getScore, pageWrap.getModel().getScore())
+                .eq(pageWrap.getModel().getContent() != null, VisitProblemLog::getContent, pageWrap.getModel().getContent())
+                .eq(pageWrap.getModel().getName() != null, VisitProblemLog::getName, pageWrap.getModel().getName())
+                .eq(pageWrap.getModel().getPhone() != null, VisitProblemLog::getPhone, pageWrap.getModel().getPhone())
+                .eq(pageWrap.getModel().getCompanyId() != null, VisitProblemLog::getCompanyId, pageWrap.getModel().getCompanyId())
+                .eq(pageWrap.getModel().getCompanyName() != null, VisitProblemLog::getCompanyName, pageWrap.getModel().getCompanyName())
+                .eq(pageWrap.getModel().getOpenid() != null, VisitProblemLog::getOpenid, pageWrap.getModel().getOpenid())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(visitProblemLogMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(VisitProblemLog visitProblemLog) {
+        QueryWrapper<VisitProblemLog> wrapper = new QueryWrapper<>(visitProblemLog);
+        return visitProblemLogMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitProblemsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitProblemsServiceImpl.java
new file mode 100644
index 0000000..b80cefd
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitProblemsServiceImpl.java
@@ -0,0 +1,125 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.VisitProblemsMapper;
+import com.doumee.dao.business.model.VisitProblems;
+import com.doumee.service.business.VisitProblemsService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 璇曢淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Service
+public class VisitProblemsServiceImpl implements VisitProblemsService {
+
+    @Autowired
+    private VisitProblemsMapper visitProblemsMapper;
+
+    @Override
+    public Integer create(VisitProblems visitProblems) {
+        visitProblemsMapper.insert(visitProblems);
+        return visitProblems.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        visitProblemsMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(VisitProblems visitProblems) {
+        UpdateWrapper<VisitProblems> deleteWrapper = new UpdateWrapper<>(visitProblems);
+        visitProblemsMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        visitProblemsMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(VisitProblems visitProblems) {
+        visitProblemsMapper.updateById(visitProblems);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<VisitProblems> visitProblemss) {
+        if (CollectionUtils.isEmpty(visitProblemss)) {
+            return;
+        }
+        for (VisitProblems visitProblems: visitProblemss) {
+            this.updateById(visitProblems);
+        }
+    }
+
+    @Override
+    public VisitProblems findById(Integer id) {
+        return visitProblemsMapper.selectById(id);
+    }
+
+    @Override
+    public VisitProblems findOne(VisitProblems visitProblems) {
+        QueryWrapper<VisitProblems> wrapper = new QueryWrapper<>(visitProblems);
+        return visitProblemsMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<VisitProblems> findList(VisitProblems visitProblems) {
+        QueryWrapper<VisitProblems> wrapper = new QueryWrapper<>(visitProblems);
+        return visitProblemsMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<VisitProblems> findPage(PageWrap<VisitProblems> pageWrap) {
+        IPage<VisitProblems> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<VisitProblems> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, VisitProblems::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, VisitProblems::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, VisitProblems::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, VisitProblems::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, VisitProblems::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, VisitProblems::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, VisitProblems::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, VisitProblems::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, VisitProblems::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getTitle() != null, VisitProblems::getTitle, pageWrap.getModel().getTitle())
+                .eq(pageWrap.getModel().getOptions() != null, VisitProblems::getOptions, pageWrap.getModel().getOptions())
+                .eq(pageWrap.getModel().getAnswer() != null, VisitProblems::getAnswer, pageWrap.getModel().getAnswer())
+                .eq(pageWrap.getModel().getSortnu() != null, VisitProblems::getSortnu, pageWrap.getModel().getSortnu())
+                .eq(pageWrap.getModel().getType() != null, VisitProblems::getType, pageWrap.getModel().getType())
+                .eq(pageWrap.getModel().getScore() != null, VisitProblems::getScore, pageWrap.getModel().getScore())
+                .eq(pageWrap.getModel().getUseType() != null, VisitProblems::getUseType, pageWrap.getModel().getUseType())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(visitProblemsMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(VisitProblems visitProblems) {
+        QueryWrapper<VisitProblems> wrapper = new QueryWrapper<>(visitProblems);
+        return visitProblemsMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
new file mode 100644
index 0000000..24dadb2
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
@@ -0,0 +1,121 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.VisitReasonMapper;
+import com.doumee.dao.business.model.VisitReason;
+import com.doumee.service.business.VisitReasonService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 璁垮浜嬬敱淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Service
+public class VisitReasonServiceImpl implements VisitReasonService {
+
+    @Autowired
+    private VisitReasonMapper visitReasonMapper;
+
+    @Override
+    public Integer create(VisitReason visitReason) {
+        visitReasonMapper.insert(visitReason);
+        return visitReason.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        visitReasonMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(VisitReason visitReason) {
+        UpdateWrapper<VisitReason> deleteWrapper = new UpdateWrapper<>(visitReason);
+        visitReasonMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        visitReasonMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(VisitReason visitReason) {
+        visitReasonMapper.updateById(visitReason);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<VisitReason> visitReasons) {
+        if (CollectionUtils.isEmpty(visitReasons)) {
+            return;
+        }
+        for (VisitReason visitReason: visitReasons) {
+            this.updateById(visitReason);
+        }
+    }
+
+    @Override
+    public VisitReason findById(Integer id) {
+        return visitReasonMapper.selectById(id);
+    }
+
+    @Override
+    public VisitReason findOne(VisitReason visitReason) {
+        QueryWrapper<VisitReason> wrapper = new QueryWrapper<>(visitReason);
+        return visitReasonMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<VisitReason> findList(VisitReason visitReason) {
+        QueryWrapper<VisitReason> wrapper = new QueryWrapper<>(visitReason);
+        return visitReasonMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<VisitReason> findPage(PageWrap<VisitReason> pageWrap) {
+        IPage<VisitReason> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<VisitReason> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, VisitReason::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, VisitReason::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, VisitReason::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, VisitReason::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, VisitReason::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, VisitReason::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, VisitReason::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, VisitReason::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, VisitReason::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getTitle() != null, VisitReason::getTitle, pageWrap.getModel().getTitle())
+                .eq(pageWrap.getModel().getSortnum() != null, VisitReason::getSortnum, pageWrap.getModel().getSortnum())
+                .eq(pageWrap.getModel().getType() != null, VisitReason::getType, pageWrap.getModel().getType())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(visitReasonMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(VisitReason visitReason) {
+        QueryWrapper<VisitReason> wrapper = new QueryWrapper<>(visitReason);
+        return visitReasonMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitorServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitorServiceImpl.java
new file mode 100644
index 0000000..abb0a3f
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitorServiceImpl.java
@@ -0,0 +1,141 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.VisitorMapper;
+import com.doumee.dao.business.model.Visitor;
+import com.doumee.service.business.VisitorService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 璁垮淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2024/04/28 15:44
+ */
+@Service
+public class VisitorServiceImpl implements VisitorService {
+
+    @Autowired
+    private VisitorMapper visitorMapper;
+
+    @Override
+    public Integer create(Visitor visitor) {
+        visitorMapper.insert(visitor);
+        return visitor.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        visitorMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(Visitor visitor) {
+        UpdateWrapper<Visitor> deleteWrapper = new UpdateWrapper<>(visitor);
+        visitorMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        visitorMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(Visitor visitor) {
+        visitorMapper.updateById(visitor);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<Visitor> visitors) {
+        if (CollectionUtils.isEmpty(visitors)) {
+            return;
+        }
+        for (Visitor visitor: visitors) {
+            this.updateById(visitor);
+        }
+    }
+
+    @Override
+    public Visitor findById(Integer id) {
+        return visitorMapper.selectById(id);
+    }
+
+    @Override
+    public Visitor findOne(Visitor visitor) {
+        QueryWrapper<Visitor> wrapper = new QueryWrapper<>(visitor);
+        return visitorMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<Visitor> findList(Visitor visitor) {
+        QueryWrapper<Visitor> wrapper = new QueryWrapper<>(visitor);
+        return visitorMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<Visitor> findPage(PageWrap<Visitor> pageWrap) {
+        IPage<Visitor> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<Visitor> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, Visitor::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getCreator() != null, Visitor::getCreator, pageWrap.getModel().getCreator())
+                .ge(pageWrap.getModel().getCreateDate() != null, Visitor::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
+                .le(pageWrap.getModel().getCreateDate() != null, Visitor::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
+                .eq(pageWrap.getModel().getEditor() != null, Visitor::getEditor, pageWrap.getModel().getEditor())
+                .ge(pageWrap.getModel().getEditDate() != null, Visitor::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
+                .le(pageWrap.getModel().getEditDate() != null, Visitor::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
+                .eq(pageWrap.getModel().getIsdeleted() != null, Visitor::getIsdeleted, pageWrap.getModel().getIsdeleted())
+                .eq(pageWrap.getModel().getRemark() != null, Visitor::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getCompanyId() != null, Visitor::getCompanyId, pageWrap.getModel().getCompanyId())
+                .eq(pageWrap.getModel().getFaceImg() != null, Visitor::getFaceImg, pageWrap.getModel().getFaceImg())
+                .eq(pageWrap.getModel().getImgurl() != null, Visitor::getImgurl, pageWrap.getModel().getImgurl())
+                .eq(pageWrap.getModel().getType() != null, Visitor::getType, pageWrap.getModel().getType())
+                .eq(pageWrap.getModel().getName() != null, Visitor::getName, pageWrap.getModel().getName())
+                .ge(pageWrap.getModel().getBirthday() != null, Visitor::getBirthday, Utils.Date.getStart(pageWrap.getModel().getBirthday()))
+                .le(pageWrap.getModel().getBirthday() != null, Visitor::getBirthday, Utils.Date.getEnd(pageWrap.getModel().getBirthday()))
+                .eq(pageWrap.getModel().getPhone() != null, Visitor::getPhone, pageWrap.getModel().getPhone())
+                .eq(pageWrap.getModel().getIdcardNo() != null, Visitor::getIdcardNo, pageWrap.getModel().getIdcardNo())
+                .eq(pageWrap.getModel().getIdcardDecode() != null, Visitor::getIdcardDecode, pageWrap.getModel().getIdcardDecode())
+                .eq(pageWrap.getModel().getCode() != null, Visitor::getCode, pageWrap.getModel().getCode())
+                .eq(pageWrap.getModel().getClasses() != null, Visitor::getClasses, pageWrap.getModel().getClasses())
+                .eq(pageWrap.getModel().getWorkStatus() != null, Visitor::getWorkStatus, pageWrap.getModel().getWorkStatus())
+                .eq(pageWrap.getModel().getStatus() != null, Visitor::getStatus, pageWrap.getModel().getStatus())
+                .eq(pageWrap.getModel().getParentId() != null, Visitor::getParentId, pageWrap.getModel().getParentId())
+                .eq(pageWrap.getModel().getOpenid() != null, Visitor::getOpenid, pageWrap.getModel().getOpenid())
+                .eq(pageWrap.getModel().getPassward() != null, Visitor::getPassward, pageWrap.getModel().getPassward())
+                .ge(pageWrap.getModel().getLastLoginDate() != null, Visitor::getLastLoginDate, Utils.Date.getStart(pageWrap.getModel().getLastLoginDate()))
+                .le(pageWrap.getModel().getLastLoginDate() != null, Visitor::getLastLoginDate, Utils.Date.getEnd(pageWrap.getModel().getLastLoginDate()))
+                .eq(pageWrap.getModel().getLoginNum() != null, Visitor::getLoginNum, pageWrap.getModel().getLoginNum())
+                .eq(pageWrap.getModel().getSex() != null, Visitor::getSex, pageWrap.getModel().getSex())
+                .ge(pageWrap.getModel().getLastVisitDate() != null, Visitor::getLastVisitDate, Utils.Date.getStart(pageWrap.getModel().getLastVisitDate()))
+                .le(pageWrap.getModel().getLastVisitDate() != null, Visitor::getLastVisitDate, Utils.Date.getEnd(pageWrap.getModel().getLastVisitDate()))
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(visitorMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(Visitor visitor) {
+        QueryWrapper<Visitor> wrapper = new QueryWrapper<>(visitor);
+        return visitorMapper.selectCount(wrapper);
+    }
+}

--
Gitblit v1.9.3