From c29ce426a6ce314bc26a23cd92d226cc01825783 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期一, 26 八月 2024 18:18:27 +0800
Subject: [PATCH] 代码初始化

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                    |   15 +
 server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java                                |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java        |   62 +++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java    |  205 +++++++++++++++++--
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java    |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java  |   12 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java  |   62 ++++-
 server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java              |   39 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java                |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java                   |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/ApproveDTO.java                     |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java                  |   13 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java             |   12 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java                   |   23 +-
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java                      |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java         |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java           |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java                 |    4 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java               |   13 +
 server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java                                     |   19 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java                |   28 ++
 server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java                       |    1 
 server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java                           |   19 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java                 |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformReasonServiceImpl.java |    1 
 25 files changed, 481 insertions(+), 86 deletions(-)

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 15152c8..1032835 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
@@ -59,6 +59,7 @@
     public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, ServerWebExchange serverWebExchange) {
         try {
             ServerHttpRequest request = serverWebExchange.getRequest();
+            dto.setCheckCode(true);
             LoginUserInfo user = systemLoginService.loginByPasswordNew(dto,request);
             String token = jwtTokenUtil.generateToken(user);
             return ApiResponse.success(token);
@@ -90,6 +91,24 @@
         }
     }
 
+    @PreventRepeat(limit = 10, lockTime = 10000)
+    @ApiOperation("鍙告満鐧诲綍")
+    @PostMapping("/loginDriver")
+    @LoginNoRequired
+    public ApiResponse<String> loginDriver (@Validated @RequestBody LoginDTO dto, ServerWebExchange serverWebExchange) {
+        try {
+            ServerHttpRequest request = serverWebExchange.getRequest();
+            dto.setCheckCode(false);
+            LoginUserInfo user = systemLoginService.driverLogin(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);
+        }
+    }
 
     /**
      * 鍒锋柊JWT浠ょ墝,鐢ㄦ棫鐨勪护鐗屾崲鏂扮殑浠ょ墝
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 6d84788..907be16 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
@@ -4,6 +4,7 @@
 import com.doumee.dao.system.model.SystemPermission;
 import com.doumee.dao.system.model.SystemRole;
 import com.doumee.dao.system.model.SystemUser;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.beans.BeanUtils;
@@ -59,15 +60,19 @@
         loginUserInfo.setCompany(company);
         // 璁剧疆瑙掕壊淇℃伅
         List<String> rs = new ArrayList<>();
-        for (SystemRole role : roles) {
-            rs.add(role.getCode());
+        if(CollectionUtils.isNotEmpty(roles)){
+            for (SystemRole role : roles) {
+                rs.add(role.getCode());
+            }
         }
         loginUserInfo.setSessionId(sessionId);
         loginUserInfo.setRoles(rs);
         // 璁剧疆鏉冮檺淇℃伅
         List<String> pms = new ArrayList<>();
-        for (SystemPermission permission : permissions) {
-            pms.add(permission.getCode());
+        if(CollectionUtils.isNotEmpty(permissions)){
+            for (SystemPermission permission : permissions) {
+                pms.add(permission.getCode());
+            }
         }
         loginUserInfo.setPermissions(pms);
         return loginUserInfo;
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 f76dfc4..43106c6 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
@@ -1,14 +1,16 @@
 package com.doumee.core.utils;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.doumee.core.model.LoginUserInfo;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.PropertyNamingStrategy;
 import io.swagger.models.auth.In;
 import org.apache.batik.util.Platform;
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.CollectionUtils;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -152,6 +154,11 @@
     // 瓒呮椂棰勮閰嶇疆
     public static final String TIMEOUT_WARNING = "TIMEOUT_WARNING";
     // FTP鏂囦欢鏈嶅姟鍣ㄨ祫婧愯闂湴鍧�
+    //鏈堝彴棰勭害鎸囧崡
+    public static final String PLATFORM_BOOKING_TIPS = "PLATFORM_BOOKING_TIPS";
+    //鏈堝彴瀵艰鍥�
+    public static final String PLATFORM_GUIDEMAP = "PLATFORM_GUIDEMAP";
+
 
     public static String getRandom6Num( ) {
         Random random = new Random();
@@ -453,6 +460,7 @@
     int cityUseCar = 3;//甯傚唴鐢ㄨ溅
     int unCityUseCar = 4;//甯傚鐢ㄨ溅
     int logisticsCarUse = 5;//鐗╂祦杞﹂绾�
+    int reason = 6;//鍏ュ洯鍘熷洜
 }
 
 
@@ -466,6 +474,10 @@
     }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.cityUseCar)
             ||Constants.equalsInteger(approveType,Constants.approveObjectType.unCityUseCar)){
         return Constants.noticesObjectType.useCar;
+    }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.logisticsCarUse)){
+        return Constants.noticesObjectType.logisticsCarUse;
+    }else if(Constants.equalsInteger(approveType, approveObjectType.reason)){
+        return noticesObjectType.reason;
     }else {
         return Constants.noticesObjectType.system;
     }
@@ -481,6 +493,7 @@
     int dangerDeal = 3;//闅愭偅澶勭悊
     int logisticsCarUse = 4;//鐗╂祦杞﹀鎵�
     int system = 5;//绯荤粺娑堟伅
+    int reason = 6;//鍏ュ洯鍘熷洜
 }
 
 
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
index 11635cf..a4cd38c 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -1823,14 +1823,6 @@
     // StringUtil.getNotNullStr(request.getParameter(strParamName));
     // return getDateByString(strStr);
     // }
-    /**
-     * 寰楀埌褰撳墠鏃ユ湡锛屾牸寮弝yyy-MM-dd銆�
-     *
-     * @return String 鏍煎紡鍖栫殑鏃ユ湡瀛楃涓�
-     */
-    public static String getCurrDate() {
-        return getFormattedDate(getDateByString(""));
-    }
 
     /**
      * 寰楀埌褰撳墠鏃ユ湡锛屾牸寮弝yyy-MM-dd銆�
@@ -1897,6 +1889,17 @@
     }
 
     /**
+     * 寰楀埌褰撳墠鏃ユ湡鏃堕棿,鏍煎紡涓簓yyy-MM-dd.
+     *
+     * @return String
+     */
+    public static String getCurrDate() {
+        Timestamp date = new Timestamp(System.currentTimeMillis());
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        return formatter.format(date);
+    }
+
+    /**
      * 寰楀埌鎸囧畾鐨勬棩鏈燂紝濡備竴骞翠笁涓湀闆朵節澶╁悗(浠yyy/MM/dd鏍煎紡鏄剧ず)鍙傛暟涓�("yyyy/MM/dd",1,3,9)
      *
      * @param strFormat
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 15316fd..f6ebaca 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
@@ -23,6 +23,7 @@
 
     LoginUserInfo loginByPasswordNew (LoginDTO dto, ServerHttpRequest request);
 
+    LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request);
     /**
      * 鏍规嵁 openId鐧诲綍
      * @param userId
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 452cc27..0519b92 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
@@ -125,7 +125,7 @@
             loginLog.setOsInfo(Utils.User_Client.getOS(request));
         }
         loginLog.setServerIp(Utils.Server.getIP());
-        if(isDebug == null  || !isDebug){
+        if(isDebug == null  || !isDebug  && dto.getCheckCode()){
             // 鏍¢獙楠岃瘉鐮�
             try {
                 captchaService.check(dto.getUuid(), dto.getCode());
@@ -171,6 +171,43 @@
     }
 
 
+
+    @Override
+    public LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request) {
+        SystemLoginLog loginLog = new SystemLoginLog();
+        loginLog.setLoginUsername(dto.getUsername());
+        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.setUsername(dto.getUsername());
+        queryDto.setDeleted(Boolean.FALSE);
+        SystemUser user = systemUserService.findOne(queryDto);
+        if (user == null) {
+            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+        }
+        String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt());
+        // 姣旇緝瀵嗙爜
+        if( !StringUtils.equals(pwd, user.getPassword())){
+            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+        }
+        Company company = new Company();
+        if(Objects.nonNull(user.getCompanyId())){
+            company = companyMapper.selectById(user.getCompanyId());
+        }
+        LoginUserInfo userInfo = LoginUserInfo.from(user, null, null,company,null);
+        return  userInfo;
+    }
+
+
     /**
      * 鍐呴儴浜哄憳 涓� 鍙告満 鏍规嵁code鏌ヨopenId鍚庤繘琛岀櫥褰曟帴鍙�
      * @return
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
index dd7a89f..3ac0fde 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
@@ -9,6 +9,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.model.Platform;
+import com.doumee.service.business.PlatformJobService;
 import com.doumee.service.business.PlatformService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -16,6 +17,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * @author 姹熻箘韫�
@@ -28,6 +30,9 @@
 
     @Autowired
     private PlatformService platformService;
+
+    @Autowired
+    private PlatformJobService platformJobService;
 
     @PreventRepeat
     @ApiOperation("鏂板缓")
@@ -77,6 +82,14 @@
         return ApiResponse.success(platformService.findPage(pageWrap));
     }
 
+
+    @ApiOperation("鏍规嵁鏈堝彴缁勮幏鍙栨湀鍙板垪琛ㄤ俊鎭�")
+    @GetMapping("/listByGroupId")
+    @CloudRequiredPermission("business:platform:query")
+    public ApiResponse<List<Platform>> listByGroupId (@RequestParam Integer groupId, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(platformJobService.getPlatformList(groupId,this.getLoginUser(token)));
+    }
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @CloudRequiredPermission("business:platform:exportExcel")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java
index 422d503..688be9f 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java
@@ -1,17 +1,17 @@
 package com.doumee.cloud.web;
 
+import cn.hutool.http.useragent.Platform;
 import com.doumee.api.BaseController;
 import com.doumee.config.annotation.LoginNoRequired;
 import com.doumee.config.annotation.LoginRequired;
 import com.doumee.core.annotation.trace.Trace;
 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;
 import com.doumee.core.utils.DateUtil;
-import com.doumee.dao.business.model.PlatformBooks;
-import com.doumee.dao.business.model.PlatformJob;
-import com.doumee.dao.business.model.Visits;
+import com.doumee.dao.business.model.*;
 import com.doumee.dao.web.reqeust.*;
 import com.doumee.dao.web.response.DriverHomeVO;
 import com.doumee.dao.web.response.LineUpVO;
@@ -27,6 +27,7 @@
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * Created by IntelliJ IDEA.
@@ -52,13 +53,24 @@
     @Autowired
     private PlatformBooksService platformBooksService;
 
+    @Autowired
+    private PlatformReasonService platformReasonService;
+
+
+
+    @ApiOperation("鍏ュ洯鍘熷洜")
+    @GetMapping("/platformReasonList")
+    public ApiResponse<List<PlatformReason>> platformReasonList (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        List<PlatformReason> platformReasons = platformReasonService.findList(null);
+        return ApiResponse.success(platformReasons);
+    }
+
     @ApiOperation("鍙告満棣栭〉淇℃伅")
     @GetMapping("/driverHome")
     public ApiResponse<DriverHomeVO> driverHome (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
-        DriverHomeVO driverHomeVO = platformJobService.getDriverHome(getLoginUser(token).getMemberId());
+        DriverHomeVO driverHomeVO = platformJobService.getDriverHome(getLoginUser(token));
         return ApiResponse.success(driverHomeVO);
     }
-
 
     @ApiOperation("鏌ヨ鍙绾﹂噺")
     @PostMapping("/checkSurplusNum")
@@ -69,14 +81,18 @@
     @ApiOperation("鐗╂祦杞﹂绾�")
     @PostMapping("/apply")
     public ApiResponse<Integer> apply (@RequestBody PlatformBooksApplyDTO platformBooksApplyDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
-        platformBooksApplyDTO.setUserId(getLoginUser(token).getMemberId());
+        LoginUserInfo loginUserInfo = getLoginUser(token);
+        platformBooksApplyDTO.setUserId(loginUserInfo.getMemberId());
+        platformBooksApplyDTO.setDriverId(loginUserInfo.getMemberId());
         return ApiResponse.success(platformBooksService.apply(platformBooksApplyDTO));
     }
 
     @ApiOperation("鐗╂祦杞﹂绾﹁褰�")
     @PostMapping("/page")
     public ApiResponse<PageData<PlatformBooks>> findPage (@RequestBody PageWrap<PlatformBooks> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        LoginUserInfo loginUserInfo = this.getLoginUser(token);
         pageWrap.getModel().setQueryDate(DateUtil.getBeforDay(new Date(),30));
+        pageWrap.getModel().setDriverPhone(loginUserInfo.getMobile());
         return ApiResponse.success(platformBooksService.findPage(pageWrap));
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java
index 8e81e40..bee4a37 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java
@@ -8,10 +8,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
-import com.doumee.dao.business.model.PlatformBooks;
-import com.doumee.dao.business.model.PlatformGroup;
-import com.doumee.dao.business.model.PlatformJob;
-import com.doumee.dao.business.model.PlatformShowParam;
+import com.doumee.dao.business.model.*;
 import com.doumee.dao.web.reqeust.*;
 import com.doumee.dao.web.response.DriverHomeVO;
 import com.doumee.dao.web.response.LineUpVO;
@@ -54,10 +51,8 @@
     @Autowired
     private PlatformShowParamService platformShowParamService;
 
-
-
-
-
+    @Autowired
+    private PlatformService platformService;
 
     @ApiOperation("鑾峰彇鏈堝彴缁勪俊鎭�")
     @ApiImplicitParams({
@@ -69,9 +64,16 @@
     }
 
     @ApiOperation("鏇存柊鏈堝彴閰嶇疆淇℃伅")
-    @GetMapping("/updUserPlatformConfig")
+    @PostMapping("/updUserPlatformConfig")
     public ApiResponse  updUserPlatformConfig (@RequestBody List<Integer> ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         platformShowParamService.updUserConfig(ids,getLoginUser(token));
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+    @ApiOperation("淇敼绂佸惎鐢ㄧ姸鎬�")
+    @PostMapping("/updPlatformStatus")
+    public ApiResponse  updPlatformStatus (@RequestBody Platform platform, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        platformService.updateStatusById(platform);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
@@ -131,9 +133,6 @@
         platformJobService.platformInPark(jobOperateDTO);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
-
-
-
 
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/ApproveDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/ApproveDTO.java
index e73c8fb..f88a2a0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/ApproveDTO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/ApproveDTO.java
@@ -18,7 +18,7 @@
     @ApiModelProperty(value = "鍏宠仈涓氬姟涓婚敭")
     private Integer objId;
 
-    @ApiModelProperty(value = "鍏宠仈涓氬姟绫诲瀷锛�0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害")
+    @ApiModelProperty(value = "鍏宠仈涓氬姟绫诲瀷锛�0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害 6鍏ュ洯棰勭害")
     private Integer objType;
 
     @ApiModelProperty(value = "2瀹℃壒閫氳繃 3瀹℃壒鏈�氳繃")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
index 0c89c3b..1836078 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
@@ -117,8 +117,8 @@
     @ExcelColumn(name="鏄惁淇敼鐩殑鍦� 0鍚� 1鏄�")
     private Integer addrParam;
 
-    @ApiModelProperty(value = "鍏宠仈涓氬姟绫诲瀷锛�0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害", example = "1")
-    @ExcelColumn(name="鍏宠仈涓氬姟绫诲瀷锛�0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害")
+    @ApiModelProperty(value = "鍏宠仈涓氬姟绫诲瀷锛�0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害  6鍏ュ洯鍘熷洜", example = "1")
+    @ExcelColumn(name="鍏宠仈涓氬姟绫诲瀷锛�0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害  6鍏ュ洯鍘熷洜")
     private Integer objType;
 
     @ApiModelProperty(value = "绫诲瀷 0瀹℃壒 1鎶勯��", example = "1")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java
index eef7d41..4bb6efd 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java
@@ -52,8 +52,8 @@
     @ExcelColumn(name="澶囨敞")
     private String remark;
 
-    @ApiModelProperty(value = "鍚嶇О 0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1鏂藉伐浜哄憳璁垮鐢宠 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害", example = "1")
-    @ExcelColumn(name="鍚嶇О 0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1鏂藉伐浜哄憳璁垮鐢宠 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害")
+    @ApiModelProperty(value = "鍚嶇О 0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1鏂藉伐浜哄憳璁垮鐢宠 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害 6鍏ュ洯鍘熷洜", example = "1")
+    @ExcelColumn(name="鍚嶇О 0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1鏂藉伐浜哄憳璁垮鐢宠 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害 6鍏ュ洯鍘熷洜")
     private Integer type;
 
     @ApiModelProperty(value = "鍚嶇О")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
index cea4575..12e06bd 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
@@ -136,6 +136,10 @@
     @TableField(exist = false)
     private String queryDate;
 
+    @ApiModelProperty(value = "鍥剧墖鍓嶇紑")
+    @TableField(exist = false)
+    private String prefixUrl;
+
     @ApiModelProperty(value = "瀹℃壒淇℃伅鏁版嵁")
     @TableField(exist = false)
     private ApproveDataVO approveDateVO;
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 57cfc6d..f3e24c0 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
@@ -264,7 +264,15 @@
 
     @ApiModelProperty(value = "鍓嶆柟鎺掗槦鏁伴噺", example = "1")
     @TableField(exist = false)
-    private Long lineUpNum;
+    private Integer lineUpNum;
+
+    @ApiModelProperty(value = "棰勮绛夊緟鏃堕棿", example = "1")
+    @TableField(exist = false)
+    private String waitTime;
+
+    @ApiModelProperty(value = "棰勮瀹屾垚鏃堕棿", example = "1")
+    @TableField(exist = false)
+    private String finishTimeStr;
 
     @ApiModelProperty(value = "鍏宠仈鏈堝彴缁勭紪鐮侊紙鍏宠仈platform_group琛級", example = "1")
     @TableField(exist = false)
@@ -278,6 +286,9 @@
     @TableField(exist = false)
     private BigDecimal getDistance;
 
+    @ApiModelProperty(value = "鏈堝彴浣滀笟鏁堢巼锛堜竾鏀�/灏忔椂锛�", hidden = true)
+    @TableField(exist = false)
+    private BigDecimal workRate;
 
     @ApiModelProperty(value = "涓氬姟瑙﹀彂鏃堕棿  鏃堕棿")
     @TableField(exist = false)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java
index 6273b5f..0d46c53 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java
@@ -19,6 +19,8 @@
 @Api(tags = "鍏ュ洯棰勭害鐢宠淇℃伅" )
 public class PlatformBooksApplyDTO {
 
+    @ApiModelProperty(value = "涓婚敭 - 淇敼浣跨敤")
+    private Integer id;
     @ApiModelProperty(value = "鍚堝悓鍙�")
     private String contractNum;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java
index e677f12..430b316 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java
@@ -19,4 +19,11 @@
     @ApiModelProperty(value = "鏈堝彴浠诲姟鍒楄〃")
     private List<PlatformJob> platformJobList;
 
+    @ApiModelProperty(value = "棰勭害鎸囧崡")
+    private String bookingTips;
+
+    @ApiModelProperty(value = "鍥尯瀵艰鍥�")
+    private String reservationMap;
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
index 6b2fb66..e6e7570 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
@@ -112,6 +112,8 @@
 
     void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId);
 
+    void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId);
+
     ApproveDataVO arrangeApprovedData(Integer businessId, Integer businessType, Integer memberId);
 
     void approved(ApproveDTO approveDTO);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
index ac8a7a8..a842e2d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -1,7 +1,9 @@
 package com.doumee.service.business;
 
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Platform;
 import com.doumee.dao.business.model.PlatformJob;
 import com.doumee.dao.web.reqeust.JobDetailDTO;
 import com.doumee.dao.web.reqeust.JobOperateDTO;
@@ -102,7 +104,7 @@
      */
     long count(PlatformJob platformJob);
 
-    DriverHomeVO getDriverHome(Integer memberId);
+    DriverHomeVO getDriverHome(LoginUserInfo loginUserInfo);
 
     /**
      * 璺濈绛惧埌
@@ -172,4 +174,12 @@
      */
     void finishWork(JobOperateDTO jobOperateDTO);
 
+    /**
+     * 鑾峰彇鏈堝彴涓嬬殑浠诲姟淇℃伅
+     * @param groupId
+     * @param loginUserInfo
+     * @return
+     */
+    List<Platform> getPlatformList(Integer groupId, LoginUserInfo loginUserInfo);
+
 }
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 804ee30..b698dd5 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
@@ -31,6 +31,7 @@
 import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import io.swagger.models.auth.In;
+import javafx.application.Platform;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.xpath.operations.Bool;
@@ -388,6 +389,52 @@
     }
 
 
+    @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+    public void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId){
+        //鏌ヨ澶勭悊妯℃澘
+        ApproveTempl approveTempl = approveTemplMapper.selectById(tempId);
+        if(Objects.isNull(approveTempl)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌瀹℃壒娴侀厤缃ā鏉�");
+        }
+        //鏌ヨ閰嶇疆娴佺▼
+        List<ApproveParam> approveParamAllList = approveParamMapper.selectList(new QueryWrapper<ApproveParam>()
+                .lambda().eq(ApproveParam::getIsdeleted,Constants.ZERO)
+                .eq(ApproveParam::getTemplId,approveTempl.getId())
+                .orderByAsc(ApproveParam::getType)
+                .orderByAsc(ApproveParam::getLevel)
+        );
+        if(Objects.isNull(approveParamAllList)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈厤缃鎵规祦绋�");
+        }
+        //瀹℃壒閰嶇疆
+        List<ApproveParam> approveParamList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ZERO)).collect(Collectors.toList());
+        if(Objects.isNull(approveParamList)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈厤缃鎵规祦绋�");
+        }
+        List<ApproveParam> approveCopyList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList());
+
+        Member createMember = memberMapper.selectById(createMemberId);
+        if(Objects.isNull(createMember)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鐢宠浜虹粍缁囦俊鎭紓甯�");
+        }
+        List<Approve> approveList = new ArrayList<>();
+
+        this.organizeApproveData(approveTempl,approveParamList,createMember,businessId,approveList);
+
+        if(CollectionUtils.isEmpty(approveList)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒娴侀厤缃敊璇�");
+        }
+
+        //澶勭悊鎶勯�佹暟鎹�
+        if(CollectionUtils.isNotEmpty(approveCopyList)){
+            this.organizeApproveCopyData(approveTempl,approveCopyList,businessId,approveList);
+        }
+        approveJoinMapper.insert(approveList);
+
+    }
+
+
     /**
      * 缁勭粐瀹℃壒娴佹暟鎹�
      * @param approveTempl
@@ -555,8 +602,17 @@
             jsonMap.put("eTime", "缁撴潫鏃堕棿:" + DateUtil.DateToStr(carUseBook.getEndTime() , "yyyy-MM-dd HH:mm"));
             jsonMap.put("usrNum", StringUtils.isBlank(carUseBook.getMemberIds())?"涔樿溅浜烘暟: 0浜�": "涔樿溅浜烘暟: " +carUseBook.getMemberIds().split(",").length +"浜�");
             jsonMap.put("mdd", StringUtils.isBlank(carUseBook.getAddr())?"鐩殑鍦�: - ": "鐩殑鍦�:" +carUseBook.getAddr());
-        }else {
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
+        }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.reason)){
+            //鐗╂祦杞﹂绾�
+            PlatformBooks platformBooks = platformBooksMapper.selectById(businessId);
+            if(Objects.isNull(platformBooks)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈煡璇㈠埌涓氬姟鏁版嵁淇℃伅");
+            }
+            title = "銆愮墿娴佽溅鍏ュ洯棰勭害銆戠敵璇蜂汉 - " + platformBooks.getDriverName();
+            jsonMap.put("inType", "鍏ュ簱绫诲瀷锛�"+(Constants.equalsInteger(platformBooks.getInType(),Constants.ZERO)?"鏁存墭鐩�":"浠剁儫"));
+            jsonMap.put("totalNum", "鎬昏繍杈撻噺锛�"+platformBooks.getTotalNum()+"涓囨敮");
+            jsonMap.put("arriveDate", "鍒板満鏃堕棿锛�" + DateUtil.DateToStr(platformBooks.getArriveDate() , "yyyy-MM-dd HH:mm"));
+            jsonMap.put("carNum", "杞︾墝鐓э細"+platformBooks.getCarCodeFront());
         }
         return title;
     }
@@ -1345,7 +1401,7 @@
         }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals(
                 Constants.approveObjectType.unCityUseCar)){
             this.updDriver(approveDTO,approve,true);
-        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){
+        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.reason)){
             //鐗╂祦杞﹂绾�
             PlatformBooks platformBooks = platformBooksMapper.selectById(approveDTO.getObjId());
             if(Objects.isNull(platformBooks)){
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 693f779..a7ccd11 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
@@ -2002,6 +2002,7 @@
         systemUser.setUsername(registerDriverDTO.getPhone());
         systemUser.setRealname(registerDriverDTO.getName());
         systemUser.setMemberId(member.getId());
+        systemUser.setMobile(registerDriverDTO.getPhone());
         systemUser.setSalt(salt);
         systemUser.setPassword(member.getPassward());
         systemUser.setStatus(Constants.ZERO);
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 a155825..68318b2 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
@@ -186,7 +186,7 @@
         }
         //鏌ヨ姣忔棩閰嶇疆鐨勬�婚绾﹂噺
         PlatformReason platformReason = platformReasonMapper.selectById(platformBooksCheckNumDTO.getReasonId());
-        if(Objects.isNull(platformReason)|| Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
+        if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍏ュ洯鍘熷洜淇℃伅寮傚父,璇峰埛鏂伴噸璇�");
         }
         List<PlatformBooks> platformBooksList = platformBooksMapper.selectList(new QueryWrapper<PlatformBooks>().lambda()
@@ -225,23 +225,15 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformReason platformReason = platformReasonMapper.selectById(platformBooksApplyDTO.getReasonId());
-        if(Objects.isNull(platformReason)|| Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
+        if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍏ュ洯鍘熷洜淇℃伅寮傚父,璇峰埛鏂伴噸璇�");
         }
-        ApproveTempl approveTempl = approveTemplMapper.selectOne(new QueryWrapper<ApproveTempl>().lambda()
-                .eq(ApproveTempl::getIsdeleted,Constants.ZERO)
-                .eq(ApproveTempl::getObjId,platformReason.getId())
-                .last(" limit 1")
-        );
+        ApproveTempl approveTempl = approveTemplMapper.selectById(platformReason.getId());
         if(Objects.isNull(approveTempl)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈厤缃鎵规祦,璇疯仈绯荤鐞嗗憳");
         }
-
-        if(Constants.equalsInteger(platformBooksApplyDTO.getUserId(),platformBooksApplyDTO.getDriverId())){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浜哄憳淇℃伅鍖归厤閿欒");
-        }
-        if(Objects.nonNull(platformReason.getLimitNum())&&platformReason.getLimitNum().compareTo(platformBooksApplyDTO.getTotalNum())>0){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瓒呭嚭鍏ュ洯鐢宠绾胯川閲�");
+        if(!Constants.equalsInteger(approveTempl.getIsdeleted(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒娴佸凡鍋滅敤,璇疯仈绯荤鐞嗗憳");
         }
         PlatformBooks platformBooks = new PlatformBooks();
         BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks);
@@ -252,9 +244,45 @@
         platformBooksMapper.insert(platformBooks);
 
         //鍒涘缓瀹℃壒娴佷俊鎭�
-        approveService.createApproveFlow(5,platformBooks.getId(),platformBooks.getDriverId());
+        approveService.createApproveForPlatfrom(platformReason.getApproveTemplId(),platformBooks.getId(),platformBooks.getDriverId());
         return platformBooks.getId();
     }
+
+
+
+//    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public Integer edit(PlatformBooksApplyDTO platformBooksApplyDTO){
+        if(Objects.isNull(platformBooksApplyDTO)
+                || Objects.isNull(platformBooksApplyDTO.getId())
+                || StringUtils.isBlank(platformBooksApplyDTO.getContractNum())
+                || Objects.isNull(platformBooksApplyDTO.getArriveDate())
+                || Objects.isNull(platformBooksApplyDTO.getInType())
+                || Objects.isNull(platformBooksApplyDTO.getTotalNum())
+                || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront())
+                || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack())
+                || Objects.isNull(platformBooksApplyDTO.getDriverId())
+                || StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone())
+                || StringUtils.isBlank(platformBooksApplyDTO.getDriverName())
+                || StringUtils.isBlank(platformBooksApplyDTO.getTransportImg())
+                || Objects.isNull(platformBooksApplyDTO.getReasonId())
+                || StringUtils.isBlank(platformBooksApplyDTO.getInReason())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        PlatformBooks platformBooks = platformBooksMapper.selectById(platformBooksApplyDTO.getId());
+        if(Objects.isNull(platformBooks)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!Constants.equalsInteger(platformBooks.getStatus(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓氬姟鐘舵�佸凡娴佽浆");
+        }
+        BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks);
+        platformBooks.setEditDate(new Date());
+        platformBooksMapper.insert(platformBooks);
+        return platformBooks.getId();
+    }
+
 
 
     @Override
@@ -263,8 +291,12 @@
         if(Objects.isNull(model)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌棰勭害璁板綍");
         }
+        String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                systemDictDataBiz.queryByCode(Constants.FTP,Constants.PLATFORM).getCode();
+        model.setPrefixUrl(prefixUrl);
+
         ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id,
-               5,
+               6,
                 memberId);
         model.setApproveDateVO(approveDataVO);
         List<Approve> approveList = approveDataVO.getApproveList();
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 7dcc045..05ad10f 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
@@ -6,19 +6,24 @@
 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.Utils;
 import com.doumee.dao.business.PlatformGroupMapper;
 import com.doumee.dao.business.PlatformShowParamMapper;
+import com.doumee.dao.business.join.PlatformJobJoinMapper;
 import com.doumee.dao.business.join.PlatformJoinMapper;
 import com.doumee.dao.business.model.Platform;
 import com.doumee.dao.business.model.PlatformGroup;
+import com.doumee.dao.business.model.PlatformJob;
 import com.doumee.dao.business.model.PlatformShowParam;
 import com.doumee.service.business.PlatformGroupService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.service.business.PlatformJobService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.java.Log;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -44,6 +49,9 @@
 
     @Autowired
     private PlatformShowParamMapper platformShowParamMapper;
+
+    @Autowired
+    private PlatformJobJoinMapper platformJobJoinMapper;
 
     @Override
     public Integer create(PlatformGroup platformGroup) {
@@ -206,7 +214,6 @@
                         .selectAll(Platform.class)
                         .select(" ( select count(1) from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" ) as workStatus ")
                         .eq(Platform::getIsdeleted, Constants.ZERO)
-                        .eq(Platform::getStatus, Constants.ZERO)
                         .eq(Objects.nonNull(queryType)&&!Constants.equalsInteger(queryType,Constants.ZERO),Platform::getStatus,Constants.ZERO)
         );
         //澶勭悊鎴戠殑鏈堝彴淇℃伅 鏄惁閰嶇疆闅愯棌
@@ -240,4 +247,7 @@
     }
 
 
+
+
+
 }
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 d8e0284..2544ffb 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
@@ -4,6 +4,7 @@
 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;
@@ -12,6 +13,7 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.join.PlatformJobJoinMapper;
+import com.doumee.dao.business.join.PlatformJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.web.reqeust.JobDetailDTO;
 import com.doumee.dao.web.reqeust.JobOperateDTO;
@@ -33,6 +35,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -58,8 +61,9 @@
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
+
     @Autowired
-    private PlatformMapper platformMapper;
+    private PlatformJoinMapper platformJoinMapper;
 
     @Autowired
     private PlatformLogMapper platformLogMapper;
@@ -69,6 +73,12 @@
 
     @Autowired
     private PlatformWmsDetailMapper platformWmsDetailMapper;
+
+    @Autowired
+    private PlatformGroupMapper platformGroupMapper;
+
+    @Autowired
+    private PlatformShowParamMapper platformShowParamMapper;
 
 
     @Override
@@ -131,9 +141,13 @@
     @Override
     public PageData<PlatformJob> findPage(PageWrap<PlatformJob> pageWrap) {
         IPage<PlatformJob> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<PlatformJob> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<PlatformJob> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        queryWrapper.lambda()
+        queryWrapper
+                .selectAll(PlatformJob.class)
+                .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
+                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                 .eq(pageWrap.getModel().getId() != null, PlatformJob::getId, pageWrap.getModel().getId())
                 .eq(pageWrap.getModel().getCreator() != null, PlatformJob::getCreator, pageWrap.getModel().getCreator())
                 .ge(pageWrap.getModel().getCreateDate() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
@@ -216,13 +230,18 @@
                 queryWrapper.orderByAsc(sortData.getProperty());
             }
         }
-
-        PageData<PlatformJob> pageData = PageData.from(platformJobMapper.selectPage(page, queryWrapper));
-        pageData.getRecords().forEach(i->{
+       IPage<PlatformJob> platformJobIPage = platformJobJoinMapper.selectJoinPage(page,PlatformJob.class,queryWrapper);
+        platformJobIPage.getRecords().forEach(i->{
             i.dealTime();
             this.getWmsJobData(i);
         });
-        return pageData;
+        return PageData.from(platformJobIPage);
+//        PageData<PlatformJob> pageData = PageData.from(platformJobMapper.selectPage(page, queryWrapper));
+//        pageData.getRecords().forEach(i->{
+//            i.dealTime();
+//            this.getWmsJobData(i);
+//        });
+//        return pageData;
     }
 
 
@@ -250,12 +269,60 @@
                 platformWmsJob.setPlatformWmsDetailList(platformWmsDetailList);
                 platformJob.setPlatformWmsJob(platformWmsJob);
             }
-        }
-
-
+        } 
     }
 
 
+    public void queryWaitNum(PlatformJob platformJob){
+        if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
+            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
+            List<PlatformJob> lineUpNum =  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())
+                    .eq(PlatformJob::getPlatformGroupId,platformJob.getPlatformGroupId())
+                    .like(PlatformJob::getArriveDate,DateUtil.getDate(platformJob.getArriveDate(),"yyyy-MM-dd")));
+            platformJob.setLineUpNum(lineUpNum.size());
+            BigDecimal sumWorkRate = platformJob.getTotalNum();
+            for (PlatformJob linePlatformJob:lineUpNum) {
+                this.getWmsJobData(linePlatformJob);
+                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);
+            if(sumWorkRate.compareTo(BigDecimal.ZERO) == Constants.ZERO|| workRate.compareTo(BigDecimal.ZERO)  == Constants.ZERO ){
+                BigDecimal sumMinute = sumWorkRate.divide(workRate,1, RoundingMode.HALF_DOWN).multiply(BigDecimal.valueOf(60L));
+                Integer sumMinuteInteger = sumMinute.intValue();
+                Integer hours = sumMinuteInteger/60;
+                Integer minus = sumMinuteInteger%60;
+                String  waitTime = "棰勮绛夊緟锛�";
+                if(!Constants.equalsInteger(hours,Constants.ZERO)){
+                    waitTime = waitTime + hours + "灏忔椂";
+                }
+                if(!Constants.equalsInteger(hours,Constants.ZERO)){
+                    waitTime = waitTime + minus + "鍒嗛挓";
+                }
+                platformJob.setWaitTime(waitTime);
+            }
+        }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
+            //鏌ヨ鏈�鍚庡紑濮嬩换鍔$殑鏈堝彴璁板綍  鏃ュ織琛�  鍥犱负瀛樺湪寮傚父鎸傝捣 杞Щ 绛夐棶棰�
+            PlatformLog platformLog = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda()
+                    .eq(PlatformLog::getJobId,platformJob.getId())
+                    .eq(PlatformLog::getObjType,Constants.PlatformJobStatus.WORKING.getKey())
+                    .orderByDesc(PlatformLog::getCreateDate)
+                    .last(" limit 1")
+            );
+            if(Objects.nonNull(platformLog)){
+                BigDecimal sumMinute = platformJob.getTotalNum().divide(platformJob.getWorkRate(),1, RoundingMode.HALF_DOWN).multiply(BigDecimal.valueOf(60L));
+                platformJob.setFinishTimeStr(DateUtil.DateToStr(DateUtil.afterMinutesDate(platformLog.getCreateDate(),sumMinute.intValue()),"HH:mm"));
+            }
+        }
+    }
+    
+    
     @Override
     public long count(PlatformJob platformJob) {
         QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob);
@@ -264,17 +331,34 @@
 
     //TODO
     @Override
-    public DriverHomeVO getDriverHome(Integer memberId){
+    public DriverHomeVO getDriverHome(LoginUserInfo loginUserInfo){
         DriverHomeVO driverHomeVO = new DriverHomeVO();
         //TODO 杞挱鍥�
 
-        List<PlatformJob> platformJobList =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>()
-                .lambda()
-                .eq(PlatformJob::getDriverId,memberId)
-//                        .like(PlatformJob::get)
-                .orderByDesc(PlatformJob::getId));
+        List<PlatformJob> platformJobList =  platformJobJoinMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
+                .selectAll(PlatformJob.class)
+                .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
+                .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) {
+            //澶勭悊WSM鏁伴噺
+            this.getWmsJobData(platformJob);
+            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
+            this.queryWaitNum(platformJob);
+        }
+
+
         driverHomeVO.setPlatformJobList(platformJobList);
 
+        // 鍥尯瀵艰鍥�  鍥剧墖
+        driverHomeVO.setReservationMap(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.PLATFORM_GUIDEMAP).getCode());
+        // 棰勭害鎸囧崡 鏂囨湰
+        driverHomeVO.setBookingTips(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.PLATFORM_BOOKING_TIPS).getCode());
 
         return driverHomeVO;
     }
@@ -369,18 +453,12 @@
             }
         }else if( Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
                 || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())
-        ){//鏌ヨ鎺掗槦鎯呭喌
-            Long lineUpNum =  platformJobMapper.selectCount(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())
-                    .like(PlatformJob::getArriveDate,DateUtil.getDate(platformJob.getArriveDate(),"yyyy-MM-dd")));
-            platformJob.setLineUpNum(lineUpNum);
+        ){
+            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
+            this.queryWaitNum(platformJob);
         }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
             //浣滀笟鏈堝彴淇℃伅
-            Platform platform = platformMapper.selectById(platformJob.getPlatformId());
+            Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId());
             if(Objects.nonNull(platform)){
                 platformJob.setPlatformName(platform.getName());
             }
@@ -417,7 +495,7 @@
         );
         //鑾峰彇鎵�鏈夋湀鍙扮粍
         List<Integer> platformIdList = platformJobList.stream().map(m->m.getPlatformGroupId()).collect(Collectors.toList());
-        List<Platform> platformList = platformMapper.selectList(new QueryWrapper<Platform>().lambda()
+        List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda()
                 .eq(Platform::getIsdeleted,Constants.ZERO)
                 .in(Platform::getId,platformIdList));
 
@@ -841,8 +919,79 @@
     }
 
 
+    @Override
+    public  List<Platform> getPlatformList(Integer groupId, LoginUserInfo loginUserInfo){
+        //鏌ヨ鏈堝彴缁勪笅鎵�鏈夋湀鍙�
+        List<Platform> allPlatformList = platformJoinMapper.selectJoinList(Platform.class,
+                new MPJLambdaWrapper<Platform>()
+                        .selectAll(Platform.class)
+                        .select(" ( select count(1) from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" ) as workStatus ")
+                        .eq(Platform::getIsdeleted, Constants.ZERO)
+                        .eq(Platform::getStatus,Constants.ZERO)
+                        .eq(Platform::getGroupId,groupId)
+        );
+        this.getPlatformShow(allPlatformList,loginUserInfo);
+        for (Platform platform:allPlatformList) {
+            this.getJobByPlatform(platform,loginUserInfo);
+        }
+        return allPlatformList;
+    }
+
+    /**
+     * 鏌ヨ鏈堝彴鐨勫紑鍚儏鍐�
+     * @param allPlatformList
+     * @param loginUserInfo
+     */
+    public void getPlatformShow(List<Platform> allPlatformList , LoginUserInfo loginUserInfo){
+        //澶勭悊鎴戠殑鏈堝彴淇℃伅 鏄惁閰嶇疆闅愯棌
+        List<PlatformShowParam> platformShowParamList = platformShowParamMapper.selectList(new QueryWrapper<PlatformShowParam>()
+                .lambda()
+                .eq(PlatformShowParam::getIsdeleted, Constants.ZERO)
+                .eq(PlatformShowParam::getMemberId,loginUserInfo.getMemberId())
+        );
+        //濡傛灉鏈厤缃鏁版嵁 鍒欏叏閮ㄦ樉绀�
+        if(CollectionUtils.isEmpty(platformShowParamList)){
+            for (Platform platform:allPlatformList) {
+                platform.setShowConfig(true);
+            }
+        }else{
+            //鏍规嵁閰嶇疆鏄剧ず鏁版嵁
+            for (PlatformShowParam platformShowParam:platformShowParamList) {
+                for (Platform platform:allPlatformList) {
+                    if(Constants.equalsInteger(platform.getId(),platformShowParam.getPlatformId())){
+                        platform.setShowConfig(true);
+                        break;
+                    }
+                }
+            }
+        }
+    }
 
 
-
+    /**
+     * 鑾峰彇鏈堝彴涓嬬殑浠诲姟鍒楄〃
+     * @param platform
+     * @param loginUserInfo
+     */
+    public void getJobByPlatform(Platform platform,LoginUserInfo loginUserInfo){
+        List<PlatformJob> platformJobList =  platformJobJoinMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
+                .selectAll(PlatformJob.class)
+                .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
+                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
+                .eq(PlatformJob::getPlatformId,platform.getId())
+                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+                .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
+                .like(PlatformJob::getArriveDate, DateUtil.getCurrDate())
+                .orderByDesc(PlatformJob::getId)
+        );
+        for (PlatformJob platformJob:platformJobList) {
+            //澶勭悊WSM鏁伴噺
+            this.getWmsJobData(platformJob);
+            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
+            this.queryWaitNum(platformJob);
+        }
+        platform.setWorkJobList(platformJobList);
+    }
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformReasonServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformReasonServiceImpl.java
index aaa5b1e..7500514 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformReasonServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformReasonServiceImpl.java
@@ -106,6 +106,7 @@
     @Override
     public List<PlatformReason> findList(PlatformReason platformReason) {
         QueryWrapper<PlatformReason> wrapper = new QueryWrapper<>(platformReason);
+        wrapper.eq("isdeleted",Constants.ZERO);
         return platformReasonMapper.selectList(wrapper);
     }
   
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
index e34a01b..49d54a6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
@@ -139,4 +139,8 @@
         QueryWrapper<VisitReason> wrapper = new QueryWrapper<>(visitReason);
         return visitReasonMapper.selectCount(wrapper);
     }
+
+
+
+
 }

--
Gitblit v1.9.3