优化0127

This commit is contained in:
zj
2026-01-27 09:54:27 +08:00
parent d2d871baf1
commit 036ee35af3
12 changed files with 139 additions and 39 deletions

View File

@@ -38,14 +38,15 @@
</dependency> </dependency>
<!-- Mysql驱动包 --> <!-- Mysql驱动包 -->
<dependency> <!-- <dependency>-->
<groupId>mysql</groupId> <!-- <groupId>mysql</groupId>-->
<artifactId>mysql-connector-java</artifactId> <!-- <artifactId>mysql-connector-java</artifactId>-->
</dependency> <!-- </dependency>-->
<!-- sql server驱动包 --> <!-- sql server驱动包 -->
<dependency> <dependency>
<groupId>com.microsoft.sqlserver</groupId> <groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId> <artifactId>mssql-jdbc</artifactId>
<version>12.10.1.jre11</version>
</dependency> </dependency>
<!-- 核心模块--> <!-- 核心模块-->

View File

@@ -1,7 +1,11 @@
package com.ruoyi.api.controller; 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.AgvCallbackRequest;
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse; 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.api.service.IApiService;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
@@ -27,6 +31,7 @@ public class AgvController extends BaseController {
@Autowired @Autowired
private IAgvQueueService agvQueueService; private IAgvQueueService agvQueueService;
/** /**
* agv执行状态返回接口 * agv执行状态返回接口
* @param request * @param request
@@ -75,4 +80,33 @@ public class AgvController extends BaseController {
} }
/**
* 前端手动操作完成/取消AGV作业时,请求rcs,取消当前AGV正执行的作业
* @param param
* @return
*/
@PostMapping("/cancelTask")
public AjaxResult cancelTask(@RequestBody Map<String, String> 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任务队列失败!");
}
}
} }

View File

@@ -75,4 +75,5 @@ public class Wcs2WmsController {
return apiService.updateWcsPort(wcsPort); return apiService.updateWcsPort(wcsPort);
} }
} }

View File

@@ -136,4 +136,8 @@ public interface IApiService
AjaxResult selectMydoJobByTrayCodeAndEntranceId(HashMap<String, Object> paramMap); AjaxResult selectMydoJobByTrayCodeAndEntranceId(HashMap<String, Object> paramMap);
AjaxResult deleteAgvTray(AgvQueue agvQueue); AjaxResult deleteAgvTray(AgvQueue agvQueue);
} }

View File

@@ -478,4 +478,6 @@ public class ApiServiceImpl implements IApiService {
return AjaxResult.error(); return AjaxResult.error();
} }
} }
} }

View File

@@ -19,4 +19,6 @@ public class Constant {
public static final String REQUEST_ENTER_URL = WMS_BASE_URL+"requestEnterByTrayCodeAndEntranceId"; public static final String REQUEST_ENTER_URL = WMS_BASE_URL+"requestEnterByTrayCodeAndEntranceId";
} }

View File

@@ -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(); Long rwh = ddj.getRwh();
DdjDeviceExecutionQueue ddjDeviceExecutionQueueRunningParam = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionQueueRunningParam = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueueRunningParam.setDdjxf("1"); ddjDeviceExecutionQueueRunningParam.setDdjxf("1");

View File

@@ -171,7 +171,7 @@ public class Floor1BothWayOutSsjThread implements Runnable {
MydoJob mydoJob = mydoJobService.selectMydoJobByExitList1(exitList, roadwayId); MydoJob mydoJob = mydoJobService.selectMydoJobByExitList1(exitList, roadwayId);
MydoJob inJob = mydoJobService.selectMydoJobByEntranceList1(entrance_id); MydoJob inJob = mydoJobService.selectMydoJobByEntranceList1(entrance_id);
if (ObjUtil.isNotNull(mydoJob) && deviceSsj.getKx() == 1 && ssj.getKx() == 0 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()); BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId());
if (ObjUtil.isNull(basCargoSpace)) { if (ObjUtil.isNull(basCargoSpace)) {
@@ -203,6 +203,7 @@ public class Floor1BothWayOutSsjThread implements Runnable {
mydoJob.setStatus(TASK_STATUS_RUNNING); mydoJob.setStatus(TASK_STATUS_RUNNING);
mydoJob.setExecutionPhase(TASK_EP_DDJ); mydoJob.setExecutionPhase(TASK_EP_DDJ);
mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJob.setExitId(entrance_id);
mydoJobService.updateMydoJob(mydoJob); mydoJobService.updateMydoJob(mydoJob);
} }
} }

View File

@@ -73,36 +73,67 @@ public class Floor1SingleSsjThread implements Runnable {
public void run() { public void run() {
init(); init();
while (isRun) { while (isRun) {
for (String type : ssjCodeList.keySet()) { try {
//一楼单向巷道口 if (PlcSsjRead.deviceSsjMap.containsKey("L2001")) {
if ("outRoadwaySsj".equals(type)) { dispatch(PlcSsjRead.deviceSsjMap.get("L2001"));
for (String ssjCode : ssjCodeList.get(type)) { } else {
try { log.error("设备不存在 ssjCode{}", "L2001");
if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { }
dispatch(PlcSsjRead.deviceSsjMap.get(ssjCode)); if (PlcSsjRead.deviceSsjMap.containsKey("L2007")) {
} else { dispatch(PlcSsjRead.deviceSsjMap.get("L2007"));
log.error("设备不存在 ssjCode{}", ssjCode); } else {
} log.error("设备不存在 ssjCode{}", "L2007");
} catch (RuntimeException e) { }
log.error(e.getMessage(), e); 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");
}
} } 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);
}
}
}
} }
// 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 { try {
Thread.sleep(1500); Thread.sleep(1500);
} catch (InterruptedException e) { } catch (InterruptedException e) {
@@ -149,15 +180,19 @@ public class Floor1SingleSsjThread implements Runnable {
*/ */
public void dispatch(DeviceSsj ssj) { public void dispatch(DeviceSsj ssj) {
//如果入库请求1 并且 托盘码不为空 //如果入库请求1 并且 托盘码不为空
if (ssj.getKx() == 1) { if (ssj.getKx() == 1 && ssj.getTaskNo() == 0) {
List<String> exitList = new ArrayList<>(); List<String> exitList = new ArrayList<>();
exitList.add("1"); exitList.add("1");
String roadwayId = ""; String roadwayId = "";
String entrance_id = "";
if("L2001".equals(ssj.getDeviceCode())){ if("L2001".equals(ssj.getDeviceCode())){
roadwayId = "1"; roadwayId = "1";
entrance_id = "L2002";
} }
if("L2007".equals(ssj.getDeviceCode())){ if("L2007".equals(ssj.getDeviceCode())){
roadwayId = "2"; roadwayId = "2";
entrance_id = "L2008";
} }
MydoJob mydoJob = mydoJobService.selectMydoJobByExitList1(exitList,roadwayId); MydoJob mydoJob = mydoJobService.selectMydoJobByExitList1(exitList,roadwayId);
if (ObjUtil.isNotNull(mydoJob)) { if (ObjUtil.isNotNull(mydoJob)) {
@@ -192,6 +227,7 @@ public class Floor1SingleSsjThread implements Runnable {
mydoJob.setStatus(TASK_STATUS_RUNNING); mydoJob.setStatus(TASK_STATUS_RUNNING);
mydoJob.setExecutionPhase(TASK_EP_DDJ); mydoJob.setExecutionPhase(TASK_EP_DDJ);
mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJob.setExitId(entrance_id);
mydoJobService.updateMydoJob(mydoJob); mydoJobService.updateMydoJob(mydoJob);
} }
} }

View File

@@ -9,7 +9,7 @@ spring:
# url: jdbc:sqlserver://172.16.2.170:1433;databaseName=FT517-WCS; # url: jdbc:sqlserver://172.16.2.170:1433;databaseName=FT517-WCS;
# username: sa # username: sa
# password: Flrd0914. # 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 username: sa
password: www.123.com password: www.123.com

View File

@@ -95,7 +95,7 @@ token:
# 令牌密钥 # 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期(默认30分钟) # 令牌有效期(默认30分钟)
expireTime: 30 expireTime: 10080
# MyBatis配置 # MyBatis配置
mybatis: mybatis:

View File

@@ -98,6 +98,13 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['agv:queue:edit']"
>修改</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@@ -117,8 +124,20 @@
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="请求编号" prop="reqCode">
<el-input v-model="form.reqCode" placeholder="请输入请求编号" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-input v-model="form.status" placeholder="请修改状态" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>