From 2a7fd275313003968fc186ee4617aec4eca90266 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期六, 10 五月 2025 16:55:41 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/domain/enums/WorkNoType.java | 27 ---
src/main/java/com/zy/asrs/entity/param/GenerateAgvTaskParam.java | 14 +
src/main/java/com/zy/asrs/controller/OpenController.java | 22 ++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 94 +++++++++++
src/main/java/com/zy/asrs/task/AssignAgvTaskScheduler.java | 115 ++++++++++++++
src/main/java/com/zy/asrs/entity/param/TaskCreateParam.java | 1
src/main/java/com/zy/core/MainProcess.java | 3
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 52 ++++++
src/main/java/com/zy/asrs/task/AgvTaskLogScheduler.java | 77 +++++++++
src/main/java/com/zy/asrs/service/OpenService.java | 3
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 20 +-
src/main/resources/application.yml | 4
12 files changed, 395 insertions(+), 37 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 991c51a..a2632f0 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -7,6 +7,7 @@
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
+import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.*;
@@ -53,14 +54,33 @@
add("ea1f0459efc02a79f046f982767939ae");
}};
- //agv涓婃姤
+ //AGV涓婃姤
@PostMapping("/agvReport")
public R agvReport(@RequestBody HashMap<String, Object> param) {
String taskCode = param.get("taskCode").toString();
System.out.println(JSON.toJSONString(param));
+
+ TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskCode);
+ if(taskWrk == null) {
+ return R.error("浠诲姟涓嶅瓨鍦�");
+ }
+
+ taskWrk.setStatus(TaskStatusType.COMPLETE.id);
+ taskWrk.setModiTime(new Date());
+ taskWrkService.updateById(taskWrk);
return R.ok();
}
+ //鐢熸垚AGV浠诲姟
+ @PostMapping("/generateAgvTask")
+ public R generateAgvTask(@RequestBody GenerateAgvTaskParam param) {
+ boolean generated = openService.generateAgvTask(param);
+ if(generated) {
+ return R.ok();
+ }
+ return R.error();
+ }
+
//鍒涘缓浠诲姟
@PostMapping("/taskCreate")
@Transactional
diff --git a/src/main/java/com/zy/asrs/domain/enums/WorkNoType.java b/src/main/java/com/zy/asrs/domain/enums/WorkNoType.java
index 4aa3911..be5615b 100644
--- a/src/main/java/com/zy/asrs/domain/enums/WorkNoType.java
+++ b/src/main/java/com/zy/asrs/domain/enums/WorkNoType.java
@@ -11,38 +11,13 @@
PICK(1),
PAKOUT(2),
OTHER(3),
+ AGV(4),
;
public Integer type;
WorkNoType(Integer type) {
this.type = type;
- }
-
- public static Integer getWorkNoType(Integer ioType) {
- switch (ioType) {
- case 1:
- return PAKIN.type;
- case 10:
- return PAKIN.type;
- case 11:
- return PICK.type;
- case 53:
- case 54:
- case 57:
- return PICK.type;
- case 101:
- return PAKOUT.type;
- case 103:
- case 104:
- case 107:
- return PICK.type;
- case 110:
- return PAKOUT.type;
- default:
- break;
- }
- throw new CoolException(ioType + "鐨勪换鍔$被鍨嬫棤娉曠敓鎴愬伐浣滃彿");
}
}
diff --git a/src/main/java/com/zy/asrs/entity/param/GenerateAgvTaskParam.java b/src/main/java/com/zy/asrs/entity/param/GenerateAgvTaskParam.java
new file mode 100644
index 0000000..a0e1e8b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/GenerateAgvTaskParam.java
@@ -0,0 +1,14 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class GenerateAgvTaskParam {
+
+ //鍙栬揣鐐�
+ private String originPoint;
+
+ //鏀捐揣鐐�
+ private String targetPoint;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/TaskCreateParam.java b/src/main/java/com/zy/asrs/entity/param/TaskCreateParam.java
index 0d5534d..4e6930e 100644
--- a/src/main/java/com/zy/asrs/entity/param/TaskCreateParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/TaskCreateParam.java
@@ -1,6 +1,5 @@
package com.zy.asrs.entity.param;
-import io.swagger.models.auth.In;
import lombok.Data;
@Data
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 929166f..f483e8b 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service;
+import com.zy.asrs.entity.param.GenerateAgvTaskParam;
import com.zy.asrs.entity.param.TaskCreateParam;
import java.util.HashMap;
@@ -9,4 +10,6 @@
//鍒涘缓浠诲姟
HashMap<String,Object> taskCreate(TaskCreateParam param);
+ boolean generateAgvTask(GenerateAgvTaskParam param);
+
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 7ef38e2..f6068c0 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -6,6 +6,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.GenerateAgvTaskParam;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.common.utils.HttpHandler;
@@ -57,11 +58,104 @@
private CommandInfoService commandInfoService;
@Autowired
private ApiLogService apiLogService;
+ @Autowired
+ private OpenService openService;
@Value("${wcs.urlWcs}")
private String wcsUrl;
@Value("${wcs.inboundTaskApplyPathWcs}")
private String wcsInboundTaskApplyPath;
+ public synchronized void demo() {
+ boolean demoEnable = false;
+ Config demoEnableConfig = configService.selectByCode("demoEnable");
+ if(demoEnableConfig != null) {
+ demoEnable = Boolean.parseBoolean(demoEnableConfig.getValue());
+ }
+
+ if (!demoEnable) {
+ return;
+ }
+
+ //婕旂ず妯″紡-AGV鍑哄簱
+ demoAgvOut();
+ //婕旂ず妯″紡-AGV鍏ュ簱
+ demoAgvIn();
+ //婕旂ず妯″紡-鍥涘悜搴撳嚭搴�
+ demoShuttleOut();
+ //婕旂ず妯″紡-鍥涘悜搴撳叆搴�
+ demoShuttleIn();
+ }
+
+ //婕旂ず妯″紡-AGV鍑哄簱
+ private synchronized void demoAgvOut() {
+ LocMast locMast = locMastService.selectByLocNo("1100601");
+ if(locMast == null) {
+ return;
+ }
+
+ if (!locMast.getLocSts().equals("O")) {
+ return;
+ }
+
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("mk", "agv")
+ .eq("loc_sts", "F")
+ .notIn("loc_no", "0900601")
+ );
+
+ if (locMasts.isEmpty()) {
+ return;
+ }
+
+ LocMast originLocMast = locMasts.get(0);
+
+ //鐢熸垚AGV鍑哄簱浠诲姟
+ GenerateAgvTaskParam param = new GenerateAgvTaskParam();
+ param.setOriginPoint(originLocMast.getLocNo());
+ param.setTargetPoint(locMast.getLocNo());
+ openService.generateAgvTask(param);
+ }
+
+ //婕旂ず妯″紡-AGV鍏ュ簱
+ private synchronized void demoAgvIn() {
+ LocMast locMast = locMastService.selectByLocNo("0900601");
+ if(locMast == null) {
+ return;
+ }
+
+ if (!locMast.getLocSts().equals("F")) {
+ return;
+ }
+
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("mk", "agv")
+ .eq("loc_sts", "O")
+ .notIn("loc_no", "1100601")
+ );
+
+ if (locMasts.isEmpty()) {
+ return;
+ }
+
+ LocMast targetLocMast = locMasts.get(0);
+
+ //鐢熸垚AGV鍑哄簱浠诲姟
+ GenerateAgvTaskParam param = new GenerateAgvTaskParam();
+ param.setOriginPoint(locMast.getLocNo());
+ param.setTargetPoint(targetLocMast.getLocNo());
+ openService.generateAgvTask(param);
+ }
+
+ //婕旂ず妯″紡-鍥涘悜搴撳嚭搴�
+ private synchronized void demoShuttleOut() {
+
+ }
+
+ //婕旂ず妯″紡-鍥涘悜搴撳叆搴�
+ private synchronized void demoShuttleIn() {
+
+ }
+
/**
* 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
*/
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 17077e5..f25de8e 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2,9 +2,11 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.GenerateAgvTaskParam;
import com.zy.asrs.entity.param.TaskCreateParam;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
@@ -91,4 +93,54 @@
return map;
}
+ @Override
+ public boolean generateAgvTask(GenerateAgvTaskParam param) {
+ Date now = new Date();
+ String originPoint = param.getOriginPoint();
+ String targetPoint = param.getTargetPoint();
+ LocMast startLocMast = locMastService.selectByLocNo(originPoint);
+ if(startLocMast == null){
+ throw new CoolException("鍙栬揣鐐瑰簱浣嶄笉瀛樺湪");
+ }
+
+ if (!startLocMast.getLocSts().equals("F")) {
+ throw new CoolException("鍙栬揣鐐逛笉澶勪簬鍦ㄥ簱");
+ }
+
+ LocMast targetLocMast = locMastService.selectByLocNo(targetPoint);
+ if(targetLocMast == null){
+ throw new CoolException("鏀捐揣鐐瑰簱浣嶄笉瀛樺湪");
+ }
+
+ if (!targetLocMast.getLocSts().equals("O")) {
+ throw new CoolException("鏀捐揣鐐逛笉澶勪簬绌哄簱");
+ }
+
+ TaskWrk taskWrk = new TaskWrk();
+ int workNo1 = commonService.getWorkNo(WorkNoType.AGV.type);//鑾峰彇AGV宸ヤ綔鍙�
+
+ taskWrk.setTaskNo(String.valueOf(workNo1));//浠诲姟鍙�
+ taskWrk.setWrkNo(workNo1);
+ taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
+ taskWrk.setCreateTime(now);
+ taskWrk.setWrkSts(11);
+ taskWrk.setIoType(4);//AGV鎼繍
+ taskWrk.setStartPoint(param.getOriginPoint());//鍙栬揣鐐�
+ taskWrk.setTargetPoint(param.getTargetPoint());//鏀捐揣鐐�
+
+ boolean insert = taskWrkService.insert(taskWrk);
+ if (!insert) {
+ throw new CoolException("浠诲姟鐢熸垚澶辫触");
+ }
+
+ startLocMast.setLocSts("R");
+ startLocMast.setModiTime(now);
+ locMastService.updateById(startLocMast);
+
+ targetLocMast.setLocSts("S");
+ targetLocMast.setModiTime(now);
+ locMastService.updateById(targetLocMast);
+
+ return true;
+ }
}
diff --git a/src/main/java/com/zy/asrs/task/AgvTaskLogScheduler.java b/src/main/java/com/zy/asrs/task/AgvTaskLogScheduler.java
new file mode 100644
index 0000000..060cdc8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AgvTaskLogScheduler.java
@@ -0,0 +1,77 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.exception.CoolException;
+import com.zy.asrs.domain.enums.TaskStatusType;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.TaskWrk;
+import com.zy.asrs.entity.TaskWrkLog;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.TaskWrkLogService;
+import com.zy.asrs.service.TaskWrkService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Component
+public class AgvTaskLogScheduler {
+
+ @Autowired
+ private TaskWrkService taskWrkService;
+ @Autowired
+ private TaskWrkLogService taskWrkLogService;
+ @Autowired
+ private LocMastService locMastService;
+
+ /**
+ * AGV浠诲姟杞巻鍙�
+ */
+ @Scheduled(cron = "0/3 * * * * ? ")
+ public void execute() {
+ List<TaskWrk> taskWrkList = taskWrkService.selectList(new EntityWrapper<TaskWrk>()
+ .eq("status", TaskStatusType.COMPLETE.id));
+ for (TaskWrk taskWrk : taskWrkList) {
+ Date now = new Date();
+ String originPoint = taskWrk.getStartPoint();
+ String targetPoint = taskWrk.getTargetPoint();
+ LocMast startLocMast = locMastService.selectByLocNo(originPoint);
+ if(startLocMast == null){
+ throw new CoolException("鍙栬揣鐐瑰簱浣嶄笉瀛樺湪");
+ }
+
+ if (!startLocMast.getLocSts().equals("R")) {
+ throw new CoolException("鍙栬揣鐐逛笉澶勪簬鍑哄簱棰勭害");
+ }
+
+ LocMast targetLocMast = locMastService.selectByLocNo(targetPoint);
+ if(targetLocMast == null){
+ throw new CoolException("鏀捐揣鐐瑰簱浣嶄笉瀛樺湪");
+ }
+
+ if (!targetLocMast.getLocSts().equals("S")) {
+ throw new CoolException("鏀捐揣鐐逛笉澶勪簬鍏ュ簱棰勭害");
+ }
+
+ startLocMast.setLocSts("O");
+ startLocMast.setModiTime(now);
+ locMastService.updateById(startLocMast);
+
+ targetLocMast.setLocSts("F");
+ targetLocMast.setModiTime(now);
+ locMastService.updateById(targetLocMast);
+
+ TaskWrkLog taskWrkLog = new TaskWrkLog(taskWrk);
+ if (!taskWrkLogService.insert(taskWrkLog)) {
+ throw new CoolException("杞巻鍙叉。澶辫触" + taskWrkLog);
+ }
+ if (!taskWrkService.deleteById(taskWrk)) {
+ throw new CoolException("浠诲姟妗e垹闄ゅけ璐�" + taskWrkLog);
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/task/AssignAgvTaskScheduler.java b/src/main/java/com/zy/asrs/task/AssignAgvTaskScheduler.java
new file mode 100644
index 0000000..b62b798
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AssignAgvTaskScheduler.java
@@ -0,0 +1,115 @@
+package com.zy.asrs.task;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.domain.enums.TaskStatusType;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.TaskWrk;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.TaskWrkService;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+@Slf4j
+@Component
+public class AssignAgvTaskScheduler {
+
+ @Autowired
+ private TaskWrkService taskWrkService;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private LocMastService locMastService;
+ @Value("${agv.url}")
+ private String agvUrl;
+ @Value("${agv.applyTask}")
+ private String agvApplyTask;
+
+ /**
+ * 鑷姩娲惧彂AGV鎼繍浠诲姟
+ */
+ @Scheduled(cron = "0/3 * * * * ? ")
+ public void execute() {
+ List<TaskWrk> taskWrks = taskWrkService.selectList(new EntityWrapper<TaskWrk>()
+ .eq("status", TaskStatusType.RECEIVE.id).eq("io_type", 4));
+
+ for (TaskWrk taskWrk : taskWrks) {
+ String startPoint = taskWrk.getStartPoint();
+ String targetPoint = taskWrk.getTargetPoint();
+ LocMast startLocMast = locMastService.selectByLocNo(startPoint);
+ if(startLocMast == null){
+ continue;
+ }
+
+ if (!startLocMast.getLocSts().equals("R")) {
+ continue;
+ }
+
+ LocMast targetLocMast = locMastService.selectByLocNo(targetPoint);
+ if(targetLocMast == null){
+ continue;
+ }
+
+ if (!targetLocMast.getLocSts().equals("S")) {
+ continue;
+ }
+
+ HashMap<String, Object> requestParam = new HashMap<>();
+ requestParam.put("reqCode", taskWrk.getTaskNo());
+ requestParam.put("taskCode", taskWrk.getTaskNo());
+ requestParam.put("taskTyp", "YK");
+
+ ArrayList<HashMap<String, Object>> positionCodePathList = new ArrayList<>();
+ HashMap<String, Object> startPointParam = new HashMap<>();
+ startPointParam.put("positionCode", taskWrk.getStartPoint());
+ startPointParam.put("type", "00");
+
+ HashMap<String, Object> targetPointParam = new HashMap<>();
+ targetPointParam.put("positionCode", taskWrk.getTargetPoint());
+ targetPointParam.put("type", "00");
+
+ positionCodePathList.add(startPointParam);
+ positionCodePathList.add(targetPointParam);
+ requestParam.put("positionCodePath", positionCodePathList);
+
+ String response = null;
+ boolean requestStatus = false;
+ try {
+ log.info("WCS娲惧彂浠诲姟缁橝GV={}", taskWrk);
+ response = new HttpHandler.Builder()
+ .setUri(agvUrl)
+ .setPath(agvApplyTask)
+ .setJson(JSON.toJSONString(requestParam))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.get("code").equals("0")) {
+ taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);
+ taskWrkService.updateById(taskWrk);
+ requestStatus = true;
+ }
+ } catch (Exception e) {
+ log.error("WCS娲惧彂浠诲姟缁橝GV澶辫触{},杩斿洖鍊�={}", taskWrk, response);
+ } finally {
+ apiLogService.save("WCS娲惧彂浠诲姟缁橝GV"
+ , agvUrl + agvApplyTask
+ , null
+ , "127.0.0.1"
+ , JSON.toJSONString(requestParam)
+ , response
+ , requestStatus
+ );
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index a4270d6..065fa21 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -48,6 +48,9 @@
// 鍑哄簱 ===>> 鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
mainService.crnStnToOutStn();
+ //婕旂ず妯″紡
+ mainService.demo();
+
//鑷姩娲惧彂浠诲姟
// mainService.autoDistribute();
//鑷姩瀹屾垚浠诲姟
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index a8f5b06..21891fe 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -322,15 +322,17 @@
//澶栧舰妫�娴�
OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.810.0", (short) (barcodeSize*1));
- StaProtocol staProtocol1 = station.get(116);
- boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, 0, 1);
- staProtocol1.setFrontErr(status1[0]);
- staProtocol1.setBackErr(status1[1]);
- staProtocol1.setHighErr(status1[2]);
- staProtocol1.setLeftErr(status1[3]);
- staProtocol1.setRightErr(status1[4]);
- staProtocol1.setWeightErr(status1[5]);
- staProtocol1.setBarcodeErr(status1[6]);
+ if (resultErr1.IsSuccess) {
+ StaProtocol staProtocol1 = station.get(116);
+ boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, 0, 1);
+ staProtocol1.setFrontErr(status1[0]);
+ staProtocol1.setBackErr(status1[1]);
+ staProtocol1.setHighErr(status1[2]);
+ staProtocol1.setLeftErr(status1[3]);
+ staProtocol1.setRightErr(status1[4]);
+ staProtocol1.setWeightErr(status1[5]);
+ staProtocol1.setBarcodeErr(status1[6]);
+ }
OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4));
if (resultErr.IsSuccess) {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index b4255c8..08a5b81 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -69,3 +69,7 @@
outboundTaskRequest : openapi/createOutTask
# 绉诲簱鐢宠鎺ュ彛
movePathWcs: openapi/createLocMoveTask
+
+agv:
+ url: 10.10.20.160:8181
+ applyTask: /rcms/services/rest/hikRpcService/genAgvSchedulingTask
\ No newline at end of file
--
Gitblit v1.9.1