From 75310c871f4cb82a6985161fbc7e3c7d86f066a4 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 25 九月 2024 15:54:02 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                       |   50 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SavePlatformWarnEventDTO.java           |   32 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWarnEvent.java               |   75 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java                    |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java               |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java           |   23 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java       |  229 +++++++++-
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java     |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java                     |   15 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java                       |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java      |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java                     |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java |  185 ++++++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWmsJobCloudController.java            |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java                      |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java    |   47 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWmsJobService.java             |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java                        |   28 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java                  |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java                     |   23 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java                |   20 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java                      |   26 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java          |   78 +++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWarnEventCloudController.java         |   90 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/WmsJobContractVO.java                   |   29 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java                  |   25 
 server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java                                        |   14 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java                   |    1 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java                   |   11 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java   |   24 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWarnEventService.java          |  101 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java           |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformWarnEventMapper.java               |   12 
 35 files changed, 1,131 insertions(+), 80 deletions(-)

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 472077e..5e3d67b 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
@@ -44,6 +44,7 @@
     public static final String HK_ROOTORG_CODE ="HK_ROOTORG_CODE" ;
     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 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" ;
@@ -745,6 +746,55 @@
 
     }
 
+    public  enum PlatformWarnEvent {
+        STOP_TIMEOUT(0, "鍋滈潬瓒呮椂","${carCode}鏈堝彴鍋滈潬瓒呮椂" ),
+        STOP_ERROR(1, "鍋滈潬閿欒","${carCode}鏈堝彴鍋滈潬閿欒" );
+
+        // 鎴愬憳鍙橀噺
+        private int key;
+        private String name;
+        private String info;
+
+        // 鏋勯�犳柟娉�
+        PlatformWarnEvent(int key, String name,String info ) {
+            this.key = key;
+            this.info = info;
+            this.name = name;
+        }
+        public static String getName(int index) {
+            for (PlatformWarnEvent c : PlatformWarnEvent.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getInfo() {
+            return info;
+        }
+
+        public void setInfo(String info) {
+            this.info = info;
+        }
+    }
+
 
     /**
      * 鏈堝彴浣滀笟 鐘舵��
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 fbd64de..18b274a 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
@@ -1229,6 +1229,20 @@
     }
 
     /**
+     * 寰楀埌X鍒嗛挓鍚庣殑鏃堕棿(鏃堕棿鏍煎紡)
+     *
+     * @param date
+     * @param minute
+     * @return
+     */
+    public static Date getXMinuteAfterDate(Date date, int minute) {
+        Calendar now = Calendar.getInstance();
+        now.setTime(date);
+        now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minute);
+        return now.getTime();
+    }
+
+    /**
      * 寰楀埌涓や釜鏃ユ湡涔嬮棿鐩稿樊鐨勫ぉ鏁�
      *
      * @param newDate
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 3359739..150a642 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
@@ -96,6 +96,13 @@
         return ApiResponse.success(platformService.findPage(pageWrap));
     }
 
+    @ApiOperation("鏈堝彴浣滀笟缁熻")
+    @PostMapping("/platformWorkReportPage")
+    @CloudRequiredPermission("business:platform:query")
+    public ApiResponse<List<Platform>> platformWorkReportPage (@RequestBody Platform platform,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(platformService.platformWorkReportList(platform));
+    }
+
 
     @ApiOperation("鏍规嵁鏈堝彴缁勮幏鍙栨湀鍙板垪琛ㄤ俊鎭�")
     @GetMapping("/listByGroupId")
@@ -117,8 +124,6 @@
     public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         return ApiResponse.success(platformService.findById(id));
     }
-
-
 
 
     @ApiOperation("鑾峰彇鏈堝彴缁勪俊鎭�")
@@ -159,7 +164,8 @@
     @PostMapping("/platformInPark")
     public ApiResponse platformInPark (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
-        platformJobService.platformInPark(jobOperateDTO);
+        PlatformJob platformJob = platformJobService.platformInPark(jobOperateDTO);
+        platformJobService.sendInPark(platformJob);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
@@ -167,7 +173,11 @@
     @PostMapping("/platformCallNumber")
     public ApiResponse platformCallNumber (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
-        platformJobService.platformCallNumber(jobOperateDTO);
+        PlatformJob oldPlatformJob = platformJobService.findById(jobOperateDTO.getJobId());
+        PlatformJob platformJob = platformJobService.platformCallNumber(jobOperateDTO);
+        if(Constants.equalsInteger(oldPlatformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
+            platformJobService.sendInPark(platformJob);
+        }
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
@@ -200,7 +210,8 @@
     @PostMapping("/beginWork")
     public ApiResponse beginWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
-        platformJobService.beginWork(jobOperateDTO);
+        PlatformJob platformJob = platformJobService.beginWork(jobOperateDTO);
+        platformJobService.cancelInPark(platformJob);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
@@ -209,7 +220,9 @@
     @PostMapping("/finishWork")
     public ApiResponse finishWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
-        platformJobService.finishWork(jobOperateDTO);
+        PlatformJob platformJob = platformJobService.finishWork(jobOperateDTO);
+        //涓嬪彂绂诲洯鏉冮檺
+        platformJobService.sendInPark(platformJob);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
index d115d50..d232264 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
@@ -70,6 +70,8 @@
         return ApiResponse.success(platformJobService.findPage(pageWrap));
     }
 
+
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @CloudRequiredPermission("business:platformjob:exportExcel")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWarnEventCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWarnEventCloudController.java
new file mode 100644
index 0000000..d91afa6
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWarnEventCloudController.java
@@ -0,0 +1,90 @@
+package com.doumee.cloud.admin;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.PlatformWarnEvent;
+import com.doumee.service.business.PlatformWarnEventService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/09/25 09:41
+ */
+@Api(tags = "鏈堝彴棰勮淇℃伅")
+@RestController
+@RequestMapping("/business/platformWarnEvent")
+public class PlatformWarnEventCloudController extends BaseController {
+
+    @Autowired
+    private PlatformWarnEventService platformWarnEventService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:platformwarnevent:create")
+    public ApiResponse create(@RequestBody PlatformWarnEvent platformWarnEvent) {
+        return ApiResponse.success(platformWarnEventService.create(platformWarnEvent));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:platformwarnevent:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        platformWarnEventService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:platformwarnevent:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        platformWarnEventService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:platformwarnevent:update")
+    public ApiResponse updateById(@RequestBody PlatformWarnEvent platformWarnEvent) {
+        platformWarnEventService.updateById(platformWarnEvent);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:platformwarnevent:query")
+    public ApiResponse<PageData<PlatformWarnEvent>> findPage (@RequestBody PageWrap<PlatformWarnEvent> pageWrap) {
+        return ApiResponse.success(platformWarnEventService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:platformwarnevent:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformWarnEvent> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(PlatformWarnEvent.class).export(platformWarnEventService.findPage(pageWrap).getRecords(), "鏈堝彴棰勮淇℃伅", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:platformwarnevent:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(platformWarnEventService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWmsJobCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWmsJobCloudController.java
index 03d84cf..ef332b8 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWmsJobCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWmsJobCloudController.java
@@ -84,8 +84,7 @@
 
     @ApiOperation("鏍规嵁ID鏌ヨ")
     @GetMapping("/{id}")
-    @RequiresPermissions("business:platformwmsjob:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(platformWmsJobService.findById(id));
+    public ApiResponse<PlatformWmsJob> findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        return ApiResponse.success(platformWmsJobService.findByDetailId(id));
     }
 }
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 b87d935..e9c0ba9 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
@@ -56,6 +56,9 @@
     @Autowired
     private PlatformReasonService platformReasonService;
 
+    @Autowired
+    private PlatformWmsJobService platformWmsJobService;
+
 
 
     @ApiOperation("鍏ュ洯鍘熷洜")
@@ -149,4 +152,12 @@
         return ApiResponse.success(platformJobService.lineUpDetail(lineUpDetailDTO));
     }
 
+
+    @ApiOperation("WMS杩愯緭鍗曡鎯�")
+    @GetMapping("/wmsJobDetail")
+    public ApiResponse<PlatformWmsJob> wmsJobDetail(@RequestParam Integer id) {
+        return ApiResponse.success(platformWmsJobService.findByDetailId(id));
+    }
+
+
 }
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 8be5af1..73ca495 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
@@ -55,6 +55,9 @@
     @Autowired
     private PlatformService platformService;
 
+    @Autowired
+    private PlatformWmsJobService platformWmsJobService;
+
     @ApiOperation("鑾峰彇鏈堝彴缁勪俊鎭�")
     @PostMapping("/getPlatformGroupList")
     public ApiResponse<List<PlatformGroup>>  getPlatformGroupList (@RequestBody PlatformDataDTO platformDataDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
@@ -100,7 +103,8 @@
     @PostMapping("/platformInPark")
     public ApiResponse platformInPark (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
-        platformJobService.platformInPark(jobOperateDTO);
+        PlatformJob platformJob = platformJobService.platformInPark(jobOperateDTO);
+        platformJobService.sendInPark(platformJob);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
@@ -108,7 +112,11 @@
     @PostMapping("/platformCallNumber")
     public ApiResponse platformCallNumber (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
-        platformJobService.platformCallNumber(jobOperateDTO);
+        PlatformJob oldPlatformJob = platformJobService.findById(jobOperateDTO.getJobId());
+        PlatformJob platformJob = platformJobService.platformCallNumber(jobOperateDTO);
+        if(Constants.equalsInteger(oldPlatformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
+            platformJobService.sendInPark(platformJob);
+        }
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
@@ -141,7 +149,8 @@
     @PostMapping("/beginWork")
     public ApiResponse beginWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
-        platformJobService.beginWork(jobOperateDTO);
+        PlatformJob platformJob = platformJobService.beginWork(jobOperateDTO);
+        platformJobService.cancelInPark(platformJob);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
@@ -150,9 +159,18 @@
     @PostMapping("/finishWork")
     public ApiResponse finishWork (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         jobOperateDTO.setLoginUserInfo(getLoginUser(token));
-        platformJobService.finishWork(jobOperateDTO);
+        PlatformJob platformJob = platformJobService.finishWork(jobOperateDTO);
+        //涓嬪彂绂诲洯鏉冮檺
+        platformJobService.sendInPark(platformJob);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
 
+    @ApiOperation("WMS杩愯緭鍗曡鎯�")
+    @GetMapping("/wmsJobDetail")
+    public ApiResponse<PlatformWmsJob> wmsJobDetail(@RequestParam Integer id) {
+        return ApiResponse.success(platformWmsJobService.findByDetailId(id));
+    }
+
+
 }
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 733303d..4579fe9 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
@@ -32,12 +32,19 @@
      * 2銆佺墿涓氬悗鍕わ細wyhq
      * 3銆佽鏀垮姙鍏細xzbg
      * 4銆佽繍钀ヤ腑蹇冿細yyzx
+     *
+     * 1銆佸畨闃蹭腑蹇冿細afzx
+     * 2銆佹秷鎺т腑蹇冿細xkzx
+     * 3銆佽兘绠′腑蹇冿細ngzx
      */
     public interface MenuPageId{
-            String zhaf = "zhaf";//缁煎悎瀹夐槻
-            String wyhq = "wyhq";//鐗╀笟鍚庡嫟
-            String xzbg = "xzbg";//琛屾斂鍔炲叕
-            String yyzx = "yyzx";//杩愯惀涓績
+        String afzx = "afzx";//瀹夐槻涓績
+        String zhaf = "zhaf";//娑堟帶涓績
+        String ngzx = "ngzx";//鑳界涓績
+        String wyhq = "wyhq";//鐗╀笟鍚庡嫟
+        String xkzx = "xkzx";//缁煎悎瀹夐槻
+        String xzbg = "xzbg";//琛屾斂鍔炲叕
+        String yyzx = "yyzx";//杩愯惀涓績
 
     }
 
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 31f76aa..e9f749e 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
@@ -387,7 +387,7 @@
     public  static  BaseResponse   parkReservationDeletion(ParkReservationDelRequest param){
         log.info("銆愭捣搴疯溅浣嶅彇娑堥绾︺��================寮�濮�===="+JSONObject.toJSONString(param));
         try {
-            String res = HKTools.carChargeDeletion(JSONObject.toJSONString(param));
+            String res = HKTools.parkDeletion(JSONObject.toJSONString(param));
             TypeReference typeReference =
                     new TypeReference< BaseResponse>(){};
             BaseResponse  result = JSONObject.parseObject(res, typeReference.getType());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformWarnEventMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformWarnEventMapper.java
new file mode 100644
index 0000000..3180246
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformWarnEventMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.PlatformWarnEvent;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/09/25 09:41
+ */
+public interface PlatformWarnEventMapper extends BaseMapper<PlatformWarnEvent> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
index 74e4fe0..2574f93 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
@@ -12,6 +12,8 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import java.util.Date;
 import java.math.BigDecimal;
 import java.util.List;
@@ -187,7 +189,33 @@
     @TableField(exist = false)
     private String workCarCode;
 
+    @ApiModelProperty(value = "寮�濮嬫椂闂� yyyy-MM-dd", example = "1")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField(exist = false)
+    private Date queryDateStart;
 
+    @ApiModelProperty(value = "缁撴潫鏃堕棿 yyyy-MM-dd", example = "1")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField(exist = false)
+    private Date queryDateEnd;
+
+    @ApiModelProperty(value = "鍋滈潬娆℃暟", example = "1")
+    @TableField(exist = false)
+    private Integer stopCount;
+
+    @ApiModelProperty(value = "宸ヤ綔鏃堕暱 鍗曚綅h", example = "1")
+    @TableField(exist = false)
+    private BigDecimal workCountTime;
+
+    @ApiModelProperty(value = "鏈堝彴宸ヤ綔寮�鏀炬椂闀�" ,hidden = true)
+    @TableField(exist = false)
+    private BigDecimal openTime ;
+
+    @ApiModelProperty(value = "浣跨敤鐜�", example = "1")
+    @TableField(exist = false)
+    private BigDecimal useRata;
 
     @ApiModelProperty(value = "鏈堝彴浣滀笟鏁版嵁")
     @TableField(exist = false)
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 d9c8c84..c60aa27 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
@@ -355,14 +355,33 @@
     @TableField(exist = false)
     private Integer jobType;
 
-    @ApiModelProperty(value = "寮�濮嬩换鍔℃椂闂磋捣")
+    @ApiModelProperty(value = "寮�濮嬩綔涓氭椂闂磋捣")
     @TableField(exist = false)
     private Date beginWorkDateStart;
 
-    @ApiModelProperty(value = "寮�濮嬩换鍔℃椂闂存")
+    @ApiModelProperty(value = "寮�濮嬩綔涓氭椂闂存")
     @TableField(exist = false)
     private Date beginWorkDateEnd;
 
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿璧�")
+    @TableField(exist = false)
+    private Date createDateStart;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿姝�")
+    @TableField(exist = false)
+    private Date createDateEnd;
+
+    @ApiModelProperty(value = "鏈堝彴缁勫悕绉�")
+    @TableField(exist = false)
+    private String platformGroupName ;
+
+    @ApiModelProperty(value = "鏈堝彴宸ヤ綔鏃堕暱" ,hidden = true)
+    @TableField(exist = false)
+    private BigDecimal workTimes ;
+
+
+
     @ApiModelProperty(value = "澶氱姸鎬佹煡璇� 澶氫釜浠�,鍒嗗壊")
     @TableField(exist = false)
     private String queryStatus;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWarnEvent.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWarnEvent.java
new file mode 100644
index 0000000..143c80b
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWarnEvent.java
@@ -0,0 +1,75 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鏈堝彴棰勮淇℃伅
+ * @author 姹熻箘韫�
+ * @date 2024/09/25 09:41
+ */
+@Data
+@ApiModel("鏈堝彴棰勮淇℃伅")
+@TableName("`platform_warn_event`")
+public class PlatformWarnEvent {
+
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鏈堝彴涓婚敭", example = "1")
+    @ExcelColumn(name="鏈堝彴涓婚敭")
+    private Integer platformId;
+
+    @ApiModelProperty(value = "棰勮鏍囬")
+    @ExcelColumn(name="棰勮鏍囬")
+    private String title;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    @ExcelColumn(name="杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "浜嬩欢鍐呭")
+    @ExcelColumn(name="浜嬩欢鍐呭")
+    private String eventContent;
+
+    @ApiModelProperty(value = "浠诲姟涓婚敭", example = "1")
+    @ExcelColumn(name="浠诲姟涓婚敭")
+    private Integer platformJobId;
+
+    @ApiModelProperty(value = "棰勮绫诲瀷 0 =  浣滀笟瓒呮椂 锛�1=鍋滈潬閿欒", example = "1")
+    @ExcelColumn(name="棰勮绫诲瀷 0 =  浣滀笟瓒呮椂 锛�1=鍋滈潬閿欒")
+    private Integer eventType;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java
index f3b22db..d85176d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.business.vo.WmsJobContractVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -9,6 +10,8 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -109,11 +112,21 @@
     @ApiModelProperty(value = "鍚堝悓鍙穈")
     @ExcelColumn(name="鍚堝悓鍙穈")
     private String contractNum;
+
     @ApiModelProperty(value = "鏄惁鏂版暟鎹甡")
     @TableField(exist = false)
     private int isNew;
 
+    @ApiModelProperty(value = "鎬绘暟閲�")
+    @TableField(exist = false)
+    private BigDecimal ioQty;
+
+
     @ApiModelProperty(value = "鏈堝彴_WMS浣滀笟閫氱煡鍗曟槑缁�")
     @TableField(exist = false)
     private List<PlatformWmsDetail> platformWmsDetailList;
+
+    @ApiModelProperty(value = "鍚堝悓鍒楄〃")
+    @TableField(exist = false)
+    private List<WmsJobContractVO> wmsJobContractVOList;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java
index 4a62ca8..ed90548 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitPark.java
@@ -67,12 +67,12 @@
     @ExcelColumn(name="杞︾墝鍙�")
     private String carCode;
 
-    @ApiModelProperty(value = "娴峰悍鏍囪瘑", example = "1")
+    @ApiModelProperty(value = "娴峰悍鏍囪瘑 棰勭害鏍囪瘑 reserveOrderNo", example = "1")
     @ExcelColumn(name="娴峰悍鏍囪瘑")
-    private Integer hkId;
+    private String hkId;
 
-    @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� 2鍚屾澶辫触", example = "1")
-    @ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� 2鍚屾澶辫触")
+    @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� 2鍚屾澶辫触 3宸插彇娑�", example = "1")
+    @ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� 2鍚屾澶辫触 3宸插彇娑�")
     private Integer hkStatus;
 
     @ApiModelProperty(value = "娴峰悍鏈�杩戝悓姝ユ椂闂�")
@@ -91,6 +91,10 @@
     @ExcelColumn(name="鍋滆溅搴撴捣搴风紪鐮�")
     private String parkHkId;
 
+    @ApiModelProperty(value = "涓氬姟绫诲瀷锛�0=璁垮鎶ュ锛�1=鏈堝彴鐗╂祦杞�", example = "1")
+    @ExcelColumn(name="涓氬姟绫诲瀷锛�0=璁垮鎶ュ锛�1=鏈堝彴鐗╂祦杞�")
+    private Integer objType;
+
     @ApiModelProperty(value = "鍋滆溅鍦哄悕绉�", example = "1")
     @TableField(exist = false)
     private String parksName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/WmsJobContractVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/WmsJobContractVO.java
new file mode 100644
index 0000000..d42123f
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/WmsJobContractVO.java
@@ -0,0 +1,29 @@
+package com.doumee.dao.business.vo;
+
+import com.doumee.dao.business.model.Approve;
+import com.doumee.dao.business.model.Platform;
+import com.doumee.dao.business.model.PlatformWmsDetail;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/23 14:56
+ */
+@Data
+public class WmsJobContractVO {
+
+    @ApiModelProperty(value = "鍚堝悓鍙�")
+    private String contractCode;
+
+    @ApiModelProperty(value = "鏀惰揣鍦�")
+    private String address;
+
+    @ApiModelProperty(value = "鏄庣粏淇℃伅")
+    private List<PlatformWmsDetail> platformWmsDetailList;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java
index cf2adf0..0c2f6c2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataInfoResponse.java
@@ -32,5 +32,7 @@
     private String repertotyAddress;
     @ApiModelProperty(value = "鏉ユ簮鍦帮紙渚涘簲鍟嗗涓級")
     private List<String> inRepertotyCode;
+    @ApiModelProperty(value = "鏀惰揣淇℃伅")
+    private List<PlatformDataWmsInfoResponse> platformDataWmsInfoResponseList;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java
new file mode 100644
index 0000000..865a566
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformDataWmsInfoResponse.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.openapi.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/12/7 11:19
+ */
+@Data
+@ApiModel("銆愭湀鍙般�戞湀鍙板綋鍓嶄綔涓氫俊鎭疻MS璇︽儏杩斿洖鍙傛暟")
+public class PlatformDataWmsInfoResponse {
+    @ApiModelProperty(value = "璁″垝鏀惰揣鏁伴噺", example = "1")
+    private BigDecimal ioQty;
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О", example = "1")
+    private String  materialName;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java
index 5af0cb3..649e39f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobOperateDTO.java
@@ -24,6 +24,9 @@
     @ApiModelProperty(value = "鍚庤溅鐗屽彿 鑷姩寮�濮嬩换鍔′娇鐢�")
     private String carCodeBack;
 
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
     @ApiModelProperty(value = "鏈堝彴鐩告満涓婚敭 鑷姩寮�濮嬩换鍔′娇鐢�")
     private Integer deviceId;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SavePlatformWarnEventDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SavePlatformWarnEventDTO.java
new file mode 100644
index 0000000..804f323
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SavePlatformWarnEventDTO.java
@@ -0,0 +1,32 @@
+package com.doumee.dao.web.reqeust;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 鏈堝彴棰勮淇℃伅
+ * @author 姹熻箘韫�
+ * @date 2024/09/25 09:41
+ */
+@Data
+public class SavePlatformWarnEventDTO {
+
+    @ApiModelProperty(value = "鏈堝彴涓婚敭", example = "1")
+    private Integer platformId;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "浠诲姟涓婚敭", example = "1")
+    private Integer platformJobId;
+
+    @ApiModelProperty(value = "棰勮绫诲瀷 0 =  浣滀笟瓒呮椂 锛�1=鍋滈潬閿欒", example = "1")
+    private Integer eventType;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java
index 7fcd0c9..801474f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformWorkVO.java
@@ -22,7 +22,7 @@
     @ApiModelProperty(value = "宸插彨鍙锋暟閲�")
     private Integer callNum = 0;
 
-    @ApiModelProperty(value = "绛夊緟鏁伴噺")
+    @ApiModelProperty(value = "绛夊緟鏁伴噺 杞Щ + 鏈堝彴缁勪笅 宸茬鍒版暟鎹�")
     private Integer waitNum = 0;
 
     @ApiModelProperty(value = "寮傚父鏁伴噺")
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 d82cd9f..0100842 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
@@ -137,13 +137,25 @@
      * 閫氱煡鍏ュ洯
      * @param jobOperateDTO
      */
-    void platformInPark(JobOperateDTO jobOperateDTO);
+    PlatformJob platformInPark(JobOperateDTO jobOperateDTO);
+
+    /**
+     * 涓嬪彂鍏ュ洯鏉冮檺
+     * @param platformJob
+     */
+    void sendInPark(PlatformJob platformJob);
+
+    /**
+     * 鍙栨秷鍏ュ洯鏉冮檺
+     * @param platformJob
+     */
+    void cancelInPark(PlatformJob platformJob);
 
     /**
      * 鏈堝彴鍙彿
      * @param jobOperateDTO
      */
-    void platformCallNumber(JobOperateDTO jobOperateDTO);
+    PlatformJob platformCallNumber(JobOperateDTO jobOperateDTO);
 
     /**
      * 杞Щ鏈堝彴
@@ -167,7 +179,7 @@
      * 鎵嬪姩寮�濮嬩綔涓�
      * @param jobOperateDTO
      */
-    void beginWork(JobOperateDTO jobOperateDTO);
+    PlatformJob beginWork(JobOperateDTO jobOperateDTO);
 
     /**
      * 鏈堝彴鐩告満 寮�濮嬩綔涓�
@@ -179,7 +191,7 @@
      * 瀹屾垚浣滀笟
      * @param jobOperateDTO
      */
-    void finishWork(JobOperateDTO jobOperateDTO);
+    PlatformJob finishWork(JobOperateDTO jobOperateDTO);
 
     /**
      * 鎵嬪姩鎺堟潈杞﹁締绂诲満
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java
index 81fe289..3a82283 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformService.java
@@ -104,4 +104,5 @@
 
     List<PlatformStatusListResponse>  getPlatformStatusList();
 
+    List<Platform> platformWorkReportList(Platform platform);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWarnEventService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWarnEventService.java
new file mode 100644
index 0000000..4c917e9
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWarnEventService.java
@@ -0,0 +1,101 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.PlatformWarnEvent;
+import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
+
+import java.util.List;
+
+/**
+ * 鏈堝彴棰勮淇℃伅Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2024/09/25 09:41
+ */
+public interface PlatformWarnEventService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param platformWarnEvent 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(PlatformWarnEvent platformWarnEvent);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param platformWarnEvent 瀹炰綋瀵硅薄
+     */
+    void delete(PlatformWarnEvent platformWarnEvent);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param platformWarnEvent 瀹炰綋瀵硅薄
+     */
+    void updateById(PlatformWarnEvent platformWarnEvent);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param platformWarnEvents 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<PlatformWarnEvent> platformWarnEvents);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return PlatformWarnEvent
+     */
+    PlatformWarnEvent findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param platformWarnEvent 瀹炰綋瀵硅薄
+     * @return PlatformWarnEvent
+     */
+    PlatformWarnEvent findOne(PlatformWarnEvent platformWarnEvent);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param platformWarnEvent 瀹炰綋瀵硅薄
+     * @return List<PlatformWarnEvent>
+     */
+    List<PlatformWarnEvent> findList(PlatformWarnEvent platformWarnEvent);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<PlatformWarnEvent>
+     */
+    PageData<PlatformWarnEvent> findPage(PageWrap<PlatformWarnEvent> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param platformWarnEvent 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(PlatformWarnEvent platformWarnEvent);
+
+    void savePlatformWarnEvent(SavePlatformWarnEventDTO savePlatformWarnEventDTO);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWmsJobService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWmsJobService.java
index c2b5330..e1b7fcd 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWmsJobService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWmsJobService.java
@@ -94,4 +94,7 @@
      * @return long
      */
     long count(PlatformWmsJob platformWmsJob);
+
+    PlatformWmsJob findByDetailId(Integer id);
+
 }
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 3d112dd..0d6f813 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
@@ -7,6 +7,8 @@
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.CarChargeAddRequest;
+import com.doumee.core.haikang.model.param.request.ParkReservationAddRequest;
+import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
@@ -1467,16 +1469,24 @@
                         visitPark.setStartTime(visits.getStarttime());
                         visitPark.setEndTime(visits.getEndtime());
                         visitPark.setParkHkId(parks.getHkId());
+                        visitPark.setObjType(Constants.ZERO);
 
-                        CarChargeAddRequest param = new CarChargeAddRequest();
-                        param.setPlateNo(visitPark.getCarCode());
-                        param.setParkSyscode(visitPark.getParkHkId());
-                        param.setStartTime(Objects.isNull(visitPark.getStartTime())?DateUtil.getDate(new Date(),"yyyy-MM-dd"):DateUtil.getShortTimeToNull(visitPark.getStartTime()));
-                        param.setEndTime(Objects.isNull(visitPark.getEndTime())?"2999-12-31":DateUtil.getShortTimeToNull(visitPark.getEndTime()));
-                        BaseResponse response = HKService.carChargeAddtion(param);
+                        ParkReservationAddRequest request = new ParkReservationAddRequest();
+                        request.setPlateNo(visitPark.getCarCode());
+                        request.setParkSyscode(visitPark.getParkHkId());
+                        request.setPhoneNo(visits.getPhone());
+                        request.setOwner(visits.getName());
+                        request.setAllowTimes(Constants.ONE+"");
+                        request.setIsCharge(Constants.ONE+"");
+                        request.setStartTime(Objects.isNull(visitPark.getStartTime())?DateUtil.getISO8601Timestamp2(new Date()):DateUtil.getISO8601Timestamp2(visitPark.getStartTime()));
+                        request.setEndTime(Objects.isNull(visitPark.getEndTime())?"2999-12-31T00:00:00+08:00":DateUtil.getISO8601Timestamp2(visitPark.getEndTime()));
+                        BaseResponse response =  HKService.parkReservationAddition(request);
+
                         visitPark.setHkDate(new Date());
                         if(response!=null
                                 && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                            ParkReservationAddResponse parkReservationAddResponse = (ParkReservationAddResponse) response.getData();
+                            visitPark.setHkId(parkReservationAddResponse.getReserveOrderNo());
                             visitPark.setHkStatus(Constants.ONE);
                             visitPark.setRemark("鍖呮湡鎴愬姛");
                         }else{
@@ -1486,6 +1496,7 @@
                             sendStatus = false;
                         }
                         parkBookList.add(visitPark);
+
                     }
                     visitParkMapper.insert(parkBookList);
                 }
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 7257cc8..7f9fd75 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
@@ -261,7 +261,9 @@
                                     Constants.PlatformJobStatus.CALLED.getKey(),
                                     Constants.PlatformJobStatus.WORKING.getKey(),
                                     Constants.PlatformJobStatus.EXCEPTION.getKey(),
-                                    Constants.PlatformJobStatus.OVER_NUMBER.getKey()
+                                    Constants.PlatformJobStatus.OVER_NUMBER.getKey(),
+                                    Constants.PlatformJobStatus.TRANSFERING.getKey()
+
                             )
 //                    .like(PlatformJob::getArriveDate,DateUtil.getCurrDate())
                     .orderByDesc(PlatformJob::getCreateDate)
@@ -282,7 +284,8 @@
         PlatformWorkVO platformWorkVO = new PlatformWorkVO();
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobList)){
             //鑾峰彇鏈堝彴涓嬬殑鎵�鏈変綔涓氭暟鎹�
-            List<PlatformJob> platformJobs = platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),platformId)).collect(Collectors.toList());
+            List<PlatformJob> platformJobs = platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),platformId)
+             && !Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())).collect(Collectors.toList());
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobs)){
                 platformWorkVO.setWorkNum(
                         platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())).collect(Collectors.toList()).size()
@@ -291,7 +294,11 @@
                         platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())).collect(Collectors.toList()).size()
                 );
                 platformWorkVO.setWaitNum(
-                        platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())).collect(Collectors.toList()).size()
+                        platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.TRANSFERING.getKey())
+                        ).collect(Collectors.toList()).size()
+                        +
+                        platformJobList.stream().filter(i->Constants.equalsInteger(platformId,i.getPlatformId())
+                                && Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())).collect(Collectors.toList()).size()
                 );
                 platformWorkVO.setExceptionNum(
                         platformJobs.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey())).collect(Collectors.toList()).size()
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 af60a31..771f5c1 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,13 @@
 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.model.param.request.CarChargeAddRequest;
+import com.doumee.core.haikang.model.param.request.ParkReservationAddRequest;
+import com.doumee.core.haikang.model.param.request.ParkReservationDelRequest;
+import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
+import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
@@ -83,6 +90,12 @@
     @Autowired
     private PlatformShowParamMapper platformShowParamMapper;
 
+    @Autowired
+    private ParksMapper parksMapper;
+
+    @Autowired
+    private VisitParkMapper visitParkMapper;
+
 
     @Override
     public Integer create(PlatformJob platformJob) {
@@ -158,10 +171,12 @@
         queryWrapper
                 .selectAll(PlatformJob.class)
                 .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                .selectAs(PlatformGroup::getName,PlatformJob::getPlatformGroupName)
                 .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                 .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                 .selectAs(SystemUser::getUsername,PlatformJob::getOutUserName)
                 .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
+                .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId)
                 .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                 .leftJoin(SystemUser.class,SystemUser::getId,PlatformJob::getOutUserId)
                 .eq(pageWrap.getModel().getId() != null, PlatformJob::getId, pageWrap.getModel().getId())
@@ -239,8 +254,11 @@
                 .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
 
                 .apply(pageWrap.getModel().getQueryStatus() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatus()+"')")
-                .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart()))
-                .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd()))
+                .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart()))
+                .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd()))
+
+                .ge(pageWrap.getModel().getCreateDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getCreateDateStart()))
+                .le(pageWrap.getModel().getCreateDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDateEnd()))
                 .eq(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh)
                 .ne(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ZERO,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh)
         ;
@@ -277,15 +295,31 @@
                 .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                 .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
                 .like(pageWrap.getModel().getCarCodeFront() != null, PlatformJob::getCarCodeFront, pageWrap.getModel().getCarCodeFront())
-                .eq(Objects.nonNull(pageWrap.getModel().getCallType())
-                        &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+//                .eq(Objects.nonNull(pageWrap.getModel().getCallType())
+//                        &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),
+//                        PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+//                )
+
+                .apply(Objects.nonNull(pageWrap.getModel().getCallType())
+                                &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),
+                        " ( " +
+                                " ( t.`STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and t.PLATFORM_GROUP_ID = ( SELECT p.group_id FROM platform p WHERE p.id = "+pageWrap.getModel().getPlatformId()+" LIMIT 1 )  )" +
+                                ") "
                 )
-                .and(Objects.nonNull(pageWrap.getModel().getCallType())
-                        &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.TWO),
-                        i->i.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()).or()
-                                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.IN_WAIT.getKey()).or()
-                                .apply(" ( t.status = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" ) ")
+
+
+                .apply(Objects.nonNull(pageWrap.getModel().getCallType())
+                                &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.TWO),
+                                 " ( " +
+                                         " ( t.`STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and t.PLATFORM_GROUP_ID = ( SELECT p.group_id FROM platform p WHERE p.id = "+pageWrap.getModel().getPlatformId()+" LIMIT 1 )  )" +
+                                         " or  " +
+                                         " (t.`STATUS` = "+Constants.PlatformJobStatus.IN_WAIT.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" )" +
+                                         " or " +
+                                         "  (t.`STATUS` = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" )  " +
+                                         ") "
                 )
+
+
                 .and(Objects.nonNull(pageWrap.getModel().getCallType())
                                 &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.THREE),
                         i->i.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()).or()
@@ -356,7 +390,7 @@
                 //璁$畻棰勮绛夊緟鏃堕棿
                 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 ){
+                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;
@@ -510,6 +544,8 @@
             ){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓氬姟鐘舵�佸凡娴佽浆锛岃鍒锋柊鏌ョ湅");
             }
+            platformJob.setArriveDate(Objects.isNull(platformJob.getArriveDate())?new Date():null);
+            platformJob.setConfirmTaskDate(Objects.isNull(platformJob.getConfirmTaskDate())?new Date():null);
         }else{
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"绛惧埌绫诲瀷閿欒");
         }
@@ -705,9 +741,10 @@
      */
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
-    public void platformInPark(JobOperateDTO jobOperateDTO){
+    public PlatformJob platformInPark(JobOperateDTO jobOperateDTO){
         if(Objects.isNull(jobOperateDTO)
-                || Objects.isNull(jobOperateDTO.getJobId())){
+                || Objects.isNull(jobOperateDTO.getJobId())
+                || Objects.isNull(jobOperateDTO.getPlatformId())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
@@ -717,26 +754,136 @@
         if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,涓氬姟鐘舵�佸凡娴佽浆锛�");
         }
+
+        Platform platform = platformJoinMapper.selectById(jobOperateDTO.getPlatformId());
+        if(Objects.isNull(platform)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
+        }
+
+        //鍒ゆ柇鏄惁闇�瑕佸~鍏呰繘鍘�
+        if(StringUtils.isBlank(platformJob.getPlatforms())){
+            platformJob.setPlatforms(jobOperateDTO.getPlatformId().toString());
+            platformJob.setPlatformNames(platform.getName());
+        }else{
+            if(!Constants.equalsInteger(platform.getId(),platformJob.getPlatformId())){
+                platformJob.setPlatforms(platformJob.getPlatforms() + "," +jobOperateDTO.getPlatformId().toString());
+                platformJob.setPlatformNames(platformJob.getPlatformNames() + "," +platform.getName());
+            }
+        }
+
         PlatformJob oldPlatformJob = new PlatformJob();
         BeanUtils.copyProperties(platformJob,oldPlatformJob);
-
+        platformJob.setPlatformId(platform.getId());
         platformJob.setInwaitDate(new Date());
         platformJob.setInwaitUserId(jobOperateDTO.getLoginUserInfo().getId());
         platformJob.setStatus(Constants.PlatformJobStatus.IN_WAIT.getKey());
         platformJob.setEditDate(new Date());
         platformJobMapper.updateById(platformJob);
 
-        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
-        || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
-        || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
-            //TODO 涓嬪彂鍏ュ洯鏉冮檺
-
-
-        }
         //瀛樺偍鎿嶄綔鏃ュ織
         savePlatformLog(Constants.PlatformJobLogType.IN_WAIT.getKey(),oldPlatformJob,platformJob,
                 Constants.PlatformJobLogType.IN_WAIT.getInfo());
 
+        return platformJob;
+    }
+
+
+    @Override
+    public void sendInPark(PlatformJob platformJob){
+        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
+                || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
+                || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
+            //鏌ヨ褰撳墠鍚敤鐨勫仠杞﹀満
+            List<Parks> parksList = parksMapper.selectList(new QueryWrapper<Parks>()
+                    .lambda()
+                    .isNotNull(Parks::getHkId)
+                    .eq(Parks::getIsdeleted,Constants.ZERO));
+            List<VisitPark> visitParkList = new ArrayList<>();
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(parksList)){
+                Boolean sendStatus = true;
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(parksList)){
+                    for (Parks parks:parksList) {
+                        VisitPark visitPark = new VisitPark();
+                        visitPark.setIsdeleted(Constants.ZERO);
+                        visitPark.setCreateDate(new Date());
+                        visitPark.setVisitApplyId(platformJob.getId().toString());
+                        visitPark.setCarCode(platformJob.getCarCodeFront());
+                        visitPark.setParkId(parks.getId().toString());
+                        visitPark.setStartTime(new Date());
+                        visitPark.setEndTime(DateUtil.getXMinuteAfterDate(visitPark.getStartTime(),Integer.valueOf(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.POWER_MINUTE).getCode())));
+                        visitPark.setParkHkId(parks.getHkId());
+                        visitPark.setObjType(Constants.ONE);
+
+                        ParkReservationAddRequest request = new ParkReservationAddRequest();
+                        request.setPlateNo(visitPark.getCarCode());
+                        request.setParkSyscode(visitPark.getParkHkId());
+                        request.setPhoneNo(platformJob.getDrivierPhone());
+                        request.setOwner(platformJob.getDriverName());
+                        request.setAllowTimes(Constants.ONE+"");
+                        request.setIsCharge(Constants.ONE+"");
+                        request.setStartTime(Objects.isNull(visitPark.getStartTime())?DateUtil.getISO8601Timestamp2(new Date()):DateUtil.getISO8601Timestamp2(visitPark.getStartTime()));
+                        request.setEndTime(Objects.isNull(visitPark.getEndTime())?"2999-12-31T00:00:00+08:00":DateUtil.getISO8601Timestamp2(visitPark.getEndTime()));
+                        BaseResponse response =  HKService.parkReservationAddition(request);
+
+                        visitPark.setHkDate(new Date());
+                        if(response!=null
+                                && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                            ParkReservationAddResponse parkReservationAddResponse = (ParkReservationAddResponse) response.getData();
+                            visitPark.setHkId(parkReservationAddResponse.getReserveOrderNo());
+                            visitPark.setHkStatus(Constants.ONE);
+                            visitPark.setRemark("鍖呮湡鎴愬姛");
+                        }else{
+                            visitPark.setHkStatus(Constants.TWO);
+                            visitPark.setRemark("鍖呮湡澶辫触~");
+                            //涓嬪彂澶辫触  鏍囪涓讳笟鍔$姸鎬佷负涓嬪彂澶辫触
+                            sendStatus = false;
+                        }
+                        visitParkList.add(visitPark);
+
+                    }
+                    visitParkMapper.insert(visitParkList);
+                    platformJob.setInHkdate(new Date());
+                    if(sendStatus){
+                        platformJob.setInHkstatus(Constants.TWO);
+                    }else{
+                        platformJob.setInHkstatus(Constants.THREE);
+                    }
+                    platformJobMapper.updateById(platformJob);
+                }
+
+            }
+        }
+    }
+
+
+    @Override
+    public void cancelInPark(PlatformJob platformJob){
+        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
+                || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
+                || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
+
+            List<VisitPark> visitParkList = visitParkMapper.selectList(new QueryWrapper<VisitPark>().lambda()
+                    .eq(VisitPark::getVisitApplyId,platformJob.getId())
+                    .eq(VisitPark::getObjType,Constants.ONE)
+                    .eq(VisitPark::getHkStatus,Constants.ONE)
+                    .isNotNull(VisitPark::getHkId)
+                    .apply(" END_TIME > now() ")
+            );
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(visitParkList)){
+                for (VisitPark visitPark:visitParkList) {
+                    ParkReservationDelRequest param = new ParkReservationDelRequest();
+                    param.setReserveOrderNo(visitPark.getHkId());
+                    BaseResponse response =  HKService.parkReservationDeletion(param);
+                    if(response!=null
+                            && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                        visitPark.setHkStatus(Constants.THREE);
+                        visitPark.setIsdeleted(Constants.ONE);
+                        visitPark.setEditDate(new Date());
+                        visitParkMapper.updateById(visitPark);
+                    }
+                }
+            }
+        }
     }
 
     /**
@@ -744,7 +891,7 @@
      */
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
-    public void platformCallNumber(JobOperateDTO jobOperateDTO){
+    public PlatformJob platformCallNumber(JobOperateDTO jobOperateDTO){
         if(Objects.isNull(jobOperateDTO)
                 || Objects.isNull(jobOperateDTO.getJobId())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -764,10 +911,19 @@
         if(Objects.isNull(platform)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
         }
+
+        //鏌ヨ鏈堝彴浠诲姟绛夊緟浣滀笟鏁伴噺
+        if(platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
+                .eq(PlatformJob::getPlatformId,platform.getId())
+                .in(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey(),Constants.PlatformJobStatus.WORKING.getKey())
+        )>platform.getWorkingNum()){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瓒呭嚭鏈堝彴鍙悓鏃朵綔涓氭暟閲廩"+platform.getWorkingNum()+"杈哴");
+        };
+
         PlatformJob oldPlatformJob = new PlatformJob();
         BeanUtils.copyProperties(platformJob,oldPlatformJob);
 
-        platformJob.setCallDate(new Date());
+        platformJob.setCallDate(Objects.isNull(platformJob.getCallDate())?new Date():null);
         platformJob.setCallUserId(jobOperateDTO.getLoginUserInfo().getId());
         platformJob.setStatus(Constants.PlatformJobStatus.CALLED.getKey());
         platformJob.setPlatformId(jobOperateDTO.getPlatformId());
@@ -776,14 +932,17 @@
             platformJob.setPlatforms(jobOperateDTO.getPlatformId().toString());
             platformJob.setPlatformNames(platform.getName());
         }else{
-            platformJob.setPlatforms(platformJob.getPlatforms() + "," +jobOperateDTO.getPlatformId().toString());
-            platformJob.setPlatformNames(platformJob.getPlatformNames() + "," +platform.getName());
+            if(!Constants.equalsInteger(platform.getId(),platformJob.getPlatformId())){
+                platformJob.setPlatforms(platformJob.getPlatforms() + "," +jobOperateDTO.getPlatformId().toString());
+                platformJob.setPlatformNames(platformJob.getPlatformNames() + "," +platform.getName());
+            }
         }
         platformJob.setEditDate(new Date());
         platformJobMapper.updateById(platformJob);
         //瀛樺偍鎿嶄綔鏃ュ織
         savePlatformLog(Constants.PlatformJobLogType.CALLED.getKey(),oldPlatformJob,platformJob,
                 Constants.PlatformJobLogType.CALLED.getInfo().replace("{data}",platform.getName()));
+        return platformJob;
     }
 
 
@@ -906,7 +1065,7 @@
      */
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
-    public void beginWork(JobOperateDTO jobOperateDTO){
+    public PlatformJob beginWork(JobOperateDTO jobOperateDTO){
         if(Objects.isNull(jobOperateDTO)
                 || Objects.isNull(jobOperateDTO.getJobId())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -924,10 +1083,9 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
         }
 
+
         PlatformJob oldPlatformJob = new PlatformJob();
         BeanUtils.copyProperties(platformJob,oldPlatformJob);
-
-
         if(Objects.isNull(platformJob.getStartDate())){
             platformJob.setStartDate(new Date());
         }
@@ -938,6 +1096,8 @@
         //瀛樺偍鎿嶄綔鏃ュ織
         savePlatformLog(Constants.PlatformJobLogType.WORKING.getKey(),oldPlatformJob,platformJob,
                 Constants.PlatformJobLogType.WORKING.getInfo().replace("{data}",platform.getName()));
+
+        return platformJob;
     }
 
 
@@ -946,7 +1106,7 @@
      */
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
-    public void finishWork(JobOperateDTO jobOperateDTO){
+    public PlatformJob finishWork(JobOperateDTO jobOperateDTO){
         if(Objects.isNull(jobOperateDTO)
                 || Objects.isNull(jobOperateDTO.getJobId())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -973,9 +1133,10 @@
             //TODO 澶栧崗杞﹁璐� 鏌ヨTMS 鐢靛瓙閿佹儏鍐�
 
         }else if(Constants.equalsInteger(platformJob.getType(),Constants.ONE) || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
-            //TODO 澶栧崗杞﹀嵏璐� 鎴栬�� 甯傚叕鍙歌溅鍗歌揣 鍒欐牴鎹换鍔℃儏鍐佃繘琛屼笅鍙戠鍥潈闄�
+            //TODO 澶栧崗杞﹀嵏璐� 鎴栬�� 甯傚叕鍙歌溅鍗歌揣 鍒欐牴鎹换鍔℃儏鍐�
 
         }
+        return platformJob;
     }
 
 
@@ -1006,7 +1167,6 @@
         //瀛樺偍鎿嶄綔鏃ュ織
         savePlatformLog(Constants.PlatformJobLogType.AUTHED_LEAVE.getKey(),oldPlatformJob,platformJob ,
                 Constants.PlatformJobLogType.AUTHED_LEAVE.getInfo());
-
         //TODO 鎺堟潈杞﹁締绂诲満鏉冮檺
     }
 
@@ -1372,7 +1532,16 @@
                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){
                     List<String> stringList = platformWmsDetailList.stream().map(m->m.getInRepertotyCode()).collect(Collectors.toList());
                     response.setInRepertotyCode(stringList);
+                    List<PlatformDataWmsInfoResponse> platformDataWmsInfoResponseList = new ArrayList<>();
+                    for (PlatformWmsDetail platformWmsDetail:platformWmsDetailList) {
+                        PlatformDataWmsInfoResponse platformDataWmsInfoResponse = new PlatformDataWmsInfoResponse();
+                        platformDataWmsInfoResponse.setMaterialName(platformWmsDetail.getMaterialName());
+                        platformDataWmsInfoResponse.setIoQty(platformWmsDetail.getIoQty());
+                        platformDataWmsInfoResponseList.add(platformDataWmsInfoResponse);
+                    }
+                    response.setPlatformDataWmsInfoResponseList(platformDataWmsInfoResponseList);
                 }
+
             }
         }
         return response;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
index 589330c..6f2a9c0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
@@ -7,10 +7,13 @@
 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.DeviceMapper;
 import com.doumee.dao.business.PlatformDeviceMapper;
+import com.doumee.dao.business.PlatformJobMapper;
 import com.doumee.dao.business.PlatformMapper;
+import com.doumee.dao.business.join.PlatformJobJoinMapper;
 import com.doumee.dao.business.join.PlatformJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.openapi.response.PlatformNumByStatusResponse;
@@ -29,6 +32,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -48,6 +52,8 @@
     private PlatformDeviceMapper platformDeviceMapper;
     @Autowired
     private DeviceMapper deviceMapper;
+    @Autowired
+    private PlatformJobJoinMapper platformJobJoinMapper;
 
 
 
@@ -294,10 +300,66 @@
                     );
                 }
             }
-
         }
-
         return platformPageData;
+    }
+
+    @Override
+    public List<Platform> platformWorkReportList(Platform platform) {
+        if(Objects.isNull(platform)
+        || Objects.isNull(platform.getQueryDateStart())
+                || Objects.isNull(platform.getQueryDateEnd())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鍙傛暟閿欒");
+        }
+        MPJLambdaWrapper<Platform> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Platform.class)
+                .selectAs(PlatformGroup::getName,Platform::getGroupName)
+                .select(" (select ifnull(TIMESTAMPDIFF(HOUR, '2023-01-01 '||pg.start_time||':00', '2023-01-01 '||pg.end_time||':00' ),0) from platform_group pg " +
+                        " where t.group_id = pg.id ) as openTime ")
+                .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId);
+        queryWrapper
+                .eq(platform.getGroupId() != null, Platform::getGroupId, platform.getGroupId())
+                .eq( Platform::getIsdeleted, Constants.ZERO)
+                .like(platform.getName() != null, Platform::getName, platform.getName())
+                .orderByDesc(Platform::getId);
+        List<Platform> platformList = platformJoinMapper.selectList(queryWrapper);
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformList)){
+            //鏌ヨ鎵�鏈夋湀鍙版暟鎹笅鐨� 浠诲姟鏁版嵁  浠诲姟鏁版嵁涓�
+            List<PlatformJob> platformJobList = platformJobJoinMapper.selectJoinList(PlatformJob.class,
+                    new MPJLambdaWrapper<PlatformJob>()
+                    .selectAll(PlatformJob.class)
+                    .select(" ( select ROUND( ifnull(SUM(pl.PARAM3),0) / 3600 , 2 )   from platform_log pl  where pl.OBJ_ID = t.id " +
+                            " ) as workTimes ")
+                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey(),
+                            Constants.PlatformJobStatus.DONE.getKey(),
+                            Constants.PlatformJobStatus.TRANSFERING.getKey(),
+                            Constants.PlatformJobStatus.EXCEPTION.getKey(),
+                            Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),
+                            Constants.PlatformJobStatus.LEAVED.getKey()
+                    )
+                    .in(PlatformJob::getPlatformId,platformList.stream().map(i->i.getId()).collect(Collectors.toList()))
+                    .ge(platform.getQueryDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(platform.getQueryDateStart()))
+                    .le(platform.getQueryDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(platform.getQueryDateEnd()))
+            );
+            //鏌ヨ2鏃ユ湡鐩稿樊澶╂暟
+            Integer sumDays = DateUtil.daysBetweenDates(platform.getQueryDateEnd(),platform.getQueryDateStart())+1;
+            for (Platform bean:platformList) {
+                List<PlatformJob> beanJobList = platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),bean.getId())).collect(Collectors.toList());
+                bean.setStopCount(beanJobList.size());
+                bean.setWorkCountTime(
+                        beanJobList.stream().map(i->i.getWorkTimes()).reduce(BigDecimal.ZERO,BigDecimal::add)
+                );
+                if(Objects.isNull(bean.getOpenTime())||bean.getOpenTime().compareTo(BigDecimal.ZERO)<=0){
+                    bean.setUseRata(BigDecimal.ZERO);
+                    continue;
+                }
+                BigDecimal sumTime = BigDecimal.valueOf(sumDays).multiply(bean.getOpenTime());
+                bean.setUseRata(
+                        bean.getWorkCountTime().divide(sumTime,BigDecimal.ROUND_HALF_DOWN,2)
+                );
+            }
+        }
+        return platformList;
     }
 
     @Override
@@ -352,17 +414,17 @@
                 if(Constants.equalsInteger(platform.getPlatformStatus(),Constants.ONE)){
                     response.setCarCode(platform.getWorkCarCode());
                 }
-
-
-
             }
         }
-
-
         return platformStatusListResponses;
-
     }
 
 
 
+
+
+
+
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
new file mode 100644
index 0000000..ebab17e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
@@ -0,0 +1,185 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformWarnEventMapper;
+import com.doumee.dao.business.model.PlatformWarnEvent;
+import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
+import com.doumee.service.business.PlatformWarnEventService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鏈堝彴棰勮淇℃伅Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2024/09/25 09:41
+ */
+@Service
+public class PlatformWarnEventServiceImpl implements PlatformWarnEventService {
+
+    @Autowired
+    private PlatformWarnEventMapper platformWarnEventMapper;
+
+    @Override
+    public Integer create(PlatformWarnEvent platformWarnEvent) {
+        platformWarnEventMapper.insert(platformWarnEvent);
+        return platformWarnEvent.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        platformWarnEventMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(PlatformWarnEvent platformWarnEvent) {
+        UpdateWrapper<PlatformWarnEvent> deleteWrapper = new UpdateWrapper<>(platformWarnEvent);
+        platformWarnEventMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        platformWarnEventMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(PlatformWarnEvent platformWarnEvent) {
+        platformWarnEventMapper.updateById(platformWarnEvent);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<PlatformWarnEvent> platformWarnEvents) {
+        if (CollectionUtils.isEmpty(platformWarnEvents)) {
+            return;
+        }
+        for (PlatformWarnEvent platformWarnEvent: platformWarnEvents) {
+            this.updateById(platformWarnEvent);
+        }
+    }
+
+    @Override
+    public PlatformWarnEvent findById(Integer id) {
+        return platformWarnEventMapper.selectById(id);
+    }
+
+    @Override
+    public PlatformWarnEvent findOne(PlatformWarnEvent platformWarnEvent) {
+        QueryWrapper<PlatformWarnEvent> wrapper = new QueryWrapper<>(platformWarnEvent);
+        return platformWarnEventMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<PlatformWarnEvent> findList(PlatformWarnEvent platformWarnEvent) {
+        QueryWrapper<PlatformWarnEvent> wrapper = new QueryWrapper<>(platformWarnEvent);
+        return platformWarnEventMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<PlatformWarnEvent> findPage(PageWrap<PlatformWarnEvent> pageWrap) {
+        IPage<PlatformWarnEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<PlatformWarnEvent> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        if (pageWrap.getModel().getId() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getId, pageWrap.getModel().getId());
+        }
+        if (pageWrap.getModel().getCreator() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getCreator, pageWrap.getModel().getCreator());
+        }
+        if (pageWrap.getModel().getCreateDate() != null) {
+            queryWrapper.lambda().ge(PlatformWarnEvent::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+            queryWrapper.lambda().le(PlatformWarnEvent::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+        }
+        if (pageWrap.getModel().getEditor() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getEditor, pageWrap.getModel().getEditor());
+        }
+        if (pageWrap.getModel().getEditDate() != null) {
+            queryWrapper.lambda().ge(PlatformWarnEvent::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+            queryWrapper.lambda().le(PlatformWarnEvent::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+        }
+        if (pageWrap.getModel().getIsdeleted() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getIsdeleted, pageWrap.getModel().getIsdeleted());
+        }
+        if (pageWrap.getModel().getRemark() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getRemark, pageWrap.getModel().getRemark());
+        }
+        if (pageWrap.getModel().getPlatformId() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getPlatformId, pageWrap.getModel().getPlatformId());
+        }
+        if (pageWrap.getModel().getTitle() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getTitle, pageWrap.getModel().getTitle());
+        }
+        if (pageWrap.getModel().getCarCode() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getCarCode, pageWrap.getModel().getCarCode());
+        }
+        if (pageWrap.getModel().getEventContent() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getEventContent, pageWrap.getModel().getEventContent());
+        }
+        if (pageWrap.getModel().getPlatformJobId() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getPlatformJobId, pageWrap.getModel().getPlatformJobId());
+        }
+        if (pageWrap.getModel().getEventType() != null) {
+            queryWrapper.lambda().eq(PlatformWarnEvent::getEventType, pageWrap.getModel().getEventType());
+        }
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(platformWarnEventMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(PlatformWarnEvent platformWarnEvent) {
+        QueryWrapper<PlatformWarnEvent> wrapper = new QueryWrapper<>(platformWarnEvent);
+        return platformWarnEventMapper.selectCount(wrapper);
+    }
+
+
+    @Override
+    public void savePlatformWarnEvent(SavePlatformWarnEventDTO savePlatformWarnEventDTO){
+        if(Objects.isNull(savePlatformWarnEventDTO)
+             || Objects.isNull(savePlatformWarnEventDTO.getEventType())
+             || StringUtils.isBlank(savePlatformWarnEventDTO.getCarCode())
+        ){
+            return;
+        }
+        PlatformWarnEvent platformWarnEvent = new PlatformWarnEvent();
+        platformWarnEvent.setCreateDate(new Date());
+        platformWarnEvent.setIsdeleted(Constants.ZERO);
+        platformWarnEvent.setPlatformId(savePlatformWarnEventDTO.getPlatformId());
+        Constants.PlatformWarnEvent cPl = Constants.PlatformWarnEvent.STOP_TIMEOUT;
+        if(Constants.equalsInteger(savePlatformWarnEventDTO.getEventType(),Constants.ZERO)){
+            if(Objects.isNull(savePlatformWarnEventDTO.getPlatformJobId())){
+                return;
+            }
+            platformWarnEvent.setPlatformJobId(savePlatformWarnEventDTO.getPlatformJobId());
+        }else  if(Constants.equalsInteger(savePlatformWarnEventDTO.getEventType(),Constants.ONE)){
+            cPl = Constants.PlatformWarnEvent.STOP_ERROR;
+        }
+        platformWarnEvent.setTitle(cPl.getName());
+        platformWarnEvent.setEventContent(cPl.getInfo().replace("${carCode}",savePlatformWarnEventDTO.getCarCode()));
+        platformWarnEventMapper.insert(platformWarnEvent);
+    }
+
+
+
+}
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 eaf7f3a..b06acf9 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
@@ -1,10 +1,15 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.PlatformWmsDetailMapper;
 import com.doumee.dao.business.PlatformWmsJobMapper;
+import com.doumee.dao.business.model.PlatformWmsDetail;
 import com.doumee.dao.business.model.PlatformWmsJob;
+import com.doumee.dao.business.vo.WmsJobContractVO;
 import com.doumee.service.business.PlatformWmsJobService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -14,7 +19,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 鏈堝彴_WMS浣滀笟閫氱煡鍗曡鏁版嵁Service瀹炵幇
@@ -26,6 +33,9 @@
 
     @Autowired
     private PlatformWmsJobMapper platformWmsJobMapper;
+
+    @Autowired
+    private PlatformWmsDetailMapper platformWmsDetailMapper;
 
     @Override
     public Integer create(PlatformWmsJob platformWmsJob) {
@@ -72,6 +82,41 @@
         return platformWmsJobMapper.selectById(id);
     }
 
+
+
+    @Override
+    public PlatformWmsJob findByDetailId(Integer id) {
+        PlatformWmsJob platformWmsJob = platformWmsJobMapper.selectOne(new QueryWrapper<PlatformWmsJob>().lambda().eq(PlatformWmsJob::getJobId,id).last(" limit 1 "));
+        if(Objects.isNull(platformWmsJob)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌杩愬崟淇℃伅");
+        }
+        List<PlatformWmsDetail> platformWmsDetailList = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>()
+                .lambda().eq(PlatformWmsDetail::getJobId,id));
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){
+            platformWmsJob.setIoQty(
+                    platformWmsDetailList.stream().map(m->m.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add)
+            );
+            //鑾峰彇鎵�鏈夊悎鍚屽彿
+            List<String> ioCodeList = platformWmsDetailList.stream().map(m->m.getIocode()).collect(Collectors.toList());
+            Set<String> ioCodeSet = new HashSet<String>(ioCodeList);
+            List<WmsJobContractVO> wmsJobContractVOList = new ArrayList<>();
+            for (String ioCode:ioCodeSet) {
+                WmsJobContractVO wmsJobContractVO = new WmsJobContractVO();
+                wmsJobContractVO.setContractCode(ioCode);
+                wmsJobContractVO.setAddress(platformWmsJob.getRepertotyAddress());
+                wmsJobContractVO.setPlatformWmsDetailList(
+                        platformWmsDetailList.stream().filter(i->i.getIocode().equals(ioCode)).collect(Collectors.toList())
+                );
+                wmsJobContractVOList.add(wmsJobContractVO);
+            }
+
+            platformWmsJob.setWmsJobContractVOList(wmsJobContractVOList);
+        }else{
+            platformWmsJob.setIoQty(BigDecimal.ZERO);
+        }
+        return platformWmsJob;
+    }
+
     @Override
     public PlatformWmsJob findOne(PlatformWmsJob platformWmsJob) {
         QueryWrapper<PlatformWmsJob> wrapper = new QueryWrapper<>(platformWmsJob);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
index 0f2803f..7a7ba92 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
@@ -103,7 +103,6 @@
         }catch (Exception e){
 
         }
-
     }
 
     @Override
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 b10d537..ba580d2 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
@@ -21,9 +21,11 @@
 import com.doumee.dao.business.join.VisitsJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
 import com.doumee.service.business.DeviceEventService;
 import com.doumee.service.business.InterfaceLogService;
 import com.doumee.service.business.MemberService;
+import com.doumee.service.business.impl.PlatformWarnEventServiceImpl;
 import com.github.yulichang.interfaces.MPJBaseJoin;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
@@ -82,6 +84,8 @@
     private PlatformEventMapper platformEventMapper;
     @Autowired
     private PlatformLogMapper platformLogMapper;
+    @Autowired
+    private PlatformWarnEventServiceImpl platformWarnEventService;
     /**
      * 娴峰悍闂ㄧ浜嬩欢鎺ㄩ��
      * @param param
@@ -1026,7 +1030,14 @@
      * @param status
      */
     private void dealCarsInErrorPlatformBiz( PlatformJob model,EventPlatformCarsStatusInfoRequest status) {
-        //TODO-----------------澶勭悊杞﹁締杩涘叆閿欒鏈堝彴涓氬姟閫昏緫
+        //澶勭悊杞﹁締杩涘叆閿欒鏈堝彴涓氬姟閫昏緫
+        SavePlatformWarnEventDTO savePlatformWarnEventDTO = new SavePlatformWarnEventDTO();
+        savePlatformWarnEventDTO.setPlatformJobId(model.getId());
+        savePlatformWarnEventDTO.setPlatformId(model.getPlatformId());
+        savePlatformWarnEventDTO.setCarCode(model.getCarCodeFront());
+        savePlatformWarnEventDTO.setEventType(Constants.PlatformWarnEvent.STOP_ERROR.getKey());
+        platformWarnEventService.savePlatformWarnEvent(savePlatformWarnEventDTO);
+
         List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda()
                 .eq(PlatformDevice::getPlatformId,model.getPlatformId())
                 .eq(PlatformDevice::getIsdeleted,Constants.ZERO));
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java
index 2d41a85..4e15f11 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java
@@ -317,7 +317,7 @@
         }
         PlatformGroup group = platformGroupMapper.selectOne(new QueryWrapper<PlatformGroup>().lambda()
                 .eq(PlatformGroup::getIsdeleted,Constants.ZERO)
-                .eq(PlatformGroup::getType,Constants.ONE)
+                .eq(PlatformGroup::getType,type==0?Constants.ONE:Constants.ZERO)
                 .last("limit 1") );//鏌ヨ鍗歌揣鏈堝彴缁勭紪鐮�
         job.setPlatformGroupId(group!=null?group.getId():null);
         Member driver =  memberMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>()

--
Gitblit v1.9.3