From d595f158720e42b0c06ee6c5ed085a4eced0b260 Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Thu, 17 Apr 2025 09:08:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E6=9A=82=E5=81=9C=E5=92=8C?= =?UTF-8?q?=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/enums/ErrorCodeConstants.java | 2 + .../config/SystemApplicationRunner.java | 4 +- .../positionmap/PositionMapController.java | 11 ++- .../admin/positionmap/dto/PositionMapDTO.java | 31 ++++++ .../admin/robot/RobotMapStopController.java | 96 +++++++++++++++++++ .../robot/mapstop/RobotMapStopPageReqVO.java | 31 ++++++ .../robot/mapstop/RobotMapStopRespVO.java | 35 +++++++ .../robot/mapstop/RobotMapStopSaveReqVO.java | 22 +++++ .../dal/dataobject/robot/RobotMapStopDO.java | 40 ++++++++ .../dal/mysql/robot/RobotMapStopMapper.java | 29 ++++++ .../positionmap/PositionMapService.java | 8 ++ .../positionmap/PositionMapServiceImpl.java | 29 +++++- .../robot/mapstop/RobotMapStopService.java | 63 ++++++++++++ .../mapstop/RobotMapStopServiceImpl.java | 96 +++++++++++++++++++ .../mapper/robot/RobotMapStopMapper.xml | 12 +++ 15 files changed, 501 insertions(+), 8 deletions(-) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionMapDTO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotMapStopController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopSaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotMapStopDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotMapStopMapper.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopServiceImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotMapStopMapper.xml diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index f6da0690a..26d8cdea8 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -268,4 +268,6 @@ public interface ErrorCodeConstants { ErrorCode USER_OPERATION_LOG_NOT_EXISTS = new ErrorCode(1_002_050_001, "用户操作记录不存在"); // ========== 车辆衔接任务 1_002_051_001 ========== ErrorCode TASK_PROCEED_NOT_EXISTS = new ErrorCode(1_002_051_001, "车辆衔接任务不存在"); + // ========== 车辆(地图)急停记录 1_002_052_001 ========== + ErrorCode MAP_STOP_NOT_EXISTS = new ErrorCode(1_002_052_001, "车辆(地图)急停记录不存在"); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/config/SystemApplicationRunner.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/config/SystemApplicationRunner.java index 9824e1928..72bd5d56e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/config/SystemApplicationRunner.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/config/SystemApplicationRunner.java @@ -18,10 +18,10 @@ public class SystemApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) { - try { + /*try { toolsService.simulationPose(); } catch (Exception e) { log.error("同步仿真的点位信息失败 :{}",e.getMessage()); - } + }*/ } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapController.java index 69b10fdf2..f0e4fb20e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapController.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.positionmap; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionMapDTO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapRespVO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO; import cn.iocoder.yudao.module.system.service.positionmap.PositionMapService; @@ -54,6 +55,7 @@ public class PositionMapController { @GetMapping("/emergencyStopOrRecovery") @Operation(summary = "一键急停or一键恢复地图上所有AGV") @Parameter(name = "id", description = "编号", required = true, example = "1024") + @Parameter(name = "type", description = "类型(1:停止, 0:恢复)", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('system:position-map:emergencyStopOrRecovery')") public CommonResult emergencyStopOrRecovery(@RequestParam("id") Long id, @RequestParam("type") Integer type) { positionMapService.emergencyStopOrRecovery(id,type); @@ -63,10 +65,11 @@ public class PositionMapController { @GetMapping("/getMap") @Operation(summary = "获得仓库点位地图Map") @PreAuthorize("@ss.hasPermission('system:position-map:query')") - public CommonResult>> getPositionMapList() { - List list = positionMapService.list(); - Map> map = list.stream().collect(Collectors.groupingBy(PositionMapDO::getFloor)); - return success(map); + public CommonResult>> getPositionMapList() { + Map> result = positionMapService.getPositionMapList(); + /*List list = positionMapService.list(); + Map> map = list.stream().collect(Collectors.groupingBy(PositionMapDO::getFloor));*/ + return success(result); } @PostMapping("/upload") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionMapDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionMapDTO.java new file mode 100644 index 000000000..9a59e3b74 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionMapDTO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.system.controller.admin.positionmap.dto; + +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 仓库点位地图新增/修改 Request VO") +@Data +public class PositionMapDTO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2349") + private Long id; + + @Schema(description = "楼层") + private Integer floor; + + @Schema(description = "区域") + private String area; + + @Schema(description = "AGV地图ymlJson信息") + private String yamlJson; + + @Schema(description = "AGV地图图片路径") + private String pngUrl; + + @Schema(description = "AGV地图yaml路径") + private String yamlUrl; + + @Schema(description = "地图暂停/恢复 (0:未暂停, 1:暂停)") + private Integer stopOrRestore = 0; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotMapStopController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotMapStopController.java new file mode 100644 index 000000000..328ada0de --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotMapStopController.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.system.controller.admin.robot; + +import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopRespVO; +import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotMapStopDO; +import cn.iocoder.yudao.module.system.service.robot.mapstop.RobotMapStopService; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + +@Tag(name = "管理后台 - 车辆(地图)急停记录") +@RestController +@RequestMapping("/system/robot/map-stop") +@Validated +public class RobotMapStopController { + + @Resource + private RobotMapStopService mapStopService; + + @PostMapping("/create") + @Operation(summary = "创建车辆(地图)急停记录") + @PreAuthorize("@ss.hasPermission('robot:map-stop:create')") + public CommonResult createMapStop(@Valid @RequestBody RobotMapStopSaveReqVO createReqVO) { + return success(mapStopService.createMapStop(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新车辆(地图)急停记录") + @PreAuthorize("@ss.hasPermission('robot:map-stop:update')") + public CommonResult updateMapStop(@Valid @RequestBody RobotMapStopSaveReqVO updateReqVO) { + mapStopService.updateMapStop(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除车辆(地图)急停记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('robot:map-stop:delete')") + public CommonResult deleteMapStop(@RequestParam("id") Long id) { + mapStopService.deleteMapStop(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得车辆(地图)急停记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('robot:map-stop:query')") + public CommonResult getMapStop(@RequestParam("id") Long id) { + RobotMapStopDO mapStop = mapStopService.getMapStop(id); + return success(BeanUtils.toBean(mapStop, RobotMapStopRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得车辆(地图)急停记录分页") + @PreAuthorize("@ss.hasPermission('robot:map-stop:query')") + public CommonResult> getMapStopPage(@Valid RobotMapStopPageReqVO pageReqVO) { + PageResult pageResult = mapStopService.getMapStopPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, RobotMapStopRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出车辆(地图)急停记录 Excel") + @PreAuthorize("@ss.hasPermission('robot:map-stop:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMapStopExcel(@Valid RobotMapStopPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = mapStopService.getMapStopPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "车辆(地图)急停记录.xls", "数据", RobotMapStopRespVO.class, + BeanUtils.toBean(list, RobotMapStopRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopPageReqVO.java new file mode 100644 index 000000000..5783acc97 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.system.controller.admin.robot.mapstop; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 车辆(地图)急停记录分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class RobotMapStopPageReqVO extends PageParam { + + @Schema(description = "急停仓库点位地图表id", example = "20550") + private Long positionMapId; + + @Schema(description = "急停的AGV编号") + private String robotNo; + + @Schema(description = "类型(0:地图、1:车辆)", example = "2") + private Integer stopType; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopRespVO.java new file mode 100644 index 000000000..6caef8f39 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.system.controller.admin.robot.mapstop; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 车辆(地图)急停记录 Response VO") +@Data +@ExcelIgnoreUnannotated +public class RobotMapStopRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1220") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "急停仓库点位地图表id", example = "20550") + @ExcelProperty("急停仓库点位地图表id") + private Long positionMapId; + + @Schema(description = "急停的AGV编号") + @ExcelProperty("急停的AGV编号") + private String robotNo; + + @Schema(description = "类型(0:地图、1:车辆)", example = "2") + @ExcelProperty("类型(0:地图、1:车辆)") + private Integer stopType; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopSaveReqVO.java new file mode 100644 index 000000000..c9cd212a3 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/mapstop/RobotMapStopSaveReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.system.controller.admin.robot.mapstop; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Schema(description = "管理后台 - 车辆(地图)急停记录新增/修改 Request VO") +@Data +public class RobotMapStopSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1220") + private Long id; + + @Schema(description = "急停仓库点位地图表id", example = "20550") + private Long positionMapId; + + @Schema(description = "急停的AGV编号") + private String robotNo; + + @Schema(description = "类型(0:地图、1:车辆)", example = "2") + private Integer stopType; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotMapStopDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotMapStopDO.java new file mode 100644 index 000000000..056717d27 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotMapStopDO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.robot; + +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 车辆(地图)急停记录 DO + * + * @author 陈宾顺 + */ +@TableName("robot_map_stop") +@KeySequence("robot_map_stop_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RobotMapStopDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 急停仓库点位地图表id + */ + private Long positionMapId; + /** + * 急停的AGV编号 + */ + private String robotNo; + /** + * 类型(0:地图、1:车辆) + */ + private Integer stopType; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotMapStopMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotMapStopMapper.java new file mode 100644 index 000000000..bda382f56 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotMapStopMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.dal.mysql.robot; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotMapStopDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 车辆(地图)急停记录 Mapper + * + * @author 陈宾顺 + */ +@Mapper +public interface RobotMapStopMapper extends BaseMapperX { + + default PageResult selectPage(RobotMapStopPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(RobotMapStopDO::getPositionMapId, reqVO.getPositionMapId()) + .eqIfPresent(RobotMapStopDO::getRobotNo, reqVO.getRobotNo()) + .eqIfPresent(RobotMapStopDO::getStopType, reqVO.getStopType()) + .betweenIfPresent(RobotMapStopDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(RobotMapStopDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java index 1dfcbaad6..a83583035 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.service.positionmap; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionMapDTO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO; @@ -11,6 +12,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; +import java.util.Map; /** * 仓库点位地图 Service 接口 @@ -101,4 +103,10 @@ public interface PositionMapService extends IService { * @return */ List getAllMap(); + + /** + * 获取地图及显示地图是否暂停 + * @return + */ + Map> getPositionMapList(); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java index 111241429..76bededef 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java @@ -10,22 +10,22 @@ import cn.iocoder.yudao.module.mqtt.api.common.CommonApi; import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotSimulationPoseDTO; import cn.iocoder.yudao.module.system.constant.robot.RobotTopicConstant; import cn.iocoder.yudao.module.system.controller.admin.log.vo.UserOperationLogSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionMapDTO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO; -import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO; import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapMapper; import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotCommandTypeEnum; import cn.iocoder.yudao.module.system.service.log.UserOperationLogService; import cn.iocoder.yudao.module.system.service.robot.RobotInformationService; +import cn.iocoder.yudao.module.system.service.robot.mapstop.RobotMapStopService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.Cacheable; -import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -74,6 +74,9 @@ public class PositionMapServiceImpl extends ServiceImpl().orderByDesc(PositionMapDO::getId)); } + @Override + public Map> getPositionMapList() { + List allMap = getAllMap(); + if (ObjectUtil.isEmpty(allMap)) { + return Collections.emptyMap(); + } + + List list = BeanUtils.toBean(allMap, PositionMapDTO.class); + List stopMapIds = robotMapStopService.getStopMapIds(); + if (ObjectUtil.isEmpty(stopMapIds)) { + return list.stream().collect(Collectors.groupingBy(PositionMapDTO::getFloor)); + } + + for (PositionMapDTO positionMap : list) { + if (stopMapIds.contains(positionMap.getId())) { + positionMap.setStopOrRestore(ZeroOneEnum.ONE.getType()); + } + } + + return list.stream().collect(Collectors.groupingBy(PositionMapDTO::getFloor)); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopService.java new file mode 100644 index 000000000..b1574066f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopService.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.system.service.robot.mapstop; + +import java.util.*; +import javax.validation.*; + +import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotMapStopDO; +import com.baomidou.mybatisplus.extension.service.IService; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 车辆(地图)急停记录 Service 接口 + * + * @author 陈宾顺 + */ +public interface RobotMapStopService extends IService { + + /** + * 创建车辆(地图)急停记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMapStop(@Valid RobotMapStopSaveReqVO createReqVO); + + /** + * 更新车辆(地图)急停记录 + * + * @param updateReqVO 更新信息 + */ + void updateMapStop(@Valid RobotMapStopSaveReqVO updateReqVO); + + /** + * 删除车辆(地图)急停记录 + * + * @param id 编号 + */ + void deleteMapStop(Long id); + + /** + * 获得车辆(地图)急停记录 + * + * @param id 编号 + * @return 车辆(地图)急停记录 + */ + RobotMapStopDO getMapStop(Long id); + + /** + * 获得车辆(地图)急停记录分页 + * + * @param pageReqVO 分页查询 + * @return 车辆(地图)急停记录分页 + */ + PageResult getMapStopPage(RobotMapStopPageReqVO pageReqVO); + + /** + * 查询暂停的地图 + * @return + */ + List getStopMapIds(); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopServiceImpl.java new file mode 100644 index 000000000..c62018d3d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopServiceImpl.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.system.service.robot.mapstop; + +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapItemDO; +import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotMapStopDO; +import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotMapStopMapper; +import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum; +import cn.iocoder.yudao.module.system.enums.item.PositionMapItemEnum; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAP_STOP_NOT_EXISTS; + +/** + * 车辆(地图)急停记录 Service 实现类 + * + * @author 陈宾顺 + */ +@Service +@Validated +public class RobotMapStopServiceImpl extends ServiceImpl implements RobotMapStopService { + + @Resource + private RobotMapStopMapper mapStopMapper; + + @Override + public Long createMapStop(RobotMapStopSaveReqVO createReqVO) { + // 插入 + RobotMapStopDO mapStop = BeanUtils.toBean(createReqVO, RobotMapStopDO.class); + mapStopMapper.insert(mapStop); + // 返回 + return mapStop.getId(); + } + + @Override + public void updateMapStop(RobotMapStopSaveReqVO updateReqVO) { + // 校验存在 + validateMapStopExists(updateReqVO.getId()); + // 更新 + RobotMapStopDO updateObj = BeanUtils.toBean(updateReqVO, RobotMapStopDO.class); + mapStopMapper.updateById(updateObj); + } + + @Override + public void deleteMapStop(Long id) { + // 校验存在 + validateMapStopExists(id); + // 删除 + mapStopMapper.deleteById(id); + } + + private void validateMapStopExists(Long id) { + if (mapStopMapper.selectById(id) == null) { + throw exception(MAP_STOP_NOT_EXISTS); + } + } + + @Override + public RobotMapStopDO getMapStop(Long id) { + return mapStopMapper.selectById(id); + } + + @Override + public PageResult getMapStopPage(RobotMapStopPageReqVO pageReqVO) { + return mapStopMapper.selectPage(pageReqVO); + } + + @Override + public List getStopMapIds() { + List positionMapItems = mapStopMapper.selectList(new LambdaQueryWrapperX() + .eq(RobotMapStopDO::getStopType, ZeroOneEnum.ZERO.getType())); + if (ObjectUtil.isEmpty(positionMapItems)) { + return new ArrayList<>(); + } + + return positionMapItems.stream() + .map(RobotMapStopDO::getPositionMapId) + .collect(Collectors.toList()); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotMapStopMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotMapStopMapper.xml new file mode 100644 index 000000000..c0e7f698a --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotMapStopMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file