From 931e45f5f78494c7af4cab75053da49b57f22fbe Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 13 十月 2025 14:31:43 +0800
Subject: [PATCH] 定时自动叫号 与 WMS获取车辆是否在园接口开发

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                 |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java |   47 ++++++++++++++++-------
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java          |    5 ++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java         |   20 ++++++++++
 server/doc/月台自动加号数据库变动脚本.md                                                                              |    7 ++-
 server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java                           |    6 +++
 server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java                        |   22 +++++++++++
 7 files changed, 90 insertions(+), 18 deletions(-)

diff --git "a/server/doc/\346\234\210\345\217\260\350\207\252\345\212\250\345\212\240\345\217\267\346\225\260\346\215\256\345\272\223\345\217\230\345\212\250\350\204\232\346\234\254.md" "b/server/doc/\346\234\210\345\217\260\350\207\252\345\212\250\345\212\240\345\217\267\346\225\260\346\215\256\345\272\223\345\217\230\345\212\250\350\204\232\346\234\254.md"
index 77584e9..e46d7b3 100644
--- "a/server/doc/\346\234\210\345\217\260\350\207\252\345\212\250\345\212\240\345\217\267\346\225\260\346\215\256\345\272\223\345\217\230\345\212\250\350\204\232\346\234\254.md"
+++ "b/server/doc/\346\234\210\345\217\260\350\207\252\345\212\250\345\212\240\345\217\267\346\225\260\346\215\256\345\272\223\345\217\230\345\212\250\350\204\232\346\234\254.md"
@@ -9,8 +9,7 @@
 
 ALTER TABLE `antaiwuliu`.`platform`
 ADD COLUMN `TYPE` int NULL COMMENT '绫诲瀷  0鏁存墭鐩� 1鏁d欢' AFTER `LED_CONTENT`,
-ADD COLUMN `CALL_READY_NUM` varchar(100) NULL COMMENT '鍚屾椂鍑嗗浣滀笟鏁伴噺' AFTER `TYPE`;
- 
+ADD COLUMN `CALL_READY_NUM` int NULL COMMENT '鍚屾椂鍑嗗浣滀笟鏁伴噺' AFTER `TYPE`;
 
 ALTER TABLE `antaiwuliu`.`platform_job`
 ADD COLUMN `TAG_VIRTUAL` int NULL COMMENT '鏄惁鏇存崲鏈堝彴缁� 0鍚� 1鏄�' AFTER `ORIGIN`,
@@ -21,4 +20,6 @@
 ADD COLUMN `URGE_USER` int NULL DEFAULT NULL COMMENT '鍔犳�ヤ汉鍛樼紪鐮�' AFTER `URGE_TIME`;
 
 update platform_group set IS_VIRTUAL=0;
-update platform_job  set CALL_WAY=0 where CALL_DATE is not null;
\ No newline at end of file
+update platform_job  set CALL_WAY=0 where CALL_DATE is not null; 
+
+INSERT INTO  `system_dict_data`(  `DICT_ID`, `CODE`, `LABEL`, `SORT`, `DISABLED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`, `REMARK`) VALUES (  1, '02', 'IN_REPERTOTY_CODE', 1, 0, 0, '2023-04-03 10:23:54', NULL, '2024-04-30 11:04:25', 0, '鑷姩鍙彿鍙戣揣鍦扮紪鍙�');
\ No newline at end of file
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 654ce81..33f5d9e 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
@@ -490,6 +490,7 @@
 
     public static final String COFFEE_BEAN_TASK ="COFFEE_BEAN_TASK";
 
+    public static final String IN_REPERTOTY_CODE ="IN_REPERTOTY_CODE";
 
     public static final String HOME_IMAGE ="HOME_IMAGE";
 
diff --git a/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java b/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
index 7db16b1..2a4aba8 100644
--- a/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
+++ b/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
@@ -100,5 +100,11 @@
     @PostMapping("/timer/platformJob/sendUnFinishNotice")
     ApiResponse sendUnFinishNotice();
 
+    @ApiOperation("銆愭暟瀛楀寲鏈堝彴銆戞湀鍙拌嚜鍔ㄥ彨鍙峰叆鍥�")
+    @PostMapping("/timer/platformJob/autoCallInParkCar")
+    ApiResponse autoCallInParkCar();
 
+    @ApiOperation("銆愭暟瀛楀寲鏈堝彴銆戞湀鍙拌嚜鍔ㄥ彨鍙�")
+    @PostMapping("/timer/platformJob/autoPlatformCallCar")
+    ApiResponse autoPlatformCallCar();
 }
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
index 53bf7a9..a8d8877 100644
--- a/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
@@ -1,6 +1,7 @@
 package com.doumee.api;
 
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.service.business.third.WmsService;
 import com.doumee.service.business.third.model.ApiResponse;
 import com.doumee.service.business.PlatformJobService;
 import io.swagger.annotations.Api;
@@ -23,6 +24,9 @@
 
     @Autowired
     private PlatformJobService platformJobService;
+
+    @Autowired
+    private WmsService wmsService;
 
 
     @ApiOperation("鏈堝彴鍋滈潬瓒呮椂鎶ヨ涓氬姟")
@@ -66,4 +70,22 @@
         return ApiResponse.success("鏈堝彴浠婃棩浣滀笟澶栧畬鎴愰�氱煡瀹氭椂");
     }
 
+
+
+    @ApiOperation("鏈堝彴鑷姩鍙彿")
+    @PostMapping("/autoPlatformCallCar")
+    public ApiResponse autoPlatformCallCar() {
+        platformJobService.autoPlatformCallCar(wmsService);
+        return ApiResponse.success("鏈堝彴鑷姩鍙彿");
+    }
+
+
+    @ApiOperation("鏈堝彴鑷姩鍙彿鍏ュ洯")
+    @PostMapping("/autoCallInParkCar")
+    public ApiResponse autoCallInParkCar() {
+        platformJobService.autoCallInParkCar(wmsService);
+        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 753fb4b..4cf55a9 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
@@ -163,6 +163,7 @@
         platformJobService.dealJobFinish(list,getLoginUser(token));
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
+
     @ApiOperation("鏇存崲鏈堝彴鍒嗙粍")
     @PostMapping("/changPlatformGroup")
     @CloudRequiredPermission("business:platformjob:update")
@@ -171,4 +172,23 @@
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
+
+    @LoginNoRequired
+    @ApiOperation("娴嬭瘯鑷姩鍙彿")
+    @PostMapping("/testAutoCallCar")
+    public ApiResponse  testAutoCallCar (@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        platformJobService.autoPlatformCallCar(wmsService);
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("娴嬭瘯鑷姩鍙彿鍏ュ洯")
+    @PostMapping("/testAutoCallInPark")
+    public ApiResponse  testAutoCallInPark (@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        platformJobService.autoCallInParkCar(wmsService);
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
 }
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 a993a41..bc3e6a5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business;
 
+import com.doumee.service.business.third.WmsService;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -267,4 +268,8 @@
     PlatformJob restoreWork(JobOperateDTO jobOperateDTO);
 
     void changPlatformGroup(PlatformJob param, LoginUserInfo loginUser);
+
+    void autoPlatformCallCar(WmsService wmsService);
+
+    void autoCallInParkCar(WmsService wmsService);
 }
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 cbef80e..20303e5 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
@@ -12,6 +12,7 @@
 import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.dao.business.dao.UserActionMapper;
+import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.service.business.third.WmsService;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
@@ -985,7 +986,7 @@
         BeanUtils.copyProperties(platformJob,oldPlatformJob);
         platformJob.setPlatformId(platform.getId());
         platformJob.setInwaitDate(new Date());
-        platformJob.setInwaitUserId(jobOperateDTO.getLoginUserInfo().getId());
+        platformJob.setInwaitUserId(Objects.isNull(jobOperateDTO.getLoginUserInfo())?null:jobOperateDTO.getLoginUserInfo().getId());
         platformJob.setStatus(Constants.PlatformJobStatus.IN_WAIT.getKey());
         platformJob.setEditDate(new Date());
         platformJobMapper.updateById(platformJob);
@@ -1226,7 +1227,7 @@
         BeanUtils.copyProperties(platformJob,oldPlatformJob);
 
         platformJob.setCallDate(Objects.isNull(platformJob.getCallDate())?new Date():null);
-        platformJob.setCallUserId(jobOperateDTO.getLoginUserInfo().getId());
+        platformJob.setCallUserId(Objects.isNull(jobOperateDTO.getLoginUserInfo())?null:jobOperateDTO.getLoginUserInfo().getId());
         platformJob.setStatus(Constants.PlatformJobStatus.CALLED.getKey());
         platformJob.setPlatformId(jobOperateDTO.getPlatformId());
         //鍒ゆ柇鏄惁闇�瑕佸~鍏呰繘鍘�
@@ -2578,12 +2579,13 @@
 
 
 
+    @Override
     public void autoPlatformCallCar(WmsService wmsService){
         //鏌ヨ褰撳墠寮�鍚殑鏈堝彴鏁版嵁
         List<PlatformGroup> allPlatformGroup = platformGroupMapper.selectList(new QueryWrapper<PlatformGroup>().lambda().eq(PlatformGroup::getStatus,Constants.ZERO)
                 .eq(PlatformGroup::getIsdeleted,Constants.ZERO).eq(PlatformGroup::getAutoCall,Constants.ONE)
         );
-        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(allPlatformGroup)){
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(allPlatformGroup)){
             return;
         }
         //杩囨护褰撳墠鏃堕棿娈典笉鍦ㄦ椂闂村唴鐨勬湀鍙扮粍  AUTO_CALL_END_TIME AUTO_CALL_START_TIME
@@ -2593,7 +2595,7 @@
                 && Integer.valueOf(i.getAutoCallStartTime().replaceAll(":","")) < nowHm
                 && Integer.valueOf(i.getAutoCallEndTime().replaceAll(":","")) > nowHm
         ).collect(Collectors.toList());
-        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(autoCallGroup)){
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(autoCallGroup)){
             return;
         }
         //鏌ヨ鎵�鏈夋湀鍙�
@@ -2601,7 +2603,8 @@
                 .lambda()
                 .eq(Platform::getIsdeleted,Constants.ZERO)
                 .eq(Platform::getStatus,Constants.ZERO)
-                .in(Platform::getId,autoCallGroup.stream().map(i->i.getId()).collect(Collectors.toList()))
+                .isNotNull(Platform::getWorkingNum)
+                .in(Platform::getGroupId,autoCallGroup.stream().map(i->i.getId()).collect(Collectors.toList()))
         );
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(platformList)){
             return;
@@ -2645,11 +2648,11 @@
                         .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                         .eq(PlatformJob::getPlatformGroupId, platformGroup.getId())
                         .apply(" ( " +
-                                " ( t.`STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and t.PLATFORM_GROUP_ID = "+platformGroup.getId()+"  )" +
+                                " (  `STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and PLATFORM_GROUP_ID = "+platformGroup.getId()+"  )" +
                                 " or  " +
-                                " (t.`STATUS` = "+Constants.PlatformJobStatus.IN_WAIT.getKey()+" and and t.PLATFORM_ID = "+platform.getId()+" )  " +
+                                " ( `STATUS` = "+Constants.PlatformJobStatus.IN_WAIT.getKey()+" and  PLATFORM_ID = "+platform.getId()+" )  " +
                                 " or " +
-                                "  (t.`STATUS` = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_ID = "+platform.getId()+" )  " +
+                                "  ( `STATUS` = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and PLATFORM_ID = "+platform.getId()+" )  " +
                                 ") "
                         )
                         //鎺掑簭鏂瑰紡 鏈堝彴浣滀笟绫诲瀷 锛堣浆绉讳腑 >鍙彿鍏ュ洯锛�>  鍔犳�� >  绛惧埌鏃堕棿
@@ -2660,8 +2663,12 @@
                 }
                 for (int i = 0; i < workingNum - workNum ; i++) {
                     PlatformJob platformJob  = this.getAutoCallJob(platformJobList,platform,isDefaul,platformGroup);
+                    if(Objects.isNull(platformJob)){
+                        continue;
+                    }
                     JobOperateDTO jobOperateDTO = new JobOperateDTO();
                     jobOperateDTO.setJobId(platformJob.getId());
+                    jobOperateDTO.setPlatformId(platform.getId());
                     PlatformJob callPlatformJob = this.platformCallNumber(jobOperateDTO);
                     platformJobList = platformJobList.stream().filter(j->!Constants.equalsInteger(j.getId(),platformJob.getId())).collect(Collectors.toList());
                     try{
@@ -2683,12 +2690,13 @@
 
 
 
+    @Override
     public void autoCallInParkCar(WmsService wmsService){
         //鏌ヨ褰撳墠寮�鍚殑鏈堝彴鏁版嵁
         List<PlatformGroup> allPlatformGroup = platformGroupMapper.selectList(new QueryWrapper<PlatformGroup>().lambda().eq(PlatformGroup::getStatus,Constants.ZERO)
                 .eq(PlatformGroup::getIsdeleted,Constants.ZERO).eq(PlatformGroup::getAutoCall,Constants.ONE)
         );
-        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(allPlatformGroup)){
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(allPlatformGroup)){
             return;
         }
         //杩囨护褰撳墠鏃堕棿娈典笉鍦ㄦ椂闂村唴鐨勬湀鍙扮粍  AUTO_CALL_END_TIME  AUTO_CALL_START_TIME
@@ -2698,7 +2706,7 @@
                         && Integer.valueOf(i.getAutoCallStartTime().replaceAll(":","")) < nowHm
                         && Integer.valueOf(i.getAutoCallEndTime().replaceAll(":","")) > nowHm
         ).collect(Collectors.toList());
-        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(autoCallGroup)){
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(autoCallGroup)){
             return;
         }
         //鏌ヨ鎵�鏈夋湀鍙�
@@ -2706,7 +2714,8 @@
                 .lambda()
                 .eq(Platform::getIsdeleted,Constants.ZERO)
                 .eq(Platform::getStatus,Constants.ZERO)
-                .in(Platform::getId,autoCallGroup.stream().map(i->i.getId()).collect(Collectors.toList()))
+                .isNotNull(Platform::getCallReadyNum)
+                .in(Platform::getGroupId,autoCallGroup.stream().map(i->i.getId()).collect(Collectors.toList()))
         );
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(platformList)){
             return;
@@ -2746,7 +2755,7 @@
                         .lambda()
                         .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                         .eq(PlatformJob::getPlatformGroupId, platformGroup.getId())
-                        .apply("  t.`STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and t.PLATFORM_GROUP_ID = "+platformGroup.getId()+" ) ")
+                        .apply(" ( `STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and PLATFORM_GROUP_ID = "+platformGroup.getId()+" ) ")
                         //鎺掑簭鏂瑰紡 鏈堝彴浣滀笟绫诲瀷 锛堝紓甯告寕璧�>鍙彿鍏ュ洯锛�>  鍔犳�� >  绛惧埌鏃堕棿
                         .orderByDesc(PlatformJob::getStatus,PlatformJob::getUrgeTime)
                         .orderByAsc(PlatformJob::getSignDate));
@@ -2861,9 +2870,17 @@
                     if(Objects.isNull(platformWmsJob)){
                         continue;
                     }
-                    //TODO 鏆傛棤鍏ュ簱鐨勬暟鎹�
-                    if(platformWmsJob.getCarrierName().equals("1") && Constants.equalsInteger(platform.getType(),Constants.ONE)){
-                        return platformJob;
+                    SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IN_REPERTOTY_CODE);
+                    if(Objects.nonNull(systemDictData)){
+                        //鍒ゆ柇鏀剧疆浣嶇疆
+                        if(platformWmsDetailMapper.selectCount(new QueryWrapper<PlatformWmsDetail>().lambda().eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO)
+                                .eq(PlatformWmsDetail::getWmsJobId,platformWmsJob.getId())
+                                .apply(" find_in_set(IN_REPERTOTY_CODE ,'"+systemDictData.getCode()+"')")
+                                .eq(PlatformWmsDetail::getInRepertotyCode,"")
+                                .isNotNull(PlatformWmsDetail::getInRepertotyCode)
+                        ) > Constants.ZERO && Constants.equalsInteger(platform.getType(),Constants.ONE)){
+                            return platformJob;
+                        }
                     }
                     if(Constants.equalsInteger(platform.getType(),Constants.ZERO)){
                         return platformJob;

--
Gitblit v1.9.3