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

---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityDeviceDataVO.java    |   28 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java                              |  129 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java           |    5 
 server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java                                   |   21 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java                        |    9 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/ArriveGoodsVO.java           |   26 
 server/system_service/src/main/java/com/doumee/api/system/SystemController.java                                     |   25 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java             |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WholeProvinceBoardVO.java    |   84 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java            |   40 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformJobRunBoardVO.java   |   75 +
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java                          |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java    |   24 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java      |   39 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java                    |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java          |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/YearDeviceDataVO.java        |   26 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MenuDataResponse.java       |   14 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/FightingAdminController.java                       |  126 ++
 server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java                       |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java         |    6 
 server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java                                    |   24 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/FightingAdminBoardVO.java    |   59 +
 server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java              |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java      |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java                          |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformDurationVO.java      |   31 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java                 |   17 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java              |   82 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmDataVO.java             |   37 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportMeasureVO.java      |   26 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformGroupFinishVO.java   |   28 
 server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java                                      |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/StockRataVO.java             |   28 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java           |   97 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java               |   57 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SalesOperationVO.java        |   29 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WorkEfficiencyVO.java        |   24 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/DeviceAlarmDataVO.java       |   40 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java                  |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java      |   22 
 server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java                               |    4 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java                         |   35 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/OnSitDispatchController.java                       |  170 +++
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                            |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/JobDataVO.java               |   24 
 server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java                                         |   53 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OnSitDispatchBoardVO.java    |   54 +
 server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java                                        |    1 
 server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java                                      |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java                        |    1 
 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/PlatformGroupServiceImpl.java          |   12 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java                            |  104 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/GeneralVO.java               |   23 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportTaskVO.java         |   30 
 server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java                                     |    0 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OilDataVO.java               |   26 
 server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java                      |   81 +
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java                          |   45 
 server/system_service/src/main/resources/mappers/SystemUserMapper.xml                                               |    3 
 server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java                               |   20 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java                     |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/EmayService.java                      |   32 
 server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java                               |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmHandleDataVO.java       |   37 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/CarWorkSituationVO.java      |   40 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyDataVO.java            |   23 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java         |   73 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/WholeProvinceController.java                       |  171 +++
 server/system_service/src/main/java/com/doumee/dao/business/dao/SmsEmailMapper.java                                 |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java                               |    5 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunController.java                      |  180 +++
 server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java                                   |   26 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java                   |   16 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java                 |   19 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java                              |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java                |  107 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java |   54 +
 79 files changed, 2,720 insertions(+), 133 deletions(-)

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 19d048f..3f39d61 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
@@ -1209,9 +1209,13 @@
         response.setPrefix(prefix);
 
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
-            String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
+            String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH)
+                    .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
+            String localPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_LOCAL_RESOURCE_PATH)
+                    .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
             for (Multifile multifile:multifileList) {
                 multifile.setFileurlFull(path + multifile.getFileurl());
+                multifile.setLocalFileurlFull(localPath + multifile.getFileurl());
             }
             response.setMultifileList(multifileList);
         }
diff --git a/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java b/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
index 1032835..83fcdca 100644
--- a/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
+++ b/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
@@ -10,6 +10,7 @@
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
 import com.doumee.dao.system.dto.LoginDTO;
+import com.doumee.dao.system.dto.LoginPhoneDTO;
 import com.doumee.service.common.CaptchaService;
 import com.doumee.service.system.SystemLoginService;
 import com.doumee.service.system.SystemUserService;
@@ -70,6 +71,26 @@
             return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
         }
     }
+
+
+    @PreventRepeat(limit = 10, lockTime = 10000)
+    @ApiOperation("鐭俊楠岃瘉鐮佺櫥褰�")
+    @PostMapping("/loginByPhone")
+    @LoginNoRequired
+    public ApiResponse<String> loginByPhone (@Validated @RequestBody LoginPhoneDTO dto, ServerWebExchange serverWebExchange) {
+        try {
+            ServerHttpRequest request = serverWebExchange.getRequest();
+            LoginUserInfo user = systemLoginService.loginByPhone(dto,request);
+            String token = jwtTokenUtil.generateToken(user);
+            return ApiResponse.success(token);
+        }catch (BusinessException e){
+            return ApiResponse.failed(e.getCode(),e.getMessage());
+        }catch (Exception e){
+            e.printStackTrace();
+            return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
+        }
+    }
+
 
 
     @PreventRepeat(limit = 10, lockTime = 10000)
@@ -136,6 +157,9 @@
     public ApiResponse<String> logout(@RequestHeader(Constants.HEADER_USER_TOKEN) String oldToken){
         try {
              jwtTokenUtil.logout(oldToken);
+
+
+
         }catch (BusinessException e){
             return ApiResponse.failed(e.getCode(),e.getMessage());
         }catch (Exception e){
@@ -145,6 +169,8 @@
 
     }
 
+
+
     /**
      * 鍒锋柊JWT浠ょ墝,鐢ㄦ棫鐨勪护鐗屾崲鏂扮殑浠ょ墝
      */
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemController.java
index 638c2a7..3d7543e 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemController.java
+++ b/server/system_service/src/main/java/com/doumee/api/system/SystemController.java
@@ -1,25 +1,45 @@
 package com.doumee.api.system;
 
 import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.biz.system.SystemUserBiz;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.utils.Constants;
 import com.doumee.dao.system.dto.LoginDTO;
 import com.doumee.dao.system.dto.UpdatePwdDto;
 import com.doumee.service.system.SystemLoginService;
+import com.hikvision.artemis.sdk.ArtemisHttpUtil;
+import com.hikvision.artemis.sdk.util.HttpUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
 import javax.servlet.http.HttpServletRequest;
 
 import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
 
 /**
  * @author Eva.Caesar Liu
@@ -38,6 +58,7 @@
     @Autowired
     private SystemLoginService systemLoginService;
 
+
     @PreventRepeat(limit = 10, lockTime = 10000)
     @ApiOperation("鐧诲綍")
     @PostMapping("/login")
@@ -54,6 +75,8 @@
         return ApiResponse.success(null);
     }
 
+
+
     @Trace(withRequestParameters = false)
     @ApiOperation("淇敼褰撳墠鐢ㄦ埛瀵嗙爜")
     @PostMapping("/updatePwd")
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 20e8eda..db49413 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
@@ -165,6 +165,16 @@
                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+systemUser.getEmpNo()+"銆戝凡瀛樺湪");
             }
         }
+       //楠岃瘉鎵嬫満鍙�
+        if (StringUtils.isNotBlank(systemUser.getMobile())) {
+            queryUserDto = new SystemUser();
+            queryUserDto.setDeleted(Boolean.FALSE);
+            queryUserDto.setMobile(systemUser.getMobile());
+            user = systemUserService.findOne(queryUserDto);
+            if (user != null) {
+                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+systemUser.getMobile()+"銆戝凡瀛樺湪");
+            }
+        }
         // 鐢熸垚瀵嗙爜鐩�
         String salt = RandomStringUtils.randomAlphabetic(6);
         // 鐢熸垚瀵嗙爜
@@ -233,6 +243,16 @@
                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+systemUser.getEmpNo()+"銆戝凡瀛樺湪");
             }
         }
+        //楠岃瘉鎵嬫満鍙�
+        if (StringUtils.isNotBlank(systemUser.getMobile())) {
+            queryUserDto = new SystemUser();
+            queryUserDto.setMobile(systemUser.getMobile());
+            queryUserDto.setDeleted(Boolean.FALSE);
+            user = systemUserService.findOne(queryUserDto);
+            if (user != null && !user.getId().equals(systemUser.getId())) {
+                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+systemUser.getMobile()+"銆戝凡瀛樺湪");
+            }
+        }
         // 淇敼鐢ㄦ埛
         systemUserService.updateById(systemUser);
         // 璁剧疆閮ㄩ棬
diff --git a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index f88920c..8e539a4 100644
--- a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -1,28 +1,41 @@
 package com.doumee.config.jwt;
 
 import com.alibaba.fastjson.JSONObject;
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.HttpsUtil;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.io.IOException;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 @Component
+@Slf4j
 public class JwtTokenUtil {
 
     @Autowired
     private RedisTemplate<String,Object> redisTemplate;
     @Resource
     private JwtProperties jwtProperties;
-
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz ;
 
     /**
      * 鐢熸垚token浠ょ墝
@@ -113,12 +126,50 @@
      */
     public void logout(String token) {
         try {
+            //鐧诲嚭娴峰悍绯荤粺鏁版嵁
+            LoginUserInfo loginUserInfo = this.getUserInfoByToken(token);
+            String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LOGIN_OUT_URL).getCode();
+            if(StringUtils.isNotBlank(loginUserInfo.getHkMenuToken())){
+                log.info("璋冭捣娴峰悍閫�鍑虹櫥褰�=======================>"+url+"?token="+loginUserInfo.getHkMenuToken());
+//                this.hkLoginOut(url+"?token="+loginUserInfo.getHkMenuToken());
+                HttpsUtil.get(url+"?token="+loginUserInfo.getHkMenuToken(),true);
+            }
             redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);//鍒犻櫎鑰佺殑token
+
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
+
+    public void hkLoginOut(String url){
+        try {
+            // 鍒涘缓HttpClient瀵硅薄
+            HttpClient httpClient = HttpClientBuilder.create().build();
+            // 鍒涘缓HttpGet瀵硅薄锛屾寚瀹氳璁块棶鐨刄RL鍦板潃
+            HttpGet httpGet = new HttpGet(url);
+            // 鍙戦�丟ET璇锋眰锛岃幏鍙栧搷搴�
+            HttpResponse response = httpClient.execute(httpGet);
+            // 鑾峰彇鍝嶅簲鐘舵�佺爜
+            int statusCode = response.getStatusLine().getStatusCode();
+            // 鍒ゆ柇璇锋眰鏄惁鎴愬姛
+            if (statusCode == 200) {
+                // 鑾峰彇鍝嶅簲鍐呭
+                HttpEntity entity = response.getEntity();
+                String responseContent = EntityUtils.toString(entity, "UTF-8");
+                System.out.println(responseContent);
+                log.info("璋冭捣娴峰悍閫�鍑虹櫥褰曡繑鍥炰俊鎭�=======================>"+responseContent);
+            } else {
+                System.out.println("璇锋眰澶辫触锛屽搷搴旂爜锛�" + statusCode);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
     /**
      * 楠岃瘉浠ょ墝
      *
diff --git a/server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java b/server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
index ba4a587..b635d74 100644
--- a/server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
+++ b/server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -40,6 +40,7 @@
     private Integer needChangePwd;
     private String mobile;
     private String sessionId;
+    private String hkMenuToken;
 
     private Date loginDate;
     @ApiModelProperty(value = "璐︽埛鏉ユ簮锛�0=鍚庡彴娣诲姞 锛� 2=鍙告満娉ㄥ唽")
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 275254c..75f7777 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -39,6 +39,7 @@
     public static final String LED_CONTENT_SPEED ="LED_CONTENT_SPEED" ;
     public static final String HK_HOST ="HK_HOST" ;
     public static final String HK_APPKEY ="HK_APPKEY" ;
+    public static final String LOGIN_OUT_URL ="LOGIN_OUT" ;
     public static final String HK_APPSECRET ="HK_APPSECRET" ;
     public static final String HK_HTTPS ="HK_HTTPS" ;
     public static final String HK_PUSH_URL = "HK_PUSH_URL";
@@ -46,6 +47,8 @@
     public static final String HK_ROOTORG_NAME ="HK_ROOTORG_NAME" ;
     public static final String PLATFORM ="PLATFORM" ;
     public static final String POWER_MINUTE ="POWER_MINUTE" ;
+    public static final String SPECIAL_COMPANY_ID ="SPECIAL_COMPANY_ID" ;
+
     public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ;
     public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ;
     public static final String SIGN_IN_PLACE_LNT ="SIGN_IN_PLACE_LNT" ;
@@ -104,6 +107,7 @@
     public static final String FTP_USERNAME ="FTP_USERNAME" ;
     public static final String FTP_PWD ="FTP_PWD" ;
     public static final String FTP_RESOURCE_PATH ="FTP_RESOURCE_PATH" ;
+    public static final String FTP_LOCAL_RESOURCE_PATH ="FTP_LOCAL_RESOURCE_PATH" ;
     public static final String ERP_ORGLIST_URL ="ERP_ORGLIST_URL" ;
     public static final String ERP_USERLIST_URL ="ERP_USERLIST_URL" ;
     public static final String ERP_APPROVE_URL ="ERP_APPROVE_URL" ;
@@ -864,7 +868,7 @@
         CALLING(1, "鍙彿涓�","${param}璇峰墠寰�${param2}绛夊緟浣滀笟"),
         DONE(2, "浣滀笟瀹屾垚","${param}浣滀笟瀹屾垚锛岃灏藉揩椹剁" ),
         WRONG_IN(3, "閿欒鍋滈潬","${param}鏈堝彴鍋滈潬閿欒锛岃灏藉揩椹剁" ),
-        TIMEOUT_IN(4, "瓒呮椂鍋滈潬","${param}鏈堝彴鍋滈潬瓒呮椂锛岃灏藉揩椹剁璇峰敖蹇┒绂�" ),
+        TIMEOUT_IN(4, "瓒呮椂鍋滈潬","${param}鏈堝彴鍋滈潬瓒呮椂锛岃灏藉揩椹剁" ),
         TIMEOUT_WORK(5, "浣滀笟瓒呮椂","${param}浣滀笟瓒呮椂" ),
         ;
 
@@ -879,6 +883,7 @@
             this.info = info;
             this.name = name;
         }
+
         public static String getName(int index) {
             for (PlatformBroadcastContent c : PlatformBroadcastContent.values()) {
                 if (c.getKey() == index) {
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsEmailMapper.java b/server/system_service/src/main/java/com/doumee/dao/business/dao/SmsEmailMapper.java
similarity index 85%
rename from server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsEmailMapper.java
rename to server/system_service/src/main/java/com/doumee/dao/business/dao/SmsEmailMapper.java
index b10c7aa..a6d3fcc 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsEmailMapper.java
+++ b/server/system_service/src/main/java/com/doumee/dao/business/dao/SmsEmailMapper.java
@@ -1,4 +1,4 @@
-package com.doumee.dao.business;
+package com.doumee.dao.business.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.SmsEmail;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java b/server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
similarity index 100%
rename from server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
rename to server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java
new file mode 100644
index 0000000..4646b5f
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("鎵嬫満鍙风櫥褰曞弬鏁�")
+public class LoginPhoneDTO implements Serializable {
+
+    @NotBlank(message = "鎵嬫満鍙蜂笉鑳戒负绌�")
+    @ApiModelProperty(value = "鎵嬫満鍙�")
+    private String phone;
+    @NotBlank(message = "楠岃瘉鐮佷笉鑳戒负绌�")
+    @ApiModelProperty(value = "楠岃瘉鐮�")
+    private String code;
+}
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java b/server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
index ffefc01..d313c60 100644
--- a/server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
@@ -40,6 +40,7 @@
 
     @ApiModelProperty(value = "瑙掕壊ID")
     private Integer roleId;
+
     @ApiModelProperty(value = "浼佷笟缂栫爜")
     private Integer companyId;
 
@@ -52,5 +53,11 @@
     @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷锛�0=鐩稿叧鏂癸紱1=鍐呴儴" ,hidden = true)
     private Integer companyType;
 
+    @ApiModelProperty(value = "鏄惁鏌ヨ鍥哄畾浜哄憳锛�0=鍚︼紱1=鏄�" )
+    private Integer querySpecial;
+
+    @ApiModelProperty(value = "鏄惁鏌ヨ鍥哄畾浜哄憳缁勭粐涓婚敭" ,hidden = true)
+    private String companySpecialId;
+
 
 }
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java b/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
index cfeb7eb..adfdfc3 100644
--- a/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
@@ -79,4 +79,10 @@
     @TableField(exist = false)
     private String fileurlFull;
 
+
+    @ApiModelProperty(value = "鍐呯綉鏂囦欢鍦板潃")
+    @TableField(exist = false)
+    private String localFileurlFull;
+
+
 }
diff --git a/server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java b/server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
index f6ebaca..dc28a94 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
@@ -3,6 +3,7 @@
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.dao.system.dto.LoginByOpenidDTO;
 import com.doumee.dao.system.dto.LoginDTO;
+import com.doumee.dao.system.dto.LoginPhoneDTO;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 
 import javax.servlet.http.HttpServletRequest;
@@ -23,6 +24,9 @@
 
     LoginUserInfo loginByPasswordNew (LoginDTO dto, ServerHttpRequest request);
 
+    LoginUserInfo loginByPhone(LoginPhoneDTO dto, ServerHttpRequest request);
+
+
     LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request);
     /**
      * 鏍规嵁 openId鐧诲綍
diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
index 0519b92..b9b8bf2 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -1,5 +1,6 @@
 package com.doumee.service.system.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.doumee.config.jwt.JwtTokenUtil;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
@@ -7,9 +8,12 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.SmsEmail;
 import com.doumee.dao.system.dto.LoginByOpenidDTO;
 import com.doumee.dao.system.dto.LoginDTO;
+import com.doumee.dao.system.dto.LoginPhoneDTO;
 import com.doumee.dao.system.model.*;
 import com.doumee.service.common.CaptchaService;
 import com.doumee.service.system.*;
@@ -43,6 +47,9 @@
     @Lazy
     @Autowired
     private SystemUserService systemUserService;
+
+    @Autowired
+    private SmsEmailMapper smsEmailMapper;
 
     @Lazy
     @Autowired
@@ -172,6 +179,80 @@
 
 
 
+
+
+    @Override
+    public LoginUserInfo loginByPhone(LoginPhoneDTO dto, ServerHttpRequest request) {
+        SystemLoginLog loginLog = new SystemLoginLog();
+        loginLog.setLoginUsername(dto.getPhone());
+        loginLog.setLoginTime(new Date());
+        loginLog.setSystemVersion(systemVersion);
+        loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp()));
+        if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){
+            loginLog.setIp(Utils.User_Client.getIP(request));
+            loginLog.setPlatform(Utils.User_Client.getPlatform(request));
+            loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
+            loginLog.setOsInfo(Utils.User_Client.getOS(request));
+        }
+        loginLog.setServerIp(Utils.Server.getIP());
+
+
+        // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
+        SystemUser queryDto = new SystemUser();
+        queryDto.setMobile(dto.getPhone());
+        queryDto.setDeleted(Boolean.FALSE);
+        SystemUser user = systemUserService.findOne(queryDto);
+        if (user == null) {
+            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+        }
+        if(!Constants.equalsInteger(user.getSource(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN);
+        }
+
+        if(isDebug == null  || !isDebug){
+            //楠岃瘉 鐭俊鐮�
+            SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda()
+                    .eq(SmsEmail::getType, Constants.ZERO)
+                    .eq(SmsEmail::getPhone, dto.getPhone())
+                    .eq(SmsEmail::getRemark, dto.getCode())
+                    .eq(SmsEmail::getIsdeleted, Constants.ZERO)
+            );
+            if(model == null){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝楠岃瘉鐮佷笉姝g‘锛岃閲嶆柊鍙戦�佸啀璇曪紒");
+            }
+            if(!Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝楠岃瘉鐮佸凡澶辨晥锛岃閲嶆柊鍙戦�佸啀璇曪紒");
+            }
+            if(model.getCreateDate() !=null &&
+                    System.currentTimeMillis() - model.getCreateDate().getTime() > 3*60*1000){
+                model.setStatus(Constants.ONE);
+                model.setEditDate(new Date());
+                smsEmailMapper.updateById(model);
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝楠岃瘉鐮佸凡澶辨晥锛岃閲嶆柊鍙戦�佸啀璇晘");
+            }
+            model.setStatus(Constants.ONE);
+            model.setEditDate(new Date());
+            smsEmailMapper.updateById(model);
+        }
+
+        Company company = new Company();
+        if(Objects.nonNull(user.getCompanyId())){
+            company = companyMapper.selectById(user.getCompanyId());
+        }
+        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
+        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
+
+        SystemRole rt = new SystemRole();
+        rt.setDeleted(Boolean.FALSE);
+        //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎
+        user.setCompanyIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user));
+
+        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null);
+        return  userInfo;
+    }
+
+
     @Override
     public LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request) {
         SystemLoginLog loginLog = new SystemLoginLog();
diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
index 347f4d2..acd5a2b 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
@@ -32,6 +32,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -140,6 +141,15 @@
             List<Integer> collect = list.stream().map(s -> s.getId()).collect(Collectors.toList());
             pageWrap.getModel().setDepartmentIds(collect);
         }*/
+
+        //鏌ヨ鐗规畩鐨�42浜洪厤缃�
+        if(Objects.nonNull(pageWrap.getModel()) && Constants.equalsInteger(pageWrap.getModel().getQuerySpecial(),Constants.ONE)){
+            String companySpecialId = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SPECIAL_COMPANY_ID).getCode();
+            if(StringUtils.isNotBlank(companySpecialId)){
+                pageWrap.getModel().setCompanySpecialId(companySpecialId);
+            }
+        }
+
         // 鎵ц鏌ヨ
         PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
         List<SystemUserListVO> userList = systemUserMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause());
diff --git a/server/system_service/src/main/resources/mappers/SystemUserMapper.xml b/server/system_service/src/main/resources/mappers/SystemUserMapper.xml
index 16a7154..1554fc5 100644
--- a/server/system_service/src/main/resources/mappers/SystemUserMapper.xml
+++ b/server/system_service/src/main/resources/mappers/SystemUserMapper.xml
@@ -75,6 +75,9 @@
       <if test="dto.companyType != null ">
         AND  sd.`type` = #{dto.companyType}
       </if>
+      <if test="dto.querySpecial != null and dto.querySpecial = 1 ">
+            AND find_in_set(#{dto.companySpecialId},REPLACE(sd.company_path,"/",","))
+      </if>
     </where>
     ${orderByClause}
   </select>
diff --git a/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java b/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
index 289aec6..090e834 100644
--- a/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
+++ b/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
@@ -67,12 +67,19 @@
     @ApiOperation("銆愯瀹㈢郴缁熴�戝畾鏃舵洿鏂板井淇″叕浼楀彿accesstoken")
     @GetMapping("/timer/wxtoken/updateWxAccessToken")
     ApiResponse updateWxAccessToken();
-    @ApiOperation("銆愭暟瀛楀寲鏈堝彴銆戞湀鍙颁綔涓氭姤璀︿笟鍔�")
-    @GetMapping("/timer/platformJob/platformJobTimer")
-    ApiResponse platformJobTimer();
     @ApiOperation("銆愯瀹㈢郴缁熴�戣瀹㈡暟鎹嵆灏嗚秴鏃堕璀�")
     @GetMapping("/timer/visit/visitTimeOut")
     ApiResponse visitTimeOut() ;
+    @ApiOperation("銆愭暟瀛楀寲鏈堝彴銆戞湀鍙板仠闈犺秴鏃舵姤璀︿笟鍔�")
+    @GetMapping("/timer/platformJob/platformJobTimer")
+    ApiResponse platformJobTimer();
+    @ApiOperation("銆愭暟瀛楀寲鏈堝彴銆戞湀鍙颁綔涓氳秴鏃舵姤璀︿笟鍔�")
+    @GetMapping("/timer/platformJob/platformJobWorkTimeOut")
+    ApiResponse platformJobWorkTimeOut();
+    @ApiOperation("銆愭暟瀛楀寲鏈堝彴銆戞湀鍙扮瓑寰呬綔涓氳秴鏃朵笟鍔�")
+    @GetMapping("/timer/platformJob/platformJobWaitTimeOut")
+    ApiResponse platformJobWaitTimeOut();
+
 
 
 }
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
index 9159418..228006e 100644
--- a/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
@@ -36,14 +36,27 @@
     private PlatformJobService platformJobService;
 
 
-    @ApiOperation("鏈堝彴浣滀笟鎶ヨ涓氬姟")
+    @ApiOperation("鏈堝彴鍋滈潬瓒呮椂鎶ヨ涓氬姟")
     @GetMapping("/platformJobTimer")
     public ApiResponse platformJobTimer() {
         platformJobService.timeOutReport();
-        platformJobService.timeOutCallIn();
-        platformJobService.timeOutWork();
-        return ApiResponse.success("鏈堝彴浣滀笟鎶ヨ涓氬姟");
+        return ApiResponse.success("鏈堝彴鍋滈潬瓒呮椂鎶ヨ涓氬姟");
     }
 
 
+    @ApiOperation("鏈堝彴浣滀笟瓒呮椂鎶ヨ涓氬姟")
+    @GetMapping("/platformJobWorkTimeOut")
+    public ApiResponse platformJobWorkTimeOut() {
+        platformJobService.timeOutWork();
+        return ApiResponse.success("鏈堝彴浣滀笟瓒呮椂鎶ヨ涓氬姟");
+    }
+
+
+    @ApiOperation("鏈堝彴绛夊緟浣滀笟瓒呮椂涓氬姟")
+    @GetMapping("/platformJobWaitTimeOut")
+    public ApiResponse platformJobWaitTimeOut() {
+        platformJobService.timeOutCallIn();
+        return ApiResponse.success("鏈堝彴绛夊緟浣滀笟瓒呮椂涓氬姟");
+    }
+
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
index 575fb48..06a55e7 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
@@ -4,6 +4,8 @@
 import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
@@ -19,6 +21,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @author 姹熻箘韫�
@@ -39,6 +42,9 @@
     public ApiResponse create(@RequestBody CarUseBook carUseBook,@RequestHeader(Constants.HEADER_USER_TOKEN) String token)  throws Exception {
         LoginUserInfo loginUserInfo = getLoginUser(token);
         carUseBook.setCreator(loginUserInfo.getId());
+        if(Objects.isNull(loginUserInfo.getMemberId())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲唴閮ㄤ汉鍛樻棤娉曡繘琛岃鎿嶄綔");
+        }
         carUseBook.setMemberId(loginUserInfo.getMemberId());
         return ApiResponse.success(carUseBookService.create(carUseBook));
     }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
index 464f2bd..ec0beda 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
@@ -103,6 +103,15 @@
         return ApiResponse.success(companyService.findPage(pageWrap));
     }
 
+    @ApiOperation("缁勭粐鍒楄〃")
+    @PostMapping("/list")
+    @CloudRequiredPermission("business:company:query")
+    public ApiResponse<List<Company>> list (@RequestBody Company company,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(companyService.findList(company));
+    }
+
+
+
     @ApiOperation("缁勭粐鏍戞煡璇�")
     @GetMapping("/tree")
     @ApiImplicitParams({
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
index a4960d6..f6604e0 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
@@ -4,7 +4,10 @@
 import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
@@ -16,6 +19,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.Objects;
 
 /**
  * @author 姹熻箘韫�
@@ -34,7 +38,11 @@
     @PostMapping("/create")
     @CloudRequiredPermission("business:hiddendanger:create")
     public ApiResponse create(@RequestBody HiddenDanger hiddenDanger,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
-        hiddenDanger.setLoginUserInfo(this.getLoginUser(token));
+        LoginUserInfo loginUserInfo = this.getLoginUser(token);
+        if(Objects.isNull(loginUserInfo.getMemberId())||Objects.isNull(loginUserInfo)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璐︽埛鏃犳硶杩涜璇ユ搷浣�");
+        }
+        hiddenDanger.setLoginUserInfo(loginUserInfo);
         return ApiResponse.success(hiddenDangerService.create(hiddenDanger));
     }
 
@@ -58,7 +66,11 @@
     @PostMapping("/updateById")
     @CloudRequiredPermission("business:hiddendanger:update")
     public ApiResponse updateById(@RequestBody HiddenDanger hiddenDanger,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
-        hiddenDanger.setLoginUserInfo(this.getLoginUser(token));
+        LoginUserInfo loginUserInfo = this.getLoginUser(token);
+        if(Objects.isNull(loginUserInfo.getMemberId())||Objects.isNull(loginUserInfo)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璐︽埛鏃犳硶杩涜璇ユ搷浣�");
+        }
+        hiddenDanger.setLoginUserInfo(loginUserInfo);
         hiddenDangerService.updateById(hiddenDanger);
         return ApiResponse.success(null);
     }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
index 00bda8d..fb6eeb0 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -1,9 +1,11 @@
 package com.doumee.cloud.admin;
 
+import com.alibaba.fastjson.JSONObject;
 import com.doumee.api.BaseController;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.config.jwt.JwtProperties;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.*;
@@ -35,10 +37,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.BufferedReader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author 姹熻箘韫�
@@ -71,6 +71,8 @@
     @Autowired
     private RedisTemplate<String,Object> redisTemplate;
 
+    @Autowired
+    private JwtProperties jwtProperties;
 
     @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ユ湀鍙颁俊鎭帴鍙�")
@@ -241,9 +243,34 @@
         String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
         systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode()
                  + HKService.getMenuUrl(type,hkToken);
+        try {
+            if(redisTemplate!=null&& jwtProperties!=null){
+                loginUserInfo.setHkMenuToken(hkToken);
+                redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token, JSONObject.toJSONString(loginUserInfo),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
         return ApiResponse.success( url);
     }
 
+    @ApiOperation(value = "鑾峰彇瀹夐槻骞冲彴绯荤粺鍏嶅瘑鑿滃崟閰嶇疆" )
+    @GetMapping("/getHkMenuConfig")
+    public ApiResponse<List<Integer>> getHkMenuConfig(@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        LoginUserInfo loginUserInfo = getLoginUser(token);
+        List<Integer> menuConfigList = new ArrayList<>();
+        if(Objects.nonNull(loginUserInfo) && StringUtils.isNotBlank(loginUserInfo.getUsername())){
+            menuConfigList = hkSyncPlatformsService.getMenuConfig(loginUserInfo.getUsername());
+        }
+        return ApiResponse.success(menuConfigList);
+    }
+
+
+
+
+
+
     @ApiOperation("銆愭捣搴枫�戣缃甃ED灞忔枃妗�")
     @PostMapping("/setLedContent")
     public ApiResponse<List<Map<String,Object>>> setLedContent(@RequestBody TransparentChannelSingleRequest body  , HttpServletResponse response) {
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java
index f619326..6223da1 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java
@@ -4,6 +4,8 @@
 import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageWrap;
@@ -25,6 +27,7 @@
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @author 姹熻箘韫�
@@ -118,6 +121,9 @@
     @PostMapping("/apply")
     public ApiResponse<Integer> apply (@RequestBody PlatformBooksApplyDTO platformBooksApplyDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         LoginUserInfo loginUserInfo = getLoginUser(token);
+        if(Objects.isNull(loginUserInfo.getMemberId())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲唴閮ㄤ汉鍛樻棤娉曡繘琛岃鎿嶄綔");
+        }
         platformBooksApplyDTO.setUserId(loginUserInfo.getMemberId());
         platformBooksApplyDTO.setDriverId(loginUserInfo.getMemberId());
         return ApiResponse.success(platformBooksService.apply(platformBooksApplyDTO));
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java
new file mode 100644
index 0000000..cd0e8be
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java
@@ -0,0 +1,129 @@
+package com.doumee.cloud.board;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.web.response.platformReport.*;
+import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/28 13:42
+ */
+
+@Api(tags = "鑳借�楃湅鏉�")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/energy")
+public class EnergyController extends BaseController {
+
+
+    @LoginNoRequired
+    @ApiOperation("涓績鏁版嵁")
+    @GetMapping("/centerData")
+    public ApiResponse<EnergyBoardVO> centerData() {
+        EnergyBoardVO data = new EnergyBoardVO();
+        Random random = new Random();
+        data.setSmokeBoxTotal(random.nextInt(20000));
+        data.setCarbon(new BigDecimal(random.nextInt(1000)));
+        data.setElectricityQuantity(random.nextInt(1000));
+        data.setElectricityYear(new BigDecimal(random.nextInt(10)));
+        data.setElectricityMonth(new BigDecimal(random.nextInt(10)));
+
+        data.setWaterQuantity(new BigDecimal(random.nextInt(1000)));
+        data.setWaterYear(new BigDecimal(random.nextInt(10)));
+        data.setWaterMonth(new BigDecimal(random.nextInt(10)));
+
+
+        data.setGasQuantity(new BigDecimal(random.nextInt(1000)));
+        data.setGasYear(new BigDecimal(random.nextInt(10)));
+        data.setGasMonth(new BigDecimal(random.nextInt(10)));
+
+        data.setOfficeQuantity(random.nextInt(20));
+        data.setPowerQuantity(random.nextInt(20));
+        data.setWorkHouseQuantity(random.nextInt(20));
+        data.setParkQuantity(random.nextInt(20));
+        data.setTodayElectricity(random.nextInt(20));
+        data.setMonthElectricity(random.nextInt(20));
+        data.setYesterdayElectricity(random.nextInt(20));
+        return ApiResponse.success(data);
+    }
+
+
+
+
+
+    @LoginNoRequired
+    @ApiOperation("瀹炴椂璐熻嵎鏇茬嚎")
+    @GetMapping("/loadCurve")
+    public ApiResponse<List<EnergyDataVO>> loadCurve() {
+        List<EnergyDataVO> loadCurveList = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 1; i <= 23; i++) {
+            EnergyDataVO data = new EnergyDataVO();
+            data.setTimeData(StringUtils.leftPad(i+"",2,"0") +":00");
+            data.setEnergy(new BigDecimal(random.nextInt(200)));
+            loadCurveList.add(data);
+        }
+        return ApiResponse.success(loadCurveList);
+    }
+
+
+
+    @LoginNoRequired
+    @ApiOperation("鏈堣兘鑰椼�佹补鑰楀垎鏋�")
+    @GetMapping("/energyDataList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "鏌ヨ绫诲瀷锛�0=姘达紱1=姘旓紱2=鐢碉紱3=娌硅��", required = true),
+    })
+    public ApiResponse<List<EnergyDataVO>> energyDataList(@RequestParam Integer type) {
+        List<EnergyDataVO> energyDataVOList = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 1; i <= 12; i++) {
+            EnergyDataVO data = new EnergyDataVO();
+            data.setTimeData(i +"鏈�");
+            data.setEnergy(new BigDecimal(random.nextInt(200)));
+            energyDataVOList.add(data);
+        }
+        return ApiResponse.success(energyDataVOList);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("涓婃湀娌硅�楁帓琛�")
+    @GetMapping("/lastMonthOil")
+    public ApiResponse<List<OilDataVO>> lastMonthOil() {
+        List<OilDataVO> oilDataVOList = new ArrayList<>();
+        Random random = new Random();
+        BigDecimal maxOil = BigDecimal.ZERO;
+        BigDecimal lastOil = BigDecimal.ZERO;
+        for (int i = 1; i <= 7; i++) {
+            OilDataVO oilDataVO = new OilDataVO();
+            oilDataVO.setCarNo("鐨朅8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
+            if(i==1){
+                oilDataVO.setQuantity(new BigDecimal(random.nextInt(100)));
+                maxOil = oilDataVO.getQuantity();
+            }else{
+                oilDataVO.setQuantity(new BigDecimal(random.nextInt(lastOil.intValue())));
+            }
+            lastOil = oilDataVO.getQuantity();
+            oilDataVO.setMaxOil(maxOil);
+            oilDataVOList.add(oilDataVO);
+        }
+        return ApiResponse.success(oilDataVOList);
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/FightingAdminController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/FightingAdminController.java
new file mode 100644
index 0000000..7591eee
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/FightingAdminController.java
@@ -0,0 +1,126 @@
+package com.doumee.cloud.board;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.PlatformLogMapper;
+import com.doumee.dao.business.model.PlatformLog;
+import com.doumee.dao.web.response.platformReport.*;
+import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/28 13:42
+ */
+
+@Api(tags = "娑堥槻绠℃帶澶у睆")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/fightingAdmin")
+public class FightingAdminController extends BaseController {
+
+
+    @LoginNoRequired
+    @ApiOperation("涓績鏁版嵁")
+    @GetMapping("/centerData")
+    public ApiResponse<FightingAdminBoardVO> centerData() {
+        FightingAdminBoardVO data = new FightingAdminBoardVO();
+        Random random = new Random();
+        data.setOfflineDeviceNum(random.nextInt(20));
+        data.setOnlineDeviceNum(random.nextInt(20));
+        data.setErrDeviceNum(random.nextInt(20));
+        data.setShieldDeviceNum(random.nextInt(20));
+        data.setTodayDangerNum(random.nextInt(20));
+        data.setDealDangerNum(random.nextInt(20));
+        return ApiResponse.success(data);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("浠婃棩鍚勭郴缁熻澶囩姸鎬佸強鍛婅鏁伴噺")
+    @GetMapping("/deviceAlarmData")
+    public ApiResponse<List<DeviceAlarmDataVO>> deviceAlarmData() {
+        List<DeviceAlarmDataVO> deviceAlarmDataVOList = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 1; i <= 5; i++) {
+            DeviceAlarmDataVO deviceAlarmDataVO = new DeviceAlarmDataVO();
+            deviceAlarmDataVO.setDeviceTypeName("璁惧鍚嶇О_"+i);
+            deviceAlarmDataVO.setAlarmNum(random.nextInt(20));
+            deviceAlarmDataVO.setErrNum(random.nextInt(20));
+            deviceAlarmDataVO.setOfflineNum(random.nextInt(20));
+            deviceAlarmDataVO.setShieldNum(random.nextInt(20));
+            deviceAlarmDataVO.setStatusTotal(deviceAlarmDataVO.getAlarmNum() + deviceAlarmDataVO.getErrNum() + deviceAlarmDataVO.getOfflineNum() + deviceAlarmDataVO.getShieldNum());
+            deviceAlarmDataVOList.add(deviceAlarmDataVO);
+        }
+        return ApiResponse.success(deviceAlarmDataVOList);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("鎶ヨ淇℃伅")
+    @GetMapping("/alarmData")
+    public ApiResponse<AlarmDataVO> alarmData() {
+        AlarmDataVO alarmDataVO = new AlarmDataVO();
+        Random random = new Random();
+        alarmDataVO.setTotalNum(random.nextInt(30));
+        alarmDataVO.setRealNum(random.nextInt(alarmDataVO.getTotalNum()));
+        alarmDataVO.setErrNum(random.nextInt(alarmDataVO.getRealNum()));
+        alarmDataVO.setLiftNum(random.nextInt(alarmDataVO.getErrNum()));
+        alarmDataVO.setProcessingNum(random.nextInt(alarmDataVO.getErrNum()));
+        return ApiResponse.success(alarmDataVO);
+    }
+
+
+
+    @LoginNoRequired
+    @ApiOperation("鍛婅澶勭悊鍒嗘瀽")
+    @GetMapping("/alarmHandleData")
+    public ApiResponse<List<AlarmHandleDataVO>> alarmHandleData(@RequestParam Integer type) {
+        List<AlarmHandleDataVO> alarmHandleDataVOList = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 1; i <= 12; i++) {
+            AlarmHandleDataVO alarmHandleDataVO = new AlarmHandleDataVO();
+            alarmHandleDataVO.setMonthStr(i+"鏈�");
+            alarmHandleDataVO.setAlarmNum(random.nextInt(20));
+            alarmHandleDataVO.setErrNum(random.nextInt(20));
+            alarmHandleDataVO.setLiftNum(random.nextInt(20));
+            alarmHandleDataVO.setProcessingNum(random.nextInt(20));
+            alarmHandleDataVOList.add(alarmHandleDataVO);
+        }
+        return ApiResponse.success(alarmHandleDataVOList);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("鏈勾娑堥槻璁惧/璁炬柦缁存姢鎯呭喌")
+    @GetMapping("/yearDeviceData")
+    public ApiResponse<YearDeviceDataVO> yearDeviceData() {
+        Random random = new Random();
+        YearDeviceDataVO yearDeviceDataVO = new YearDeviceDataVO();
+        yearDeviceDataVO.setMonthAddNum(random.nextInt(100));
+        yearDeviceDataVO.setPlanProtectTotal(random.nextInt(1000));
+        yearDeviceDataVO.setProtectNum(yearDeviceDataVO.getPlanProtectTotal());
+        return ApiResponse.success(yearDeviceDataVO);
+    }
+
+
+
+
+
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/OnSitDispatchController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/OnSitDispatchController.java
new file mode 100644
index 0000000..60dd0bc
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/OnSitDispatchController.java
@@ -0,0 +1,170 @@
+package com.doumee.cloud.board;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.PlatformLogMapper;
+import com.doumee.dao.business.model.Platform;
+import com.doumee.dao.business.model.PlatformJob;
+import com.doumee.dao.business.model.PlatformLog;
+import com.doumee.dao.openapi.request.HkBaseTokenRequest;
+import com.doumee.dao.system.join.NoticesJoinMapper;
+import com.doumee.dao.web.response.platformReport.*;
+import com.doumee.service.business.PlatformJobService;
+import com.doumee.service.business.PlatformLogService;
+import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/28 13:42
+ */
+
+@Api(tags = "鍦哄唴璋冨害鐪嬫澘")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/onSitDispatch")
+public class OnSitDispatchController extends BaseController {
+
+    @Autowired
+    private PlatformLogMapper platformLogMapper;
+
+
+
+    @LoginNoRequired
+    @ApiOperation("涓績鏁版嵁")
+    @GetMapping("/centerData")
+    public ApiResponse<OnSitDispatchBoardVO> centerData() {
+        OnSitDispatchBoardVO data = new OnSitDispatchBoardVO();
+        data.setPlatformTotal(100);
+        data.setFreePlatform(8);
+        data.setReservationCar(97);
+        data.setWorkingCar(56);
+        data.setLineUpCar(35);
+        return ApiResponse.success(data);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("浠婃棩鏈堝彴瀹屾垚璁㈠崟缁熻")
+    @GetMapping("/platformGroupFinish")
+    public ApiResponse<List<PlatformGroupFinishVO>> platformGroupFinish() {
+        List<PlatformGroupFinishVO> platformGroupFinishVOList = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 0; i < 3; i++) {
+            PlatformGroupFinishVO platformGroupFinishVO = new PlatformGroupFinishVO();
+            platformGroupFinishVO.setPlatformGroupName(i+"_鏈堝彴缁勫悕绉�");
+            platformGroupFinishVO.setPlatformId(i);
+            platformGroupFinishVO.setFinishData(300+random.nextInt(100));
+            platformGroupFinishVOList.add(platformGroupFinishVO);
+        }
+        return ApiResponse.success(platformGroupFinishVOList);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("浠婃棩鏈堝彴宸ヤ綔鏃堕暱瓒嬪娍")
+    @GetMapping("/platformDuration")
+    public ApiResponse<List<PlatformDurationVO>> platformDuration() {
+        List<PlatformDurationVO> platformDurationList = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 0; i < 3; i++) {
+            PlatformDurationVO platformDurationVO = new PlatformDurationVO();
+            platformDurationVO.setPlatformName(i+"_鏈堝彴鍚嶇О");
+            platformDurationVO.setPlatformId(i);
+            platformDurationVO.setWorkTotalTime(100+random.nextInt(100));
+            platformDurationVO.setOpenTotalTime(200+random.nextInt(100));
+            platformDurationList.add(platformDurationVO);
+        }
+        return ApiResponse.success(platformDurationList);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("浠婃棩鏈堝彴宸ヤ綔鏃堕暱瓒嬪娍")
+    @GetMapping("/workEfficiency")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "鏌ヨ绫诲瀷锛�0=鍏ュ簱锛�1=鍑哄簱", required = true),
+    })
+    public ApiResponse<List<WorkEfficiencyVO>> workEfficiency(@RequestParam Integer type) {
+        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>();
+        Random random = new Random();
+        Integer totalWorkNum = 0;
+        for (int i = 8; i <= 20; i++) {
+            if(i%2==0){
+                WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO();
+                workEfficiencyVO.setWorkNum(200+random.nextInt(100));
+                totalWorkNum = totalWorkNum + workEfficiencyVO.getWorkNum();
+                workEfficiencyVO.setTotalWorkNum(totalWorkNum);
+                workEfficiencyVO.setWorkTime(StringUtils.leftPad(i+"",2,"0") +":00");
+                workEfficiencyVOList.add(workEfficiencyVO);
+            }
+        }
+        return ApiResponse.success(workEfficiencyVOList);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("浠婃棩杞﹁締浣滀笟鎯呭喌")
+    @GetMapping("/carWorkSituation")
+    public ApiResponse<CarWorkSituationVO> carWorkSituation() {
+
+        Random random = new Random();
+        CarWorkSituationVO carWorkSituationVO = new CarWorkSituationVO();
+        carWorkSituationVO.setCallNum(200+random.nextInt(100));
+        carWorkSituationVO.setFinishNum(100+random.nextInt(100));
+        carWorkSituationVO.setCallNum(100+random.nextInt(100));
+        carWorkSituationVO.setWorkingNum(100+random.nextInt(100));
+        carWorkSituationVO.setFinishNum(100+random.nextInt(100));
+        carWorkSituationVO.setInNum(100+random.nextInt(100));
+        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda()
+                .orderByDesc(PlatformLog::getCreateDate)
+                .last(" limit 7 ")
+        );
+        carWorkSituationVO.setPlatformLogList(platformLogList);
+        return ApiResponse.success(carWorkSituationVO);
+    }
+
+
+
+    @LoginNoRequired
+    @ApiOperation("瀹炴椂鏈堝彴浣滀笟淇℃伅")
+    @GetMapping("/platformWorkData")
+    public ApiResponse<List<PlatformWorkDataVO>> platformWorkData() {
+        List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 0; i < 3; i++) {
+            PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
+            platformDurationVO.setPlatformName(i+"_鏈堝彴鍚嶇О");
+            platformDurationVO.setCarNo("鐨朅8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
+            platformDurationVO.setWorkType(random.nextInt(1));
+            platformDurationVO.setWorkNum(100+random.nextInt(100));
+            platformDurationVO.setFinishTime(Long.valueOf(System.currentTimeMillis()/1000 + 200+random.nextInt(100)));
+            platformDurationVO.setStatus(random.nextInt(2));
+            platformWorkDataVOList.add(platformDurationVO);
+        }
+        return ApiResponse.success(platformWorkDataVOList);
+    }
+
+
+
+
+
+
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunController.java
new file mode 100644
index 0000000..2cd9eba
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunController.java
@@ -0,0 +1,180 @@
+package com.doumee.cloud.board;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.PlatformJobMapper;
+import com.doumee.dao.business.join.PlatformJobJoinMapper;
+import com.doumee.dao.business.model.Platform;
+import com.doumee.dao.business.model.PlatformBooks;
+import com.doumee.dao.business.model.PlatformJob;
+import com.doumee.dao.business.model.PlatformWmsJob;
+import com.doumee.dao.web.response.platformReport.*;
+import com.doumee.service.business.PlatformJobService;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/28 13:42
+ */
+
+@Api(tags = "鍥尯鐗╂祦杩愯璋冨害鐪嬫澘")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/platformJobRun")
+public class PlatformJobRunController extends BaseController {
+
+    @ApiModelProperty
+    private PlatformJobJoinMapper platformJobJoinMapper;
+
+    @LoginNoRequired
+    @ApiOperation("涓績鏁版嵁")
+    @GetMapping("/centerData")
+    public ApiResponse<PlatformJobRunBoardVO> centerData() {
+        PlatformJobRunBoardVO data = new PlatformJobRunBoardVO();
+        Random random = new Random();
+        data.setMonthOutTotal(BigDecimal.valueOf(random.nextInt(100)).multiply(new BigDecimal(10000)));
+        data.setMonthOutTotalOnYear(BigDecimal.valueOf(random.nextInt(10)));
+        data.setMonthOutTimes(random.nextInt(1000));
+        data.setYearOutTotal(data.getMonthOutTotal().multiply(new BigDecimal(11)));
+        data.setYearOutTotalOnYear(BigDecimal.valueOf(random.nextInt(10)));
+        data.setYearOutTimes(random.nextInt(1000) * 11);
+
+        data.setTodayInRata(new BigDecimal(random.nextInt(100)));
+        data.setMonthInRata(data.getTodayInRata().multiply(new BigDecimal(30)));
+
+        data.setTodayOutRata(new BigDecimal(random.nextInt(100)));
+        data.setMonthOutRata(data.getTodayOutRata().multiply(new BigDecimal(30)));
+
+
+        return ApiResponse.success(data);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("杩愯緭浠诲姟鍒嗘瀽")
+    @GetMapping("/transportMeasure")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "queryType", value = "鏌ヨ绫诲瀷锛�0=鍛紱1=鏈堬紱2=骞达紱", required = true),
+    })
+    public ApiResponse<List<TransportMeasureVO>> transportMeasure(@RequestParam Integer queryType) {
+        List<TransportMeasureVO> list = new ArrayList<>();
+        Random random = new Random();
+        List<String> dayList = DateUtil.getBeforDays(new Date(),7);
+        if(Constants.equalsInteger(queryType,Constants.ONE)){
+            dayList = DateUtil.getBeforDays(new Date(),30);
+        }else if(Constants.equalsInteger(queryType,Constants.TWO)){
+            dayList = DateUtil.getBeforMonth(new Date(),12);
+        }
+        for (String str:dayList) {
+            TransportMeasureVO data = new TransportMeasureVO();
+            data.setPlanTimes(str);
+            data.setPlanTaskNum(new BigDecimal(random.nextInt(1000)));
+            data.setFinishTaskNum(new BigDecimal(data.getPlanTaskNum().intValue()));
+            list.add(data);
+        }
+        return ApiResponse.success(list);
+    }
+
+
+
+
+
+    @LoginNoRequired
+    @ApiOperation("褰撴棩杩愯緭浠诲姟")
+    @GetMapping("/platformJobList")
+    public ApiResponse<List<PlatformJob>> platformJobList() {
+        List<PlatformJob> list =  platformJobJoinMapper.selectJoinList(PlatformJob.class,
+                new MPJLambdaWrapper<PlatformJob>()
+                        .selectAll(PlatformJob.class)
+                        .selectAs(PlatformBooks::getId,PlatformJob::getBookId)
+                        .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                        .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
+                        .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
+                        .selectAs(PlatformWmsJob::getRepertotyAddress,PlatformJob::getRepertotyAddress)
+                        .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
+                        .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
+                        .leftJoin(PlatformBooks.class,PlatformBooks::getJobId,PlatformJob::getId)
+                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+                        .in(PlatformJob::getStatus
+                                ,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+                                ,Constants.PlatformJobStatus.CALLED.getKey()
+                                ,Constants.PlatformJobStatus.IN_WAIT.getKey()
+                                ,Constants.PlatformJobStatus.WORKING.getKey()
+                                ,Constants.PlatformJobStatus.TRANSFERING.getKey()
+                                ,Constants.PlatformJobStatus.EXCEPTION.getKey()
+                                ,Constants.PlatformJobStatus.DONE.getKey()
+                        )
+                        .orderByDesc(PlatformJob::getSignNum)
+                        .last(" limit 20 ")
+        );
+        return ApiResponse.success(list);
+    }
+
+
+
+    @LoginNoRequired
+    @ApiOperation("鍑哄叆搴撲换鍔¢噺")
+    @GetMapping("/jobData")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "queryType", value = "鏌ヨ绫诲瀷锛�0=鍑哄簱锛�1=鍏ュ簱锛�", required = true),
+    })
+    public ApiResponse<JobDataVO> jobData(@RequestParam Integer queryType) {
+        Random random = new Random();
+        JobDataVO jobDataVO = new JobDataVO();
+        jobDataVO.setPlanTaskNum(BigDecimal.valueOf(random.nextInt(1000)));
+        jobDataVO.setFinishTaskNum(BigDecimal.valueOf(jobDataVO.getPlanTaskNum().intValue()));
+        return ApiResponse.success(jobDataVO);
+    }
+
+    @LoginNoRequired
+    @ApiOperation("浠婃棩鍏ュ簱閲忕粺璁�")
+    @GetMapping("/totalInList")
+    public ApiResponse<List<GeneralVO>> totalInList() {
+        List<GeneralVO> list = new ArrayList<>();
+        for (int i = 1; i < 4; i++) {
+            Random random = new Random();
+            GeneralVO data = new GeneralVO();
+            data.setName("鍘傚尯鍚嶇О_"+i);
+            data.setNum(BigDecimal.valueOf(random.nextInt(1000)));
+            list.add(data);
+        }
+        return ApiResponse.success(list);
+    }
+
+
+
+    @LoginNoRequired
+    @ApiOperation("搴撳瓨鎯呭喌")
+    @GetMapping("/stockList")
+    public ApiResponse<List<GeneralVO>> stockList() {
+        List<GeneralVO> list = new ArrayList<>();
+        for (int i = 1; i < 10; i++) {
+            Random random = new Random();
+            GeneralVO data = new GeneralVO();
+            data.setName("鍚嶇О"+i);
+            data.setNum(BigDecimal.valueOf(random.nextInt(1000)));
+            list.add(data);
+        }
+        return ApiResponse.success(list);
+    }
+
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java
new file mode 100644
index 0000000..0622588
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java
@@ -0,0 +1,104 @@
+package com.doumee.cloud.board;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.web.response.platformReport.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/28 13:42
+ */
+
+@Api(tags = "瀹夐槻绠℃帶澶у睆")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/security")
+public class SecurityController extends BaseController {
+
+
+    @LoginNoRequired
+    @ApiOperation("涓績鏁版嵁")
+    @GetMapping("/centerData")
+    public ApiResponse<SecurityBoardVO> centerData() {
+        SecurityBoardVO data = new SecurityBoardVO();
+        Random random = new Random();
+        data.setParkingLotTotal(random.nextInt(200));
+        data.setFreeParkingLot(random.nextInt(data.getParkingLotTotal()));
+
+        data.setInternalCarTotal(random.nextInt(100));
+        data.setRelatedCarTotal(random.nextInt(100));
+        data.setVisitCarTotal(random.nextInt(100));
+        data.setInParkCarTotal(data.getInternalCarTotal() + data.getRelatedCarTotal() + data.getVisitCarTotal());
+
+        data.setInternalTotal(random.nextInt(100));
+        data.setRelatedTotal(random.nextInt(100));
+        data.setVisitTotal(random.nextInt(100));
+        data.setInParkTotal(data.getInternalTotal() + data.getRelatedTotal() + data.getVisitTotal());
+
+        data.setDeviceTotal(random.nextInt(20));
+        data.setErrTotal(random.nextInt(20));
+        data.setInternalJobCarTotal(random.nextInt(20));
+        data.setVisitJobCarTotal(random.nextInt(20));
+        data.setRelatedJobCarTotal(random.nextInt(20));
+
+        return ApiResponse.success(data);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("鍥尯瀹夐槻璁惧")
+    @GetMapping("/securityDeviceData")
+    public ApiResponse<List<SecurityDeviceDataVO>> securityDeviceData() {
+        List<SecurityDeviceDataVO> list = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 1; i <= 3; i++) {
+            SecurityDeviceDataVO data = new SecurityDeviceDataVO();
+            data.setDeviceType("璁惧绫诲瀷_"+i);
+            data.setOnlineNum(random.nextInt(10));
+            data.setOfflineDeviceNum(random.nextInt(10));
+            data.setTotalNum(data.getOnlineNum() + data.getOfflineDeviceNum() );
+            list.add(data);
+        }
+        return ApiResponse.success(list);
+    }
+
+
+
+
+    @LoginNoRequired
+    @ApiOperation("璁垮婊炵暀鎯呭喌")
+    @GetMapping("/visitRetentionData")
+    public ApiResponse<List<VisitRetentionDataVO>> visitRetentionData() {
+        List<VisitRetentionDataVO> list = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 1; i <= 3; i++) {
+            VisitRetentionDataVO data = new VisitRetentionDataVO();
+            data.setName("灏忔槑_"+i);
+            data.setCompanyName("杩愮淮缁刜"+i);
+            data.setTimeOutMinute(Long.valueOf(random.nextInt(200)));
+            list.add(data);
+        }
+        return ApiResponse.success(list);
+    }
+
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/WholeProvinceController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/WholeProvinceController.java
new file mode 100644
index 0000000..738f7cf
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/WholeProvinceController.java
@@ -0,0 +1,171 @@
+package com.doumee.cloud.board;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.web.response.platformReport.*;
+import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/28 13:42
+ */
+
+@Api(tags = "鍏ㄧ渷涓�搴撳埗绠$悊鐪嬫澘")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/wholeProvince")
+public class WholeProvinceController extends BaseController {
+
+
+    @LoginNoRequired
+    @ApiOperation("涓績鏁版嵁")
+    @GetMapping("/centerData")
+    public ApiResponse<WholeProvinceBoardVO> centerData() {
+        WholeProvinceBoardVO data = new WholeProvinceBoardVO();
+        Random random = new Random();
+
+        data.setYearOutTotal(BigDecimal.valueOf(random.nextInt(200)));
+        data.setYearOutTotalOnYear(BigDecimal.valueOf(random.nextInt(10)));
+        data.setYearOutTimes(random.nextInt(200));
+        data.setYearProvinceRata(BigDecimal.valueOf(random.nextInt(100)).divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_UP));
+
+        data.setYearInPlanTotal(BigDecimal.valueOf(random.nextInt(200)));
+        data.setYearInTotal(BigDecimal.valueOf(random.nextInt(data.getYearInPlanTotal().intValue())));
+        data.setYearInTotalOnYear(BigDecimal.valueOf(random.nextInt(10)));
+        data.setYearInTimes(random.nextInt(200));
+
+        data.setOutPlanTotal(BigDecimal.valueOf(random.nextInt(200)));
+        data.setOutPlanTimes(random.nextInt(200));
+        data.setOutTotal(BigDecimal.valueOf(random.nextInt(data.getOutPlanTotal().intValue())));
+        data.setOutTimes(random.nextInt(data.getOutPlanTimes()));
+        data.setOutRata(BigDecimal.valueOf(random.nextInt(100)));
+
+        return ApiResponse.success(data);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("杩戜竷鏃ュ埌璐ф儏鍐�")
+    @GetMapping("/arriveGoodsList")
+    public ApiResponse<List<ArriveGoodsVO>> arriveGoodsList() {
+        List<ArriveGoodsVO> list = new ArrayList<>();
+        Random random = new Random();
+        List<String> dayList = DateUtil.getBeforDays(new Date(),7);
+        for (String str:dayList) {
+            ArriveGoodsVO data = new ArriveGoodsVO();
+            data.setDateStr(str);
+            data.setArriveNum(new BigDecimal(random.nextInt(1000)));
+            data.setInTransitNum(new BigDecimal(random.nextInt(1000)));
+            list.add(data);
+
+        }
+        return ApiResponse.success(list);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("褰撳墠杩愯緭浠诲姟")
+    @GetMapping("/transportTaskList")
+    public ApiResponse<List<TransportTaskVO>> transportTaskList() {
+        List<TransportTaskVO> list = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 1; i < 11; i++) {
+            TransportTaskVO data = new TransportTaskVO();
+            data.setCarNo("鐨朅8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
+            data.setStatusStr("鍒拌揪鍗歌揣鍦�");
+            data.setAddress("瀹夊窘鍚堣偉");
+            data.setTaskDate(new Date());
+            list.add(data);
+        }
+        return ApiResponse.success(list);
+    }
+
+
+
+
+    @LoginNoRequired
+    @ApiOperation("杩涢攢瀛樿繍钀�")
+    @GetMapping("/salesOperationList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "queryType", value = "鏌ヨ绫诲瀷锛�0=鍛紱1=鏈堬紱2=骞达紱", required = true),
+    })
+    public ApiResponse<List<SalesOperationVO>> salesOperationList(@RequestParam Integer queryType) {
+        List<SalesOperationVO> list = new ArrayList<>();
+        Random random = new Random();
+        List<String> dayList = DateUtil.getBeforDays(new Date(),7);
+        if(Constants.equalsInteger(queryType,Constants.ONE)){
+            dayList = DateUtil.getBeforDays(new Date(),30);
+        }else if(Constants.equalsInteger(queryType,Constants.TWO)){
+            dayList = DateUtil.getBeforMonth(new Date(),12);
+        }
+        for (String str:dayList) {
+            SalesOperationVO data = new SalesOperationVO();
+            data.setDateStr(str);
+            data.setStockNum(new BigDecimal(random.nextInt(1000)));
+            data.setTotalInNum(new BigDecimal(random.nextInt(1000)));
+            data.setTotalOutNum(new BigDecimal(random.nextInt(1000)));
+            list.add(data);
+        }
+        return ApiResponse.success(list);
+    }
+
+    @LoginNoRequired
+    @ApiOperation("搴撳瓨鍒╃敤鐜�")
+    @GetMapping("/energyDataList")
+    public ApiResponse<List<StockRataVO>> energyDataList() {
+        List<StockRataVO> energyDataVOList = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 1; i <= 5; i++) {
+            StockRataVO data = new StockRataVO();
+            data.setPlaceName("鍦扮偣_"+i);
+            data.setNowStockNum(new BigDecimal(random.nextInt(200)));
+            data.setStockRataNum(new BigDecimal(random.nextInt(200)));
+            data.setTotalStockNum(new BigDecimal(random.nextInt(100)));
+            energyDataVOList.add(data);
+        }
+        return ApiResponse.success(energyDataVOList);
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("涓婃湀娌硅�楁帓琛�")
+    @GetMapping("/lastMonthOil")
+    public ApiResponse<List<OilDataVO>> lastMonthOil() {
+        List<OilDataVO> oilDataVOList = new ArrayList<>();
+        Random random = new Random();
+        BigDecimal maxOil = BigDecimal.ZERO;
+        BigDecimal lastOil = BigDecimal.ZERO;
+        for (int i = 1; i <= 7; i++) {
+            OilDataVO oilDataVO = new OilDataVO();
+            oilDataVO.setCarNo("鐨朅8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
+            if(i==1){
+                oilDataVO.setQuantity(new BigDecimal(random.nextInt(100)));
+                maxOil = oilDataVO.getQuantity();
+            }else{
+                oilDataVO.setQuantity(new BigDecimal(random.nextInt(lastOil.intValue())));
+            }
+            lastOil = oilDataVO.getQuantity();
+            oilDataVO.setMaxOil(maxOil);
+            oilDataVOList.add(oilDataVO);
+        }
+        return ApiResponse.success(oilDataVOList);
+    }
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
index b85c0e4..a568a00 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -39,8 +39,11 @@
      * 3銆佽兘绠′腑蹇冿細ngzx
      */
     public interface MenuPageId{
-
-
+        String afzx = "afzx";//瀹夐槻涓績
+        String xkzx = "xkzx";//娑堟帶涓績
+        String ngzx = "ngzx";//鑳界涓績
+        String jsc = "jsc";//鐗╀笟鍚庡嫟
+        String kqgzt = "attendance_workstand";//鑰冨嫟绠$悊
     }
 
     /**
@@ -133,6 +136,9 @@
         String[] fireDeviceStatusSearch= new String[]{"/api/fpnms/v2/device/status/search","鏌ヨ娑堥槻璁惧閮ㄤ欢鐘舵��"};//鏌ヨ娑堥槻璁惧閮ㄤ欢鐘舵��
         String[] findDeviceAlarmPage= new String[]{"/api/v1/alarm/findDeviceAlarmPage","鍒嗛〉鏌ヨ璁惧涓嬬殑鎵�鏈夋姤璀﹁褰�"};//鍒嗛〉鏌ヨ璁惧涓嬬殑鎵�鏈夋姤璀﹁褰�
         String[] getTodoListPage= new String[]{"/api/v3/todo/getTodoListPage","鍒嗛〉鑾峰彇寰呭姙鍒楄〃"};//1.10.1鍒嗛〉鑾峰彇寰呭姙鍒楄〃
+        String[] loginOut= new String[]{"/xauthplus-plugin/logout","閫�鍑虹櫥褰�"};//閫�鍑虹櫥褰�
+        String[] sendSms= new String[]{"/api/smsps/v1/smsService/sms","鐭俊楠岃瘉鐮�"};//鐭俊楠岃瘉鐮�
+        String[] getMenus= new String[]{"/api/privilegeService/v1/menus/list","鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鑿滃崟鍔熻兘椤�"};//鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鑿滃崟鍔熻兘椤�
     }
 
     /**
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
index 3ba05db..143549b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -753,6 +753,11 @@
 			return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus,null);
 		}
 	}
+
+	public static String getHkMenu(Map<String,String> body) {
+		return startDoGetStringArtemis(HKConstants.InterfacePath.getMenus,body);
+	}
+
 	/**
 	 * 鑾峰彇鏈堝彴缁勪欢閰嶇疆鐨凩ED璁惧娓呭崟
 	 * @param body
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MenuDataResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MenuDataResponse.java
new file mode 100644
index 0000000..ba55c83
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MenuDataResponse.java
@@ -0,0 +1,14 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MenuDataResponse {
+
+    private Integer	total;
+
+    private List<String> list;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
index dbb67f0..e1b202c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1,7 +1,10 @@
 package com.doumee.core.haikang.service;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.HKTools;
 import com.doumee.core.haikang.model.param.BaseListPageResponse;
@@ -10,6 +13,7 @@
 import com.doumee.core.haikang.model.param.request.*;
 import com.doumee.core.haikang.model.param.respose.*;
 import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.HttpsUtil;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -21,6 +25,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 @Slf4j
 public class HKService {
@@ -1320,6 +1325,10 @@
         }
         return  null;
     }
+
+
+
+
     /**
      *鑾峰彇鏈堝彴缁勪欢閰嶇疆鐨凩ED璁惧娓呭崟
      * @return
@@ -1457,6 +1466,42 @@
         }
         return  null;
     }
+
+    public static BaseResponse sendSmsByHk(Map<String,Object> param,String url){
+        log.info("銆愭捣搴峰彂閫佺煭淇°��================寮�濮�===="+JSONObject.toJSONString(param));
+        try {
+            TypeReference typeReference =
+                    new TypeReference<BaseResponse>(){};
+            String res = HttpsUtil.postJson(url, JSONObject.toJSONString(param));
+            BaseResponse result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"娴峰悍鍙戦�佺煭淇�");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴峰彂閫佺煭淇°��================澶辫触====锛歕n"+ e.getMessage());
+            e.printStackTrace();
+        }
+       return null;
+    }
+
+
+
+    public static BaseResponse<MenuDataResponse> getMenuConfig(Map<String,String> param){
+        log.info("銆愯幏鍙栬彍鍗曞姛鑳介厤缃」銆�================寮�濮�===="+ JSONObject.toJSONString(param));
+        try {
+            String res = HKTools.getHkMenu(param);
+            TypeReference typeReference =
+                    new TypeReference<BaseResponse<MenuDataResponse>>(){};
+            BaseResponse<MenuDataResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"鑾峰彇鑿滃崟鍔熻兘閰嶇疆椤�");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愯幏鍙栬彍鍗曞姛鑳介厤缃」銆�================澶辫触====锛歕n"+ e.getMessage());
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
     private static void logResult(BaseResponse res,String name) {
         if(StringUtils.equals(res.getCode(),HKConstants.RESPONSE_SUCCEE)){
             log.info("銆�"+name+"銆�================鎴愬姛====\n"+res);
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
index dcb7980..09c04f0 100644
--- 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
@@ -87,9 +87,10 @@
     @ApiModelProperty(value = "璐d换閮ㄩ棬缂栫爜锛堝叧鑱攃ompany锛�", example = "1")
 //    @ExcelColumn(name="鎻愭姤浜虹紪鐮侊紙鍏宠仈member锛�")
     private Integer companyId;
+
     @ApiModelProperty(value = "璐d换閮ㄩ棬缂栫爜", example = "1")
 //    @ExcelColumn(name="鎻愭姤浜虹紪鐮侊紙鍏宠仈member锛�")
     @TableField(exist = false)
-    private Integer companyName;
+    private String companyName;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
index cb286bd..98ad7d6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -276,4 +276,9 @@
     @TableField(exist = false)
     private List<String> roleNames;
 
+    @ApiModelProperty(value = "鏄惁鏌ヨ鍥哄畾浜哄憳锛�0=鍚︼紱1=鏄�" )
+    @TableField(exist = false)
+    private Integer querySpecial;
+
+
 }
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
index efb886f..4ea4253 100644
--- 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
@@ -292,6 +292,7 @@
     @TableField(exist = false)
     private String carrierName ;
 
+
     @ApiModelProperty(value = "璺濈绛惧埌鐐硅窛绂�")
     @TableField(exist = false)
     private BigDecimal getDistance;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmDataVO.java
new file mode 100644
index 0000000..cfcd27f
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmDataVO.java
@@ -0,0 +1,37 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鎶ヨ淇℃伅
+ *
+ * @Author : Rk
+ * @create 2024/10/25 14:26
+ */
+@Data
+public class AlarmDataVO {
+
+
+    @ApiModelProperty(value = "鎬绘暟")
+    private Integer totalNum;
+
+    @ApiModelProperty(value = "鐪熷疄鎶ヨ鏁伴噺")
+    private Integer realNum;
+
+    @ApiModelProperty(value = "璇姤璀︽暟")
+    private Integer errNum;
+
+    @ApiModelProperty(value = "宸茶В闄ゆ暟閲�")
+    private Integer liftNum;
+
+    @ApiModelProperty(value = "澶勭悊涓暟閲�")
+    private Integer processingNum;
+
+
+
+
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmHandleDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmHandleDataVO.java
new file mode 100644
index 0000000..6f6c8c1
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmHandleDataVO.java
@@ -0,0 +1,37 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍛婅澶勭悊鍒嗘瀽
+ *
+ * @Author : Rk
+ * @create 2024/10/25 14:26
+ */
+@Data
+public class AlarmHandleDataVO {
+
+
+    @ApiModelProperty(value = "鏈堜唤")
+    private String monthStr;
+
+    @ApiModelProperty(value = "鎶ヨ鏁伴噺")
+    private Integer alarmNum;
+
+    @ApiModelProperty(value = "璇姤璀︽暟")
+    private Integer errNum;
+
+    @ApiModelProperty(value = "宸插鐞嗘暟閲�")
+    private Integer liftNum;
+
+    @ApiModelProperty(value = "杩涜涓暟閲�")
+    private Integer processingNum;
+
+
+
+
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/ArriveGoodsVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/ArriveGoodsVO.java
new file mode 100644
index 0000000..ef7a9ad
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/ArriveGoodsVO.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 閫氱敤
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class ArriveGoodsVO {
+
+    @ApiModelProperty(value = "鏃ユ湡")
+    private String dateStr;
+
+    @ApiModelProperty(value = "鍦ㄩ�旀暟閲�")
+    private BigDecimal inTransitNum;
+
+    @ApiModelProperty(value = "鍒拌揣鏁伴噺")
+    private BigDecimal arriveNum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/CarWorkSituationVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/CarWorkSituationVO.java
new file mode 100644
index 0000000..59c5dd4
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/CarWorkSituationVO.java
@@ -0,0 +1,40 @@
+package com.doumee.dao.web.response.platformReport;
+
+import com.doumee.dao.business.model.PlatformLog;
+import com.doumee.dao.system.model.Notices;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 杞﹁締浣滀笟鎯呭喌
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class CarWorkSituationVO {
+
+    @ApiModelProperty(value = "棰勭害鏁伴噺")
+    private Integer reservationNum;
+
+    @ApiModelProperty(value = "杩涘満鏁伴噺")
+    private Integer inNum;
+
+    @ApiModelProperty(value = "宸插彨鍙锋暟閲�")
+    private Integer callNum;
+
+    @ApiModelProperty(value = "宸蹭綔涓氭暟閲�")
+    private Integer workingNum;
+
+    @ApiModelProperty(value = "宸插畬鎴愭暟閲�")
+    private Integer finishNum;
+
+    @ApiModelProperty(value = "宸茬鍦烘暟閲�")
+    private Integer leaveNum;
+
+    @ApiModelProperty(value = "浣滀笟鏃ュ織")
+    private List<PlatformLog> platformLogList;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/DeviceAlarmDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/DeviceAlarmDataVO.java
new file mode 100644
index 0000000..e5e452c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/DeviceAlarmDataVO.java
@@ -0,0 +1,40 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 浠婃棩鍚勭郴缁熻澶囩姸鎬佸強鍛婅鏁�
+ *
+ * @Author : Rk
+ * @create 2024/10/25 14:26
+ */
+@Data
+public class DeviceAlarmDataVO {
+
+
+    @ApiModelProperty(value = "璁惧绫诲瀷鍚嶇О")
+    private String deviceTypeName;
+
+    @ApiModelProperty(value = "鎬绘暟")
+    private Integer statusTotal;
+
+    @ApiModelProperty(value = "鎶ヨ鏁伴噺")
+    private Integer alarmNum;
+
+    @ApiModelProperty(value = "鏁呴殰鏁伴噺")
+    private Integer errNum;
+
+    @ApiModelProperty(value = "鏁呴殰鏁伴噺")
+    private Integer offlineNum;
+
+    @ApiModelProperty(value = "灞忚斀鏁伴噺")
+    private Integer shieldNum;
+
+
+
+
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java
new file mode 100644
index 0000000..13217a0
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java
@@ -0,0 +1,97 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 鑳借�楃湅鏉�
+ *
+ * @Author : Rk
+ * @create 2024/10/25 13:53
+ */
+@Data
+public class EnergyBoardVO {
+
+
+    @ApiModelProperty(value = "鏈勾搴﹀惊鐜儫绠�")
+    private Integer smokeBoxTotal;
+
+    @ApiModelProperty(value = "纰虫帓鏀� 鍗曚綅 鍚�")
+    private BigDecimal carbon;
+
+    @ApiModelProperty(value = "涓婃湀鐢ㄧ數 鍗曚綅 kw路h")
+    private Integer electricityQuantity;
+
+    @ApiModelProperty(value = "鐢ㄧ數鐜瘮")
+    private BigDecimal electricityYear;
+
+    @ApiModelProperty(value = "鐢ㄧ數鍚屾瘮")
+    private BigDecimal electricityMonth;
+
+
+    @ApiModelProperty(value = "涓婃湀鐢ㄦ按 鍗曚綅 t")
+    private BigDecimal waterQuantity;
+
+    @ApiModelProperty(value = "鐢ㄦ按鐜瘮")
+    private BigDecimal waterYear;
+
+    @ApiModelProperty(value = "鐢ㄦ按鍚屾瘮")
+    private BigDecimal waterMonth;
+
+
+
+    @ApiModelProperty(value = "涓婃湀鐢ㄦ皵 鍗曚綅 ")
+    private BigDecimal gasQuantity;
+
+    @ApiModelProperty(value = "鐢ㄦ皵鐜瘮")
+    private BigDecimal gasYear;
+
+    @ApiModelProperty(value = "鐢ㄦ皵鍚屾瘮")
+    private BigDecimal gasMonth;
+
+
+    @ApiModelProperty(value = "鍔炲叕妤肩敤鐢� 鍗曚綅 kw路h")
+    private Integer officeQuantity;
+
+    @ApiModelProperty(value = "鎴愬搧搴撶敤鐢� 鍗曚綅 kw路h")
+    private Integer productHouseQuantity;
+
+    @ApiModelProperty(value = "鑱斿悎宸ユ埧鐢ㄧ數 鍗曚綅 kw路h")
+    private Integer workHouseQuantity;
+
+    @ApiModelProperty(value = "鐗╂祦鍥尯鐢ㄧ數 鍗曚綅 kw路h")
+    private Integer parkQuantity;
+
+    @ApiModelProperty(value = "鍔ㄥ姏绔欐埧鐢ㄧ數 鍗曚綅 kw路h")
+    private Integer powerQuantity;
+
+    @ApiModelProperty(value = "浠婃棩鐢ㄧ數 鍗曚綅 kw路h")
+    private Integer todayElectricity;
+
+    @ApiModelProperty(value = "鏈湀鐢ㄧ數 鍗曚綅 kw路h")
+    private Integer monthElectricity;
+
+    @ApiModelProperty(value = "鏄ㄦ棩鐢ㄧ數 鍗曚綅 kw路h")
+    private Integer yesterdayElectricity;
+
+    @ApiModelProperty(value = "瀹炴椂璐熻嵎鏇茬嚎",hidden = true)
+    private List<EnergyDataVO> loadCurveList;
+
+    @ApiModelProperty(value = "鏈堣兘鑰楀垎鏋� - 姘�",hidden = true)
+    private List<EnergyDataVO> energyDataWaterList;
+
+    @ApiModelProperty(value = "鏈堣兘鑰楀垎鏋� - 姘�",hidden = true)
+    private List<EnergyDataVO> energyDataGasList;
+
+    @ApiModelProperty(value = "鏈堣兘鑰楀垎鏋� - 鐢�",hidden = true)
+    private List<EnergyDataVO> energyDataElectricityList;
+
+    @ApiModelProperty(value = "鏈堟补鑰楀垎鏋�",hidden = true)
+    private List<EnergyDataVO> oilList;
+
+    @ApiModelProperty(value = "涓婃湀娌硅�楁帓琛�",hidden = true)
+    private List<OilDataVO> lastMonthOilList;
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyDataVO.java
new file mode 100644
index 0000000..83ebb35
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyDataVO.java
@@ -0,0 +1,23 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/25 16:25
+ */
+@Data
+public class EnergyDataVO {
+
+    @ApiModelProperty(value = "鏃堕棿")
+    private String timeData;
+
+    @ApiModelProperty(value = "鑳借��")
+    private BigDecimal energy;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/FightingAdminBoardVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/FightingAdminBoardVO.java
new file mode 100644
index 0000000..77b5a38
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/FightingAdminBoardVO.java
@@ -0,0 +1,59 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 娑堥槻绠℃帶澶у睆
+ *
+ * @Author : Rk
+ * @create 2024/10/25 13:53
+ */
+@Data
+public class FightingAdminBoardVO {
+
+
+    @ApiModelProperty(value = "鍦ㄧ嚎璁惧鏁伴噺")
+    private Integer onlineDeviceNum;
+
+    @ApiModelProperty(value = "鎶ヨ璁惧鏁伴噺")
+    private Integer alarmDeviceNum;
+
+    @ApiModelProperty(value = "鏁呴殰璁惧鏁伴噺")
+    private Integer errDeviceNum;
+
+    @ApiModelProperty(value = "绂荤嚎璁惧鏁伴噺")
+    private Integer offlineDeviceNum;
+
+    @ApiModelProperty(value = "灞忚斀璁惧鏁伴噺")
+    private Integer shieldDeviceNum;
+
+    @ApiModelProperty(value = "鎻愭姤闅愭偅鏁伴噺")
+    private Integer todayDangerNum;
+
+    @ApiModelProperty(value = "澶勭悊闅愭偅鏁伴噺")
+    private Integer dealDangerNum;
+
+    @ApiModelProperty(value = "浠婃棩鍚勭郴缁熻澶囩姸鎬佸強鍛婅鏁伴噺" , hidden = true)
+    private List<DeviceAlarmDataVO> deviceAlarmDataList;
+
+    @ApiModelProperty(value = "鎶ヨ淇℃伅" , hidden = true)
+    private AlarmDataVO alarmData;
+
+    @ApiModelProperty(value = "鍛婅澶勭悊鍒嗘瀽" , hidden = true)
+    private List<AlarmHandleDataVO> alarmHandleDataList;
+
+    //TODO 娓╁害浼犳劅鍣�
+
+    //TODO 婀垮害浼犳劅鍣�
+
+    @ApiModelProperty(value = "鏈勾娑堥槻璁惧/璁炬柦缁存姢鎯呭喌" , hidden = true)
+    private YearDeviceDataVO yearDeviceData;
+
+
+    //TODO 鍛婅淇℃伅
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/GeneralVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/GeneralVO.java
new file mode 100644
index 0000000..fbeb41b
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/GeneralVO.java
@@ -0,0 +1,23 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 閫氱敤
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class GeneralVO {
+
+    @ApiModelProperty(value = "鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "鏁伴噺")
+    private BigDecimal num;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/JobDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/JobDataVO.java
new file mode 100644
index 0000000..b7bee1f
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/JobDataVO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 褰撴棩浠诲姟淇℃伅
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class JobDataVO {
+
+    @ApiModelProperty(value = "褰撴棩浠诲姟鎬婚噺 涓囨敮")
+    private BigDecimal planTaskNum;
+
+    @ApiModelProperty(value = "褰撴棩瀹屾垚浠诲姟鎬婚噺 涓囨敮")
+    private BigDecimal finishTaskNum;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OilDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OilDataVO.java
new file mode 100644
index 0000000..14c035b
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OilDataVO.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/25 16:31
+ */
+@Data
+public class OilDataVO {
+
+    @ApiModelProperty(value = "鏈�楂樻补鑰�")
+    private BigDecimal maxOil;
+
+    @ApiModelProperty(value = "娌硅��")
+    private BigDecimal quantity;
+
+    @ApiModelProperty(value = "杞︾墝鐓�")
+    private String carNo;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OnSitDispatchBoardVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OnSitDispatchBoardVO.java
new file mode 100644
index 0000000..e374319
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OnSitDispatchBoardVO.java
@@ -0,0 +1,54 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 鍦哄唴璋冨害鐪嬫澘
+ *
+ * @Author : Rk
+ * @create 2024/10/25 9:54
+ */
+@Data
+public class OnSitDispatchBoardVO {
+
+    @ApiModelProperty(value = "鏈堝彴鏁伴噺")
+    private Integer platformTotal;
+
+    @ApiModelProperty(value = "绌洪棽鏈堝彴鏁伴噺")
+    private Integer freePlatform;
+
+    @ApiModelProperty(value = "棰勭害杞﹁締")
+    private Integer reservationCar;
+
+    @ApiModelProperty(value = "浣滀笟杞﹁締")
+    private Integer workingCar;
+
+    @ApiModelProperty(value = "鎺掗槦杞﹁締")
+    private Integer lineUpCar;
+
+    @ApiModelProperty(value = "浠婃棩鏈堝彴瀹屾垚璁㈠崟缁熻" , hidden = true)
+    private List<PlatformGroupFinishVO> platformGroupFinishList;
+
+    @ApiModelProperty(value = "浠婃棩鏈堝彴宸ヤ綔鏃堕暱瓒嬪娍" , hidden = true)
+    private List<PlatformDurationVO> platformDurationList;
+
+    @ApiModelProperty(value = "瀹炴椂浣滀笟鏁堢巼 - 鍏ュ簱" , hidden = true)
+    private List<WorkEfficiencyVO> workEfficiencyInList;
+
+    @ApiModelProperty(value = "瀹炴椂浣滀笟鏁堢巼 - 鍑哄簱" , hidden = true)
+    private List<WorkEfficiencyVO> workEfficiencyOutList;
+
+    @ApiModelProperty(value = "浠婃棩杞﹁締浣滀笟鎯呭喌" , hidden = true)
+    private CarWorkSituationVO carWorkSituation;
+
+    @ApiModelProperty(value = "瀹炴椂鏈堝彴浣滀笟淇℃伅" , hidden = true)
+    private List<PlatformWorkDataVO> platformWorkDataList;
+
+    //TODO 瀹炴椂鍛婅淇℃伅
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformDurationVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformDurationVO.java
new file mode 100644
index 0000000..ac1666e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformDurationVO.java
@@ -0,0 +1,31 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏈堝彴宸ヤ綔鏃堕暱瓒嬪娍
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class PlatformDurationVO {
+
+
+    @ApiModelProperty(value = "浣滀笟鏃堕暱淇℃伅  鍗曚綅鍒嗛挓")
+    private Integer workTotalTime;
+
+    @ApiModelProperty(value = "寮�鏀炬�绘椂闀� 鍗曚綅鍒嗛挓")
+    private Integer openTotalTime;
+
+    @ApiModelProperty(value = "鏈堝彴涓婚敭")
+    private Integer platformId;
+
+    @ApiModelProperty(value = "鏈堝彴鍚嶇О")
+    private String platformName;
+
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformGroupFinishVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformGroupFinishVO.java
new file mode 100644
index 0000000..c8fa25c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformGroupFinishVO.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 浠婃棩鏈堝彴瀹屾垚璁㈠崟缁熻
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class PlatformGroupFinishVO {
+
+
+    @ApiModelProperty(value = "瀹屾垚閲� 涓囨敮")
+    private Integer finishData;
+
+    @ApiModelProperty(value = "鏈堝彴涓婚敭")
+    private Integer platformId;
+
+    @ApiModelProperty(value = "鏈堝彴缁勫悕绉�")
+    private String platformGroupName;
+
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformJobRunBoardVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformJobRunBoardVO.java
new file mode 100644
index 0000000..31e7902
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformJobRunBoardVO.java
@@ -0,0 +1,75 @@
+package com.doumee.dao.web.response.platformReport;
+
+import com.doumee.dao.business.model.PlatformJob;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 鍥尯鐗╂祦杩愯璋冨害鐪嬫澘
+ *
+ * @Author : Rk
+ * @create 2024/10/25 9:54
+ */
+@Data
+public class PlatformJobRunBoardVO {
+
+    @ApiModelProperty(value = "绱鍑哄簱閲� - 鏈堝害")
+    private BigDecimal monthOutTotal;
+
+    @ApiModelProperty(value = "绱鍑哄簱閲忔湀搴� - 鍚屾瘮")
+    private BigDecimal monthOutTotalOnYear;
+
+    @ApiModelProperty(value = "绱鍑哄簱閲� - 骞村害")
+    private BigDecimal yearOutTotal;
+
+    @ApiModelProperty(value = "绱鍑哄簱閲忓勾搴� - 鍚屾瘮")
+    private BigDecimal yearOutTotalOnYear;
+
+    @ApiModelProperty(value = "绱鍑哄簱杞︽ - 鏈堝害")
+    private Integer monthOutTimes;
+
+    @ApiModelProperty(value = "绱鍑哄簱杞︽ - 骞村害")
+    private Integer yearOutTimes;
+
+    @ApiModelProperty(value = "浠婃棩鍑哄簱鏁堢巼")
+    private BigDecimal todayOutRata;
+
+    @ApiModelProperty(value = "鏈湀鍑哄簱鏁堢巼")
+    private BigDecimal monthOutRata;
+
+    @ApiModelProperty(value = "浠婃棩鍏ュ簱鏁堢巼")
+    private BigDecimal todayInRata;
+
+    @ApiModelProperty(value = "鏈湀鍏ュ簱鏁堢巼")
+    private BigDecimal monthInRata;
+
+    @ApiModelProperty(value = "杩愯緭浠诲姟鍒嗘瀽 - 7鏃�" , hidden = true)
+    private List<TransportMeasureVO> transportMeasureWeekList;
+
+    @ApiModelProperty(value = "杩愯緭浠诲姟鍒嗘瀽 - 鏈堝害", hidden = true)
+    private List<TransportMeasureVO> transportMeasureMonthList;
+
+    @ApiModelProperty(value = "杩愯緭浠诲姟鍒嗘瀽 - 骞村害", hidden = true)
+    private List<TransportMeasureVO> transportMeasureYearList;
+
+    @ApiModelProperty(value = "褰撴棩杩愯緭浠诲姟")
+    private List<PlatformJob> platformJobList;
+
+    @ApiModelProperty(value = "鍑哄簱浠诲姟")
+    private JobDataVO outJob;
+
+    @ApiModelProperty(value = "鍏ュ簱浠诲姟")
+    private JobDataVO inJob;
+
+    @ApiModelProperty(value = "浠婃棩鍏ュ簱閲忕粺璁�")
+    private List<GeneralVO> totalInList;
+
+    @ApiModelProperty(value = "搴撳瓨鎯呭喌")
+    private List<GeneralVO> stockList;
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java
new file mode 100644
index 0000000..49416df
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java
@@ -0,0 +1,39 @@
+package com.doumee.dao.web.response.platformReport;
+
+import com.doumee.dao.system.model.Notices;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 鏈堝彴褰撳墠浣滀笟鎯呭喌
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class PlatformWorkDataVO {
+
+    @ApiModelProperty(value = "鏈堝彴鍚嶇О")
+    private String platformName;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    private String carNo;
+
+    @ApiModelProperty(value = "浣滀笟閲�")
+    private Integer workNum;
+
+    @ApiModelProperty(value = "浣滀笟绫诲瀷:0=鍗歌揣锛�1=瑁呰揣")
+    private Integer workType;
+
+    @ApiModelProperty(value = "浣滀笟鏃堕暱 鍗曚綅 鍒嗛挓")
+    private Integer workTime;
+
+    @ApiModelProperty(value = "棰勮瀹屾垚鏃堕棿 鍗曚綅锛氭椂闂存埑")
+    private Long finishTime;
+
+    @ApiModelProperty(value = "鏈堝彴鐘舵�侊細0=浣滀笟涓紱1=绌洪棽涓紱2=浣滀笟瓒呮椂")
+    private Integer status;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SalesOperationVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SalesOperationVO.java
new file mode 100644
index 0000000..6590352
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SalesOperationVO.java
@@ -0,0 +1,29 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 杩涢攢瀛樺簱瀛�
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class SalesOperationVO {
+
+    @ApiModelProperty(value = "鏃ユ湡")
+    private String dateStr;
+
+    @ApiModelProperty(value = "鎬诲叆搴撴暟 涓囨敮")
+    private BigDecimal totalInNum;
+
+    @ApiModelProperty(value = "鎬诲嚭搴撴暟 涓囨敮")
+    private BigDecimal totalOutNum;
+
+    @ApiModelProperty(value = "搴撳瓨鍊� 涓囨敮")
+    private BigDecimal stockNum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java
new file mode 100644
index 0000000..2cbd492
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java
@@ -0,0 +1,73 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 瀹夐槻绠℃帶澶у睆
+ *
+ * @Author : Rk
+ * @create 2024/10/25 13:53
+ */
+@Data
+public class SecurityBoardVO {
+
+
+    @ApiModelProperty(value = "鎬昏溅浣嶆暟閲�")
+    private Integer parkingLotTotal;
+
+    @ApiModelProperty(value = "鍓╀綑杞︿綅鏁伴噺")
+    private Integer freeParkingLot;
+
+    @ApiModelProperty(value = "鍛樺伐杞﹁締")
+    private Integer internalCarTotal;
+
+    @ApiModelProperty(value = "鐩稿叧鏂硅溅杈�")
+    private Integer relatedCarTotal;
+
+    @ApiModelProperty(value = "璁垮杞﹁締")
+    private Integer visitCarTotal;
+
+    @ApiModelProperty(value = "褰撳墠鍦ㄥ洯浜烘暟")
+    private Integer inParkTotal;
+
+    @ApiModelProperty(value = "鍦ㄥ洯鍐呴儴浜哄憳鏁伴噺")
+    private Integer internalTotal;
+
+    @ApiModelProperty(value = "鍦ㄥ洯鐩稿叧鏂规暟閲�")
+    private Integer relatedTotal;
+
+    @ApiModelProperty(value = "鍦ㄥ洯璁垮鏁伴噺")
+    private Integer visitTotal;
+
+    @ApiModelProperty(value = "褰撳墠鍦ㄥ洯杞﹁締鎬绘暟")
+    private Integer inParkCarTotal;
+
+    @ApiModelProperty(value = "褰撳墠璁惧鎬绘暟")
+    private Integer deviceTotal;
+
+    @ApiModelProperty(value = "褰撳墠鎶ヨ鎬绘暟")
+    private Integer errTotal;
+
+    @ApiModelProperty(value = "鍐呰繍杞︼紙瀹夋嘲鑷湁杞︼級")
+    private Integer internalJobCarTotal;
+
+    @ApiModelProperty(value = "澶栧崗杩愯緭杞﹁締")
+    private Integer relatedJobCarTotal;
+
+    @ApiModelProperty(value = "甯傚叕鍙歌溅杈�")
+    private Integer visitJobCarTotal;
+
+    //TODO 瀹夐槻鍛婅
+
+    @ApiModelProperty(value = "鍥尯瀹夐槻璁惧", hidden = true)
+    private List<SecurityDeviceDataVO> securityDeviceDataList;
+
+    @ApiModelProperty(value = "璁垮婊炵暀鎯呭喌", hidden = true)
+    private List<VisitRetentionDataVO> visitRetentionDataList;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityDeviceDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityDeviceDataVO.java
new file mode 100644
index 0000000..b179b33
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityDeviceDataVO.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍥尯瀹夐槻璁惧
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class SecurityDeviceDataVO {
+
+    @ApiModelProperty(value = "璁惧绫诲瀷")
+    private String deviceType;
+
+    @ApiModelProperty(value = "鎬绘暟")
+    private Integer totalNum;
+
+    @ApiModelProperty(value = "鍦ㄧ嚎鏁伴噺")
+    private Integer onlineNum;
+
+    @ApiModelProperty(value = "绂荤嚎鏁伴噺")
+    private Integer offlineDeviceNum;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/StockRataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/StockRataVO.java
new file mode 100644
index 0000000..04b15d9
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/StockRataVO.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 搴撳瓨鍒╃敤鐜�
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class StockRataVO {
+    @ApiModelProperty(value = "鍦扮偣")
+    private String placeName;
+
+    @ApiModelProperty(value = "鎬诲簱鏁� 涓囨敮")
+    private BigDecimal totalStockNum;
+
+    @ApiModelProperty(value = "褰撳墠搴撴暟 涓囨敮")
+    private BigDecimal nowStockNum;
+
+    @ApiModelProperty(value = "搴撳瓨鍒╃敤鐜� 涓囨敮")
+    private BigDecimal stockRataNum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportMeasureVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportMeasureVO.java
new file mode 100644
index 0000000..49d793c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportMeasureVO.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 杩愯緭閲�
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class TransportMeasureVO {
+
+    @ApiModelProperty(value = "璁″垝浠诲姟閲� 涓囨敮")
+    private BigDecimal planTaskNum;
+
+    @ApiModelProperty(value = "浠诲姟瀹屾垚閲� 涓囨敮")
+    private BigDecimal finishTaskNum;
+
+    @ApiModelProperty(value = "璁″垝浠诲姟鏁�")
+    private String planTimes;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportTaskVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportTaskVO.java
new file mode 100644
index 0000000..56de61b
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportTaskVO.java
@@ -0,0 +1,30 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 杩愯緭浠诲姟
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class TransportTaskVO {
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    private String carNo;
+
+    @ApiModelProperty(value = "鐘舵��")
+    private String statusStr;
+
+    @ApiModelProperty(value = "浣嶇疆")
+    private String address;
+
+    @ApiModelProperty(value = "浠诲姟涓嬭揪鏃堕棿")
+    private Date taskDate;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java
new file mode 100644
index 0000000..f235177
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璁垮婊炵暀淇℃伅
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class VisitRetentionDataVO {
+
+    @ApiModelProperty(value = "璁垮濮撳悕")
+    private String name;
+
+    @ApiModelProperty(value = "鎷滆閮ㄩ棬")
+    private String companyName;
+
+    @ApiModelProperty(value = "瓒呮椂鏃堕暱 鍗曚綅锛氬垎閽�")
+    private Long timeOutMinute;
+
+}
\ No newline at end of file
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WholeProvinceBoardVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WholeProvinceBoardVO.java
new file mode 100644
index 0000000..778c88e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WholeProvinceBoardVO.java
@@ -0,0 +1,84 @@
+package com.doumee.dao.web.response.platformReport;
+
+import com.doumee.dao.business.model.PlatformJob;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 鍏ㄧ渷涓�搴撳埗绠$悊鐪嬫澘
+ *
+ * @Author : Rk
+ * @create 2024/10/25 9:54
+ */
+@Data
+public class WholeProvinceBoardVO {
+
+    @ApiModelProperty(value = "绱鍑哄簱閲�  - 骞村害")
+    private BigDecimal yearOutTotal;
+
+    @ApiModelProperty(value = "绱鍑哄簱閲�  - 骞村害鍚屾瘮")
+    private BigDecimal yearOutTotalOnYear;
+
+    @ApiModelProperty(value = "绱鍑哄簱杞︽ - 骞村害")
+    private Integer yearOutTimes;
+
+    @ApiModelProperty(value = "鐪佸唴鍗犳瘮")
+    private BigDecimal yearProvinceRata;
+
+
+    @ApiModelProperty(value = "绱鍏ュ簱閲�  - 骞村害")
+    private BigDecimal yearInTotal;
+
+    @ApiModelProperty(value = "绱鍏ュ簱閲�  - 骞村害鍚屾瘮")
+    private BigDecimal yearInTotalOnYear;
+
+    @ApiModelProperty(value = "绱鍏ュ簱杞︽ - 骞村害")
+    private Integer yearInTimes;
+
+    @ApiModelProperty(value = "璁″垝鍏ュ簱閲� - 骞村害")
+    private BigDecimal yearInPlanTotal;
+
+
+
+    @ApiModelProperty(value = "浠婃棩璁″垝鍑哄簱閲�")
+    private BigDecimal outPlanTotal;
+
+    @ApiModelProperty(value = "浠婃棩璁″垝鍑哄簱娆℃暟")
+    private Integer outPlanTimes;
+
+    @ApiModelProperty(value = "浠婃棩鍑哄簱閲�")
+    private BigDecimal outTotal;
+
+    @ApiModelProperty(value = "浠婃棩鍑哄簱娆℃暟")
+    private Integer outTimes;
+
+    @ApiModelProperty(value = "鍑哄簱鑳藉姏鍗犳瘮")
+    private BigDecimal outRata;
+
+    @ApiModelProperty(value = "杩戜竷鏃ュ埌璐ф儏鍐�" , hidden = true)
+    private List<ArriveGoodsVO> arriveGoodsList;
+
+    @ApiModelProperty(value = "褰撳墠杩愯緭浠诲姟" , hidden = true)
+    private List<TransportTaskVO> transportTaskList;
+
+
+    @ApiModelProperty(value = "杩涢攢瀛樿繍钀� - 7鏃�" , hidden = true)
+    private List<SalesOperationVO> salesOperationWeekList;
+
+    @ApiModelProperty(value = "杩涢攢瀛樿繍钀� - 鏈堝害" , hidden = true)
+    private List<SalesOperationVO> salesOperationMonthList;
+
+    @ApiModelProperty(value = "杩涢攢瀛樿繍钀� - 骞村害" , hidden = true)
+    private List<SalesOperationVO> salesOperationYearList;
+
+    @ApiModelProperty(value = "搴撳瓨鍒╃敤鐜�" , hidden = true)
+    private List<StockRataVO> stockRataVOListList;
+
+
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WorkEfficiencyVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WorkEfficiencyVO.java
new file mode 100644
index 0000000..8a07d08
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WorkEfficiencyVO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 瀹炴椂浣滀笟鏁堢巼
+ *
+ * @Author : Rk
+ * @create 2024/10/25 10:59
+ */
+@Data
+public class WorkEfficiencyVO {
+
+    @ApiModelProperty(value = "浣滀笟鏃舵鏃堕棿 HH-mm  ")
+    private String workTime;
+
+    @ApiModelProperty(value = "鍒嗘椂浣滀笟閲� 鍗曚綅 涓囨敮")
+    private Integer workNum;
+
+    @ApiModelProperty(value = "绱浣滀笟閲� 鍗曚綅 涓囨敮")
+    private Integer totalWorkNum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/YearDeviceDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/YearDeviceDataVO.java
new file mode 100644
index 0000000..04a7a8c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/YearDeviceDataVO.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.web.response.platformReport;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏈勾娑堥槻璁惧/璁炬柦缁存姢鎯呭喌
+ *
+ * @Author : Rk
+ * @create 2024/10/25 14:26
+ */
+@Data
+public class YearDeviceDataVO {
+
+
+    @ApiModelProperty(value = "宸茬淮淇濇暟閲�")
+    private Integer protectNum;
+
+    @ApiModelProperty(value = "璁″垝缁翠繚鏁�")
+    private Integer planProtectTotal;
+
+    @ApiModelProperty(value = "鏈湀鏂板缁翠繚")
+    private Integer monthAddNum;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java
index c04968b..ddb2af4 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java
@@ -96,4 +96,5 @@
      * @return long
      */
     long count(SmsEmail smsEmail);
+
 }
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 7f493e7..b0ed16f 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
@@ -17,6 +17,7 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.dto.ApproveDTO;
 import com.doumee.dao.business.join.ApproveJoinMapper;
 import com.doumee.dao.business.join.CarUseBookJoinMapper;
@@ -40,7 +41,6 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
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
index 1ba80f2..f62e20f 100644
--- 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
@@ -8,13 +8,14 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.*;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.join.ApproveJoinMapper;
 import com.doumee.dao.business.join.CarUseBookJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.ApproveDataVO;
 import com.doumee.dao.business.vo.DateIntervalVO;
+
 import com.doumee.dao.system.model.SystemDictData;
-import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.ApproveService;
 import com.doumee.service.business.CarUseBookService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -23,7 +24,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.service.business.third.EmayService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -33,10 +33,8 @@
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.Date;
-import java.util.stream.Collectors;
 
 /**
  * 杞﹁締_鐢ㄨ溅鐢宠淇℃伅琛⊿ervice瀹炵幇
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
index a79a985..ea21e28 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -355,8 +355,111 @@
 
     @Override
     public List<Company> findList(Company company) {
-        QueryWrapper<Company> wrapper = new QueryWrapper<>(company);
-        return companyMapper.selectList(wrapper);
+        MPJLambdaWrapper<Company> queryWrapper = new MPJLambdaWrapper<>();
+        company.setIsdeleted(Constants.ZERO);
+        if (company.getId() != null) {
+            queryWrapper.eq(Company::getId, company.getId());
+        }
+        if (company.getCreator() != null) {
+            queryWrapper.eq(Company::getCreator, company.getCreator());
+        }
+        if (company.getCreateDate() != null) {
+            queryWrapper.ge(Company::getCreateDate, Utils.Date.getStart(company.getCreateDate()));
+            queryWrapper.le(Company::getCreateDate, Utils.Date.getEnd(company.getCreateDate()));
+        }
+        if (company.getEditor() != null) {
+            queryWrapper.eq(Company::getEditor, company.getEditor());
+        }
+        if (company.getEditDate() != null) {
+            queryWrapper.ge(Company::getEditDate, Utils.Date.getStart(company.getEditDate()));
+            queryWrapper.le(Company::getEditDate, Utils.Date.getEnd(company.getEditDate()));
+        }
+        if (company.getIsdeleted() != null) {
+            queryWrapper.eq(Company::getIsdeleted, company.getIsdeleted());
+        }
+        if (company.getName() != null) {
+            queryWrapper.like(Company::getName, company.getName());
+        }
+        if (company.getRemark() != null) {
+            queryWrapper.eq(Company::getRemark, company.getRemark());
+        }
+        if (company.getStatus() != null) {
+            queryWrapper.eq(Company::getStatus, company.getStatus());
+        }
+        if (company.getSortnum() != null) {
+            queryWrapper.eq(Company::getSortnum, company.getSortnum());
+        }
+        if (company.getImgurl() != null) {
+            queryWrapper.eq(Company::getImgurl, company.getImgurl());
+        }
+        if (company.getType() != null) {
+            queryWrapper.eq(Company::getType, company.getType());
+        }
+        if (company.getCategoryId() != null) {
+            queryWrapper.eq(Company::getCategoryId, company.getCategoryId());
+        }
+        if (company.getCode() != null) {
+            queryWrapper.eq(Company::getCode, company.getCode());
+        }
+        if (company.getParentId() != null) {
+            queryWrapper.eq(Company::getParentId, company.getParentId());
+        }
+        if (company.getLinkName() != null) {
+            queryWrapper.eq(Company::getLinkName, company.getLinkName());
+        }
+        if (company.getLinkPhone() != null) {
+            queryWrapper.eq(Company::getLinkPhone, company.getLinkPhone());
+        }
+        if (company.getHkId() != null) {
+            queryWrapper.eq(Company::getHkId, company.getHkId());
+        }
+        if (company.getHkStatus() != null) {
+            queryWrapper.eq(Company::getHkStatus, company.getHkStatus());
+        }
+        if (company.getHkDate() != null) {
+            queryWrapper.ge(Company::getHkDate, Utils.Date.getStart(company.getHkDate()));
+            queryWrapper.le(Company::getHkDate, Utils.Date.getEnd(company.getHkDate()));
+        }
+        if (company.getErpId() != null) {
+            queryWrapper.eq(Company::getErpId, company.getErpId());
+        }
+        if (company.getErpDate() != null) {
+            queryWrapper.ge(Company::getErpDate, Utils.Date.getStart(company.getErpDate()));
+            queryWrapper.le(Company::getErpDate, Utils.Date.getEnd(company.getErpDate()));
+        }
+        if (company.getErpStatus() != null) {
+            queryWrapper.eq(Company::getErpStatus, company.getErpStatus());
+        }
+        if (company.getDdId() != null) {
+            queryWrapper.eq(Company::getDdId, company.getDdId());
+        }
+        if (company.getDdDate() != null) {
+            queryWrapper.ge(Company::getDdDate, Utils.Date.getStart(company.getDdDate()));
+            queryWrapper.le(Company::getDdDate, Utils.Date.getEnd(company.getDdDate()));
+        }
+        if (company.getDdStatus() != null) {
+            queryWrapper.eq(Company::getDdStatus, company.getDdStatus());
+        }
+        if (company.getFsId() != null) {
+            queryWrapper.eq(Company::getFsId, company.getFsId());
+        }
+        if (company.getFsStatus() != null) {
+            queryWrapper.eq(Company::getFsStatus, company.getFsStatus());
+        }
+        if (company.getFsDate() != null) {
+            queryWrapper.ge(Company::getFsDate, Utils.Date.getStart(company.getFsDate()));
+            queryWrapper.le(Company::getFsDate, Utils.Date.getEnd(company.getFsDate()));
+        }
+        queryWrapper.orderByDesc(Company::getCreateDate);
+        queryWrapper.leftJoin(Company.class,Company::getId,Company::getParentId);
+        queryWrapper.select(" t.* ")
+                .select("(select count(m.id) from member m where m.COMPANY_ID=t.id and m.ISDELETED=0) as countNum") ;
+        queryWrapper.select("t1.name",Company::getParentName);
+        queryWrapper.select("t1.company_path",Company::getParentCompanyPath);
+        queryWrapper.eq(Objects.nonNull(company.getStatus()),Company::getStatus,Constants.ZERO);
+        queryWrapper.like(StringUtils.isNotBlank(company.getName()),Company::getName,company.getName());
+        queryWrapper.like(StringUtils.isNotBlank(company.getParentName()),"c.name",company.getParentName());
+        return companyMapper.selectList(queryWrapper);
     }
 
     @Override
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
index 0fc9114..29c0893 100644
--- 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
@@ -1,30 +1,23 @@
 package com.doumee.service.business.impl;
 
-import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
-import com.doumee.core.utils.SmsConstants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.HiddenDangerParamMapper;
 import com.doumee.dao.business.MemberMapper;
-import com.doumee.dao.business.SmsConfigMapper;
-import com.doumee.dao.business.SmsEmailMapper;
 import com.doumee.dao.business.model.*;
 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 com.doumee.service.business.third.EmayService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
-import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -67,7 +60,7 @@
                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝瀹夊叏鍛樹俊鎭笉姝g‘锛岃鎸夎姹傚~鍐欏唴瀹癸紒");
             }
            List<Member>  memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
-                    .eq(Member::getType,Constants.TWO)
+//                    .eq(Member::getType,Constants.TWO)
                     .eq(Member::getCompanyId,model.getCompanyId())
                     .in(Member::getId,ids)
                     .eq(Member::getIsdeleted,Constants.ZERO));
@@ -227,6 +220,7 @@
                 .eq(pageWrap.getModel().getEditor() != null, HiddenDangerParam::getEditor, pageWrap.getModel().getEditor())
                 .eq(pageWrap.getModel().getIsdeleted() != null, HiddenDangerParam::getIsdeleted, pageWrap.getModel().getIsdeleted())
                 .like(pageWrap.getModel().getName() != null, HiddenDangerParam::getName, pageWrap.getModel().getName())
+                .like(pageWrap.getModel().getCompanyName() != null, Company::getName, pageWrap.getModel().getCompanyName())
                 .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())
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
index 8c93aed..4383839 100644
--- 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
@@ -16,20 +16,19 @@
 import com.doumee.core.utils.SmsConstants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.system.MultifileMapper;
+
 import com.doumee.dao.system.join.NoticesJoinMapper;
 import com.doumee.dao.system.model.Multifile;
 import com.doumee.dao.system.model.Notices;
-import com.doumee.service.business.HiddenDangerLogService;
 import com.doumee.service.business.HiddenDangerService;
 import com.doumee.service.business.third.EmayService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
-import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index b87cef9..fcc146f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1125,6 +1125,7 @@
                 .selectAs(Company::getName,Member::getCompanyName) ;
         queryWrapper.selectAs(Position::getName,Member::getPositionName);
         queryWrapper.leftJoin(Position.class,Position::getId,Member::getPositionId);
+        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
         if(StringUtils.isNotBlank(member.getName())){
             queryWrapper.like(Member::getName,member.getName());
         }
@@ -1139,6 +1140,12 @@
         }
         if(null != member.getCompanyId()) {
             queryWrapper.eq(Member::getCompanyId,member.getCompanyId());
+        }
+        if(null != member.getQuerySpecial() && Constants.equalsInteger(member.getQuerySpecial(),Constants.ONE)){
+            String companySpecialId = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SPECIAL_COMPANY_ID).getCode();
+            if(StringUtils.isNotBlank(companySpecialId)){
+                queryWrapper.apply(" find_in_set('"+companySpecialId+"',REPLACE(t2.company_path,'/','')) ");
+            }
         }
         queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
         queryWrapper.eq(Member::getWorkStatus,Constants.ZERO);
@@ -1375,6 +1382,8 @@
         queryWrapper.selectAs(Company::getCompanyNamePath,Member::getCompanyNamePath);
         queryWrapper.selectAs(Company::getCompanyPath,Member::getCompanyPath);
         queryWrapper.select(" ( select count(1) from member_card mc where mc.isdeleted = 0 and  mc.member_id = t.id ) as  memberCardCount ");
+        queryWrapper.select(" ( select max(tt.END_TIME) from train_time tt where tt.isdeleted = 0 and  tt.member_id = t.id ) as  trainEndTime ");
+
         queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Member::getEditor);
         queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
         queryWrapper.selectAs(Position::getName,Member::getPositionName);
@@ -1629,9 +1638,11 @@
         }catch (Exception e){
 
         }
-        List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>()
-                .lambda().eq(Member::getIsdeleted,Constants.ZERO)
-                .eq(Member::getType,Constants.memberType.internal)
+        List<Member> memberList = memberJoinMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
+                .selectAll(Member.class)
+                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
+                .eq(Member::getIsdeleted,Constants.ZERO)
+                .eq(Company::getType,Constants.ZERO)
                 .eq(Member::getStatus,Constants.ZERO)
                 .isNotNull(Member::getHkId)
                 .apply("to_days(LAST_VISIT_DATE)+ "+days+" < to_days(now())" ));
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 a5a659b..9f757c2 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
@@ -1,7 +1,5 @@
 package com.doumee.service.business.impl;
 
-import cn.emay.sdk.util.StringUtil;
-import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
@@ -13,11 +11,12 @@
 import com.doumee.core.utils.SmsConstants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.join.ApproveJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.ApproveDataVO;
+
 import com.doumee.dao.system.join.NoticesJoinMapper;
-import com.doumee.dao.web.reqeust.ConfirmTaskDTO;
 import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO;
 import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO;
 import com.doumee.dao.web.reqeust.RevokeDTO;
@@ -29,7 +28,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.service.business.third.EmayService;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.tomcat.util.bcel.Const;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
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
index 6f5dc78..e817a2a 100644
--- 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
@@ -304,18 +304,6 @@
                 platformWorkVO.setCallNum(
                         platformJobs.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),platform.getId())  && Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())).collect(Collectors.toList()).size()
                 );
-                System.out.printf(String.valueOf(platformJobs.stream().filter(i->
-                        Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
-                ).collect(Collectors.toList()).size())
-                );
-                System.out.printf(String.valueOf(platformJobList.stream().filter(i->
-                                Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey()) ||
-                                        ( Constants.equalsInteger(platform.getId(),i.getPlatformId()) &&
-                                                Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.TRANSFERING.getKey())
-                                        )
-                        ).collect(Collectors.toList()).size())
-                );
-
                 platformWorkVO.setWaitNum(
 
                         platformJobs.stream().filter(i->
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 a708a19..0145eaa 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
@@ -18,12 +18,14 @@
 import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
 import com.doumee.core.utils.*;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.join.PlatformJobJoinMapper;
 import com.doumee.dao.business.join.PlatformJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.LargeScreenDataVO;
 import com.doumee.dao.openapi.request.*;
 import com.doumee.dao.openapi.response.*;
+
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.dao.web.reqeust.*;
 import com.doumee.dao.web.response.DriverHomeVO;
@@ -35,10 +37,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.service.business.impl.hksync.HkSyncPushServiceImpl;
-import com.doumee.service.business.impl.thrid.WmsServiceImpl;
 import com.doumee.service.business.third.EmayService;
 import com.doumee.service.business.third.TmsService;
-import com.doumee.service.business.third.WmsService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -418,22 +418,28 @@
 
     public void queryWaitNum(PlatformJob platformJob){
         if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
-            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
-            List<PlatformJob> lineUpNum =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
+            //鏌ヨ褰撳墠鎵�鏈夋帓闃熸暟閲�
+            List<PlatformJob> lineUpAllList =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
                     .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                     .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
                             ,Constants.PlatformJobStatus.IN_WAIT.getKey()
                             ,Constants.PlatformJobStatus.TRANSFERING.getKey())
-                    .gt(PlatformJob::getSignDate,platformJob.getSignDate())
+//                    .lt(PlatformJob::getSignDate,platformJob.getSignDate())
                     .eq(PlatformJob::getPlatformGroupId,platformJob.getPlatformGroupId())
-                    .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(platformJob.getArriveDate(),"yyyy-MM-dd")));
-            platformJob.setLineUpNum(lineUpNum.size());
-            BigDecimal sumWorkRate = platformJob.getTotalNum();
-            for (PlatformJob linePlatformJob:lineUpNum) {
+//                    .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(platformJob.getArriveDate(),"yyyy-MM-dd"))
+            );
+
+            for (PlatformJob linePlatformJob:lineUpAllList) {
                 this.getWmsJobData(linePlatformJob);
-                sumWorkRate = sumWorkRate.add(linePlatformJob.getTotalNum());
             }
-            if(lineUpNum.size()>Constants.ZERO){
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(lineUpAllList)){
+                //鏌ヨ鎺掗槦鍦ㄦ垜鍓嶉潰鐨勬暟鎹�
+                List<PlatformJob> lineUpNum = lineUpAllList.stream().filter(i->Objects.nonNull(i.getSignDate())&&i.getSignDate().getTime()<platformJob.getSignDate().getTime()).collect(Collectors.toList());
+                platformJob.setLineUpNum(lineUpNum.size());
+                BigDecimal sumWorkRate = platformJob.getTotalNum();
+                for (PlatformJob linePlatformJob:lineUpNum) {
+                    sumWorkRate = sumWorkRate.add(linePlatformJob.getTotalNum());
+                }
                 //璁$畻棰勮绛夊緟鏃堕棿
                 List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda().eq(Platform::getIsdeleted,Constants.ZERO).eq(Platform::getGroupId,platformJob.getPlatformGroupId()));
                 BigDecimal workRate = platformList.stream().map(m->m.getWorkRate()).reduce(BigDecimal.ZERO,BigDecimal::add);
@@ -497,7 +503,6 @@
                 .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                 .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                 .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
-//                .like(PlatformJob::getArriveDate,DateUtil.getCurrDate())
                 .orderByDesc(PlatformJob::getId)
         );
         for (PlatformJob platformJob:platformJobList) {
@@ -743,12 +748,12 @@
                             .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                             .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                             .eq(PlatformJob::getPlatformGroupId,platformGroup.getId())
-                            .le(Objects.nonNull(platformJob),PlatformJob::getSignDate,DateUtil.dateTypeToString(platformJob.getSignDate(),"yyyy-MM-dd HH:mm:ss"))
                             .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey(),
                                     Constants.PlatformJobStatus.IN_WAIT.getKey(),
                                     Constants.PlatformJobStatus.CALLED.getKey())
-                            .orderByDesc(PlatformJob::getStatus)
-                            .orderByDesc(PlatformJob::getSignDate));
+                            .orderByAsc(PlatformJob::getSignDate)
+                            .orderByAsc(PlatformJob::getSignNum)
+            );
             platformGroup.setSignJobList(platformJobSignInList);
             //鏌ヨ褰撳墠鏈堝彴缁勪笅
             List<PlatformJob> platformJobWorkList = platformJobJoinMapper.selectJoinList(PlatformJob.class,
@@ -1181,7 +1186,8 @@
                 SmsConstants.platformJobContent.platformJobMove,oldPlatform.getName(),platform.getName()
         );
 
-        platformJob.setPlatformName(platform.getName());
+        platformJob.setPlatformName(oldPlatform.getName());
+        platformJob.setPlatformId(oldPlatform.getId());
         this.broadcastAndLEed(platformJob, StringUtils.isBlank(oldPlatform.getLedContent())?Constants.PlatformLedContent.IDEL_CONTNET.getName():oldPlatform.getLedContent(),
                 null
         );
@@ -1391,8 +1397,6 @@
             //TODO 澶栧崗杞﹀嵏璐� 鎴栬�� 甯傚叕鍙歌溅鍗歌揣 鍒欐牴鎹换鍔℃儏鍐�
 
         }
-
-
 
 
         //鍙戦�佺煭淇′俊鎭�
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
index 1a0d1ad..b17522e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
@@ -119,10 +119,10 @@
                                     wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getLockStatus()
                             );
                         }
+                        wmsJobContractVO.setStatus(
+                                wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getStatus()
+                        );
                     }
-                    wmsJobContractVO.setStatus(
-                            wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getStatus()
-                    );
                 }
                 wmsJobContractVOList.add(wmsJobContractVO);
             }
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 c04756c..c453c2c 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
@@ -1,6 +1,7 @@
 package com.doumee.service.business.impl;
 
-import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -8,29 +9,27 @@
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
-import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.Constants;
-import com.doumee.core.utils.DateUtil;
-import com.doumee.core.utils.SmsConstants;
-import com.doumee.core.utils.Utils;
+import com.doumee.core.utils.*;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.service.business.SmsEmailService;
 import com.doumee.service.business.third.EmayService;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.Arrays;
+import java.net.URLEncoder;
+import java.util.*;
 import java.util.Date;
-import java.util.List;
-import java.util.Objects;
 
 /**
  * 鐭俊閭欢淇℃伅琛⊿ervice瀹炵幇
@@ -51,7 +50,7 @@
     @Value("${debug_model}")
     private boolean debugModel;
 
-    public static void isCaptcheValide(SmsEmailMapper smsEmailMapper, String phone, String captche) {
+    public static void isCaptcheValide(com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper, String phone, String captche) {
         SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda()
                 .eq(SmsEmail::getType, Constants.ZERO)
                 .eq(SmsEmail::getPhone, phone)
@@ -75,6 +74,8 @@
         model.setEditDate(new Date());
         smsEmailMapper.updateById(model);
     }
+
+
 
     @Override
     public Integer create(SmsEmail smsEmail) {
@@ -100,10 +101,11 @@
 
         String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode()+"楠岃瘉鐮佷负锛�"+code+"锛屾楠岃瘉鐮佹湁鏁堜负3鍒嗛挓銆傝鍕挎硠闇�";
 
-        boolean result=   emayService.sendSingleSms(smsEmail.getPhone(),content);
-        if(!result){
-            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐭俊楠岃瘉鐮佸彂閫佸け璐ワ紝璇风◢鍚庨噸璇曪紒");
-        }
+//        boolean result=   emayService.sendSingleSms(smsEmail.getPhone(),content);
+        emayService.sendSmsByHk(smsEmail.getPhone(),content);
+//        if(!result){
+//            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐭俊楠岃瘉鐮佸彂閫佸け璐ワ紝璇风◢鍚庨噸璇曪紒");
+//        }
 
         smsEmail.setRemark(code);
         smsEmail.setIsdeleted(Constants.ZERO);
@@ -265,7 +267,7 @@
      * @param msg
      * @param auditUser
      */
-    public static void sendVisitSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
+    public static void sendVisitSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                     VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){
         try{
             SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
@@ -319,8 +321,8 @@
      * @param msg
      * @param auditUser
      */
-    public static void sendVisitReportSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
-                                    VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){
+    public static void sendVisitReportSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
+                                          VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){
         try{
             SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
                     objCode).last(" limit 1 "));
@@ -373,8 +375,8 @@
      * @param objCode
      * @param auditUser
      */
-    public static void sendHiddenDangerSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
-                                    HiddenDangerMapper hiddenDangerMapper, Integer objId, String objCode,List<String> auditUser){
+    public static void sendHiddenDangerSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
+                                           HiddenDangerMapper hiddenDangerMapper, Integer objId, String objCode, List<String> auditUser){
         try{
             SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
                     objCode).last(" limit 1 "));
@@ -407,8 +409,8 @@
      * @param msg
      * @param userList
      */
-    public static void sendCarUseSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
-                                           CarUseBookMapper carUseBookMapper, Integer objId, String objCode, String msg, List<String> userList){
+    public static void sendCarUseSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
+                                     CarUseBookMapper carUseBookMapper, Integer objId, String objCode, String msg, List<String> userList){
         //鎮ㄦ湁涓�鏉°�愮敤杞︾敵璇枫�戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��
         try{
             SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
@@ -448,8 +450,8 @@
      * @param msg
      * @param auditUser
      */
-    public static void sendPlatformBookSms(SystemDictDataBiz systemDictDataBiz,EmayService emayService ,SmsEmailMapper smsEmailMapper ,SmsConfigMapper smsConfigMapper,
-            PlatformBooksMapper platformBooksMapper,Integer objId,String objCode,String msg,List<String> auditUser){
+    public static void sendPlatformBookSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
+                                           PlatformBooksMapper platformBooksMapper, Integer objId, String objCode, String msg, List<String> auditUser){
         try{
             SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
                     objCode).last(" limit 1 "));
@@ -493,8 +495,8 @@
      * @param objCode
      * @param platformName
      */
-    public static void sendPlatformJobSms(SystemDictDataBiz systemDictDataBiz,EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
-                                          PlatformJobMapper platformJobMapper, Integer objId, String objCode, String platformName,String newPlatformName){
+    public static void sendPlatformJobSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
+                                          PlatformJobMapper platformJobMapper, Integer objId, String objCode, String platformName, String newPlatformName){
         //platformJobNewJob	{杞︾墝鍙穧杞︿富鎮ㄥソ锛屾偍鏈変竴涓柊鐨勮繍杈撲换鍔★紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��
         //platformJobStopJob	{杞︾墝鍙穧杞︿富鎮ㄥソ锛屾偍鐨勮繍杈撲换鍔″凡琚彇娑堬紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��
         //platformJobCallIn	{杞︾墝鍙穧杞︿富鎮ㄥソ锛岃鍦�10鍒嗛挓鍐咃紝鍓嶅線鍥尯绛夊緟鍖虹瓑寰呭彨鍙蜂綔涓氥��
@@ -542,7 +544,8 @@
             smsEmail.setObjType(objType);
             smsEmail.setObjId(objId);
             smsEmailMapper.insert(smsEmail);
-            emayService.sendSingleSms(phone,content);
+            emayService.sendSmsByHk(phone,content);
+
 
         }
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 63e8713..188a1d8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -12,12 +12,10 @@
 import com.doumee.core.erp.model.openapi.response.erp.ApproveInfoResponse;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
-import com.doumee.core.haikang.model.param.BaseListPageResponse;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.FacePictureCheckRequest;
 import com.doumee.core.haikang.model.param.request.VisitAppointmentOutRequest;
 import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest;
-import com.doumee.core.haikang.model.param.respose.AscDeviceStatusInfoResponse;
 import com.doumee.core.haikang.model.param.respose.FacePictureCheckResponse;
 import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse;
 import com.doumee.core.haikang.service.HKService;
@@ -30,12 +28,13 @@
 import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.dto.ResetPasswordDTO;
 import com.doumee.dao.business.join.DeviceJoinMapper;
 import com.doumee.dao.business.join.VisitsJoinMapper;
 import com.doumee.dao.business.model.*;
+
 import com.doumee.dao.system.SystemUserMapper;
-import com.doumee.dao.system.dto.NoticesDTO;
 import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
 import com.doumee.dao.system.join.NoticesJoinMapper;
 import com.doumee.dao.system.model.Notices;
@@ -58,23 +57,13 @@
 import com.doumee.service.business.third.EmayService;
 import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-import sun.misc.BASE64Encoder;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.*;
 import java.util.Date;
 import java.util.stream.Collectors;
@@ -1551,7 +1540,7 @@
 
             //浠婃棩鍦ㄥ洯浜烘暟
             pcWorkPlatformDataVO.setTodayInParkUserNum(
-                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).count()
+                    retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count()
             );
 
             pcWorkPlatformDataVO.setTodayInUserNum(Constants.ZERO);
@@ -1567,7 +1556,7 @@
 
             //鍦ㄥ洯璁垮鏁伴噺
             pcWorkPlatformDataVO.setInParkVisitUserNum(
-                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)&&Objects.isNull(i.getCompanyType())).count()
+                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count()
             );
             pcWorkPlatformDataVO.setVisitUserNum(Constants.ZERO);
             pcWorkPlatformDataVO.setSignLevelNum(Constants.ZERO);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
index ec7fc9d..8e507e5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
@@ -20,14 +21,15 @@
 import com.doumee.dao.business.model.Platform;
 import com.doumee.dao.business.model.PlatformDevice;
 import com.doumee.dao.business.model.PlatformJob;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 璁惧淇℃伅琛⊿ervice瀹炵幇
@@ -42,6 +44,10 @@
     private PlatformJobMapper platformJobMapper;
     @Autowired
     private PlatformDeviceMapper platformDeviceMapper;
+    @Autowired
+    @Lazy
+    private SystemDictDataBiz systemDictDataBiz;
+
 
     /**
      * 鍚屾娴峰悍鏈堝彴鏁版嵁
@@ -276,4 +282,46 @@
         return  true;
     }
 
+
+
+    public  List<Integer> getMenuConfig(String userId){
+        try {
+            List<Integer> resultList= new ArrayList<>();
+            Map<String,String> param = new HashMap<>();
+            param.put("userId",userId);
+            BaseResponse<MenuDataResponse> result = HKService.getMenuConfig(param);
+            if(result !=null){
+                if(!StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
+                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),result.getMsg());
+                }
+                MenuDataResponse menuDataResponse = result.getData();
+                List<String> list = menuDataResponse.getList();
+                if(CollectionUtils.isNotEmpty(list)){
+                    //鍒嗗埆鍒ゆ柇4涓彍鍗�
+                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.afzx)).collect(Collectors.toList()).size()>Constants.ZERO){
+                        resultList.add(0);
+                    }
+                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.xkzx)).collect(Collectors.toList()).size()>Constants.ZERO){
+                        resultList.add(1);
+                    }
+                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.ngzx)).collect(Collectors.toList()).size()>Constants.ZERO){
+                        resultList.add(2);
+                    }
+                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.jsc)).collect(Collectors.toList()).size()>Constants.ZERO){
+                        resultList.add(3);
+                    }
+                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.kqgzt)).collect(Collectors.toList()).size()>Constants.ZERO){
+                        resultList.add(4);
+                    }
+                }
+                return resultList;
+            }else{
+                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鑾峰彇鑿滃崟澶辫触锛�");
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鑾峰彇鑿滃崟澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+    }
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index 23383bc..98a540a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -27,6 +27,12 @@
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
 import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -34,6 +40,7 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -88,6 +95,13 @@
     private PlatformLogMapper platformLogMapper;
     @Autowired
     private PlatformWarnEventServiceImpl platformWarnEventService;
+
+
+
+
+
+
+
     /**
      * 娴峰悍闂ㄧ浜嬩欢鎺ㄩ��
      * @param param
@@ -840,10 +854,8 @@
                                     Constants.PlatformJobStatus.IN_WAIT.getKey(),
                                     Constants.PlatformJobStatus.CALLED.getKey(),
                                     Constants.PlatformJobStatus.WORKING.getKey(),
-                                    Constants.PlatformJobStatus.DONE.getKey(),
                                     Constants.PlatformJobStatus.TRANSFERING.getKey(),
-                                    Constants.PlatformJobStatus.EXCEPTION.getKey(),
-                                    Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
+                                    Constants.PlatformJobStatus.EXCEPTION.getKey()
                             )
                     )==Constants.ZERO){
                         PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
@@ -1263,12 +1275,12 @@
             if(StringUtils.isBlank(device.getHkId())){
                 continue;
             }
-            if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
+            /*if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
                 //濡傛灉鏄疞ED
                 PlatformBroadcastLog log = dealLedContentBiz(model.getId(),device.getHkNo(),device.getName(),content,speed,1);
                 logList.add(log);
                 ledList.add(device.getHkId());
-            }else  if(Constants.equalsInteger(device.getType(),Constants.TWO)){
+            }else  */if(Constants.equalsInteger(device.getType(),Constants.TWO)){
                 //濡傛灉鏄箍鎾偣
                 bNames += device.getName()+";";
                 broadcastList.add(device.getHkId());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
index 27e8c56..a08a5ab 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
@@ -13,11 +13,14 @@
 import com.doumee.core.wms.model.response.WmsBaseResponse;
 import com.doumee.core.wms.model.response.WmsInventoryDataResponse;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.model.*;
+
 import com.doumee.service.business.impl.SmsEmailServiceImpl;
 import com.doumee.service.business.third.EmayService;
 import com.doumee.service.business.third.WmsService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -85,10 +88,22 @@
         }
         WmsOrderPlatformRequest  param  = new WmsOrderPlatformRequest();
          param.setData(new ArrayList<>());
-         WmsOrderPlatformInfoRequest o = new WmsOrderPlatformInfoRequest();
-         o.setCarrierBillCode(job.getBillCode());
-         o.setRailwayNo(job.getPlatformWmsCode());
-         param.getData().add(o);
+
+        List<PlatformWmsDetail> platformWmsDetailList = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>().lambda()
+                .eq(PlatformWmsDetail::getJobId,job.getId())
+                .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO)
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){
+            for (PlatformWmsDetail platformWmsDetail:platformWmsDetailList) {
+                if(StringUtils.isNotBlank(platformWmsDetail.getIocode())){
+                    WmsOrderPlatformInfoRequest o = new WmsOrderPlatformInfoRequest();
+                    o.setCarrierBillCode(platformWmsDetail.getIocode());
+                    o.setRailwayNo(job.getPlatformWmsCode());
+                    param.getData().add(o);
+                }
+            }
+        }
+
          String url = type == 0?systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_INBOUND_PLATFROM_URL).getCode():
                  systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_OUTBOUND_PLATFROM_URL).getCode();;
          String name = type ==0?"銆怶MS銆戝叆搴撲綔涓氬崟鍒嗛厤鏈堝彴":"銆怶MS銆戝嚭搴撲綔涓氱殑鍒嗛厤鏈堝彴";
@@ -503,6 +518,35 @@
                     .set(PlatformWmsDetail::getStatus,Constants.TWO)
                     .in(PlatformWmsDetail::getIocode,iocodeList)
                     .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO));
+            
+            platformWmsJobMapper.update(null,new UpdateWrapper<PlatformWmsJob>().lambda()
+                    .set(PlatformWmsJob::getStatus,Constants.TWO)
+                    .in(PlatformWmsJob::getIocode,iocodeList)
+                    .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO));
+
+            List<PlatformWmsJob> platformWmsJob = platformWmsJobMapper.selectList(new QueryWrapper<PlatformWmsJob>().lambda()
+                    .in(PlatformWmsJob::getIocode,iocodeList)
+                    .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO)
+            );
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsJob)){
+                List<Integer> jobIds = platformWmsJob.stream().filter(i->Objects.nonNull(i.getJobId())).map(i->i.getJobId()).collect(Collectors.toList());
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jobIds)){
+                    Set<Integer> setJobIds = new HashSet<>(jobIds);
+                    platformJobMapper.update(null,new UpdateWrapper<PlatformJob>()
+                            .lambda()
+                            .set(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
+                            .in(PlatformJob::getId,setJobIds)
+                    );
+                    for (Integer jobId:setJobIds
+                    ) {
+                        SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz,
+                                emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,jobId,
+                                SmsConstants.platformJobContent.platformJobStopJob,null,null
+                        );
+                    }
+                }
+            }
+
         }catch (Exception e){
             log.error("銆怶MS銆戝鐞嗗叆搴撳彇娑堥�氱煡涓氬姟===============涓氬姟澶勭悊寮傚父"+e.getMessage());
             return returnFailReuslt("涓氬姟澶勭悊寮傚父");
@@ -534,6 +578,36 @@
                     .set(PlatformWmsDetail::getStatus,Constants.TWO)
                     .in(PlatformWmsDetail::getIocode,iocodeList)
                     .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO));
+
+            platformWmsJobMapper.update(null,new UpdateWrapper<PlatformWmsJob>().lambda()
+                    .set(PlatformWmsJob::getStatus,Constants.TWO)
+                    .in(PlatformWmsJob::getIocode,iocodeList)
+                    .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO));
+
+            List<PlatformWmsJob> platformWmsJob = platformWmsJobMapper.selectList(new QueryWrapper<PlatformWmsJob>().lambda()
+                    .in(PlatformWmsJob::getIocode,iocodeList)
+                    .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO)
+            );
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsJob)){
+                List<Integer> jobIds = platformWmsJob.stream().filter(i->Objects.nonNull(i.getJobId())).map(i->i.getJobId()).collect(Collectors.toList());
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jobIds)){
+                    Set<Integer> setJobIds = new HashSet<>(jobIds);
+                    platformJobMapper.update(null,new UpdateWrapper<PlatformJob>()
+                            .lambda()
+                            .set(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
+                            .in(PlatformJob::getId,setJobIds)
+                    );
+                    for (Integer jobId:setJobIds
+                         ) {
+                        SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz,
+                                emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,jobId,
+                                SmsConstants.platformJobContent.platformJobStopJob,null,null
+                        );
+                    }
+                }
+            }
+
+
         }catch (Exception e){
             log.error("銆怶MS銆戝嚭搴撳彇娑堥�氱煡浠诲姟涓氬姟澶勭悊===============涓氬姟澶勭悊寮傚父"+e.getMessage());
             return returnFailReuslt("涓氬姟澶勭悊寮傚父");
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/EmayService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/EmayService.java
index d223a2b..128f8aa 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/EmayService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/EmayService.java
@@ -6,15 +6,23 @@
 import cn.emay.sdk.core.dto.sms.response.SmsResponse;
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.model.InterfaceLog;
 import com.doumee.service.business.InterfaceLogService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 @Service
 public class EmayService {
@@ -89,4 +97,28 @@
 	}
 
 
+	public  void sendSmsByHk(String phone,String content){
+		try {
+			String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
+					systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode() +
+					HKConstants.ARTEMIS_PATH +
+					HKConstants.InterfacePath.sendSms[0];
+			Map<String,Object> map = new HashMap<>();
+			map.put("phoneNo",phone.split(","));
+			map.put("content",content);
+			BaseResponse result = HKService.sendSmsByHk(map,url);
+			if(result !=null){
+				if(!StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
+					throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),result.getMsg());
+				}
+			}else{
+				throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐭俊鍙戦�佸け璐ワ紝璇风◢鍚庨噸璇曪紒");
+			}
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐭俊鍙戦�佸け璐ワ紝璇风◢鍚庨噸璇曪紒");
+	}
+
+
 }

--
Gitblit v1.9.3