Compare commits

...

4 Commits

Author SHA1 Message Date
aikai
3c229747cd feat(system): 添加一键急停和恢复地图上所有AGV的功能- 在 PositionMapController 中添加了 emergencyStopOrRecovery 接口
- 在 PositionMapService 中添加了 emergencyStopOrRecovery 方法- 在 PositionMapServiceImpl 中实现了 emergencyStopOrRecovery 方法
-优化了 PositionMapLineDTO 中的车头朝向逻辑
2025-03-17 14:31:51 +08:00
aikai
5b98cfc7e6 Merge branch 'dev' of http://git.znkjfw.com/ak/zn-cloud-wcs into aikai
# Conflicts:
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapController.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java
2025-03-17 14:31:33 +08:00
aikai
8a5a9f4759 feat(system): 添加一键急停和恢复地图上所有AGV的功能- 在 PositionMapController 中添加了 emergencyStopOrRecovery 接口
- 在 PositionMapService 中添加了 emergencyStopOrRecovery 方法- 在 PositionMapServiceImpl 中实现了 emergencyStopOrRecovery 方法
-优化了 PositionMapLineDTO 中的车头朝向逻辑
2025-03-17 14:30:35 +08:00
aikai
111f63e10a feat(system): 添加一键急停和恢复地图上所有AGV的功能- 在 PositionMapController 中添加了 emergencyStopOrRecovery 接口
- 在 PositionMapService 中添加了 emergencyStopOrRecovery 方法- 在 PositionMapServiceImpl 中实现了 emergencyStopOrRecovery 方法
-优化了 PositionMapLineDTO 中的车头朝向逻辑
2025-03-17 14:30:12 +08:00
7 changed files with 93 additions and 27 deletions

View File

@ -6,8 +6,6 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@Builder
@NoArgsConstructor
@ -107,17 +105,24 @@ public class PositionMapLineDTO {
@Schema(description = "车头朝向(0:正正 1:正反 2:反正 3:反反)", example = "15890")
private Integer toward;
@Schema(description = "发送给路径规划 车头朝向(0正 1反)", example = "15890")
private Integer ppToward;
/**
* 双向车道 反向行走变更车头朝向
*
* @param toward
* @return
*/
public Integer changeToward(Integer toward) {
if (toward == 0) {
return 3;
return 0;
} else if (toward == 1) {
return 2;
return 1;
} else if (toward == 2) {
return 0;
} else if (toward == 3) {
return 1;
} else {
return 0;

View File

@ -0,0 +1,44 @@
spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
username: # Nacos 账号
password: # Nacos 密码
discovery: # 【配置中心】配置项
namespace: dev # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
metadata:
version: 1.0.0 # 服务实例的版本号,可用于灰度发布
config: # 【注册中心】配置项
namespace: dev # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
# Lock4j 配置项
lock4j:
acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
--- #################### 监控相关配置 ####################
# Actuator 监控端点的配置项
management:
endpoints:
web:
base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
exposure:
include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
# MQTT
mqtt:
# host: tcp://192.168.0.54:1883
host: tcp://127.0.0.1:1883
username: adminuser
password: adminuser
qos: 0
clientId: mqttx_b82345a52
maxInflight: 10
timeout: 10
keepalive: 20

View File

@ -17,7 +17,6 @@ import javax.annotation.Resource;
import javax.annotation.security.PermitAll;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -51,6 +50,16 @@ public class PositionMapController {
return success(BeanUtils.toBean(positionMap, PositionMapRespVO.class));
}
@GetMapping("/emergencyStopOrRecovery")
@Operation(summary = "一键急停or一键恢复地图上所有AGV")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:position-map:emergencyStopOrRecovery')")
public CommonResult<Boolean> emergencyStopOrRecovery(@RequestParam("id") Long id) {
positionMapService.emergencyStopOrRecovery(id);
return success(true);
}
@GetMapping("/getMap")
@Operation(summary = "获得仓库点位地图Map")
@PreAuthorize("@ss.hasPermission('system:position-map:query')")

View File

@ -15,7 +15,6 @@ import cn.iocoder.yudao.module.system.controller.admin.robot.task.TaskAssignDTO;
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO;
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapItemDO;
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapLineDO;
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotInformationDO;
import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapItemMapper;
import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapLineMapper;
import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapMapper;
@ -33,8 +32,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -176,11 +173,11 @@ public class PathPlanningServiceImpl implements PathPlanningService {
for (PositionMapLineDTO positionMapLineDO : positionMapLineDOS) {
list.add(positionMapLineDO);
if (DirectionEnum.ONE_WAY.getType().equals(positionMapLineDO.getDirection())) {
continue;
}
positionMapLineDO.setPpToward(positionMapLineDO.changeToward(positionMapLineDO.getToward()));
} else {
list.add(setPositionMapLineDTOData(positionMapLineDO));
}
}
PositionMapLinePathDTO relatedPathNode = new PositionMapLinePathDTO();
relatedPathNode.setFloor(positionMapDO.getFloor());
@ -251,11 +248,11 @@ public class PathPlanningServiceImpl implements PathPlanningService {
for (PositionMapLineDTO positionMapLineDO : positionMapLineDOS) {
list.add(positionMapLineDO);
if (DirectionEnum.ONE_WAY.getType().equals(positionMapLineDO.getDirection())) {
continue;
}
positionMapLineDO.setPpToward(positionMapLineDO.changeToward(positionMapLineDO.getToward()));
} else {
list.add(setPositionMapLineDTOData(positionMapLineDO));
}
}
PositionMapLinePathDTO relatedPathNode = new PositionMapLinePathDTO();
relatedPathNode.setFloor(positionMapDO.getFloor());
@ -446,11 +443,11 @@ public class PathPlanningServiceImpl implements PathPlanningService {
for (PositionMapLineDTO positionMapLineDO : positionMapLineDOS) {
list.add(positionMapLineDO);
if (DirectionEnum.ONE_WAY.getType().equals(positionMapLineDO.getDirection())) {
continue;
}
positionMapLineDO.setPpToward(positionMapLineDO.changeToward(positionMapLineDO.getToward()));
} else {
list.add(setPositionMapLineDTOData(positionMapLineDO));
}
}
relatedPathNode.setControl_nodes(list);

View File

@ -10,8 +10,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* 仓库点位地图 Service 接口
@ -90,4 +88,10 @@ public interface PositionMapService extends IService<PositionMapDO> {
*/
String downloadPngBase64(Integer floor, String area);
/**
* 一键急停or一键恢复
*
* @param id
*/
void emergencyStopOrRecovery(Long id);
}

View File

@ -297,4 +297,10 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
}
@Override
public void emergencyStopOrRecovery(Long id) {
// 先获取当前地图上的所有AGV信息
}
}

View File

@ -56,20 +56,21 @@ spring:
primary: master
datasource:
master:
url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
url: jdbc:mysql://127.0.0.1:3306/zn_wcs?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true&allowMultiQueries=true # MySQL Connector/J 8.X 连接的示例
username: root
password: 123456
password: yhtkj@2024!
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
lazy: true # 开启懒加载,保证启动速度
url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
url: jdbc:mysql://127.0.0.1:3306/zn_wcs?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true&allowMultiQueries=true # MySQL Connector/J 8.X 连接的示例
username: root
password: 123456
password: yhtkj@2024!
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
host: 400-infra.server.iocoder.cn # 地址
host: 127.0.0.1 # 地址
port: 6379 # 端口
database: 1 # 数据库索引
database: 3 # 数据库索引
password: yhtkj@2024! # 密码,建议生产环境开启
# password: 123456 # 密码,建议生产环境开启
--- #################### MQ 消息队列相关配置 ####################