From fa3bb9911ed121d7390325402d4f2c0d6d9f1123 Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Mon, 28 Apr 2025 09:04:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E7=82=B9=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/PositionAllChangePointBindingDTO.java | 15 +++ .../system/enums/ErrorCodeConstants.java | 3 + .../module/system/api/path/PathApiImpl.java | 5 + .../path/PathPlanningTopicConstant.java | 5 + .../PositionChangePointBindingController.java | 76 ++++++++++++ .../dto/PositionChangePointBindingDTO.java | 18 +++ .../PositionChangePointBindingPageReqVO.java | 34 ++++++ .../vo/PositionChangePointBindingRespVO.java | 39 +++++++ .../PositionChangePointBindingSaveReqVO.java | 27 +++++ .../PositionChangePointBindingDO.java | 47 ++++++++ .../PositionChangePointBindingMapper.java | 36 ++++++ .../service/path/PathPlanningService.java | 5 + .../service/path/PathPlanningServiceImpl.java | 12 ++ .../PositionChangePointBindingService.java | 64 +++++++++++ ...PositionChangePointBindingServiceImpl.java | 108 ++++++++++++++++++ .../positionmap/PositionMapItemService.java | 6 + .../PositionMapItemServiceImpl.java | 12 ++ .../src/main/resources/application-dev.yaml | 4 +- .../PositionChangePointBindingMapper.xml | 22 ++++ 19 files changed, 536 insertions(+), 2 deletions(-) create mode 100644 yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PositionAllChangePointBindingDTO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionChangePointBindingController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionChangePointBindingDTO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingSaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionChangePointBindingDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionChangePointBindingMapper.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionChangePointBindingService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionChangePointBindingServiceImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionChangePointBindingMapper.xml diff --git a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PositionAllChangePointBindingDTO.java b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PositionAllChangePointBindingDTO.java new file mode 100644 index 000000000..d3b3a4731 --- /dev/null +++ b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PositionAllChangePointBindingDTO.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.mqtt.api.path.dto; + +import lombok.Data; + +@Data +public class PositionAllChangePointBindingDTO { + /** + * 点位1的id + */ + private Long startingPointId; + /** + * 点位2的id + */ + private Long endPointId; +} 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 7dfcc9568..9a076da59 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 @@ -304,4 +304,7 @@ public interface ErrorCodeConstants { // ========== 远遥任务转移记录 1_002_056_001 ========== ErrorCode CONTROLLER_TASK_TRANSFER_LOG_NOT_EXISTS = new ErrorCode(1_002_056_001, "远遥任务转移记录不存在"); + + // ========== 区域变更点绑定 1_002_057_001 ========== + ErrorCode POSITION_CHANGE_POINT_BINDING_NOT_EXISTS = new ErrorCode(1_002_057_001, "区域变更点绑定不存在"); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java index 0a6f1eac2..9625b2fda 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.system.config.ratelimiter.SystemRateLimiter; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO; import cn.iocoder.yudao.module.system.service.path.PathPlanningService; +import cn.iocoder.yudao.module.system.service.positionmap.PositionChangePointBindingService; import cn.iocoder.yudao.module.system.service.robot.RobotTaskService; import cn.iocoder.yudao.module.system.service.robot.RobotWarnMsgService; import cn.iocoder.yudao.module.system.service.tool.ToolsService; @@ -40,6 +41,8 @@ public class PathApiImpl implements PathApi { @Resource private RobotWarnMsgService warnMsgService; + + /** * 发送初始化信息给PP */ @@ -59,6 +62,8 @@ public class PathApiImpl implements PathApi { pathPlanningService.robotDimensions(); //距离、优先级、时间权重 toolsService.sendPPsortConfig(); + //同步区域变更点的绑定信息 + pathPlanningService.sendPositionChangePointBinding(); log.info("初始化数据发送个PP---完成"); }); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java index c13f6b311..84024ed41 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/constant/path/PathPlanningTopicConstant.java @@ -104,5 +104,10 @@ public class PathPlanningTopicConstant { */ public static String CLOSE_REMOTE_CONTROLLER = "CLOSE_REMOTE_CONTROLLER"; + /** + * 区域等待点绑定信息 + */ + public static String SYNCHRONOUS_ALL_CHANGE_POINT_BINDING = "SYNCHRONOUS_ALL_CHANGE_POINT_BINDING"; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionChangePointBindingController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionChangePointBindingController.java new file mode 100644 index 000000000..443696b4a --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionChangePointBindingController.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.system.controller.admin.positionmap; + +import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionChangePointBindingDTO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionChangePointBindingSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapItemSaveReqVO; +import cn.iocoder.yudao.module.system.service.positionmap.PositionChangePointBindingService; +import cn.iocoder.yudao.module.system.service.positionmap.PositionMapItemService; +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 cn.iocoder.yudao.framework.common.pojo.CommonResult; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + + + +@Tag(name = "管理后台 - 区域变更点绑定") +@RestController +@RequestMapping("/system/position-change-point-binding") +@Validated +public class PositionChangePointBindingController { + + @Resource + private PositionChangePointBindingService positionChangePointBindingService; + + @Resource + private PositionMapItemService positionMapItemService; + + @PostMapping("/create") + @Operation(summary = "创建区域变更点绑定") + @PreAuthorize("@ss.hasPermission('system:position-change-point-binding:create')") + public CommonResult createPositionChangePointBinding(@Valid @RequestBody PositionChangePointBindingSaveReqVO createReqVO) { + return success(positionChangePointBindingService.createPositionChangePointBinding(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新区域变更点绑定") + @PreAuthorize("@ss.hasPermission('system:position-change-point-binding:update')") + public CommonResult updatePositionChangePointBinding(@Valid @RequestBody PositionChangePointBindingSaveReqVO updateReqVO) { + positionChangePointBindingService.updatePositionChangePointBinding(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除区域变更点绑定") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:position-change-point-binding:delete')") + public CommonResult deletePositionChangePointBinding(@RequestParam("id") Long id) { + positionChangePointBindingService.deletePositionChangePointBinding(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "根据点位id,查询此点位已经绑定的转换点信息") + @Parameter(name = "id", description = "点位id", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:position-change-point-binding:query')") + public CommonResult getPositionChangePointBinding(@RequestParam("id") Long id) { + PositionChangePointBindingDTO positionChangePointBinding = positionChangePointBindingService.getPositionChangePointBinding(id); + return success(positionChangePointBinding); + } + + @GetMapping("/getItemBySortNum") + @Operation(summary = "根据排序查询点位信息") + @Parameter(name = "sortNum", description = "点位自增排序", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:position-change-point-binding:getItemBySortNum')") + public CommonResult getItemBySortNum(@RequestParam("sortNum") Long sortNum) { + PositionMapItemSaveReqVO positionMapItemSaveReqVO = positionMapItemService.getItemBySortNum(sortNum); + return success(positionMapItemSaveReqVO); + } + +} \ 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/positionmap/dto/PositionChangePointBindingDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionChangePointBindingDTO.java new file mode 100644 index 000000000..403d5b990 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/dto/PositionChangePointBindingDTO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.system.controller.admin.positionmap.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class PositionChangePointBindingDTO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31007") + private Long id; + + @Schema(description = "另一个区域变更点的点位自增排序") + private Long sortNum; + + @Schema(description = "另一个区域变更点的主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31007") + private Long pointId; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingPageReqVO.java new file mode 100644 index 000000000..db4bcca7d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingPageReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.system.controller.admin.positionmap.vo; + +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 PositionChangePointBindingPageReqVO extends PageParam { + + @Schema(description = "点位1的id", example = "4491") + private Long startingPointId; + + @Schema(description = "点位2的id", example = "24948") + private Long endPointId; + + @Schema(description = "点位1自增排序") + private Long startingPointSortNum; + + @Schema(description = "点位2自增排序") + private Long endPointSortNum; + + @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/positionmap/vo/PositionChangePointBindingRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingRespVO.java new file mode 100644 index 000000000..ed9548835 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingRespVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.system.controller.admin.positionmap.vo; + +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 PositionChangePointBindingRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17369") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "点位1的id", example = "4491") + @ExcelProperty("点位1的id") + private Long startingPointId; + + @Schema(description = "点位2的id", example = "24948") + @ExcelProperty("点位2的id") + private Long endPointId; + + @Schema(description = "点位1自增排序") + @ExcelProperty("点位1自增排序") + private Long startingPointSortNum; + + @Schema(description = "点位2自增排序") + @ExcelProperty("点位2自增排序") + private Long endPointSortNum; + + @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/positionmap/vo/PositionChangePointBindingSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingSaveReqVO.java new file mode 100644 index 000000000..8e820a38f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/vo/PositionChangePointBindingSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.system.controller.admin.positionmap.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 区域变更点绑定新增/修改 Request VO") +@Data +public class PositionChangePointBindingSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17369") + private Long id; + + @Schema(description = "点位1的id", example = "4491") + private Long startingPointId; + + @Schema(description = "点位2的id", example = "24948") + private Long endPointId; + + @Schema(description = "点位1自增排序") + private Long startingPointSortNum; + + @Schema(description = "点位2自增排序") + private Long endPointSortNum; + +} \ 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/positionmap/PositionChangePointBindingDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionChangePointBindingDO.java new file mode 100644 index 000000000..f82ea8ae9 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/positionmap/PositionChangePointBindingDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.positionmap; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 区域变更点绑定 DO + * + * @author 陈宾顺 + */ +@TableName("ware_position_change_point_binding") +@KeySequence("ware_position_change_point_binding_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PositionChangePointBindingDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 点位1的id + */ + private Long startingPointId; + /** + * 点位2的id + */ + private Long endPointId; + /** + * 点位1自增排序 + */ + private Long startingPointSortNum; + /** + * 点位2自增排序 + */ + private Long endPointSortNum; + +} \ 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/positionmap/PositionChangePointBindingMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionChangePointBindingMapper.java new file mode 100644 index 000000000..ad88be360 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/positionmap/PositionChangePointBindingMapper.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.system.dal.mysql.positionmap; + +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.mqtt.api.path.dto.PositionAllChangePointBindingDTO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionChangePointBindingPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionChangePointBindingDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 区域变更点绑定 Mapper + * + * @author 陈宾顺 + */ +@Mapper +public interface PositionChangePointBindingMapper extends BaseMapperX { + + default PageResult selectPage(PositionChangePointBindingPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(PositionChangePointBindingDO::getStartingPointId, reqVO.getStartingPointId()) + .eqIfPresent(PositionChangePointBindingDO::getEndPointId, reqVO.getEndPointId()) + .eqIfPresent(PositionChangePointBindingDO::getStartingPointSortNum, reqVO.getStartingPointSortNum()) + .eqIfPresent(PositionChangePointBindingDO::getEndPointSortNum, reqVO.getEndPointSortNum()) + .betweenIfPresent(PositionChangePointBindingDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(PositionChangePointBindingDO::getId)); + } + + /** + * 查询所有的区域绑定信息 + * @return + */ + List getAllPositionChangePointBinding(); +} \ 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/path/PathPlanningService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java index 3ff6a1f3b..bdfc81980 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java @@ -60,4 +60,9 @@ public interface PathPlanningService { * 开始同步 */ void synchronousStart(); + + /** + * 发送区域变更点绑定信息 + */ + void sendPositionChangePointBinding(); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java index d1d53fc31..851750e1f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java @@ -39,6 +39,7 @@ import cn.iocoder.yudao.module.system.enums.item.PositionMapItemEnum; import cn.iocoder.yudao.module.system.enums.line.DirectionEnum; import cn.iocoder.yudao.module.system.enums.path.PathTypeEnum; import cn.iocoder.yudao.module.system.service.config.CommonConfigService; +import cn.iocoder.yudao.module.system.service.positionmap.PositionChangePointBindingService; import cn.iocoder.yudao.module.system.service.positionmap.PositionMapItemService; import cn.iocoder.yudao.module.system.service.positionmap.PositionMapService; import cn.iocoder.yudao.module.system.service.robot.RobotInformationService; @@ -109,6 +110,9 @@ public class PathPlanningServiceImpl implements PathPlanningService { @Value("${zn.is_simulation:false}") private Boolean isSimulation; + @Resource + private PositionChangePointBindingService positionChangePointBindingService; + /** * 同步ware_position_map_line的点位信息 */ @@ -560,6 +564,14 @@ public class PathPlanningServiceImpl implements PathPlanningService { } } + @Override + public void sendPositionChangePointBinding() { + List bindingDTOS = positionChangePointBindingService.getAllPositionChangePointBinding(); + if (ObjectUtil.isNotEmpty(bindingDTOS)) { + commonApi.commonMethod(bindingDTOS, PathPlanningTopicConstant.SYNCHRONOUS_ALL_CHANGE_POINT_BINDING); + } + } + public PositionMapLineDTO setPositionMapLineDTOData(PositionMapLineDTO positionMapLineDO) { PositionMapLineDTO build = PositionMapLineDTO.builder() .id(positionMapLineDO.getId()) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionChangePointBindingService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionChangePointBindingService.java new file mode 100644 index 000000000..c3daeeeca --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionChangePointBindingService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.system.service.positionmap; + +import java.util.*; +import javax.validation.*; + +import cn.iocoder.yudao.module.mqtt.api.path.dto.PositionAllChangePointBindingDTO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionChangePointBindingDTO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionChangePointBindingPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionChangePointBindingSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionChangePointBindingDO; +import com.baomidou.mybatisplus.extension.service.IService; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +/** + * 区域变更点绑定 Service 接口 + * + * @author 陈宾顺 + */ +public interface PositionChangePointBindingService extends IService { + + /** + * 创建区域变更点绑定 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createPositionChangePointBinding(@Valid PositionChangePointBindingSaveReqVO createReqVO); + + /** + * 更新区域变更点绑定 + * + * @param updateReqVO 更新信息 + */ + void updatePositionChangePointBinding(@Valid PositionChangePointBindingSaveReqVO updateReqVO); + + /** + * 删除区域变更点绑定 + * + * @param id 编号 + */ + void deletePositionChangePointBinding(Long id); + + /** + * 获得区域变更点绑定 + * + * @param id 编号 + * @return 区域变更点绑定 + */ + PositionChangePointBindingDTO getPositionChangePointBinding(Long id); + + /** + * 获得区域变更点绑定分页 + * + * @param pageReqVO 分页查询 + * @return 区域变更点绑定分页 + */ + PageResult getPositionChangePointBindingPage(PositionChangePointBindingPageReqVO pageReqVO); + + /** + * 查询所有绑定的区域变更点 + * @return + */ + List getAllPositionChangePointBinding(); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionChangePointBindingServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionChangePointBindingServiceImpl.java new file mode 100644 index 000000000..562694069 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionChangePointBindingServiceImpl.java @@ -0,0 +1,108 @@ +package cn.iocoder.yudao.module.system.service.positionmap; + +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mqtt.api.path.dto.PositionAllChangePointBindingDTO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionChangePointBindingDTO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionChangePointBindingPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionChangePointBindingSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionChangePointBindingDO; +import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO; +import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionChangePointBindingMapper; +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 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.*; + +/** + * 区域变更点绑定 Service 实现类 + * + * @author 陈宾顺 + */ +@Service +@Validated +public class PositionChangePointBindingServiceImpl extends ServiceImpl implements PositionChangePointBindingService { + + @Resource + private PositionChangePointBindingMapper positionChangePointBindingMapper; + + @Override + public Long createPositionChangePointBinding(PositionChangePointBindingSaveReqVO createReqVO) { + // 插入 + PositionChangePointBindingDO positionChangePointBinding = BeanUtils.toBean(createReqVO, PositionChangePointBindingDO.class); + positionChangePointBindingMapper.insert(positionChangePointBinding); + // 返回 + return positionChangePointBinding.getId(); + } + + @Override + public void updatePositionChangePointBinding(PositionChangePointBindingSaveReqVO updateReqVO) { + // 校验存在 + validatePositionChangePointBindingExists(updateReqVO.getId()); + // 更新 + PositionChangePointBindingDO updateObj = BeanUtils.toBean(updateReqVO, PositionChangePointBindingDO.class); + positionChangePointBindingMapper.updateById(updateObj); + } + + @Override + public void deletePositionChangePointBinding(Long id) { + // 校验存在 + validatePositionChangePointBindingExists(id); + // 删除 + positionChangePointBindingMapper.deleteById(id); + } + + private void validatePositionChangePointBindingExists(Long id) { + if (positionChangePointBindingMapper.selectById(id) == null) { + throw exception(POSITION_CHANGE_POINT_BINDING_NOT_EXISTS); + } + } + + @Override + public PositionChangePointBindingDTO getPositionChangePointBinding(Long mapItemId) { + PositionChangePointBindingDTO positionChangePointBinding = new PositionChangePointBindingDTO(); + PositionChangePointBindingDO position = positionChangePointBindingMapper.selectOne(new LambdaQueryWrapperX() + .eq(PositionChangePointBindingDO::getStartingPointId, mapItemId)); + if (ObjectUtil.isNotEmpty(position)) { + positionChangePointBinding.setId(position.getId()); + positionChangePointBinding.setSortNum(position.getEndPointSortNum()); + positionChangePointBinding.setPointId(position.getEndPointId()); + return positionChangePointBinding; + } + + PositionChangePointBindingDO startPosition = positionChangePointBindingMapper.selectOne(new LambdaQueryWrapperX() + .eq(PositionChangePointBindingDO::getEndPointId, mapItemId)); + if (ObjectUtil.isNotEmpty(startPosition)) { + positionChangePointBinding.setId(startPosition.getId()); + positionChangePointBinding.setSortNum(startPosition.getStartingPointSortNum()); + positionChangePointBinding.setPointId(startPosition.getStartingPointId()); + } + + return positionChangePointBinding; + } + + @Override + public PageResult getPositionChangePointBindingPage(PositionChangePointBindingPageReqVO pageReqVO) { + return positionChangePointBindingMapper.selectPage(pageReqVO); + } + + @Override + public List getAllPositionChangePointBinding() { + return positionChangePointBindingMapper.getAllPositionChangePointBinding(); + } + + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemService.java index c938d02aa..165275639 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemService.java @@ -125,4 +125,10 @@ public interface PositionMapItemService extends IService { */ Long getUUid(); + /** + * 根据排序查询 + * @param sortNum + * @return + */ + PositionMapItemSaveReqVO getItemBySortNum(Long sortNum); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java index c202e5815..7ebffdbc7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.service.positionmap; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -165,4 +166,15 @@ public class PositionMapItemServiceImpl extends ServiceImpl() + .eq(PositionMapItemDO::getSortNum, sortNum)); + if (ObjectUtil.isEmpty(positionMapItemDO)) { + return null; + } + PositionMapItemSaveReqVO bean = BeanUtils.toBean(positionMapItemDO, PositionMapItemSaveReqVO.class); + return bean; + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/application-dev.yaml b/yudao-module-system/yudao-module-system-biz/src/main/resources/application-dev.yaml index 25afe54d2..8cc7b8145 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/application-dev.yaml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/application-dev.yaml @@ -208,5 +208,5 @@ zn: open_rate_limiter: true #是否开启限流 path_planning: task_chche_time: 1209600 #任务缓存的时间, 默认一星期 - is_simulation: true # 是否为仿真环境 - restore_task_restart: true # 恢复任务是否全部重新执行 true:全部重新开始 + is_simulation: false # 是否为仿真环境 + restore_task_restart: false # 恢复任务是否全部重新执行 true:全部重新开始 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionChangePointBindingMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionChangePointBindingMapper.xml new file mode 100644 index 000000000..c387f9482 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/positionmap/PositionChangePointBindingMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file