From 45091e34fb6e50ddac36d017947e2185619c641a Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 09 十月 2024 16:16:08 +0800
Subject: [PATCH] 代码初始化

---
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CategoryCloudController.java                 |    7 
 server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java                                   |  141 ++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsConfigService.java                 |   97 ++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java                      |   70 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CategoryService.java                  |    9 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java          |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java      |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java         |   87 ++---
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/SmsConfigCloudController.java                |   91 +++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java             |   16 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java    |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java                           |   30 +
 server/system_service/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java                     |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java |    3 
 server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java                         |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java         |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsConfigMapper.java                      |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/PlatformLogJoinMapper.java           |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Category.java                       |   11 
 server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java                       |   16 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformLog.java                    |   44 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java         |   25 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java        |  142 ++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java                       |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformLogServiceImpl.java      |   57 ++-
 25 files changed, 803 insertions(+), 98 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java
index f0af8bf..0c257b6 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java
+++ b/server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java
@@ -2,6 +2,7 @@
 
 import com.doumee.api.BaseController;
 import com.doumee.biz.system.SystemPositionBiz;
+import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.constants.OperaType;
@@ -17,7 +18,6 @@
 import com.doumee.service.system.SystemUserService;
 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.validation.annotation.Validated;
 
@@ -47,7 +47,7 @@
     @PreventRepeat
     @ApiOperation("鏂板缓")
     @PostMapping("/create")
-    @RequiresPermissions("system:position:create")
+    @CloudRequiredPermission("system:position:create")
     public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody SystemPosition systemPosition, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         systemPosition.setCreateUser(this.getLoginUser(token).getId());
         return ApiResponse.success(systemPositionBiz.create(systemPosition));
@@ -55,7 +55,7 @@
 
     @ApiOperation("鍒犻櫎")
     @GetMapping("/delete/{id}")
-    @RequiresPermissions("system:position:delete")
+    @CloudRequiredPermission("system:position:delete")
     public ApiResponse deleteById(@PathVariable Integer id) {
         systemPositionBiz.deleteById(id);
         return ApiResponse.success(null);
@@ -63,7 +63,7 @@
 
     @ApiOperation("鎵归噺鍒犻櫎")
     @GetMapping("/delete/batch")
-    @RequiresPermissions("system:position:delete")
+    @CloudRequiredPermission("system:position:delete")
     public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
         String [] idArray = ids.split(",");
         List<Integer> idList = new ArrayList<>();
@@ -76,7 +76,7 @@
 
     @ApiOperation("淇敼")
     @PostMapping("/updateById")
-    @RequiresPermissions("system:position:update")
+    @CloudRequiredPermission("system:position:update")
     public ApiResponse updateById(@Validated(OperaType.Update.class) @RequestBody SystemPosition systemPosition, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         systemPosition.setUpdateUser(this.getLoginUser(token).getId());
         systemPositionBiz.updateById(systemPosition);
@@ -85,14 +85,14 @@
 
     @ApiOperation("鏌ヨ宀椾綅鏍戝垪琛�")
     @PostMapping("/tree")
-    @RequiresPermissions("system:position:query")
+    @CloudRequiredPermission("system:position:query")
     public ApiResponse<List<SystemPositionListVO>> findTree () {
         return ApiResponse.success(systemPositionBiz.findTree());
     }
 
     @ApiOperation("鏌ヨ宀椾綅鍒楄〃")
     @PostMapping("/all")
-    @RequiresPermissions("system:position:query")
+    @CloudRequiredPermission("system:position:query")
     public ApiResponse<List<SystemPosition>> findList () {
         SystemPosition systemPosition = new SystemPosition();
         systemPosition.setDeleted(Boolean.FALSE);
@@ -102,7 +102,7 @@
     @Trace(exclude = true)
     @ApiOperation("鏌ヨ宀椾綅浜哄憳")
     @PostMapping("/users")
-    @RequiresPermissions("system:position:queryUsers")
+    @CloudRequiredPermission("system:position:queryUsers")
     public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) {
         return ApiResponse.success(systemUserService.findPage(pageWrap));
     }
diff --git a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java
index 1ed6e9a..1c136a8 100644
--- a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java
+++ b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java
@@ -51,7 +51,7 @@
 
     @Override
     public List<SystemPositionListVO> findTree() {
-        return positionDataPermissionAware.execute();
+        return systemPositionService.findList();
     }
 
     @Override
diff --git a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
index 5b6a153..71edf44 100644
--- a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
+++ b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -137,6 +137,7 @@
         // 鐢熸垚瀵嗙爜
         systemUser.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt));
         systemUser.setSalt(salt);
+        systemUser.setSource(Constants.ZERO);
 
         // 鍒涘缓鐢ㄦ埛璁板綍
         systemUser.setType(Constants.ZERO);
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java b/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
new file mode 100644
index 0000000..4a0b2ab
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
@@ -0,0 +1,141 @@
+package com.doumee.core.utils;
+
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SmsConstants {
+
+    public interface SmsObjectType{
+        String inventCode = "0"; //楠岃瘉鐮�
+        String visit= "1"; //璁垮鐢宠
+        String visitReport = "2"; //璁垮鎶ュ
+        String hiddenDanger ="3";//闅愭偅闅忔墜鎷�
+        String carUse ="4";//鐢ㄨ溅鐢宠
+        String meeting ="5";//浼氳棰勭害
+        String platformBook ="6";//鐗╂祦杞﹂绾�
+        String platformJob ="7";//鏈堝彴浣滀笟
+    }
+
+    /**
+     * 璁垮鐢宠
+     */
+    public interface visitContent{
+        //璁垮鐢宠-閫氱煡锛堢粰瀹℃壒浜猴級
+        String visitNotice = "鎮ㄦ湁涓�鏉°�恵璁垮鐢宠}銆戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+        //璁垮鐢宠-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String visitAuditSuccess = "鎮ㄧ殑銆恵璁垮鐢宠}銆戝凡缁忓鎵归�氳繃锛岃浜巤棰勭害鍏ュ洯寮�濮嬫椂闂磢鍓嶅線闂ㄥ崼瀹よ瀹㈡満绛惧埌鍏ュ洯锛屽鏈夌枒闂紝璇疯仈绯昏璁夸汉";
+        //璁垮鐢宠-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String visitAuditFail = "鎮ㄧ殑銆恵璁垮鐢宠}銆戝凡琚┏鍥烇紝椹冲洖鍘熷洜涓猴細{椹冲洖鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯昏璁夸汉銆�";
+        //璁垮鐢宠-瓒呮椂鏈绂�-閫氱煡锛堢粰鐢宠浜猴級锛�
+        String visitTimeOutSignOut = "鎮ㄧ殑銆愯瀹㈢敵璇枫�戝凡浜巤鍒版湡鏃堕棿}鍒版湡锛岃鍙婃椂绂诲満骞跺墠寰�闂ㄥ崼瀹よ瀹㈡満绛剧锛屽鏈夌枒闂紝璇疯仈绯昏璁夸汉";
+        //璁垮鐢宠-瓒呮椂鏈绂�-閫氱煡锛堢粰鎸囧畾鎺ユ敹浜猴級
+        String visitTimeOutSignOutNum = "浠婃棩杩樻湁{鏈绂绘暟閲弣涓瀹㈡湭绛剧锛岃鍓嶅線PC绔煡鐪嬭缁嗕俊鎭��";
+
+    }
+
+
+    /**
+     * 璁垮鎶ュ
+     */
+    public interface visitReportingContent{
+        //璁垮鎶ュ-閫氱煡锛堢粰瀹℃壒浜猴級
+        String visitReportingNotice = "鎮ㄦ湁涓�鏉°�恵璁垮鎶ュ}銆戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+        //璁垮鎶ュ-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String visitReportingAuditSuccess = "鎮ㄧ殑銆恵璁垮鎶ュ}銆戝凡缁忓鎵归�氳繃锛岃閫氱煡璁垮浜巤棰勭害鍏ュ洯寮�濮嬫椂闂磢鍚庝箻鍧恵杞︾墝鍙穧鍏ュ洯锛屽鏈夌枒闂紝璇疯仈绯昏璁夸汉銆�";
+        //璁垮鎶ュ-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String visitReportingAuditFail = "鎮ㄧ殑銆恵璁垮鎶ュ}銆戝凡琚┏鍥烇紝椹冲洖鍘熷洜涓猴細{椹冲洖鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯诲鎵逛汉銆�";
+        //璁垮鎶ュ-瓒呮椂鏈鍦�-閫氱煡锛堢粰鐢宠浜猴級锛�
+        String visitReportingTimeOutSignOut = "鎮ㄧ殑銆愯瀹㈡姤澶囥�戝凡浜巤棰勭害鍏ュ洯缁撴潫鏃堕棿}鍒版湡锛岃鍙婃椂绂诲満锛屽鏈夌枒闂紝璇疯仈绯昏璁夸汉";
+        //璁垮鎶ュ-瓒呮椂鏈鍦�-閫氱煡锛堢粰鎸囧畾鎺ユ敹浜猴級
+        String visitReporting_time_out_sign_out_num = "浠婃棩杩樻湁{鏈绂绘暟閲弣涓瀹㈡姤澶囪溅杈嗘湭绂诲満锛岃鍓嶅線PC绔煡鐪嬭缁嗕俊鎭��";
+    }
+
+
+    /**
+     * 闅愭偅闅忔墜鎷�
+     */
+    public interface hiddenDangerContent{
+        //闅愭偅闅忔墜鎷�-閫氱煡锛堢粰澶勭悊浜猴級
+        String hiddenDanger_deal_user = "鎮ㄦ湁涓�鏉°�恵闅愭偅闅忔墜鎷�-娑堥槻闅愭偅}銆戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪�";
+        //闅愭偅闅忔墜鎷�-澶勭悊瀹屾垚锛堢粰鐢宠浜猴級锛氥��
+        String hiddenDanger_deal_over = "鎮ㄦ彁浜ょ殑銆恵闅愭偅闅忔墜鎷�-娑堥槻闅愭偅}銆戝凡缁忓鐞嗗畬姣曪紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+    }
+
+
+    /**
+     * 鐢ㄨ溅鐢宠
+     */
+    public interface carUseBookContent{
+        //鐭俊閫氱煡妯℃澘锛堢粰澶勭悊浜猴級
+        String carUseBook_wait_audit = "鎮ㄦ湁涓�鏉°�恵鐢ㄨ溅鐢宠}銆戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+        //鐢ㄨ溅鐢宠-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String carUseBook_audit_success = "鎮ㄧ殑銆恵鐢ㄨ溅鐢宠}銆戝凡缁忓鎵归�氳繃锛屽嚭鍙戞椂闂翠负{鎻愪氦鐨勫嚭鍙戞椂闂磢锛岃鎸夋椂鐢ㄨ溅銆傚鐢ㄨ溅璁″垝鏈夊彉锛岃鍙婃椂鑱旂郴娲捐溅鍛樸��";
+        //鐢ㄨ溅鐢宠-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String carUseBook_audit_fail = "鎮ㄧ殑銆恵鐢ㄨ溅鐢宠}銆戝凡琚┏鍥烇紝椹冲洖鍘熷洜涓猴細{椹冲洖鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯绘淳杞﹀憳銆�";
+        //鐢ㄨ溅鐢宠-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String carUseBook_cancel = "鎮ㄧ殑銆恵鐢ㄨ溅鐢宠}銆戝凡琚彇娑堬紝鍙栨秷鍘熷洜涓猴細{鍙栨秷鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯绘淳杞﹀憳銆�";
+    }
+
+
+    /**
+     * 鐗╂祦杞﹂绾�
+     */
+    public interface platformBookContent{
+        //鐭俊閫氱煡妯℃澘锛堢粰澶勭悊浜猴級
+        String platformBook_wait_audit = "鎮ㄦ湁涓�鏉°�愯溅杈嗗叆鍥敵璇枫�戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+        //鐗╂祦杞﹂绾�-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String platformBook_audit_success = "鎮ㄧ殑銆愯溅杈嗗叆鍥敵璇枫�戝凡缁忓鎵归�氳繃锛屽叆鍥椂闂翠负2024-7-19 09:00锛岃鎻愬墠30鍒嗛挓鍓嶅線鐜板満绛惧埌銆傚璁″垝鏈夊彉锛岃鍙婃椂鑱旂郴瀹℃牳浜哄憳銆�";
+        //鐗╂祦杞﹂绾�-瀹℃壒椹冲洖鐭俊閫氱煡妯℃澘锛堢粰鐢宠浜猴級
+        String platformBook_audit_fail = "鎮ㄧ殑銆愯溅杈嗗叆鍥敵璇枫�戝凡琚┏鍥烇紝椹冲洖鍘熷洜涓猴細{椹冲洖鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯诲鏍镐汉鍛樸��";
+        //鐗╂祦杞﹂绾�-鍏ュ洯棰勭害鍙栨秷鐭俊閫氱煡妯℃澘锛堢粰鐢宠浜猴級
+        String carUseBook_cancel = "鎮ㄧ殑銆愯溅杈嗗叆鍥敵璇枫�戝凡琚彇娑堬紝鍙栨秷鍘熷洜涓猴細{鍙栨秷鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯诲鏍镐汉鍛樸��";
+    }
+
+
+    /**
+     * 鐗╂祦浣滀笟
+     */
+    public interface platformJobContent{
+        // 杩愯緭浠诲姟涓嬭揪 锛堢粰鍙告満锛�
+        String platformJob_new_job = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄦ湁涓�涓柊鐨勮繍杈撲换鍔★紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+        //鐗╂祦杞︿綔涓�-杩愯緭浠诲姟涓鎻愰啋锛堢粰鍙告満锛夛細銆�
+        String platformJob_stop_job = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄧ殑杩愯緭浠诲姟宸茶鍙栨秷锛岃缁嗕俊鎭鍓嶅線寰俊鍏紬鍙锋煡鐪嬨��";
+        //鐗╂祦杞﹂绾�-鍙彿鍏ュ洯绛夊緟锛堢粰鍙告満锛�
+        String platformBook_call_in = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝璇峰湪10鍒嗛挓鍐咃紝鍓嶅線鍥尯绛夊緟鍖虹瓑寰呭彨鍙蜂綔涓氥��";
+        //鐗╂祦杞﹂绾�-鏈堝彴鍙彿锛堢粰鍙告満锛�
+        String platformBook_sing_in = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝璇峰湪10鍒嗛挓鍐咃紝鍓嶅線{鏈堝彴鍚嶇О}杩涜浣滀笟銆�";
+        //鐗╂祦杞﹂绾�-鏈堝彴鍙彿杩囧彿锛堢粰鍙告満锛�
+        String platformBook_over_num = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄧ殑浠诲姟宸茶繃鍙凤紝璇烽噸鏂扮鍒版帓闃熺瓑寰呫��";
+        //鐗╂祦杞﹂绾�-浣滀笟寮�濮嬶紙缁欏徃鏈猴級
+        String platformBook_working = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄧ殑杞﹁締宸插湪{鏈堝彴鍚嶇О}寮�濮嬩綔涓氾紝璇烽殢鏃跺叧娉ㄤ綔涓氭儏鍐点��";
+        //鐗╂祦杞﹂绾�-浣滀笟瀹屾垚锛堢粰鍙告満锛�
+        String platformBook_finish = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄧ殑杞﹁締宸插湪{鏈堝彴鍚嶇О}瀹屾垚浣滀笟锛岃鍙婃椂椹剁鏈堝彴銆�";
+        //鐗╂祦杞﹂绾�-浣滀笟寮傚父鎸傝捣锛堢粰鍙告満锛�
+        String platformBook_error = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄥ湪{鏈堝彴鍚嶇О}鐨勪綔涓氫换鍔″凡缁忚寮傚父鎸傝捣锛岃鍙婃椂鍏虫敞鍏蜂綋鎯呭喌";
+        //鐗╂祦杞﹂绾�-鏈堝彴杞Щ锛堢粰鍙告満锛�
+        String platformBook_move = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄥ湪{鏈堝彴鍚嶇О}鐨勪綔涓氫换鍔″凡缁忓凡琚浆绉昏嚦{杞Щ鍚庢湀鍙板悕绉皚锛岃鍙婃椂鍏虫敞鍙彿鎯呭喌銆�";
+        //鐗╂祦杞﹂绾�-鏈堝彴鍋滈潬瓒呮椂锛堢粰鍙告満锛�
+        String platformBook_time_out = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄥ湪{鏈堝彴鍚嶇О}宸插仠闈犺秴鏃讹紝璇峰敖蹇┒绂讳互鍏嶅奖鍝嶅悗缁綔涓氥��";
+
+    }
+
+
+
+
+
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CategoryCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CategoryCloudController.java
index f09907f..ce95704 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CategoryCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CategoryCloudController.java
@@ -75,6 +75,13 @@
         return ApiResponse.success(categoryService.findPage(pageWrap));
     }
 
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    @CloudRequiredPermission("business:category:query")
+    public ApiResponse<List<Category>> findList (@RequestBody Category category,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(categoryService.queryList(category));
+    }
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @CloudRequiredPermission("business:category:exportExcel")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/SmsConfigCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/SmsConfigCloudController.java
new file mode 100644
index 0000000..1e05013
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/SmsConfigCloudController.java
@@ -0,0 +1,91 @@
+package com.doumee.cloud.admin;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.CloudRequiredPermission;
+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.core.utils.Constants;
+import com.doumee.dao.business.model.SmsConfig;
+import com.doumee.service.business.SmsConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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 姹熻箘韫�
+ * @date 2024/10/09 15:41
+ */
+@Api(tags = "鐭俊涓氬姟閰嶇疆")
+@RestController
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/smsConfig")
+public class SmsConfigCloudController extends BaseController {
+
+    @Autowired
+    private SmsConfigService smsConfigService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @CloudRequiredPermission("business:smsconfig:create")
+    public ApiResponse create(@RequestBody SmsConfig smsConfig) {
+        return ApiResponse.success(smsConfigService.create(smsConfig));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @CloudRequiredPermission("business:smsconfig:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        smsConfigService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @CloudRequiredPermission("business:smsconfig: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));
+        }
+        smsConfigService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @CloudRequiredPermission("business:smsconfig:update")
+    public ApiResponse updateById(@RequestBody SmsConfig smsConfig) {
+        smsConfigService.updateById(smsConfig);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @CloudRequiredPermission("business:smsconfig:query")
+    public ApiResponse<PageData<SmsConfig>> findPage (@RequestBody PageWrap<SmsConfig> pageWrap) {
+        return ApiResponse.success(smsConfigService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @CloudRequiredPermission("business:smsconfig:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<SmsConfig> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(SmsConfig.class).export(smsConfigService.findPage(pageWrap).getRecords(), "鐭俊涓氬姟閰嶇疆", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @CloudRequiredPermission("business:smsconfig:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(smsConfigService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsConfigMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsConfigMapper.java
new file mode 100644
index 0000000..22910c9
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsConfigMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.SmsConfig;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/10/09 15:41
+ */
+public interface SmsConfigMapper extends BaseMapper<SmsConfig> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/PlatformLogJoinMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/PlatformLogJoinMapper.java
new file mode 100644
index 0000000..199937e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/PlatformLogJoinMapper.java
@@ -0,0 +1,13 @@
+package com.doumee.dao.business.join;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.PlatformLog;
+import com.github.yulichang.base.MPJBaseMapper;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/06/28 10:03
+ */
+public interface PlatformLogJoinMapper extends MPJBaseMapper<PlatformLog> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java
index c8b8d0b..766948d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java
@@ -113,15 +113,17 @@
     private Integer authStatus;
 
 
-    @ApiModelProperty(value = "鎵�灞炲垎缁勭紪鐮侊紙鍏宠仈car_group)", example = "1")
-    @ExcelColumn(name="鎵�灞炲垎缁勭紪鐮侊紙鍏宠仈car_group)")
+    @ApiModelProperty(value = "鎵�灞炵粍缁囦富閿紙鍏宠仈company)", example = "1")
+    @ExcelColumn(name="鎵�灞炵粍缁囦富閿紙鍏宠仈company)")
     private Integer groupId;
 
     @ApiModelProperty(value = "绫诲瀷 0瀹夋嘲鍏姟杞� 1瀹夋嘲鑷湁鐗╂祦杞� 2鍏跺畠", example = "1")
     @ExcelColumn(name="绫诲瀷 0瀹夋嘲鍏姟杞� 1瀹夋嘲鑷湁鐗╂祦杞� 2鍏跺畠")
     private Integer type;
 
-
+    @ApiModelProperty(value = "鎵�灞炲垎绫荤紪鐮�", example = "1")
+    @ExcelColumn(name="鎵�灞炲垎绫荤紪鐮�")
+    private Integer cateId;
 
     @ApiModelProperty(value = "鍋滆溅鍦哄悕绉伴泦鍚�", example = "1")
     @ExcelColumn(name="鍋滆溅鍦哄悕绉伴泦鍚�")
@@ -170,6 +172,28 @@
     @TableField(exist = false)
     private int jobNum;
 
+    @ApiModelProperty(value = "涓�绾у垎绫讳富閿�", example = "1")
+    @TableField(exist = false)
+    private Integer catePId;
+
+    @ApiModelProperty(value = "鍒嗙被鍚嶇О", example = "1")
+    @TableField(exist = false)
+    private String cateName;
+
+    @ApiModelProperty(value = "涓�绾у垎绫诲悕绉�", example = "1")
+    @TableField(exist = false)
+    private String catePName;
+
+    @ApiModelProperty(value = "杞﹁締閮ㄩ棬鍚嶇О", example = "1")
+    @ExcelColumn(name="杞﹁締缁勭粐閮ㄩ棬鍚嶇О")
+    @TableField(exist = false)
+    private String carCompanyName;
+
+    @ApiModelProperty(value = "杞﹁締閮ㄩ棬鍏ㄨ矾寰勫悕绉�", example = "1")
+    @ExcelColumn(name="杞﹁締閮ㄩ棬鍏ㄨ矾寰勫悕绉�")
+    @TableField(exist = false)
+    private String carCompanyNamePath;
+
     @ApiModelProperty(value = "鎺堟潈鍋滆溅鍦虹紪鐮侀泦鍚�", example = "1")
     @TableField(exist = false)
     private List<Integer> parkIdList;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Category.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Category.java
index a66a19d..b2f5efa 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Category.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Category.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.core.model.LoginUserModel;
 import io.swagger.annotations.ApiModel;
@@ -10,6 +11,7 @@
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 鍒嗙被淇℃伅琛�
@@ -66,12 +68,17 @@
     @ExcelColumn(name="鍥炬爣")
     private String imgurl;
 
-    @ApiModelProperty(value = "绫诲瀷 0鍏徃绫诲瀷")
-    @ExcelColumn(name="绫诲瀷 0鍏徃绫诲瀷")
+    @ApiModelProperty(value = "绫诲瀷 0鍏徃绫诲瀷 1杞﹁締绫诲瀷")
+    @ExcelColumn(name="绫诲瀷 0鍏徃绫诲瀷 1杞﹁締绫诲瀷")
     private Integer type;
 
     @ApiModelProperty(value = "鐖剁骇缂栫爜锛堣嚜鍏宠仈锛�")
     @ExcelColumn(name="鐖剁骇缂栫爜锛堣嚜鍏宠仈锛�")
     private Integer parentId;
 
+    @ApiModelProperty(value = "瀛愰泦鍒嗙被")
+    @TableField(exist = false)
+    private List<Category> childCategoryList;
+
+
 }
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
index 0470f9b..922d579 100644
--- 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
@@ -1,5 +1,6 @@
 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;
@@ -95,4 +96,47 @@
     @ExcelColumn(name="鍙傛暟4")
     private String param4;
 
+
+    @ApiModelProperty(value = "鏈堝彴鍚嶇О")
+    @TableField(exist = false)
+    private String platformName;
+
+    @ApiModelProperty(value = "鏈堝彴缁勪富閿�")
+    @TableField(exist = false)
+    private Integer platformGroupId;
+
+    @ApiModelProperty(value = "鏈堝彴缁勫悕绉�")
+    @TableField(exist = false)
+    private String platformGroupName;
+
+    @ApiModelProperty(value = "鍓嶈溅鐗岀収")
+    @TableField(exist = false)
+    private String carCodeFront;
+
+    @ApiModelProperty(value = "鍚庤溅鐗岀収")
+    @TableField(exist = false)
+    private String carCodeBack;
+
+    @ApiModelProperty(value = "寮�濮嬩綔涓氭椂闂磋捣")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField(exist = false)
+    private Date beginWorkDateStart;
+
+    @ApiModelProperty(value = "寮�濮嬩綔涓氭椂闂存")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField(exist = false)
+    private Date beginWorkDateEnd;
+
+    @ApiModelProperty(value = "澶氱姸鎬佹煡璇� 澶氫釜浠�,鍒嗗壊")
+    @TableField(exist = false)
+    private String queryStatus;
+
+    @ApiModelProperty(value = "浣滀笟鍞竴鏍囪瘑(鎵胯繍鍗曞彿锛�")
+    @TableField(exist = false)
+    private String billCode;
+
+    @ApiModelProperty(value = "鍚堝悓鍙�")
+    @TableField(exist = false)
+    private String contractNum;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java
new file mode 100644
index 0000000..dbf31cb
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.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 姹熻箘韫�
+ * @date 2024/10/09 15:41
+ */
+@Data
+@ApiModel("鐭俊涓氬姟閰嶇疆")
+@TableName("`sms_config`")
+public class SmsConfig {
+
+    @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 = "寮�鍚姸鎬侊細0寮�鍚紱1鍏抽棴", example = "1")
+    @ExcelColumn(name="寮�鍚姸鎬侊細0寮�鍚紱1鍏抽棴")
+    private Integer status;
+
+    @ApiModelProperty(value = "鐭俊缂栫爜")
+    @ExcelColumn(name="鐭俊缂栫爜")
+    private String code;
+
+    @ApiModelProperty(value = "鐭俊鍐呭")
+    @ExcelColumn(name="鐭俊鍐呭")
+    private String content;
+
+    @ApiModelProperty(value = "鐭俊绫诲瀷 1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�")
+    @ExcelColumn(name="鐭俊绫诲瀷 1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�")
+    private String objType;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
index 68b1c6e..f481b52 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
@@ -86,9 +86,10 @@
     @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜")
     private Integer objId;
 
-    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷")
-    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷")
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0=楠岃瘉鐮侊紱1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�")
+    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0=楠岃瘉鐮侊紱1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�")
     private String objType;
+
     @ApiModelProperty(value = "闄勪欢闆嗗悎")
     @TableField(exist = false)
     private   List<Map<String,Object>> fileList;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CategoryService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CategoryService.java
index c5ee4d9..08a61f8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CategoryService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CategoryService.java
@@ -78,7 +78,14 @@
      * @return List<Category>
      */
     List<Category> findList(Category category);
-  
+
+
+    /**
+     * 鑷畾涔夊垪琛�
+     * @param category
+     * @return
+     */
+    List<Category> queryList(Category category);
     /**
      * 鍒嗛〉鏌ヨ
      *
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsConfigService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsConfigService.java
new file mode 100644
index 0000000..9e137bb
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsConfigService.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.SmsConfig;
+import java.util.List;
+
+/**
+ * 鐭俊涓氬姟閰嶇疆Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2024/10/09 15:41
+ */
+public interface SmsConfigService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param smsConfig 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(SmsConfig smsConfig);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param smsConfig 瀹炰綋瀵硅薄
+     */
+    void delete(SmsConfig smsConfig);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param smsConfig 瀹炰綋瀵硅薄
+     */
+    void updateById(SmsConfig smsConfig);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param smsConfigs 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<SmsConfig> smsConfigs);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return SmsConfig
+     */
+    SmsConfig findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param smsConfig 瀹炰綋瀵硅薄
+     * @return SmsConfig
+     */
+    SmsConfig findOne(SmsConfig smsConfig);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param smsConfig 瀹炰綋瀵硅薄
+     * @return List<SmsConfig>
+     */
+    List<SmsConfig> findList(SmsConfig smsConfig);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<SmsConfig>
+     */
+    PageData<SmsConfig> findPage(PageWrap<SmsConfig> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param smsConfig 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(SmsConfig smsConfig);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
index 75c28e9..9f7d3e3 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -1516,6 +1516,7 @@
 
             //鐢熸垚浠诲姟璁板綍
             PlatformJob platformJob = platformBooks.toPlatformJob();
+            platformJob.setId(null);
             platformJob.setPlatformGroupId(platformReason.getGroupId().intValue());
             platformJob.setType(Constants.platformJobType.sgscxh);
             platformJob.setStatus(Constants.PlatformJobStatus.WART_SIGN_IN.getKey());
@@ -1533,7 +1534,6 @@
             platformLog.setObjId(platformJob.getId().toString());
             platformLog.setAfterContent(JSONObject.toJSONString(platformJob));
             platformLogMapper.insert(platformLog);
-
         }else{
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
index 29a5552..2d61cee 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -58,6 +58,7 @@
         }
         if(StringUtils.isBlank(model.getCode())
             ||model.getType()==null
+            ||model.getCateId()==null
             ||model.getType()<0
             ||model.getType()>3
         ){
@@ -183,6 +184,7 @@
         if(StringUtils.isBlank(model.getCode())
                 ||model.getId()==null
                 ||model.getType()==null
+                ||model.getCateId()==null
                 ||model.getType()<0
                 ||model.getType()>3
         ){
@@ -226,6 +228,8 @@
                 .set(Cars::getAuthStatus,Constants.ZERO)
                 .set(Cars::getType,model.getType())
                 .set(Cars::getCode,model.getCode())
+                .set(Cars::getGroupId,model.getGroupId())
+                .set(Cars::getCateId,model.getCateId())
                 .set(Cars::getEditDate,model.getEditDate())
                 .set(Cars::getEdirot,model.getEdirot())
                 .set(Cars::getMemberId,model.getMemberId())
@@ -248,6 +252,10 @@
     public Cars findById(Integer id) {
         return carsMapper.selectById(id);
     }
+
+
+
+
 
     @Override
     public Cars findOne(Cars cars) {
@@ -272,9 +280,17 @@
         queryWrapper.selectAs(SystemUser::getRealname,Cars::getEditorName);
         queryWrapper.selectAs(Member::getPhone,Cars::getMemberPhone);
         queryWrapper.selectAs(Company::getCompanyNamePath,Cars::getCompanyName);
+        queryWrapper.selectAs(Category::getParentId,Cars::getCatePId);
+        queryWrapper.selectAs(Category::getName,Cars::getCateName);
+        queryWrapper.select(" c.name as catePName");
+        queryWrapper.select(" c1.COMPANY_NAME_PATH as carCompanyNamePath");
+        queryWrapper.select(" c1.name as carCompanyName");
         queryWrapper.leftJoin(Member.class,Member::getId,Cars::getMemberId);
         queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Cars::getEdirot);
         queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
+        queryWrapper.leftJoin(Category.class,Category::getId,Cars::getCateId);
+        queryWrapper.leftJoin("category c on t4.PARENT_ID = c.id");
+        queryWrapper.leftJoin("company c1 on t.GROUP_ID = c1.id");
         queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getName,pageWrap.getModel().getMemberName())
                 .or().like(Member::getPhone,pageWrap.getModel().getMemberName()));
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getCompanyNamePath,pageWrap.getModel().getCompanyName());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index e0601bc..8eaa6f8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -21,6 +21,8 @@
 
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 鍒嗙被淇℃伅琛⊿ervice瀹炵幇
@@ -51,7 +53,7 @@
         insert.setStatus(Constants.ZERO);
         insert.setSortnum(category.getSortnum());
         insert.setImgurl(category.getImgurl());
-        insert.setType(Constants.ZERO);
+        insert.setType(category.getType());
         insert.setParentId(category.getParentId());
         categoryMapper.insert(insert);
         return insert.getId();
@@ -59,7 +61,9 @@
 
     @Override
     public void deleteById(Integer id) {
-        categoryMapper.deleteById(id);
+        categoryMapper.update(null,new UpdateWrapper<Category>().lambda().set(Category::getIsdeleted,Constants.ONE)
+                .eq(Category::getId,id)
+        );
     }
 
     @Override
@@ -73,7 +77,9 @@
         if (CollectionUtils.isEmpty(ids)) {
             return;
         }
-        categoryMapper.deleteBatchIds(ids);
+        categoryMapper.update(null,new UpdateWrapper<Category>().lambda().set(Category::getIsdeleted,Constants.ONE)
+                .in(Category::getId,ids)
+        );
     }
 
     @Override
@@ -110,59 +116,38 @@
     }
 
     @Override
+    public List<Category> queryList(Category category) {
+        List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+                .eq(Objects.nonNull(category)&&Objects.nonNull(category.getType()),Category::getType,category.getType())
+                .isNull(Objects.nonNull(category)&&Objects.isNull(category.getParentId()),Category::getParentId)
+                .eq(Objects.nonNull(category)&&Objects.nonNull(category.getParentId()),Category::getParentId,category.getParentId())
+                .eq(Category::getIsdeleted,Constants.ZERO)
+        );
+        return categoryList;
+    }
+
+    @Override
     public PageData<Category> findPage(PageWrap<Category> pageWrap) {
         IPage<Category> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(Category::getId, pageWrap.getModel().getId());
+        queryWrapper.lambda().eq(Category::getIsdeleted,Constants.ZERO)
+                .eq(Objects.nonNull(pageWrap.getModel().getType()),Category::getType,pageWrap.getModel().getType())
+                .isNull(Category::getParentId);
+        PageData<Category> categoryPageData = PageData.from(categoryMapper.selectPage(page, queryWrapper));
+        //鏌ヨ鎵�鏈変簩绾ф暟鎹�
+        List<Category> categoryList = categoryMapper.selectList(
+                new QueryWrapper<Category>().lambda()
+                        .eq(Objects.nonNull(pageWrap.getModel().getType()),Category::getType,pageWrap.getModel().getType())
+                        .eq(Category::getIsdeleted,Constants.ZERO).isNotNull(Category::getParentId));
+
+        for (Category category:categoryPageData.getRecords()) {
+            category.setChildCategoryList(
+                    categoryList.stream().filter(i->Constants.equalsInteger(i.getParentId(),category.getId())).collect(Collectors.toList())
+            );
         }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(Category::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(Category::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(Category::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(Category::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(Category::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(Category::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(Category::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getName() != null) {
-            queryWrapper.lambda().eq(Category::getName, pageWrap.getModel().getName());
-        }
-        if (pageWrap.getModel().getRemark() != null) {
-            queryWrapper.lambda().eq(Category::getRemark, pageWrap.getModel().getRemark());
-        }
-        if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(Category::getStatus, pageWrap.getModel().getStatus());
-        }
-        if (pageWrap.getModel().getSortnum() != null) {
-            queryWrapper.lambda().eq(Category::getSortnum, pageWrap.getModel().getSortnum());
-        }
-        if (pageWrap.getModel().getImgurl() != null) {
-            queryWrapper.lambda().eq(Category::getImgurl, pageWrap.getModel().getImgurl());
-        }
-        if (pageWrap.getModel().getType() != null) {
-            queryWrapper.lambda().eq(Category::getType, pageWrap.getModel().getType());
-        }
-        if (pageWrap.getModel().getParentId() != null) {
-            queryWrapper.lambda().eq(Category::getParentId, pageWrap.getModel().getParentId());
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
-        return PageData.from(categoryMapper.selectPage(page, queryWrapper));
+
+        return categoryPageData;
     }
 
     @Override
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
index c3de7e7..ad482b6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
@@ -60,6 +60,9 @@
     private PlatformReasonMapper platformReasonMapper;
 
     @Autowired
+    private PlatformGroupMapper platformGroupMapper;
+
+    @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
     @Autowired
@@ -241,6 +244,13 @@
         if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍏ュ洯鍘熷洜淇℃伅寮傚父,璇峰埛鏂伴噸璇�");
         }
+        PlatformGroup platformGroup= platformGroupMapper.selectById(platformReason.getGroupId());
+        if(Objects.isNull(platformGroup)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌缁戝畾鏈堝彴缁勬暟鎹�");
+        }
+        if(!Constants.equalsInteger(platformGroup.getIsdeleted(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"缁戝畾鏈堝彴缁勬暟鎹紓甯革紝璇疯仈绯荤鐞嗗憳");
+        }
         //鏌ヨ杞﹁締鏄惁涓鸿嚜鏈夎溅
         if(carsMapper.selectCount(new QueryWrapper<Cars>().lambda().eq(Cars::getIsdeleted,Constants.ZERO).eq(Cars::getCode,platformBooksApplyDTO.getCarCodeFront()))>Constants.ZERO){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"["+platformBooksApplyDTO.getCarCodeFront()+"]灞炰簬鍐呴儴杞﹁締锛屾棤娉曢绾�");
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
index 191e785..6b1dbb8 100644
--- 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
@@ -693,6 +693,7 @@
                         .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey(),
                                 Constants.PlatformJobStatus.IN_WAIT.getKey(),
                                 Constants.PlatformJobStatus.CALLED.getKey())
+                        .orderByDesc(PlatformJob::getStatus)
                         .orderByAsc(PlatformJob::getSignDate)
         );
         //鑾峰彇鎵�鏈夋湀鍙扮粍
@@ -720,6 +721,7 @@
                             .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey(),
                                     Constants.PlatformJobStatus.IN_WAIT.getKey(),
                                     Constants.PlatformJobStatus.CALLED.getKey())
+                            .orderByDesc(PlatformJob::getStatus)
                             .orderByDesc(PlatformJob::getSignDate));
             platformGroup.setSignJobList(platformJobSignInList);
             //鏌ヨ褰撳墠鏈堝彴缁勪笅
@@ -1376,7 +1378,8 @@
             }
         }else if(Constants.equalsInteger(objType,Constants.PlatformJobLogType.WORKING.getKey())){
             platformLog.setParam1(DateUtil.dateTypeToString(platformLog.getCreateDate(),"yyyy-MM-dd HH:mm:ss"));
-            platformLog.setParam3("0");
+            platformLog.setParam3("0"); 
+            platformLog.setRemark(platformJobBefor.getPlatformId().toString());
         }else{
             platformLog.setParam3("0");
         }
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
index 5811b1b..17d2a74 100644
--- 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
@@ -5,7 +5,8 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.PlatformLogMapper;
-import com.doumee.dao.business.model.PlatformLog;
+import com.doumee.dao.business.join.PlatformLogJoinMapper;
+import com.doumee.dao.business.model.*;
 import com.doumee.dao.openapi.request.CarLogsListRequest;
 import com.doumee.dao.openapi.response.CarLogsListResponse;
 import com.doumee.service.business.PlatformLogService;
@@ -13,6 +14,8 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -32,6 +35,9 @@
 
     @Autowired
     private PlatformLogMapper platformLogMapper;
+
+    @Autowired
+    private PlatformLogJoinMapper platformLogJoinMapper;
 
     @Override
     public Integer create(PlatformLog platformLog) {
@@ -93,30 +99,27 @@
     @Override
     public PageData<PlatformLog> findPage(PageWrap<PlatformLog> pageWrap) {
         IPage<PlatformLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<PlatformLog> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<PlatformLog> queryWrapper = new MPJLambdaWrapper<>();
         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())
-                .eq(pageWrap.getModel().getParam1() != null, PlatformLog::getParam1, pageWrap.getModel().getParam1())
-                .eq(pageWrap.getModel().getParam2() != null, PlatformLog::getParam2, pageWrap.getModel().getParam2())
-                .eq(pageWrap.getModel().getParam3() != null, PlatformLog::getParam3, pageWrap.getModel().getParam3())
-                .eq(pageWrap.getModel().getParam4() != null, PlatformLog::getParam4, pageWrap.getModel().getParam4())
+
+        queryWrapper.selectAll(PlatformLog.class)
+                .selectAs(Platform::getName,PlatformLog::getPlatformName)
+                .selectAs(PlatformGroup::getName,PlatformLog::getPlatformGroupName)
+                .selectAs(PlatformJob::getCarCodeFront,PlatformLog::getCarCodeFront)
+                .selectAs(PlatformJob::getCarCodeBack,PlatformLog::getCarCodeBack)
+                .selectAs(PlatformJob::getBillCode,PlatformLog::getBillCode)
+                .selectAs(PlatformJob::getContractNum,PlatformLog::getContractNum)
+                .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformLog::getJobId)
+                .leftJoin(Platform.class,Platform::getId,PlatformLog::getRemark)
+                .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId)
+                .like(pageWrap.getModel().getPlatformName() != null, Platform::getName, pageWrap.getModel().getPlatformName())
+                .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformGroup::getId, pageWrap.getModel().getPlatformGroupId())
+                .like(pageWrap.getModel().getCarCodeFront() != null, PlatformJob::getCarCodeFront, pageWrap.getModel().getCarCodeFront())
+                .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformLog::getParam1, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart()))
+                .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformLog::getParam2, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd()))
+                .apply(pageWrap.getModel().getQueryStatus() != null, " find_in_set(t.OBJ_TYPE,'"+pageWrap.getModel().getQueryStatus()+"') and t.remark is not null  ")
         ;
+
         for(PageWrap.SortData sortData: pageWrap.getSorts()) {
             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                 queryWrapper.orderByDesc(sortData.getProperty());
@@ -124,7 +127,13 @@
                 queryWrapper.orderByAsc(sortData.getProperty());
             }
         }
-        return PageData.from(platformLogMapper.selectPage(page, queryWrapper));
+        IPage<PlatformLog> platformJobIPage = platformLogJoinMapper.selectJoinPage(page,PlatformLog.class,queryWrapper);
+        for (PlatformLog platformLog:platformJobIPage.getRecords()) {
+            if(StringUtils.isBlank(platformLog.getBillCode())){
+                platformLog.setBillCode(platformLog.getContractNum());
+            }
+        }
+        return PageData.from(platformJobIPage);
     }
 
     @Override
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
index 5bdab14..44a60e9 100644
--- 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
@@ -323,6 +323,9 @@
                 .select(" ( select ROUND( ifnull(SUM(pl.PARAM3),0) / 3600 , 2 )   from platform_log pl  where   pl.remark = t.id  " +
                         " and pl.CREATE_DATE > '"+DateUtil.getFomartDate(platform.getQueryDateStart(),"yyyy-MM-dd")+" 00:00:00'  " +
                         "and pl.CREATE_DATE <=  '"+DateUtil.getFomartDate(platform.getQueryDateEnd(),"yyyy-MM-dd")+" 23:59:59'  ) as workCountTime ")
+                .select(" ( select count(1)  from platform_log pl  where   pl.remark = t.id  " +
+                        " and pl.CREATE_DATE > '"+DateUtil.getFomartDate(platform.getQueryDateStart(),"yyyy-MM-dd")+" 00:00:00'  " +
+                        "and pl.CREATE_DATE <=  '"+DateUtil.getFomartDate(platform.getQueryDateEnd(),"yyyy-MM-dd")+" 23:59:59' and pl.OBJ_TYPE = 5  ) as stopCount ")
                 .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId);
         queryWrapper
                 .eq(platform.getGroupId() != null, Platform::getGroupId, platform.getGroupId())
@@ -349,8 +352,6 @@
             //鏌ヨ2鏃ユ湡鐩稿樊澶╂暟
             Integer sumDays = DateUtil.daysBetweenDates(platform.getQueryDateEnd(),platform.getQueryDateStart())+1;
             for (Platform bean:platformList) {
-                List<PlatformJob> beanJobList = platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),bean.getId())).collect(Collectors.toList());
-                bean.setStopCount(beanJobList.size());
                 if(Objects.isNull(bean.getOpenTime())||bean.getOpenTime().compareTo(BigDecimal.ZERO)<=0){
                     bean.setUseRata(BigDecimal.ZERO);
                     continue;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
index e55c968..a3e2a31 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
@@ -49,11 +49,12 @@
     public Integer create(PlatformWaterGas platformWaterGas) {
         if(platformWaterGas.getTimeInfo() ==null || platformWaterGas.getNum()==null
         ||(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO) && StringUtils.isBlank(platformWaterGas.getCarCode()))){
-            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ュ勾鏈堟暟鎹凡瀛樺湪锛岃鍕块噸鏂板綍鍏ワ紝鍙互灏濊瘯鎼滅储鍚庤繘琛屾暟鎹慨鏀癸紒");
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鍙傛暟閿欒锛�");
         }
         if( platformWaterGasMapper.selectCount(new QueryWrapper<PlatformWaterGas>().lambda()
                 .eq(PlatformWaterGas::getIsdeleted, Constants.ZERO)
                 .apply("to_days(time_info) = to_days('"+ DateUtil.getPlusTime2(platformWaterGas.getTimeInfo()) +"')")
+                .eq(PlatformWaterGas::getType,platformWaterGas.getType())
                 .eq(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO),PlatformWaterGas::getCarCode,platformWaterGas.getCarCode()))>0){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ュ勾鏈堟暟鎹凡瀛樺湪锛岃鍕块噸鏂板綍鍏ワ紝鍙互灏濊瘯鎼滅储鍚庤繘琛屾暟鎹慨鏀癸紒");
         }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java
new file mode 100644
index 0000000..1d2e950
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java
@@ -0,0 +1,142 @@
+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.SmsConfigMapper;
+import com.doumee.dao.business.model.SmsConfig;
+import com.doumee.service.business.SmsConfigService;
+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 姹熻箘韫�
+ * @date 2024/10/09 15:41
+ */
+@Service
+public class SmsConfigServiceImpl implements SmsConfigService {
+
+    @Autowired
+    private SmsConfigMapper smsConfigMapper;
+
+    @Override
+    public Integer create(SmsConfig smsConfig) {
+        smsConfigMapper.insert(smsConfig);
+        return smsConfig.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        smsConfigMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(SmsConfig smsConfig) {
+        UpdateWrapper<SmsConfig> deleteWrapper = new UpdateWrapper<>(smsConfig);
+        smsConfigMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        smsConfigMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(SmsConfig smsConfig) {
+        smsConfigMapper.updateById(smsConfig);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<SmsConfig> smsConfigs) {
+        if (CollectionUtils.isEmpty(smsConfigs)) {
+            return;
+        }
+        for (SmsConfig smsConfig: smsConfigs) {
+            this.updateById(smsConfig);
+        }
+    }
+
+    @Override
+    public SmsConfig findById(Integer id) {
+        return smsConfigMapper.selectById(id);
+    }
+
+    @Override
+    public SmsConfig findOne(SmsConfig smsConfig) {
+        QueryWrapper<SmsConfig> wrapper = new QueryWrapper<>(smsConfig);
+        return smsConfigMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<SmsConfig> findList(SmsConfig smsConfig) {
+        QueryWrapper<SmsConfig> wrapper = new QueryWrapper<>(smsConfig);
+        return smsConfigMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<SmsConfig> findPage(PageWrap<SmsConfig> pageWrap) {
+        IPage<SmsConfig> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<SmsConfig> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        if (pageWrap.getModel().getId() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getId, pageWrap.getModel().getId());
+        }
+        if (pageWrap.getModel().getCreator() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getCreator, pageWrap.getModel().getCreator());
+        }
+        if (pageWrap.getModel().getCreateDate() != null) {
+            queryWrapper.lambda().ge(SmsConfig::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+            queryWrapper.lambda().le(SmsConfig::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+        }
+        if (pageWrap.getModel().getEdirot() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getEdirot, pageWrap.getModel().getEdirot());
+        }
+        if (pageWrap.getModel().getEditDate() != null) {
+            queryWrapper.lambda().ge(SmsConfig::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+            queryWrapper.lambda().le(SmsConfig::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+        }
+        if (pageWrap.getModel().getIsdeleted() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getIsdeleted, pageWrap.getModel().getIsdeleted());
+        }
+        if (pageWrap.getModel().getRemark() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getRemark, pageWrap.getModel().getRemark());
+        }
+        if (pageWrap.getModel().getStatus() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getStatus, pageWrap.getModel().getStatus());
+        }
+        if (pageWrap.getModel().getCode() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getCode, pageWrap.getModel().getCode());
+        }
+        if (pageWrap.getModel().getContent() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getContent, pageWrap.getModel().getContent());
+        }
+        if (pageWrap.getModel().getObjType() != null) {
+            queryWrapper.lambda().eq(SmsConfig::getObjType, pageWrap.getModel().getObjType());
+        }
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(smsConfigMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(SmsConfig smsConfig) {
+        QueryWrapper<SmsConfig> wrapper = new QueryWrapper<>(smsConfig);
+        return smsConfigMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
index fcc1578..66cc56e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -109,10 +109,10 @@
         smsEmail.setType(Constants.ZERO);
         smsEmail.setTitle("鐭俊楠岃瘉鐮�");
         smsEmail.setContent(content);
+        smsEmail.setObjType(Constants.ZERO+"");
         smsEmailMapper.insert(smsEmail);
 
         return smsEmail.getId();
-
     }
 
 
@@ -249,4 +249,27 @@
         QueryWrapper<SmsEmail> wrapper = new QueryWrapper<>(smsEmail);
         return smsEmailMapper.selectCount(wrapper);
     }
+
+
+    public static void sendBusiness(EmayService emayService ,SmsEmailMapper smsEmailMapper ,List<String> phoneList,String objType,String content,Integer objId){
+        //TODO 鏄惁鍙戦�佺煭淇�
+
+        for (String phone:phoneList) {
+            boolean result=   emayService.sendSingleSms(phone,content);
+            if(!result){
+                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐭俊楠岃瘉鐮佸彂閫佸け璐ワ紝璇风◢鍚庨噸璇曪紒");
+            }
+            SmsEmail smsEmail = new SmsEmail();
+            smsEmail.setIsdeleted(Constants.ZERO);
+            smsEmail.setCreateDate(new Date());
+            smsEmail.setStatus(Constants.ONE);
+            smsEmail.setType(Constants.ZERO);
+            smsEmail.setTitle("涓氬姟鐭俊");
+            smsEmail.setContent(content);
+            smsEmail.setObjType(objType);
+            smsEmail.setObjId(objId);
+            smsEmailMapper.insert(smsEmail);
+        }
+    }
+
 }

--
Gitblit v1.9.3