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 476bf5cd6..23ea4d49e 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 @@ -338,4 +338,7 @@ public interface ErrorCodeConstants { //========== 车辆行走路线耗时记录 1_002_061_001 ========== ErrorCode TASK_LINE_TIME_CONSUMING_NOT_EXISTS = new ErrorCode(1_002_061_001, "车辆行走路线耗时记录不存在"); + + // ========== 取货点位 1_002_062_001 ========== + ErrorCode HOUSE_TAKE_POINT_NOT_EXISTS = new ErrorCode(1_002_062_001, "取货点位不存在"); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java index 3ed805f86..8f9853772 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java @@ -6,7 +6,6 @@ import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi; -import cn.iocoder.yudao.module.mqtt.api.common.CommonApi; import cn.iocoder.yudao.module.system.api.path.vo.RobotClosePathPlantingDTO; import cn.iocoder.yudao.module.system.api.robot.dto.FloorZoneDTO; import cn.iocoder.yudao.module.system.api.robot.dto.RobotCommandStateDTO; @@ -16,7 +15,6 @@ import cn.iocoder.yudao.module.system.api.robot.websocket.WsWareHouseLocationDTO import cn.iocoder.yudao.module.system.config.mqtt.util.MqttUtils; import cn.iocoder.yudao.module.system.config.poperties.ZnConfigConstant; import cn.iocoder.yudao.module.system.constant.CommonConstant; -import cn.iocoder.yudao.module.system.constant.area.FloorAreaConstant; import cn.iocoder.yudao.module.system.constant.path.PathPlanningChcheConstant; import cn.iocoder.yudao.module.system.constant.path.PathPlanningTopicConstant; import cn.iocoder.yudao.module.system.constant.robot.RobotExecutionStateConstant; @@ -38,7 +36,7 @@ import cn.iocoder.yudao.module.system.enums.robot.actionlog.ActionStatusEnum; import cn.iocoder.yudao.module.system.enums.robot.charge.ChargeTaskStatusEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotStatusCodeEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum; -import cn.iocoder.yudao.module.system.enums.robot.task.event.RobotTaskEventTypeEnum; +import cn.iocoder.yudao.module.system.enums.robot.task.event.EventTypeEnum; import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage; import cn.iocoder.yudao.module.system.mq.producer.task.TaskDistributionProducer; import cn.iocoder.yudao.module.system.service.information.DeviceInformationService; @@ -52,7 +50,6 @@ import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -63,8 +60,6 @@ import java.time.LocalDateTime; import java.util.List; import java.util.UUID; -import static cn.iocoder.yudao.module.system.service.robot.RobotInformationServiceImpl.key; - @Slf4j @RestController // 提供 RESTful API 接口,给 Feign 调用 @Validated @@ -286,7 +281,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { addTaskDetailActionDoneLog(robotCompleteTaskDTO, robotTaskDetail); TaskDistributionMessage mess = new TaskDistributionMessage(this, robotCompleteTaskDTO.getOrderId() + "", - RobotTaskEventTypeEnum.DONE.getType()); + EventTypeEnum.TASK_DONE.getType()); taskDistributionProducer.sendSmsSendMessage(mess); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotWorkStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotWorkStatusApiImpl.java index f4ac31311..9a2404aa4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotWorkStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotWorkStatusApiImpl.java @@ -7,20 +7,18 @@ import cn.iocoder.yudao.module.system.constant.robot.RobotExecutionStateConstant import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotOperationLogSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper; -import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum; import cn.iocoder.yudao.module.system.enums.path.PathIsReachEnum; import cn.iocoder.yudao.module.system.enums.robot.CommandTypeEnum; import cn.iocoder.yudao.module.system.enums.robot.RobotTaskDetailStatusEnum; import cn.iocoder.yudao.module.system.enums.robot.RobotTaskTypeEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum; import cn.iocoder.yudao.module.system.enums.robot.task.WorkProgressEnum; -import cn.iocoder.yudao.module.system.enums.robot.task.event.RobotTaskEventTypeEnum; +import cn.iocoder.yudao.module.system.enums.robot.task.event.EventTypeEnum; import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage; import cn.iocoder.yudao.module.system.mq.producer.task.TaskDistributionProducer; import cn.iocoder.yudao.module.system.service.log.RobotOperationLogService; import cn.iocoder.yudao.module.system.service.path.PathPlanningService; import cn.iocoder.yudao.module.system.service.robot.RobotInformationService; -import cn.iocoder.yudao.module.system.util.redis.RedisUtil; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -71,7 +69,7 @@ public class RobotWorkStatusApiImpl implements RobotWorkStatusApi { operationLogService.createOperationLog(createReqVO); TaskDistributionMessage mess = new TaskDistributionMessage(this,message, - RobotTaskEventTypeEnum.TIME.getType()); + EventTypeEnum.TASK_TIME.getType()); taskDistributionProducer.sendSmsSendMessage(mess); if ((CommandTypeEnum.WORK_PICK_UP_GOODS_MOVE_TO_CHECK.getType().equals(data.getCommandType()) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/WareHouseTakePointController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/WareHouseTakePointController.java new file mode 100644 index 000000000..9dcff8ede --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/WareHouseTakePointController.java @@ -0,0 +1,105 @@ +package cn.iocoder.yudao.module.system.controller.admin.houselocation; + +import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseTakePointPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseTakePointRespVO; +import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseTakePointSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseTakePointDO; +import cn.iocoder.yudao.module.system.service.houselocation.WareHouseTakePointService; +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.constraints.*; +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/ware/house-take-point") +@Validated +public class WareHouseTakePointController { + + @Resource + private WareHouseTakePointService houseTakePointService; + + @PostMapping("/create") + @Operation(summary = "创建取货点位") + @PreAuthorize("@ss.hasPermission('ware:house-take-point:create')") + public CommonResult createHouseTakePoint(@Valid @RequestBody WareHouseTakePointSaveReqVO createReqVO) { + return success(houseTakePointService.createHouseTakePoint(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新取货点位") + @PreAuthorize("@ss.hasPermission('ware:house-take-point:update')") + public CommonResult updateHouseTakePoint(@Valid @RequestBody WareHouseTakePointSaveReqVO updateReqVO) { + houseTakePointService.updateHouseTakePoint(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除取货点位") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('ware:house-take-point:delete')") + public CommonResult deleteHouseTakePoint(@RequestParam("id") Long id) { + houseTakePointService.deleteHouseTakePoint(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得取货点位") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('ware:house-take-point:query')") + public CommonResult getHouseTakePoint(@RequestParam("id") Long id) { + WareHouseTakePointDO houseTakePoint = houseTakePointService.getHouseTakePoint(id); + return success(BeanUtils.toBean(houseTakePoint, WareHouseTakePointRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得取货点位分页") + @PreAuthorize("@ss.hasPermission('ware:house-take-point:query')") + public CommonResult> getHouseTakePointPage(@Valid WareHouseTakePointPageReqVO pageReqVO) { + PageResult pageResult = houseTakePointService.getHouseTakePointPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, WareHouseTakePointRespVO.class)); + } + + @GetMapping("/list") + @Operation(summary = "获得取货点位集合") + @PreAuthorize("@ss.hasPermission('ware:house-take-point:list')") + public CommonResult> getHouseTakePointList() { + List list = houseTakePointService.getHouseTakePointList(); + return success(BeanUtils.toBean(list, WareHouseTakePointRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出取货点位 Excel") + @PreAuthorize("@ss.hasPermission('ware:house-take-point:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportHouseTakePointExcel(@Valid WareHouseTakePointPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = houseTakePointService.getHouseTakePointPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "取货点位.xls", "数据", WareHouseTakePointRespVO.class, + BeanUtils.toBean(list, WareHouseTakePointRespVO.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/houselocation/vo/WareHouseTakePointPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/vo/WareHouseTakePointPageReqVO.java new file mode 100644 index 000000000..0746cb6a4 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/vo/WareHouseTakePointPageReqVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.system.controller.admin.houselocation.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +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 WareHouseTakePointPageReqVO extends PageParam { + + @Schema(description = "点位类型名称", example = "李四") + private String pointName; + + @Schema(description = "点位类型(备用)", example = "2") + private Integer pointType; + + @Schema(description = "总高度") + private BigDecimal totalHeight; + + @Schema(description = "托盘高度") + private BigDecimal trayHeight; + + @Schema(description = "点位状态, 0:空闲, 1:有货", example = "2") + private Integer pointStatus; + + @Schema(description = "地图id", example = "25285") + private Long positionMapId; + + @Schema(description = "地图字表节点id", example = "527") + private Long positionMapItemId; + + @Schema(description = "实际坐标x轴") + private String actualLocationX; + + @Schema(description = "实际坐标y轴") + private String actualLocationY; + + @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/houselocation/vo/WareHouseTakePointRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/vo/WareHouseTakePointRespVO.java new file mode 100644 index 000000000..b31064337 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/vo/WareHouseTakePointRespVO.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.system.controller.admin.houselocation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 取货点位 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WareHouseTakePointRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11573") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "点位类型名称", example = "李四") + @ExcelProperty("点位类型名称") + private String pointName; + + @Schema(description = "点位类型(备用)", example = "2") + @ExcelProperty("点位类型(备用)") + private Integer pointType; + + @Schema(description = "总高度") + @ExcelProperty("总高度") + private BigDecimal totalHeight; + + @Schema(description = "托盘高度") + @ExcelProperty("托盘高度") + private BigDecimal trayHeight; + + @Schema(description = "点位状态, 0:空闲, 1:有货", example = "2") + @ExcelProperty("点位状态, 0:空闲, 1:有货") + private Integer pointStatus; + + @Schema(description = "地图id", example = "25285") + @ExcelProperty("地图id") + private Long positionMapId; + + @Schema(description = "地图字表节点id", example = "527") + @ExcelProperty("地图字表节点id") + private Long positionMapItemId; + + @Schema(description = "实际坐标x轴") + @ExcelProperty("实际坐标x轴") + private String actualLocationX; + + @Schema(description = "实际坐标y轴") + @ExcelProperty("实际坐标y轴") + private String actualLocationY; + + @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/houselocation/vo/WareHouseTakePointSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/vo/WareHouseTakePointSaveReqVO.java new file mode 100644 index 000000000..2caa3d509 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/houselocation/vo/WareHouseTakePointSaveReqVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.system.controller.admin.houselocation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 取货点位新增/修改 Request VO") +@Data +public class WareHouseTakePointSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11573") + private Long id; + + @Schema(description = "点位类型名称", example = "李四") + private String pointName; + + @Schema(description = "点位类型(备用)", example = "2") + private Integer pointType; + + @Schema(description = "总高度") + private BigDecimal totalHeight; + + @Schema(description = "托盘高度") + private BigDecimal trayHeight; + + @Schema(description = "点位状态, 0:空闲, 1:有货", example = "2") + private Integer pointStatus; + + @Schema(description = "地图id", example = "25285") + private Long positionMapId; + + @Schema(description = "地图字表节点id", example = "527") + private Long positionMapItemId; + + @Schema(description = "实际坐标x轴") + private String actualLocationX; + + @Schema(description = "实际坐标y轴") + private String actualLocationY; + +} \ 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/information/vo/DeviceInformationPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationPageReqVO.java index 730440266..70b5a5fa7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationPageReqVO.java @@ -41,7 +41,7 @@ public class DeviceInformationPageReqVO extends PageParam { @Schema(description = "深度") private BigDecimal locationDeep; - //1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机, 9:摄像头 + //1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机, 9:摄像头,10 :翻转机 @Schema(description = "设备类型 字典device_type", example = "2") private Integer deviceType; @@ -101,4 +101,7 @@ public class DeviceInformationPageReqVO extends PageParam { @Schema(description = "摄像头编号") private String cameraCode; + @Schema(description = "ware_house_take_point的id") + private Long takePointId; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationRespVO.java index a42dd8900..530d5b117 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationRespVO.java @@ -50,7 +50,7 @@ public class DeviceInformationRespVO { @ExcelProperty("深度") private BigDecimal locationDeep; - //1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机, 9:摄像头 + //1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机, 9:摄像头,10 :翻转机 @Schema(description = "设备类型 字典device_type", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty("设备类型 字典device_type") private Integer deviceType; @@ -135,4 +135,8 @@ public class DeviceInformationRespVO { @Schema(description = "摄像头编号") @ExcelProperty("摄像头编号") private String cameraCode; + + @Schema(description = "ware_house_take_point的id") + @ExcelProperty("ware_house_take_point的id") + private Long takePointId; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationSaveReqVO.java index 25b7afc49..aebfdacf7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/vo/DeviceInformationSaveReqVO.java @@ -41,7 +41,7 @@ public class DeviceInformationSaveReqVO { @Schema(description = "深度") private BigDecimal locationDeep; - //1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机 9:摄像头 + //1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机 9:摄像头,10 :翻转机 @Schema(description = "设备类型 字典device_type", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @NotNull(message = "设备类型不能为空") private Integer deviceType; @@ -100,4 +100,7 @@ public class DeviceInformationSaveReqVO { @Schema(description = "摄像头编号") private String cameraCode; + + @Schema(description = "ware_house_take_point的id") + private Long takePointId; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapItemController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapItemController.java index 98b88a843..992129e94 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapItemController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/positionmap/PositionMapItemController.java @@ -18,13 +18,14 @@ import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMa import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLineSaveReqVO; 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.enums.robot.task.event.EventTypeEnum; import cn.iocoder.yudao.module.system.handler.mapnode.NodeProcessingContext; +import cn.iocoder.yudao.module.system.mq.message.map.MapMessage; +import cn.iocoder.yudao.module.system.mq.producer.map.MapProducer; import cn.iocoder.yudao.module.system.service.log.UserOperationLogService; import cn.iocoder.yudao.module.system.service.positionmap.PositionMapItemService; import cn.iocoder.yudao.module.system.service.positionmap.PositionMapLineService; import cn.iocoder.yudao.module.system.service.robot.RobotTaskService; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -43,6 +44,7 @@ import java.util.Map; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + @Slf4j @Tag(name = "管理后台 - 仓库点位地图子表") @RestController @@ -66,7 +68,7 @@ public class PositionMapItemController { private RobotTaskService taskService; @Resource - private PathApi pathApi; + private MapProducer mapProducer; // -- 前端给所有的节点信息 - @PostMapping("/batchSaveOrEditOrDel") @@ -93,7 +95,9 @@ public class PositionMapItemController { .nickName(SecurityFrameworkUtils.getLoginUserNickname()).build(); userOperationLogService.createUserOperationLog(operationLog); - pathApi.pathInitData(); + MapMessage mes = new MapMessage(this, positionMapId + "", + EventTypeEnum.MAP_UPDATE.getType()); + mapProducer.sendSmsSendMessage(mes); return success(true); } @@ -139,7 +143,7 @@ public class PositionMapItemController { @PostMapping("/lineAddItem") @Operation(summary = "线上加点保存点位") @PreAuthorize("@ss.hasPermission('system:position-map-item:lineAddItem')") - public CommonResult> lineAddItem(@Valid @RequestBody List list) { + public CommonResult> lineAddItem(@Valid @RequestBody List list) { PositionMapItemSaveReqVO positionMapItem = BeanUtils.toBean(list.get(0), PositionMapItemSaveReqVO.class); positionMapItemService.createPositionMapItem(positionMapItem); @@ -153,7 +157,7 @@ public class PositionMapItemController { itemIds.add(positionMapLineDO.getEndPointId()); } - Map sortNumMap = positionMapItemService.getSortNumMapByIds(itemIds); + Map sortNumMap = positionMapItemService.getSortNumMapByIds(itemIds); for (PositionMapLineDO positionMapLineDO : lineList) { positionMapLineDO.setPositionMapId(positionMapItem.getPositionMapId()); @@ -161,9 +165,9 @@ public class PositionMapItemController { positionMapLineDO.setEndPointSortNum(sortNumMap.get(positionMapLineDO.getEndPointId()).intValue()); } positionMapLineService.batchSaveLines(lineList); - Map map = new HashMap<>(); - map.put("ITEM",positionMapItemService.getPositionMapItem(positionMapItem.getId())); - map.put("LINE",lineList); + Map map = new HashMap<>(); + map.put("ITEM", positionMapItemService.getPositionMapItem(positionMapItem.getId())); + map.put("LINE", lineList); return success(map); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/houselocation/WareHouseTakePointDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/houselocation/WareHouseTakePointDO.java new file mode 100644 index 000000000..1b0dd71b4 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/houselocation/WareHouseTakePointDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.houselocation; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +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_house_take_point") +@KeySequence("ware_house_take_point_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WareHouseTakePointDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 点位类型名称 + */ + private String pointName; + /** + * 点位类型(备用) + */ + private Integer pointType; + /** + * 总高度 + */ + private BigDecimal totalHeight; + /** + * 托盘高度 + */ + private BigDecimal trayHeight; + /** + * 点位状态, 0:空闲, 1:有货 + */ + private Integer pointStatus; + /** + * 地图id + */ + private Long positionMapId; + /** + * 地图字表节点id + */ + private Long positionMapItemId; + /** + * 实际坐标x轴 + */ + private String actualLocationX; + /** + * 实际坐标y轴 + */ + private String actualLocationY; + +} \ 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/information/DeviceInformationDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/information/DeviceInformationDO.java index 48e9d492d..a355d4c1e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/information/DeviceInformationDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/information/DeviceInformationDO.java @@ -67,7 +67,7 @@ public class DeviceInformationDO extends BaseDO { */ private BigDecimal locationDeep; /** - * 1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机, 9:摄像头 + * 1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机, 9:摄像头 ,10 :翻转机 * 设备类型 字典device_type */ private Integer deviceType; @@ -144,4 +144,9 @@ public class DeviceInformationDO extends BaseDO { * 摄像头编号 */ private String cameraCode; + + /** + * ware_house_take_point的id + */ + private Long takePointId; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseTakePointMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseTakePointMapper.java new file mode 100644 index 000000000..67606f2ce --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseTakePointMapper.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.system.dal.mysql.houselocation; + +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.houselocation.vo.WareHouseTakePointPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseTakePointDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 取货点位 Mapper + * + * @author 陈宾顺 + */ +@Mapper +public interface WareHouseTakePointMapper extends BaseMapperX { + + default PageResult selectPage(WareHouseTakePointPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(WareHouseTakePointDO::getPointName, reqVO.getPointName()) + .eqIfPresent(WareHouseTakePointDO::getPointType, reqVO.getPointType()) + .eqIfPresent(WareHouseTakePointDO::getTotalHeight, reqVO.getTotalHeight()) + .eqIfPresent(WareHouseTakePointDO::getTrayHeight, reqVO.getTrayHeight()) + .eqIfPresent(WareHouseTakePointDO::getPointStatus, reqVO.getPointStatus()) + .eqIfPresent(WareHouseTakePointDO::getPositionMapId, reqVO.getPositionMapId()) + .eqIfPresent(WareHouseTakePointDO::getPositionMapItemId, reqVO.getPositionMapItemId()) + .eqIfPresent(WareHouseTakePointDO::getActualLocationX, reqVO.getActualLocationX()) + .eqIfPresent(WareHouseTakePointDO::getActualLocationY, reqVO.getActualLocationY()) + .betweenIfPresent(WareHouseTakePointDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WareHouseTakePointDO::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/enums/device/DeviceTypeEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/device/DeviceTypeEnum.java index c426c0eca..ee23dccf7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/device/DeviceTypeEnum.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/device/DeviceTypeEnum.java @@ -15,7 +15,8 @@ public enum DeviceTypeEnum { SIGNAL_LIGHT(6, "信号灯"), BUTTON_BOX(7, "按钮盒"), DISMANTLING_MACHINE(8, "拆垛机"), - CAMERA(9, "摄像头"); + CAMERA(9, "摄像头"), + FLIP(10, "翻转机"); /** * 类型 @@ -41,6 +42,8 @@ public enum DeviceTypeEnum { return 10; }if (BUTTON_BOX.type.equals(type)) { return 11; + }if (FLIP.type.equals(type)) { + return 14; }else { return 12; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/event/RobotTaskEventTypeEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/event/EventTypeEnum.java similarity index 54% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/event/RobotTaskEventTypeEnum.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/event/EventTypeEnum.java index 15d27fd44..5516f87ed 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/event/RobotTaskEventTypeEnum.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/task/event/EventTypeEnum.java @@ -5,10 +5,11 @@ import lombok.Getter; @Getter @AllArgsConstructor -public enum RobotTaskEventTypeEnum { - DISTRIBUTION("DISTRIBUTION","任务分配"), - DONE("DONE","任务完成"), - TIME("TIME","统计时间"); +public enum EventTypeEnum { + TASK_DISTRIBUTION("DISTRIBUTION","任务分配"), + TASK_DONE("DONE","任务完成"), + TASK_TIME("TIME","统计时间"), + MAP_UPDATE("MAP_UPDATE","修改地图"); /** * 类型 */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/map/MapConsumer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/map/MapConsumer.java new file mode 100644 index 000000000..376ec277d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/map/MapConsumer.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.system.mq.consumer.map; + +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.module.system.api.path.PathApi; +import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO; +import cn.iocoder.yudao.module.system.enums.device.DeviceTypeEnum; +import cn.iocoder.yudao.module.system.enums.robot.task.event.EventTypeEnum; +import cn.iocoder.yudao.module.system.mq.message.map.MapMessage; +import cn.iocoder.yudao.module.system.service.information.DeviceInformationService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class MapConsumer { + + @Resource + private PathApi pathApi; + + @Resource + private DeviceInformationService informationService; + + //更新翻转机 + @EventListener + @Async + public void onMessage(MapMessage message) { + if (EventTypeEnum.MAP_UPDATE.getType().equals(message.getEventType())) { + pathApi.pathInitData(); + } + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/remote/RemoteControllerConsumer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/remote/RemoteControllerConsumer.java index b1b81d797..fafa91a02 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/remote/RemoteControllerConsumer.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/remote/RemoteControllerConsumer.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.system.mq.consumer.remote; -import cn.iocoder.yudao.module.system.mq.message.RemoteSendMessage; -import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; +import cn.iocoder.yudao.module.system.mq.message.remote.RemoteSendMessage; import cn.iocoder.yudao.module.system.service.remote.RemoteControllerInformationService; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/task/TaskDistributionConsumer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/task/TaskDistributionConsumer.java index 927b795c2..4e525b0ae 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/task/TaskDistributionConsumer.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/task/TaskDistributionConsumer.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.system.mq.consumer.task; -import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.system.api.robot.vo.RobotWorkStatusDTO; @@ -13,7 +12,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; import cn.iocoder.yudao.module.system.enums.robot.CommandTypeEnum; import cn.iocoder.yudao.module.system.enums.robot.RobotTaskTypeEnum; import cn.iocoder.yudao.module.system.enums.robot.task.WorkProgressEnum; -import cn.iocoder.yudao.module.system.enums.robot.task.event.RobotTaskEventTypeEnum; +import cn.iocoder.yudao.module.system.enums.robot.task.event.EventTypeEnum; import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage; import cn.iocoder.yudao.module.system.service.log.RobotTaskTimeConsumingService; import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService; @@ -31,8 +30,6 @@ import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - @Component @Slf4j @@ -58,7 +55,7 @@ public class TaskDistributionConsumer { public void onMessage(TaskDistributionMessage message) { log.info("111111, 任务 : {}", JSON.toJSONString(message)); TenantContextHolder.setTenantId(1L); - if (RobotTaskEventTypeEnum.DISTRIBUTION.getType().equals(message.getEventType())) { + if (EventTypeEnum.TASK_DISTRIBUTION.getType().equals(message.getEventType())) { RobotTaskDetailDO taskDetail = robotTaskDetailService.getTaskDetail(Long.valueOf(message.getMessage())); robotWorkingHoursStatisticsService.createFreeTime(taskDetail.getRobotNo()); RobotTaskDO task = taskService.getTask(taskDetail.getRobotTaskId()); @@ -71,10 +68,10 @@ public class TaskDistributionConsumer { .setToLocationNo(taskDetail.getToLocationNo()) .setRobotNo(taskDetail.getRobotNo()); robotTaskTimeConsumingService.createRobotTaskTimeConsuming(data); - } else if (RobotTaskEventTypeEnum.TIME.getType().equals(message.getEventType())) { + } else if (EventTypeEnum.TASK_TIME.getType().equals(message.getEventType())) { RobotWorkStatusDTO data = JSON.parseObject(message.getMessage(), RobotWorkStatusDTO.class); addTaskTimeLog(data); - } else if (RobotTaskEventTypeEnum.DONE.getType().equals(message.getEventType())) { + } else if (EventTypeEnum.TASK_DONE.getType().equals(message.getEventType())) { String orderId = message.getMessage(); String endTime = DateUtils.getYearMonthDayHourMinuteSecon(); try { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/map/MapMessage.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/map/MapMessage.java new file mode 100644 index 000000000..ca18bf7ff --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/map/MapMessage.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.system.mq.message.map; + +import org.springframework.context.ApplicationEvent; + +public class MapMessage extends ApplicationEvent { + + private String msg; + private String eventType; + public MapMessage(Object source, String msg,String eventType) { + super(source); + this.msg = msg; + this.eventType = eventType; + } + + public String getMessage() { + return msg; + } + + public String getEventType() { + return eventType; + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/RemoteSendMessage.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/remote/RemoteSendMessage.java similarity index 67% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/RemoteSendMessage.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/remote/RemoteSendMessage.java index 4004f0ad9..db6007763 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/RemoteSendMessage.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/remote/RemoteSendMessage.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.mq.message; +package cn.iocoder.yudao.module.system.mq.message.remote; import lombok.Builder; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/map/MapProducer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/map/MapProducer.java new file mode 100644 index 000000000..068fb75dc --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/map/MapProducer.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.system.mq.producer.map; + +import cn.iocoder.yudao.module.system.mq.message.map.MapMessage; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class MapProducer { + + @Resource + private ApplicationContext applicationContext; + + public void sendSmsSendMessage(MapMessage message) { + applicationContext.publishEvent(message); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/remote/RemoteControllerProducer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/remote/RemoteControllerProducer.java index 5fe87064b..a80d7f629 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/remote/RemoteControllerProducer.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/remote/RemoteControllerProducer.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.system.mq.producer.remote; -import cn.iocoder.yudao.module.system.mq.message.RemoteSendMessage; +import cn.iocoder.yudao.module.system.mq.message.remote.RemoteSendMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/task/TaskDistributionProducer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/task/TaskDistributionProducer.java index e9323b4d2..2801072c2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/task/TaskDistributionProducer.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/task/TaskDistributionProducer.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.system.mq.producer.task; -import cn.iocoder.yudao.module.system.mq.message.RemoteSendMessage; import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/WareHouseTakePointService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/WareHouseTakePointService.java new file mode 100644 index 000000000..89f8a3972 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/WareHouseTakePointService.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.system.service.houselocation; + +import java.util.*; +import javax.validation.*; + +import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseTakePointPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseTakePointSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseTakePointDO; +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 WareHouseTakePointService extends IService { + + /** + * 创建取货点位 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createHouseTakePoint(@Valid WareHouseTakePointSaveReqVO createReqVO); + + /** + * 更新取货点位 + * + * @param updateReqVO 更新信息 + */ + void updateHouseTakePoint(@Valid WareHouseTakePointSaveReqVO updateReqVO); + + /** + * 删除取货点位 + * + * @param id 编号 + */ + void deleteHouseTakePoint(Long id); + + /** + * 获得取货点位 + * + * @param id 编号 + * @return 取货点位 + */ + WareHouseTakePointDO getHouseTakePoint(Long id); + + /** + * 获得取货点位分页 + * + * @param pageReqVO 分页查询 + * @return 取货点位分页 + */ + PageResult getHouseTakePointPage(WareHouseTakePointPageReqVO pageReqVO); + + List getHouseTakePointList(); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/WareHouseTakePointServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/WareHouseTakePointServiceImpl.java new file mode 100644 index 000000000..49df28080 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/WareHouseTakePointServiceImpl.java @@ -0,0 +1,81 @@ +package cn.iocoder.yudao.module.system.service.houselocation; + +import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseTakePointPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseTakePointSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseTakePointDO; +import cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseTakePointMapper; +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.HOUSE_TAKE_POINT_NOT_EXISTS; + +/** + * 取货点位 Service 实现类 + * + * @author 陈宾顺 + */ +@Service +@Validated +public class WareHouseTakePointServiceImpl extends ServiceImpl implements WareHouseTakePointService { + + @Resource + private WareHouseTakePointMapper houseTakePointMapper; + + @Override + public Long createHouseTakePoint(WareHouseTakePointSaveReqVO createReqVO) { + // 插入 + WareHouseTakePointDO houseTakePoint = BeanUtils.toBean(createReqVO, WareHouseTakePointDO.class); + houseTakePointMapper.insert(houseTakePoint); + // 返回 + return houseTakePoint.getId(); + } + + @Override + public void updateHouseTakePoint(WareHouseTakePointSaveReqVO updateReqVO) { + // 校验存在 + validateHouseTakePointExists(updateReqVO.getId()); + // 更新 + WareHouseTakePointDO updateObj = BeanUtils.toBean(updateReqVO, WareHouseTakePointDO.class); + houseTakePointMapper.updateById(updateObj); + } + + @Override + public void deleteHouseTakePoint(Long id) { + // 校验存在 + validateHouseTakePointExists(id); + // 删除 + houseTakePointMapper.deleteById(id); + } + + private void validateHouseTakePointExists(Long id) { + if (houseTakePointMapper.selectById(id) == null) { + throw exception(HOUSE_TAKE_POINT_NOT_EXISTS); + } + } + + @Override + public WareHouseTakePointDO getHouseTakePoint(Long id) { + return houseTakePointMapper.selectById(id); + } + + @Override + public PageResult getHouseTakePointPage(WareHouseTakePointPageReqVO pageReqVO) { + return houseTakePointMapper.selectPage(pageReqVO); + } + + @Override + public List getHouseTakePointList() { + return houseTakePointMapper.selectList(); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/remote/RemoteControllerInformationService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/remote/RemoteControllerInformationService.java index d00c5859c..79095b959 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/remote/RemoteControllerInformationService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/remote/RemoteControllerInformationService.java @@ -11,7 +11,7 @@ import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskTransferDTO; import cn.iocoder.yudao.module.system.controller.admin.remote.vo.RemoteControllerInformationPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.remote.vo.RemoteControllerInformationSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.remote.RemoteControllerInformationDO; -import cn.iocoder.yudao.module.system.mq.message.RemoteSendMessage; +import cn.iocoder.yudao.module.system.mq.message.remote.RemoteSendMessage; import com.baomidou.mybatisplus.extension.service.IService; import cn.iocoder.yudao.framework.common.pojo.PageResult; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/remote/RemoteControllerInformationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/remote/RemoteControllerInformationServiceImpl.java index 5ba657bc7..070e0499f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/remote/RemoteControllerInformationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/remote/RemoteControllerInformationServiceImpl.java @@ -2,8 +2,6 @@ package cn.iocoder.yudao.module.system.service.remote; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; -import cn.iocoder.yudao.module.mqtt.api.common.CommonApi; -import cn.iocoder.yudao.module.mqtt.api.path.dto.PathPosedsDTO; import cn.iocoder.yudao.module.mqtt.api.path.dto.PathToRobotDTO; import cn.iocoder.yudao.module.mqtt.api.path.dto.remote.RemotePathPlanningDTO; import cn.iocoder.yudao.module.mqtt.api.path.dto.remote.RobotModeDTO; @@ -29,7 +27,6 @@ import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskDetailActionLo import cn.iocoder.yudao.module.system.dal.dataobject.remote.RemoteControllerInformationDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotInformationDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotMapStopDO; -import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; import cn.iocoder.yudao.module.system.dal.mysql.config.CommonConfigMapper; import cn.iocoder.yudao.module.system.dal.mysql.remote.RemoteControllerInformationMapper; @@ -45,7 +42,7 @@ import cn.iocoder.yudao.module.system.enums.robot.remote.RemoteOperationModeEnum import cn.iocoder.yudao.module.system.enums.robot.task.RobotCommandTypeEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskManualInterventionEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum; -import cn.iocoder.yudao.module.system.mq.message.RemoteSendMessage; +import cn.iocoder.yudao.module.system.mq.message.remote.RemoteSendMessage; import cn.iocoder.yudao.module.system.mq.producer.remote.RemoteControllerProducer; import cn.iocoder.yudao.module.system.service.log.RobotTaskDetailActionLogService; import cn.iocoder.yudao.module.system.service.log.UserOperationLogService; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java index 4913de51a..693d85d18 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java @@ -9,7 +9,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; -import cn.iocoder.yudao.module.mqtt.api.common.CommonApi; import cn.iocoder.yudao.module.mqtt.api.task.dto.*; import cn.iocoder.yudao.module.mqtt.enums.task.ExecutionTypeEnum; import cn.iocoder.yudao.module.system.api.path.vo.RobotClosePathPlantingDTO; @@ -42,14 +41,12 @@ import cn.iocoder.yudao.module.system.dal.mysql.housearea.HouseAreaMapper; import cn.iocoder.yudao.module.system.dal.mysql.houselane.WareHouseLaneMapper; import cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseLocationMapper; import cn.iocoder.yudao.module.system.dal.mysql.information.DeviceInformationMapper; -import cn.iocoder.yudao.module.system.dal.mysql.log.RobotTaskDetailActionLogMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotChargeLogMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotInformationMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskMapper; import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum; import cn.iocoder.yudao.module.system.enums.device.DeviceUseStatusEnum; -import cn.iocoder.yudao.module.system.enums.item.PositionMapItemEnum; import cn.iocoder.yudao.module.system.enums.item.UseStatusEnum; import cn.iocoder.yudao.module.system.enums.path.PathTaskTypeEnum; import cn.iocoder.yudao.module.system.enums.redis.RobotCacheLockEnum; @@ -61,16 +58,14 @@ import cn.iocoder.yudao.module.system.enums.robot.task.RobotCommandTypeEnum; //import cn.iocoder.yudao.module.system.service.robot.job.RobotCommonTaskService; import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskManualInterventionEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum; -import cn.iocoder.yudao.module.system.enums.robot.task.event.RobotTaskEventTypeEnum; +import cn.iocoder.yudao.module.system.enums.robot.task.event.EventTypeEnum; import cn.iocoder.yudao.module.system.mq.message.task.TaskDistributionMessage; -import cn.iocoder.yudao.module.system.mq.producer.remote.RemoteControllerProducer; import cn.iocoder.yudao.module.system.mq.producer.task.TaskDistributionProducer; import cn.iocoder.yudao.module.system.service.information.DeviceInformationService; import cn.iocoder.yudao.module.system.service.log.RobotTaskDetailActionLogService; import cn.iocoder.yudao.module.system.service.log.UserOperationLogService; import cn.iocoder.yudao.module.system.service.positionmap.PositionMapItemService; import cn.iocoder.yudao.module.system.service.robot.simulation.RobotSimulationService; -import cn.iocoder.yudao.module.system.service.statistics.RobotWorkingHoursStatisticsService; import cn.iocoder.yudao.module.system.util.redis.RedisUtil; import cn.iocoder.yudao.module.system.util.redis.RedissonUtils; import com.alibaba.fastjson.JSON; @@ -82,7 +77,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.redisson.api.RLock; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -653,7 +647,7 @@ public class RobotTaskServiceImpl extends ServiceImpl