diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index ae294d5d..c6a51792 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -38,14 +38,15 @@ - - mysql - mysql-connector-java - + + + + com.microsoft.sqlserver mssql-jdbc + 12.10.1.jre11 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java index 514ecdb2..2aac356d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java @@ -1,7 +1,11 @@ package com.ruoyi.api.controller; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackRequest; import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse; +import com.ruoyi.api.domain.agv.cancelTask.CancelTaskRequest; +import com.ruoyi.api.domain.agv.cancelTask.CancelTaskResponse; import com.ruoyi.api.service.IApiService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -27,6 +31,7 @@ public class AgvController extends BaseController { @Autowired private IAgvQueueService agvQueueService; + /** * agv执行状态返回接口 * @param request @@ -75,4 +80,33 @@ public class AgvController extends BaseController { } + /** + * 前端手动操作完成/取消AGV作业时,请求rcs,取消当前AGV正执行的作业 + * @param param + * @return + */ + @PostMapping("/cancelTask") + public AjaxResult cancelTask(@RequestBody Map param) { + AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(param.get("taskCode")); + + if(agvQueue==null){ + return AjaxResult.error("AGV任务队列不存在!"); + }else{ + CancelTaskRequest cancelTaskRequest = new CancelTaskRequest(); + cancelTaskRequest.setReqCode(IdUtil.fastSimpleUUID()); + cancelTaskRequest.setReqTime(DateUtil.formatDateTime(DateUtil.date())); + cancelTaskRequest.setTaskCode(agvQueue.getTaskCode()); + + //取消rcs中指定的agv任务 + CancelTaskResponse cancelTaskResponse = apiService.cancelTask(cancelTaskRequest); + + if(cancelTaskResponse.getCode() == 0 && "成功".equals(cancelTaskResponse.getMessage()) && cancelTaskResponse.getReqCode() == cancelTaskRequest.getReqCode()){ + return AjaxResult.success("AGV任务队列取消成功!", cancelTaskResponse); + } + + return AjaxResult.error("取消RCS-AGV任务队列失败!"); + } + + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java index 9d3142d6..1f593111 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java @@ -75,4 +75,5 @@ public class Wcs2WmsController { return apiService.updateWcsPort(wcsPort); } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java index 3fca0f36..267b6484 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java @@ -136,4 +136,8 @@ public interface IApiService AjaxResult selectMydoJobByTrayCodeAndEntranceId(HashMap paramMap); AjaxResult deleteAgvTray(AgvQueue agvQueue); + + + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java index 6f5d66ea..dc753dc4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java @@ -478,4 +478,6 @@ public class ApiServiceImpl implements IApiService { return AjaxResult.error(); } } + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java b/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java index 951ec875..73e81e82 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java @@ -19,4 +19,6 @@ public class Constant { public static final String REQUEST_ENTER_URL = WMS_BASE_URL+"requestEnterByTrayCodeAndEntranceId"; + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java index 25a65207..ee2fcb8d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java @@ -198,7 +198,7 @@ public class DdjThread implements Runnable { } } //正常下发 - if (ddj.getYxxf() == 1 && ddj.getCzfs() == 5 && ddj.getSbzt() == 0) { + if (ddj.getYxxf() == 1 && ddj.getCzfs() == 5 && ddj.getSbzt() == 0 ) { Long rwh = ddj.getRwh(); DdjDeviceExecutionQueue ddjDeviceExecutionQueueRunningParam = new DdjDeviceExecutionQueue(); ddjDeviceExecutionQueueRunningParam.setDdjxf("1"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java index 6f576c36..73d76a10 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java @@ -171,7 +171,7 @@ public class Floor1BothWayOutSsjThread implements Runnable { MydoJob mydoJob = mydoJobService.selectMydoJobByExitList1(exitList, roadwayId); MydoJob inJob = mydoJobService.selectMydoJobByEntranceList1(entrance_id); if (ObjUtil.isNotNull(mydoJob) && deviceSsj.getKx() == 1 && ssj.getKx() == 0 - && ObjUtil.isNull(inJob) && inOutSsj.getInOrOut() == 1 ) { + && ObjUtil.isNull(inJob) && inOutSsj.getInOrOut() == 1 && deviceSsj.getTaskNo() == 0) { //所有线体为空闲 并且存在出库作业 并且不存在入库作业 BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); if (ObjUtil.isNull(basCargoSpace)) { @@ -203,6 +203,7 @@ public class Floor1BothWayOutSsjThread implements Runnable { mydoJob.setStatus(TASK_STATUS_RUNNING); mydoJob.setExecutionPhase(TASK_EP_DDJ); mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); + mydoJob.setExitId(entrance_id); mydoJobService.updateMydoJob(mydoJob); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1SingleSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1SingleSsjThread.java index 57eb03af..b5c1f027 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1SingleSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1SingleSsjThread.java @@ -73,36 +73,67 @@ public class Floor1SingleSsjThread implements Runnable { public void run() { init(); while (isRun) { - for (String type : ssjCodeList.keySet()) { - //一楼单向巷道口 - if ("outRoadwaySsj".equals(type)) { - for (String ssjCode : ssjCodeList.get(type)) { - try { - if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { - dispatch(PlcSsjRead.deviceSsjMap.get(ssjCode)); - } else { - log.error("设备不存在 ssjCode{}", ssjCode); - } - } catch (RuntimeException e) { - log.error(e.getMessage(), e); - } + try { + if (PlcSsjRead.deviceSsjMap.containsKey("L2001")) { + dispatch(PlcSsjRead.deviceSsjMap.get("L2001")); + } else { + log.error("设备不存在 ssjCode{}", "L2001"); + } + if (PlcSsjRead.deviceSsjMap.containsKey("L2007")) { + dispatch(PlcSsjRead.deviceSsjMap.get("L2007")); + } else { + log.error("设备不存在 ssjCode{}", "L2007"); + } + if (PlcSsjRead.deviceSsjMap.containsKey("L2002")) { + dispatch2(PlcSsjRead.deviceSsjMap.get("L2002")); + } else { + log.error("设备不存在 ssjCode{}", "L2002"); + } + if (PlcSsjRead.deviceSsjMap.containsKey("L2008")) { + dispatch2(PlcSsjRead.deviceSsjMap.get("L2008")); + } else { + log.error("设备不存在 ssjCode{}", "L2008"); + } - } - } - if ("outSsj".equals(type)) { - for (String ssjCode : ssjCodeList.get(type)) { - try { - if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { - dispatch2(PlcSsjRead.deviceSsjMap.get(ssjCode)); - } else { - log.error("设备不存在 ssjCode{}", ssjCode); - } - } catch (RuntimeException e) { - log.error(e.getMessage(), e); - } - } - } + } catch (RuntimeException e) { + log.error(e.getMessage(), e); } + + + + + + +// for (String type : ssjCodeList.keySet()) { +// //一楼单向巷道口 +// if ("outRoadwaySsj".equals(type)) { +// for (String ssjCode : ssjCodeList.get(type)) { +// try { +// if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { +// dispatch(PlcSsjRead.deviceSsjMap.get(ssjCode)); +// } else { +// log.error("设备不存在 ssjCode{}", ssjCode); +// } +// } catch (RuntimeException e) { +// log.error(e.getMessage(), e); +// } +// +// } +// } +// if ("outSsj".equals(type)) { +// for (String ssjCode : ssjCodeList.get(type)) { +// try { +// if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { +// dispatch2(PlcSsjRead.deviceSsjMap.get(ssjCode)); +// } else { +// log.error("设备不存在 ssjCode{}", ssjCode); +// } +// } catch (RuntimeException e) { +// log.error(e.getMessage(), e); +// } +// } +// } +// } try { Thread.sleep(1500); } catch (InterruptedException e) { @@ -149,15 +180,19 @@ public class Floor1SingleSsjThread implements Runnable { */ public void dispatch(DeviceSsj ssj) { //如果入库请求1 并且 托盘码不为空 - if (ssj.getKx() == 1) { + if (ssj.getKx() == 1 && ssj.getTaskNo() == 0) { List exitList = new ArrayList<>(); exitList.add("1"); String roadwayId = ""; + String entrance_id = ""; if("L2001".equals(ssj.getDeviceCode())){ roadwayId = "1"; + entrance_id = "L2002"; + } if("L2007".equals(ssj.getDeviceCode())){ roadwayId = "2"; + entrance_id = "L2008"; } MydoJob mydoJob = mydoJobService.selectMydoJobByExitList1(exitList,roadwayId); if (ObjUtil.isNotNull(mydoJob)) { @@ -192,6 +227,7 @@ public class Floor1SingleSsjThread implements Runnable { mydoJob.setStatus(TASK_STATUS_RUNNING); mydoJob.setExecutionPhase(TASK_EP_DDJ); mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); + mydoJob.setExitId(entrance_id); mydoJobService.updateMydoJob(mydoJob); } } diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index cf199245..81511404 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -9,7 +9,7 @@ spring: # url: jdbc:sqlserver://172.16.2.170:1433;databaseName=FT517-WCS; # username: sa # password: Flrd0914. - url: jdbc:sqlserver://192.168.58.10:1433;databaseName=FT517-wcs; + url: jdbc:sqlserver://192.168.58.10:1433;databaseName=FT517-wcs;;encrypt=true;trustServerCertificate=true; username: sa password: www.123.com diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 3e2c2cd3..6aa9fb0b 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -95,7 +95,7 @@ token: # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) - expireTime: 30 + expireTime: 10080 # MyBatis配置 mybatis: diff --git a/ruoyi-ui/src/views/agv/queue/index.vue b/ruoyi-ui/src/views/agv/queue/index.vue index db20e158..63a71080 100644 --- a/ruoyi-ui/src/views/agv/queue/index.vue +++ b/ruoyi-ui/src/views/agv/queue/index.vue @@ -98,6 +98,13 @@