车辆暂停/库位类型/
This commit is contained in:
parent
296bcebf77
commit
2283466164
@ -36,6 +36,7 @@ public class ApiAccessLogInterceptor implements HandlerInterceptor {
|
||||
|
||||
private static final List<String> ignoreInterfaceUrls = Arrays.asList("/rpc-api/system/task/robotStatusUpdate",
|
||||
"/rpc-api/system/task/robotReactiveStatus",
|
||||
"/rpc-api/infra/websocket/send",
|
||||
"/rpc-api/system/task/updateRobotCommonStatus");
|
||||
|
||||
@Override
|
||||
|
@ -18,11 +18,11 @@ public interface CommonApi {
|
||||
|
||||
String PREFIX = ApiConstants.PREFIX + "/config";
|
||||
|
||||
@PostMapping(PREFIX + "/commonMethod")
|
||||
/* @PostMapping(PREFIX + "/commonMethod")
|
||||
@Operation(summary = "公共方法")
|
||||
void commonMethod(@RequestBody Object obj, @RequestParam("topic") String topic);
|
||||
|
||||
@PostMapping(PREFIX + "/commonMethodStr")
|
||||
@Operation(summary = "公共方法")
|
||||
void commonMethodStr(@RequestParam("str") String str, @RequestParam("topic") String topic);
|
||||
void commonMethodStr(@RequestParam("str") String str, @RequestParam("topic") String topic);*/
|
||||
}
|
||||
|
@ -35,4 +35,10 @@ public class RobotDimensionsDTO {
|
||||
@Schema(description = "偏移量")
|
||||
private Double robotOffset;
|
||||
|
||||
@Schema(description = "检测点最短距离")
|
||||
private Double checkShortestDistance;
|
||||
|
||||
@Schema(description = "检测点最长距离")
|
||||
private Double checkLongestDistance;
|
||||
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ public class TCPServerApplicationRunner implements ApplicationRunner {
|
||||
System.out.println(new String(bytes,0,len));
|
||||
OutputStream os= socket.getOutputStream();
|
||||
//响应给客户端
|
||||
os.write("收到谢谢".getBytes());
|
||||
os.write("socket :".getBytes());
|
||||
socket.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -329,4 +329,7 @@ public interface ErrorCodeConstants {
|
||||
|
||||
// ========== 车辆工作时长统计 1_002_058_001 ==========
|
||||
ErrorCode ROBOT_WORKING_HOURS_STATISTICS_NOT_EXISTS = new ErrorCode(1_002_058_001, "车辆工作时长统计不存在");
|
||||
|
||||
// ========== 库位类型 1_002_059_001 ==========
|
||||
ErrorCode HOUSE_LOCATION_TYPE_NOT_EXISTS = new ErrorCode(1_002_059_001, "库位类型不存在");
|
||||
}
|
||||
|
@ -388,7 +388,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
.id(robotCompleteTaskDTO.getOrderId().toString())
|
||||
.build();
|
||||
// commonApi.commonMethod(closePathPlanting, PathPlanningTopicConstant.KILL_TASK);
|
||||
mqttUtils.pub(PathPlanningTopicConstant.KILL_TASK,JSON.toJSONString(closePathPlanting));
|
||||
mqttUtils.pub(PathPlanningTopicConstant.KILL_TASK, JSON.toJSONString(closePathPlanting));
|
||||
log.info("通知PP把任务取消 :{}", robotCompleteTaskDTO.getOrderId());
|
||||
}
|
||||
|
||||
@ -424,9 +424,11 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
robotTaskDetailDO.setOccurError(ZeroOneEnum.ZERO.getType());
|
||||
robotTaskDetailMapper.updateById(robotTaskDetailDO);
|
||||
String taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId());
|
||||
msg = robotNo + "_" + "车辆发生异常,重新分配其他车辆执行此任务" + taskNo;
|
||||
msg = robotNo + "_" + "车辆发生异常,重新分配其他车辆执行此任务" + taskNo + " - " + robotCompleteTaskDTO.getOrderId();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//先不释放库位状态
|
||||
/*if (RobotTaksOrderTypeEnum.TASK.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
||||
RobotTaskDetailDO robotTaskDetailDO = closeTaskDetail(robotCompleteTaskDTO.getOrderId());
|
||||
@ -581,12 +583,12 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getFromLocationNo() + "取货");
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_TAKE.getType());
|
||||
} else if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在取货");
|
||||
logOne.setActionMsg("车辆正在取货" + robotTaskDetailDO.getFromLocationNo());
|
||||
if (!RobotTaskStageEnum.GO_RELEASE.getType().equals(taskStage)) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType());
|
||||
}
|
||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在放货");
|
||||
logOne.setActionMsg("车辆正在放货" + robotTaskDetailDO.getToLocationNo());
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING.getType());
|
||||
} else if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getToLocationNo() + "放货");
|
||||
@ -599,10 +601,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
|| PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
||||
RobotChargeLogDO robotChargeLogDO = chargeLogMapper.selectById(robotCompleteTaskDTO.getOrderId());
|
||||
if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在前往" + robotChargeLogDO.getDeviceNo() + "充电");
|
||||
logOne.setActionMsg("车辆正在前往 " + robotChargeLogDO.getDeviceNo() + "充电");
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.MOVE.getType());
|
||||
} else {
|
||||
logOne.setActionMsg("车辆正在充电");
|
||||
logOne.setActionMsg("车辆正在充电 " + robotChargeLogDO.getDeviceNo());
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.CHARGEING.getType());
|
||||
}
|
||||
|
||||
@ -623,7 +625,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getFromLocationNo() + "取货");
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_TAKE.getType());
|
||||
} else if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在取货");
|
||||
logOne.setActionMsg("车辆正在取货" + robotTaskDetailDO.getFromLocationNo());
|
||||
if (!RobotTaskStageEnum.DONE.getType().equals(taskStage)) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType());
|
||||
}
|
||||
@ -634,7 +636,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getToLocationNo() + "放货");
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
|
||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在放货");
|
||||
logOne.setActionMsg("车辆正在放货"+ robotTaskDetailDO.getToLocationNo());
|
||||
if (!RobotTaskStageEnum.DONE.getType().equals(taskStage)) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING.getType());
|
||||
}
|
||||
|
@ -34,4 +34,6 @@ public class ZnConfigConstant {
|
||||
private Boolean sendRobotInitPose;
|
||||
private Integer synchronousAllMapNode;
|
||||
private Boolean taskNotCheck;
|
||||
private Double checkShortestDistance;
|
||||
private Double checkLongestDistance;
|
||||
}
|
||||
|
@ -0,0 +1,105 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.houselocation;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationTypeRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationTypeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationTypeDO;
|
||||
import cn.iocoder.yudao.module.system.service.houselocation.WareHouseLocationTypeService;
|
||||
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-location-type")
|
||||
@Validated
|
||||
public class WareHouseLocationTypeController {
|
||||
|
||||
@Resource
|
||||
private WareHouseLocationTypeService houseLocationTypeService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建库位类型")
|
||||
@PreAuthorize("@ss.hasPermission('ware:house-location-type:create')")
|
||||
public CommonResult<Long> createHouseLocationType(@Valid @RequestBody WareHouseLocationTypeSaveReqVO createReqVO) {
|
||||
return success(houseLocationTypeService.createHouseLocationType(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新库位类型")
|
||||
@PreAuthorize("@ss.hasPermission('ware:house-location-type:update')")
|
||||
public CommonResult<Boolean> updateHouseLocationType(@Valid @RequestBody WareHouseLocationTypeSaveReqVO updateReqVO) {
|
||||
houseLocationTypeService.updateHouseLocationType(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除库位类型")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('ware:house-location-type:delete')")
|
||||
public CommonResult<Boolean> deleteHouseLocationType(@RequestParam("id") Long id) {
|
||||
houseLocationTypeService.deleteHouseLocationType(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得库位类型")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('ware:house-location-type:query')")
|
||||
public CommonResult<WareHouseLocationTypeRespVO> getHouseLocationType(@RequestParam("id") Long id) {
|
||||
WareHouseLocationTypeDO houseLocationType = houseLocationTypeService.getHouseLocationType(id);
|
||||
return success(BeanUtils.toBean(houseLocationType, WareHouseLocationTypeRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/getList")
|
||||
@Operation(summary = "获得库位类型集合")
|
||||
@PreAuthorize("@ss.hasPermission('ware:house-location-type:getList')")
|
||||
public CommonResult<List<WareHouseLocationTypeRespVO>> getHouseLocationTypeList() {
|
||||
List<WareHouseLocationTypeDO> list = houseLocationTypeService.getHouseLocationTypeList();
|
||||
return success(BeanUtils.toBean(list, WareHouseLocationTypeRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得库位类型分页")
|
||||
@PreAuthorize("@ss.hasPermission('ware:house-location-type:query')")
|
||||
public CommonResult<PageResult<WareHouseLocationTypeRespVO>> getHouseLocationTypePage(@Valid WareHouseLocationTypePageReqVO pageReqVO) {
|
||||
PageResult<WareHouseLocationTypeDO> pageResult = houseLocationTypeService.getHouseLocationTypePage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, WareHouseLocationTypeRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出库位类型 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('ware:house-location-type:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportHouseLocationTypeExcel(@Valid WareHouseLocationTypePageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<WareHouseLocationTypeDO> list = houseLocationTypeService.getHouseLocationTypePage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "库位类型.xls", "数据", WareHouseLocationTypeRespVO.class,
|
||||
BeanUtils.toBean(list, WareHouseLocationTypeRespVO.class));
|
||||
}
|
||||
|
||||
}
|
@ -111,4 +111,7 @@ public class WareHouseLocationPageReqVO extends PageParam {
|
||||
@Schema(description = "ware_position_map的id", example = "1")
|
||||
private Long mapId;
|
||||
|
||||
@Schema(description = "库位类型表的id")
|
||||
private Long locationTypeId;
|
||||
|
||||
}
|
@ -144,4 +144,8 @@ public class WareHouseLocationRespVO {
|
||||
@Schema(description = "ware_position_map_item的id", example = "1")
|
||||
@ExcelProperty("ware_position_map_item的id")
|
||||
private Long mapItemId;
|
||||
|
||||
@Schema(description = "库位类型表的id")
|
||||
@ExcelProperty("库位类型表的id")
|
||||
private Long locationTypeId;
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.houselocation.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@ -103,4 +104,7 @@ public class WareHouseLocationSaveReqVO {
|
||||
|
||||
@Schema(description = "ware_position_map的id", example = "1")
|
||||
private Long mapId;
|
||||
|
||||
@Schema(description = "库位类型表的id")
|
||||
private Long locationTypeId;
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
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 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 WareHouseLocationTypePageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "库位类型名称", example = "赵六")
|
||||
private String typeName;
|
||||
|
||||
@Schema(description = "排序,越大越靠前")
|
||||
private Integer locationSort;
|
||||
|
||||
@Schema(description = "宽度,单位厘米")
|
||||
private String locationWide;
|
||||
|
||||
@Schema(description = "深度,单位厘米")
|
||||
private String locationDeep;
|
||||
|
||||
@Schema(description = "高,单位厘米")
|
||||
private String locationHeight;
|
||||
|
||||
@Schema(description = "载重,单位公斤")
|
||||
private String locationLoad;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.houselocation.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 WareHouseLocationTypeRespVO {
|
||||
|
||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8811")
|
||||
@ExcelProperty("主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "库位类型名称", example = "赵六")
|
||||
@ExcelProperty("库位类型名称")
|
||||
private String typeName;
|
||||
|
||||
@Schema(description = "排序,越大越靠前")
|
||||
@ExcelProperty("排序,越大越靠前")
|
||||
private Integer locationSort;
|
||||
|
||||
@Schema(description = "宽度,单位厘米")
|
||||
@ExcelProperty("宽度,单位厘米")
|
||||
private String locationWide;
|
||||
|
||||
@Schema(description = "深度,单位厘米")
|
||||
@ExcelProperty("深度,单位厘米")
|
||||
private String locationDeep;
|
||||
|
||||
@Schema(description = "高,单位厘米")
|
||||
@ExcelProperty("高,单位厘米")
|
||||
private String locationHeight;
|
||||
|
||||
@Schema(description = "载重,单位公斤")
|
||||
@ExcelProperty("载重,单位公斤")
|
||||
private String locationLoad;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
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.*;
|
||||
|
||||
@Schema(description = "管理后台 - 库位类型新增/修改 Request VO")
|
||||
@Data
|
||||
public class WareHouseLocationTypeSaveReqVO {
|
||||
|
||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8811")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "库位类型名称", example = "赵六")
|
||||
private String typeName;
|
||||
|
||||
@Schema(description = "排序,越大越靠前")
|
||||
private Integer locationSort;
|
||||
|
||||
@Schema(description = "宽度,单位厘米")
|
||||
private String locationWide;
|
||||
|
||||
@Schema(description = "深度,单位厘米")
|
||||
private String locationDeep;
|
||||
|
||||
@Schema(description = "高,单位厘米")
|
||||
private String locationHeight;
|
||||
|
||||
@Schema(description = "载重,单位公斤")
|
||||
private String locationLoad;
|
||||
|
||||
}
|
@ -163,4 +163,21 @@ public class RobotInformationController {
|
||||
public CommonResult<List<String>> getRobotByFloorAndArea(@RequestParam("floor") String floor, @RequestParam("area") String area) {
|
||||
return success(informationService.getRobotByFloorAndArea(floor,area));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/stopRobot")
|
||||
@Operation(summary = "暂停车辆")
|
||||
@PreAuthorize("@ss.hasPermission('robot:information:stopRobot')")
|
||||
public CommonResult<Boolean> stopRobot(@RequestParam("robotNo") String robotNo) {
|
||||
informationService.stopRobot(robotNo);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@PostMapping("/continueRobot")
|
||||
@Operation(summary = "恢复车辆")
|
||||
@PreAuthorize("@ss.hasPermission('robot:information:continueRobot')")
|
||||
public CommonResult<Boolean> continueRobot(@RequestParam("robotNo") String robotNo) {
|
||||
informationService.continueRobot(robotNo);
|
||||
return success(true);
|
||||
}
|
||||
}
|
||||
|
@ -100,4 +100,7 @@ public class RobotInformationPageRespVO {
|
||||
|
||||
@Schema(description = "车辆是否有货")
|
||||
private String cargoDetected;
|
||||
|
||||
@Schema(description = "车辆是否暂停 : 1:已暂停, 其他:未暂停, ")
|
||||
private Integer isStop;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.dal.dataobject.houselocation;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -163,4 +164,9 @@ public class WareHouseLocationDO extends BaseDO {
|
||||
* ware_position_map_item的id
|
||||
*/
|
||||
private Long mapItemId;
|
||||
|
||||
/**
|
||||
* 库位类型表的id
|
||||
*/
|
||||
private Long locationTypeId;
|
||||
}
|
||||
|
@ -0,0 +1,55 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.houselocation;
|
||||
|
||||
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_house_location_type")
|
||||
@KeySequence("ware_house_location_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class WareHouseLocationTypeDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 库位类型名称
|
||||
*/
|
||||
private String typeName;
|
||||
/**
|
||||
* 排序,越大越靠前
|
||||
*/
|
||||
private Integer locationSort;
|
||||
/**
|
||||
* 宽度,单位厘米
|
||||
*/
|
||||
private String locationWide;
|
||||
/**
|
||||
* 深度,单位厘米
|
||||
*/
|
||||
private String locationDeep;
|
||||
/**
|
||||
* 高,单位厘米
|
||||
*/
|
||||
private String locationHeight;
|
||||
/**
|
||||
* 载重,单位公斤
|
||||
*/
|
||||
private String locationLoad;
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
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.WareHouseLocationTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationTypeDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 库位类型 Mapper
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
@Mapper
|
||||
public interface WareHouseLocationTypeMapper extends BaseMapperX<WareHouseLocationTypeDO> {
|
||||
|
||||
default PageResult<WareHouseLocationTypeDO> selectPage(WareHouseLocationTypePageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<WareHouseLocationTypeDO>()
|
||||
.likeIfPresent(WareHouseLocationTypeDO::getTypeName, reqVO.getTypeName())
|
||||
.eqIfPresent(WareHouseLocationTypeDO::getLocationSort, reqVO.getLocationSort())
|
||||
.eqIfPresent(WareHouseLocationTypeDO::getLocationWide, reqVO.getLocationWide())
|
||||
.eqIfPresent(WareHouseLocationTypeDO::getLocationDeep, reqVO.getLocationDeep())
|
||||
.eqIfPresent(WareHouseLocationTypeDO::getLocationHeight, reqVO.getLocationHeight())
|
||||
.eqIfPresent(WareHouseLocationTypeDO::getLocationLoad, reqVO.getLocationLoad())
|
||||
.betweenIfPresent(WareHouseLocationTypeDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(WareHouseLocationTypeDO::getId));
|
||||
}
|
||||
|
||||
}
|
@ -9,7 +9,9 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum RobotStatusEnum {
|
||||
LAST_TASK_IS_TAKE(1,"上一个任务是仅取货(这是一个过渡状态,数据库没有这种状态)"),
|
||||
LAST_TASK_IS_TAKE(-1,"上一个任务是仅取货(这是一个过渡状态,数据库没有这种状态)"),
|
||||
STOP_FREE(0,"暂停且待命中"),
|
||||
STOP_DOING(1,"暂停且任务中"),
|
||||
DOING(2,"任务中"),
|
||||
STAND_BY(3,"待命"),
|
||||
CHARGE(4,"充电中");
|
||||
@ -18,4 +20,13 @@ public enum RobotStatusEnum {
|
||||
*/
|
||||
private final Integer type;
|
||||
private final String msg;
|
||||
|
||||
public static String getMsg(Integer type) {
|
||||
for (RobotStatusEnum item : RobotStatusEnum.values()) {
|
||||
if (item.getType().equals(type)) {
|
||||
return item.getMsg();
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
@ -13,8 +13,8 @@ public enum RobotCommandTypeEnum {
|
||||
WORK_DROP_OFF_GOODS("WORK_DROP_OFF_GOODS","放货"),
|
||||
MOVE_POSE("MOVE_POSE","仿真移动点位"),
|
||||
MODE("MODE","远遥/RCS模式切换"),
|
||||
EMERGENCY_STOP("EMERGENCY_STOP","急停车辆"),
|
||||
RECOVERY("RECOVERY","恢复车辆");
|
||||
PAUSE("PAUSE","急停车辆"),
|
||||
CONTINUE("CONTINUE","恢复车辆");
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
|
@ -16,7 +16,9 @@ public enum RobotTaskStageEnum {
|
||||
CHARGEING(7L,"待执行正在充电"),
|
||||
CLOSE(8L,"任务已取消"),
|
||||
MANUALLY_COMPLETED(9L,"人工完成"),
|
||||
EXCEPTION(10L,"异常");
|
||||
EXCEPTION(10L,"异常"),
|
||||
TAKEING_EXCEPTION(11L,"取货异常"),
|
||||
RELEASEING_EXCEPTION(12L,"放货异常");
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
|
@ -40,7 +40,7 @@ public class RcsMapScheduled {
|
||||
private static final ExecutorService FIXED_THREAD_POOL = Executors.newFixedThreadPool(10);
|
||||
|
||||
// 这个方法将每200毫秒执行一次
|
||||
@Scheduled(fixedDelay = 100, timeUnit = TimeUnit.MILLISECONDS)
|
||||
@Scheduled(fixedDelay = 150, timeUnit = TimeUnit.MILLISECONDS)
|
||||
public void executeTask() {
|
||||
FIXED_THREAD_POOL.execute(this::sendRobotInformationToRcsMap);
|
||||
}
|
||||
|
@ -0,0 +1,63 @@
|
||||
package cn.iocoder.yudao.module.system.service.houselocation;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationTypeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationTypeDO;
|
||||
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 WareHouseLocationTypeService extends IService<WareHouseLocationTypeDO> {
|
||||
|
||||
/**
|
||||
* 创建库位类型
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createHouseLocationType(@Valid WareHouseLocationTypeSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新库位类型
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateHouseLocationType(@Valid WareHouseLocationTypeSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除库位类型
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteHouseLocationType(Long id);
|
||||
|
||||
/**
|
||||
* 获得库位类型
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 库位类型
|
||||
*/
|
||||
WareHouseLocationTypeDO getHouseLocationType(Long id);
|
||||
|
||||
/**
|
||||
* 获得库位类型分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 库位类型分页
|
||||
*/
|
||||
PageResult<WareHouseLocationTypeDO> getHouseLocationTypePage(WareHouseLocationTypePageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获取所有库位类型
|
||||
* @return
|
||||
*/
|
||||
List<WareHouseLocationTypeDO> getHouseLocationTypeList();
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
package cn.iocoder.yudao.module.system.service.houselocation;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationTypeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationTypeDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseLocationTypeMapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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_LOCATION_TYPE_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 库位类型 Service 实现类
|
||||
*
|
||||
* @author 陈宾顺
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class WareHouseLocationTypeServiceImpl extends ServiceImpl<WareHouseLocationTypeMapper, WareHouseLocationTypeDO> implements WareHouseLocationTypeService {
|
||||
|
||||
@Resource
|
||||
private WareHouseLocationTypeMapper houseLocationTypeMapper;
|
||||
|
||||
@Override
|
||||
public Long createHouseLocationType(WareHouseLocationTypeSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
WareHouseLocationTypeDO houseLocationType = BeanUtils.toBean(createReqVO, WareHouseLocationTypeDO.class);
|
||||
houseLocationTypeMapper.insert(houseLocationType);
|
||||
// 返回
|
||||
return houseLocationType.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateHouseLocationType(WareHouseLocationTypeSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateHouseLocationTypeExists(updateReqVO.getId());
|
||||
// 更新
|
||||
WareHouseLocationTypeDO updateObj = BeanUtils.toBean(updateReqVO, WareHouseLocationTypeDO.class);
|
||||
houseLocationTypeMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteHouseLocationType(Long id) {
|
||||
// 校验存在
|
||||
validateHouseLocationTypeExists(id);
|
||||
// 删除
|
||||
houseLocationTypeMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateHouseLocationTypeExists(Long id) {
|
||||
if (houseLocationTypeMapper.selectById(id) == null) {
|
||||
throw exception(HOUSE_LOCATION_TYPE_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public WareHouseLocationTypeDO getHouseLocationType(Long id) {
|
||||
return houseLocationTypeMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<WareHouseLocationTypeDO> getHouseLocationTypePage(WareHouseLocationTypePageReqVO pageReqVO) {
|
||||
return houseLocationTypeMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有库位类型
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<WareHouseLocationTypeDO> getHouseLocationTypeList() {
|
||||
return houseLocationTypeMapper.selectList(new LambdaQueryWrapper<WareHouseLocationTypeDO>()
|
||||
.orderByDesc(WareHouseLocationTypeDO::getLocationSort));
|
||||
}
|
||||
|
||||
}
|
@ -84,9 +84,6 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.PATH_PLANN
|
||||
@Service
|
||||
public class PathPlanningServiceImpl implements PathPlanningService {
|
||||
|
||||
private static final double PI = Math.PI;
|
||||
|
||||
|
||||
@Resource
|
||||
private PositionMapLineMapper positionMapLineMapper;
|
||||
|
||||
@ -459,9 +456,7 @@ public class PathPlanningServiceImpl implements PathPlanningService {
|
||||
|
||||
@Override
|
||||
public void robotDimensions() {
|
||||
List<RobotDimensionsDTO> list = informationMapper.selectRobotDimensions();
|
||||
// commonApi.commonMethod(list, PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS);
|
||||
mqttUtils.pub(PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS,JSON.toJSONString(list));
|
||||
robotInformationService.sendRobotConfigToPP();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,7 +6,7 @@ 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;
|
||||
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.RobotAcceptTaskDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotSimulationPoseDTO;
|
||||
import cn.iocoder.yudao.module.system.api.path.PathApi;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotDTO;
|
||||
@ -418,7 +418,7 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
|
||||
// 先获取当前地图上的所有AGV信息
|
||||
PositionMapDO positionMapDO = positionMapMapper.selectById(id);
|
||||
|
||||
RobotSimulationPoseDTO robotSimulationPose = new RobotSimulationPoseDTO();
|
||||
RobotAcceptTaskDTO robotSimulationPose = new RobotAcceptTaskDTO();
|
||||
|
||||
List<String> robotNos = new ArrayList<>();
|
||||
String str = "";
|
||||
@ -426,8 +426,8 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
|
||||
//暂停
|
||||
if (ZeroOneEnum.ONE.getType().equals(type)) {
|
||||
robotNos = informationService.getRobotByFloorAndArea(String.valueOf(positionMapDO.getFloor()), positionMapDO.getArea());
|
||||
robotSimulationPose.setCommandType(RobotCommandTypeEnum.EMERGENCY_STOP.getType());
|
||||
str = RobotCommandTypeEnum.EMERGENCY_STOP.getMsg();
|
||||
robotSimulationPose.setExecutionType(RobotCommandTypeEnum.PAUSE.getType());
|
||||
str = RobotCommandTypeEnum.PAUSE.getMsg();
|
||||
if (isRemote) {
|
||||
mapStr = "远遥一键暂停 " + mapStr;
|
||||
} else {
|
||||
@ -446,8 +446,8 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
|
||||
} else {
|
||||
//恢复
|
||||
robotNos = robotMapStopService.getStopRobotNoByMapIds(id);
|
||||
robotSimulationPose.setCommandType(RobotCommandTypeEnum.RECOVERY.getType());
|
||||
str = RobotCommandTypeEnum.RECOVERY.getMsg();
|
||||
robotSimulationPose.setExecutionType(RobotCommandTypeEnum.CONTINUE.getType());
|
||||
str = RobotCommandTypeEnum.CONTINUE.getMsg();
|
||||
if (isRemote) {
|
||||
mapStr = "远遥一键恢复 " + mapStr;
|
||||
} else {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.system.service.robot;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotAcceptTaskDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotSimulationPoseDTO;
|
||||
import cn.iocoder.yudao.module.system.api.robot.dto.FloorZoneDTO;
|
||||
import cn.iocoder.yudao.module.system.api.robot.dto.RobotStatusDTO;
|
||||
@ -186,7 +187,7 @@ public interface RobotInformationService extends IService<RobotInformationDO> {
|
||||
* @param robotNos
|
||||
* @param str
|
||||
*/
|
||||
void sendEmergencyStopOrRecoveryToRobot(RobotSimulationPoseDTO robotSimulationPose, List<String> robotNos, String str);
|
||||
void sendEmergencyStopOrRecoveryToRobot(RobotAcceptTaskDTO robotSimulationPose, List<String> robotNos, String str);
|
||||
|
||||
/**
|
||||
* 查询机器人处理中的任务
|
||||
@ -255,4 +256,10 @@ public interface RobotInformationService extends IService<RobotInformationDO> {
|
||||
* @return
|
||||
*/
|
||||
Long getRobotMapIdByRobotNo(String robotNo);
|
||||
|
||||
void sendRobotConfigToPP();
|
||||
|
||||
void stopRobot(String robotNo);
|
||||
|
||||
void continueRobot(String robotNo);
|
||||
}
|
||||
|
@ -10,13 +10,11 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||
import cn.iocoder.yudao.module.mqtt.api.common.CommonApi;
|
||||
import cn.iocoder.yudao.module.mqtt.api.path.dto.RobotDimensionsDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.path.task.TaskRobotNoLimittationAreaDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.path.task.TaskToPathPlanningDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotAcceptTaskDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotRcsHeartBeatDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotSimulationPoseDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.enums.task.ExecutionTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.api.path.vo.RobotClosePathPlantingDTO;
|
||||
import cn.iocoder.yudao.module.system.api.robot.processor.RequestProcessor;
|
||||
@ -78,6 +76,7 @@ import cn.iocoder.yudao.module.system.service.log.RobotTaskDetailActionLogServic
|
||||
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.camera.RobotCameraService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.mapstop.RobotMapStopService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.pathplanning.RobotPathPlanningService;
|
||||
import cn.iocoder.yudao.module.system.util.redis.RedisUtil;
|
||||
import cn.iocoder.yudao.module.system.util.redis.RedissonUtils;
|
||||
@ -87,7 +86,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.redisson.api.RLock;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -182,12 +181,16 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
@Autowired
|
||||
private ZnConfigConstant znConfigConstant;
|
||||
|
||||
@Resource
|
||||
@Lazy
|
||||
private RobotMapStopService mapStopService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createInformation(RobotInformationSaveReqVO createReqVO) {
|
||||
|
||||
RobotInformationDO existRobotInformationDO =
|
||||
informationMapper.selectByMacAndIdNotIn(createReqVO.getMacAddress(),null);
|
||||
informationMapper.selectByMacAndIdNotIn(createReqVO.getMacAddress(), null);
|
||||
if (ObjectUtil.isNotEmpty(existRobotInformationDO)) {
|
||||
throw exception(ROBOT_MAC_ADDRESS_EXISTS);
|
||||
}
|
||||
@ -240,9 +243,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
||||
userOperationLogService.createUserOperationLog(operationLog);
|
||||
|
||||
List<RobotDimensionsDTO> list = informationMapper.selectRobotDimensions();
|
||||
// commonApi.commonMethod(list, PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS);
|
||||
mqttUtils.pub(PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS, JSON.toJSONString(list));
|
||||
sendRobotConfigToPP();
|
||||
|
||||
redisUtil.del(key);
|
||||
// 返回
|
||||
@ -341,6 +342,48 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
return positionMap.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendRobotConfigToPP() {
|
||||
List<RobotDimensionsDTO> robotDimensionsList = informationMapper.selectRobotDimensions();
|
||||
if (ObjectUtil.isNotEmpty(robotDimensionsList)) {
|
||||
for (RobotDimensionsDTO robotDimensionsDTO : robotDimensionsList) {
|
||||
robotDimensionsDTO.setCheckShortestDistance(znConfigConstant.getCheckShortestDistance());
|
||||
robotDimensionsDTO.setCheckLongestDistance(znConfigConstant.getCheckLongestDistance());
|
||||
}
|
||||
}
|
||||
mqttUtils.pub(PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS, JSON.toJSONString(robotDimensionsList));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void stopRobot(String robotNo) {
|
||||
RobotInformationDO robotInformationDO = informationMapper.selectOne(new LambdaQueryWrapper<RobotInformationDO>()
|
||||
.eq(RobotInformationDO::getRobotNo, robotNo)
|
||||
.last("limit 1"));
|
||||
|
||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||
robotTask.setOrderId(robotInformationDO.getTaskDetailId()+"");
|
||||
robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_MOVE_TOPIC + robotInformationDO.getMacAddress());
|
||||
robotTask.setExecutionType(ExecutionTypeEnum.PAUSE.getType());
|
||||
mqttUtils.pub(robotTask.getTopic(), JSON.toJSONString(robotTask));
|
||||
mapStopService.rcsStopRobotAddLog(robotNo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void continueRobot(String robotNo) {
|
||||
RobotInformationDO robotInformationDO = informationMapper.selectOne(new LambdaQueryWrapper<RobotInformationDO>()
|
||||
.eq(RobotInformationDO::getRobotNo, robotNo)
|
||||
.last("limit 1"));
|
||||
|
||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||
robotTask.setOrderId(robotInformationDO.getTaskDetailId()+"");
|
||||
robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_MOVE_TOPIC + robotInformationDO.getMacAddress());
|
||||
robotTask.setExecutionType(ExecutionTypeEnum.CONTINUE.getType());
|
||||
mqttUtils.pub(robotTask.getTopic(), JSON.toJSONString(robotTask));
|
||||
mapStopService.rcsDeleteStopRobotAddLog(robotNo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 校验IP地址是否合法
|
||||
@ -358,6 +401,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
public void updateInformation(RobotInformationSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateInformationExists(updateReqVO.getId());
|
||||
String str = "";
|
||||
RobotInformationDO robotInformationDO = informationMapper.selectById(updateReqVO.getId());
|
||||
|
||||
if (RobotStatusEnum.STAND_BY.getType().equals(robotInformationDO.getRobotStatus())) {
|
||||
@ -391,9 +435,16 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
}
|
||||
}
|
||||
|
||||
if (RobotStatusEnum.STOP_FREE.getType().equals(updateReqVO.getRobotStatus())
|
||||
|| RobotStatusEnum.STOP_DOING.getType().equals(updateReqVO.getRobotStatus())) {
|
||||
updateReqVO.setRobotStatus(robotInformationDO.getRobotStatus());
|
||||
}else if (!updateReqVO.getRobotStatus().equals(robotInformationDO.getRobotStatus())) {
|
||||
str = str + " 修改车辆状态: " +RobotStatusEnum.getMsg(updateReqVO.getRobotStatus());
|
||||
}
|
||||
|
||||
if (!updateReqVO.getRobotNo().equals(robotInformationDO.getRobotNo())) {
|
||||
RobotInformationDO existRobotInformationDO =
|
||||
informationMapper.selectByRobotNoAndIdNotIn(updateReqVO.getRobotNo(),updateReqVO.getId());
|
||||
informationMapper.selectByRobotNoAndIdNotIn(updateReqVO.getRobotNo(), updateReqVO.getId());
|
||||
if (ObjectUtil.isNotEmpty(existRobotInformationDO)) {
|
||||
throw exception(ROBOT_ROBOT_NO_EXISTS);
|
||||
}
|
||||
@ -401,7 +452,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
|
||||
if (!updateReqVO.getMacAddress().equals(robotInformationDO.getMacAddress())) {
|
||||
RobotInformationDO existRobotInformationDO =
|
||||
informationMapper.selectByMacAndIdNotIn(updateReqVO.getMacAddress(),updateReqVO.getId());
|
||||
informationMapper.selectByMacAndIdNotIn(updateReqVO.getMacAddress(), updateReqVO.getId());
|
||||
if (ObjectUtil.isNotEmpty(existRobotInformationDO)) {
|
||||
throw exception(ROBOT_MAC_ADDRESS_EXISTS);
|
||||
}
|
||||
@ -446,7 +497,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
|
||||
redisUtil.del(key);
|
||||
|
||||
String str = "";
|
||||
|
||||
if (!robotInformationDO.getRobotTaskModel().equals(updateReqVO.getRobotTaskModel())
|
||||
&& RobotTaskModelEnum.REJECTION.getType().equals(updateReqVO.getRobotTaskModel())) {
|
||||
str = ",且设置车辆锁定";
|
||||
@ -481,9 +532,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
||||
userOperationLogService.createUserOperationLog(operationLog);
|
||||
|
||||
List<RobotDimensionsDTO> robotDimensions = informationMapper.selectRobotDimensions();
|
||||
// commonApi.commonMethod(robotDimensions, PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS);
|
||||
mqttUtils.pub(PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS, JSON.toJSONString(robotDimensions));
|
||||
sendRobotConfigToPP();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -562,9 +611,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
//释放暂停记录
|
||||
releaseRobotStop(robotInformationDO);
|
||||
|
||||
List<RobotDimensionsDTO> robotDimensions = informationMapper.selectRobotDimensions();
|
||||
// commonApi.commonMethod(robotDimensions, PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS);
|
||||
mqttUtils.pub(PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS, JSON.toJSONString(robotDimensions));
|
||||
sendRobotConfigToPP();
|
||||
|
||||
String pose2dKey = RobotTaskChcheConstant.ROBOT_INFORMATION_POSE_BAT + robotInformationDO.getMacAddress();
|
||||
redisUtil.del(pose2dKey);
|
||||
@ -594,9 +641,9 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
if (ObjectUtil.isEmpty(robotMapStops)) {
|
||||
return;
|
||||
}
|
||||
RobotSimulationPoseDTO robotSimulationPose = new RobotSimulationPoseDTO();
|
||||
robotSimulationPose.setCommandType(RobotCommandTypeEnum.RECOVERY.getType());
|
||||
List<String> robotNoList = Arrays.asList(robotInformationDO.getRobotNo());
|
||||
RobotAcceptTaskDTO robotSimulationPose = new RobotAcceptTaskDTO();
|
||||
robotSimulationPose.setExecutionType(RobotCommandTypeEnum.CONTINUE.getType());
|
||||
List<String> robotNoList = Collections.singletonList(robotInformationDO.getRobotNo());
|
||||
sendEmergencyStopOrRecoveryToRobot(robotSimulationPose, robotNoList, "删除车辆时恢复车辆");
|
||||
mapStopMapper.deleteRobotMapStopByRobotNos(robotNoList);
|
||||
|
||||
@ -672,8 +719,14 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
List<RobotInformationDO> list = pageResult.getList();
|
||||
List<RobotInformationPageRespVO> targetList = BeanUtil.copyToList(list, RobotInformationPageRespVO.class);
|
||||
|
||||
List<RobotMapStopDO> allRobotMapStops = mapStopService.getAllRobotMapStops(ZeroOneEnum.ONE.getType());
|
||||
List<String> stopRobotNos = new ArrayList<>();
|
||||
if (ObjectUtil.isNotEmpty(allRobotMapStops)) {
|
||||
stopRobotNos = allRobotMapStops.stream().map(RobotMapStopDO::getRobotNo).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
for (RobotInformationPageRespVO v : targetList) {
|
||||
setMsgAndRobotStatus(v, pageReqVO.getRobotStatisticsType());
|
||||
setMsgAndRobotStatus(v,stopRobotNos);
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotEmpty(pageReqVO.getRobotStatisticsType())) {
|
||||
@ -736,7 +789,12 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
*
|
||||
* @param v
|
||||
*/
|
||||
private void setMsgAndRobotStatus(RobotInformationPageRespVO v, String robotStatisticsType) {
|
||||
private void setMsgAndRobotStatus(RobotInformationPageRespVO v,List<String> stopRobotNos) {
|
||||
|
||||
if (ObjectUtil.isNotEmpty(stopRobotNos) && stopRobotNos.contains(v.getRobotNo())) {
|
||||
v.setIsStop(ZeroOneEnum.ONE.getType());
|
||||
}
|
||||
|
||||
String pose2dKey = RobotTaskChcheConstant.ROBOT_INFORMATION_POSE_BAT + v.getMacAddress();
|
||||
Object object = redisUtil.get(pose2dKey);
|
||||
RobotStatusDataPoseDTO robotStatusDataPoseDTO = JSONUtil.toBean((String) object, RobotStatusDataPoseDTO.class);
|
||||
@ -1193,10 +1251,10 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
|
||||
RobotClosePathPlantingDTO closePathPlanting = RobotClosePathPlantingDTO.builder()
|
||||
.robotNo(robotNo)
|
||||
.id(actionLog.getTaskDetailId()+"")
|
||||
.id(actionLog.getTaskDetailId() + "")
|
||||
.build();
|
||||
// commonApi.commonMethod(closePathPlanting, PathPlanningTopicConstant.KILL_TASK);
|
||||
mqttUtils.pub(PathPlanningTopicConstant.KILL_TASK,JSON.toJSONString(closePathPlanting));
|
||||
mqttUtils.pub(PathPlanningTopicConstant.KILL_TASK, JSON.toJSONString(closePathPlanting));
|
||||
|
||||
Object o = checkTaskDetailExist(actionLog.getTaskDetailId());
|
||||
|
||||
@ -1314,7 +1372,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
public RobotTaskDetailDO checkTaskDone(String id) {
|
||||
RobotTaskDetailDO robotTaskDetail = taskDetailMapper.selectById(id);
|
||||
if (RobotTaskStageEnum.DONE.getType().equals(robotTaskDetail.getTaskStage())
|
||||
|| RobotTaskStageEnum.MANUALLY_COMPLETED.getType().equals(robotTaskDetail.getTaskStage()) ) {
|
||||
|| RobotTaskStageEnum.MANUALLY_COMPLETED.getType().equals(robotTaskDetail.getTaskStage())) {
|
||||
throw exception(ROBOT_LAST_TASK_NO_EXISTS);
|
||||
}
|
||||
return robotTaskDetail;
|
||||
@ -1331,6 +1389,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
|
||||
if (RobotTaskStageEnum.UN_START.getType().equals(robotTaskDetail.getTaskStage())
|
||||
|| RobotTaskStageEnum.GO_TAKE.getType().equals(robotTaskDetail.getTaskStage())
|
||||
|| RobotTaskStageEnum.TAKEING_EXCEPTION.getType().equals(robotTaskDetail.getTaskStage())
|
||||
|| RobotTaskStageEnum.TAKEING.getType().equals(robotTaskDetail.getTaskStage())) {
|
||||
return;
|
||||
}
|
||||
@ -1343,10 +1402,11 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
//说明取货完成
|
||||
takeDone(pathPlanning, robotTaskDetail);
|
||||
} else if (RobotTaskStageEnum.GO_RELEASE.getType().equals(robotTaskDetail.getTaskStage())
|
||||
|| RobotTaskStageEnum.RELEASEING.getType().equals(robotTaskDetail.getTaskStage())) {
|
||||
|| RobotTaskStageEnum.RELEASEING.getType().equals(robotTaskDetail.getTaskStage())
|
||||
|| RobotTaskStageEnum.RELEASEING_EXCEPTION.getType().equals(robotTaskDetail.getTaskStage())) {
|
||||
takeDone(pathPlanning, robotTaskDetail);
|
||||
} else if (RobotTaskStageEnum.CLOSE.getType().equals(robotTaskDetail.getTaskStage())
|
||||
|| RobotTaskStageEnum.EXCEPTION.getType().equals(robotTaskDetail.getTaskStage()) ) {
|
||||
|| RobotTaskStageEnum.EXCEPTION.getType().equals(robotTaskDetail.getTaskStage())) {
|
||||
WareHouseLocationDO wareHouseLocation = wareHouseLocationMapper.selectById(robotTaskDetail.getFromLocationId());
|
||||
if (ZeroOneEnum.ZERO.getType().equals(wareHouseLocation.getLocationUseStatus())) {
|
||||
takeDone(pathPlanning, robotTaskDetail);
|
||||
@ -1473,7 +1533,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
}
|
||||
|
||||
pathPlanning.setReleaseGroupId("POINT_" + deviceInformationDO.getPositionMapItemId());
|
||||
pathPlanning.setReleasePointId(deviceInformationDO.getPositionMapItemId()+"");
|
||||
pathPlanning.setReleasePointId(deviceInformationDO.getPositionMapItemId() + "");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1578,13 +1638,14 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
* @param str
|
||||
*/
|
||||
@Override
|
||||
public void sendEmergencyStopOrRecoveryToRobot(RobotSimulationPoseDTO robotSimulationPose, List<String> robotNos, String str) {
|
||||
for (String robotNo : robotNos) {
|
||||
String mac = getMacByRobotNo(robotNo);
|
||||
// commonApi.commonMethod(robotSimulationPose, RobotTopicConstant.ROBOT_COMMAND_TOPIC + mac);
|
||||
mqttUtils.pub(RobotTopicConstant.ROBOT_COMMAND_TOPIC + mac, JSON.toJSONString(robotSimulationPose));
|
||||
public void sendEmergencyStopOrRecoveryToRobot(RobotAcceptTaskDTO robotSimulationPose, List<String> robotNos, String str) {
|
||||
List<RobotInformationDO> robotInformationDOS = informationMapper.selectList(new LambdaQueryWrapperX<RobotInformationDO>()
|
||||
.in(RobotInformationDO::getRobotNo, robotNos));
|
||||
for (RobotInformationDO robotInformationDO : robotInformationDOS) {
|
||||
robotSimulationPose.setOrderId(robotInformationDO.getTaskDetailId()+"");
|
||||
mqttUtils.pub(RobotTopicConstant.ROBOT_TASK_MOVE_TOPIC + robotInformationDO.getMacAddress(), JSON.toJSONString(robotSimulationPose));
|
||||
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||
.operateAction(str + robotNo)
|
||||
.operateAction(str + robotInformationDO.getRobotNo())
|
||||
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
||||
userOperationLogService.createUserOperationLog(operationLog);
|
||||
}
|
||||
|
@ -250,9 +250,24 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService {
|
||||
|
||||
@Override
|
||||
public void setTaskDetailError(Long id) {
|
||||
RobotTaskDetailDO detailDO = taskDetailMapper.selectById(id);
|
||||
RobotTaskDetailDO robotTaskDetailDO = new RobotTaskDetailDO();
|
||||
robotTaskDetailDO.setId(id);
|
||||
robotTaskDetailDO.setTaskStatus(RobotTaskStatusEnum.Exc.getType());
|
||||
if (RobotTaskTypeEnum.TAKE_RELEASE.getType().equals(detailDO.getTaskType())) {
|
||||
if (RobotTaskStageEnum.UN_START.getType().equals(detailDO.getTaskStage())
|
||||
|| RobotTaskStageEnum.GO_TAKE.getType().equals(detailDO.getTaskStage())
|
||||
|| RobotTaskStageEnum.TAKEING.getType().equals(detailDO.getTaskStage())) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING_EXCEPTION.getType());
|
||||
}else {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING_EXCEPTION.getType());
|
||||
}
|
||||
} else if(RobotTaskTypeEnum.TAKE.getType().equals(detailDO.getTaskType())) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING_EXCEPTION.getType());
|
||||
}else if(RobotTaskTypeEnum.RELEASE.getType().equals(detailDO.getTaskType())) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING_EXCEPTION.getType());
|
||||
}else {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.EXCEPTION.getType());
|
||||
}
|
||||
robotTaskDetailDO.setOccurError(ZeroOneEnum.ONE.getType());
|
||||
taskDetailMapper.updateById(robotTaskDetailDO);
|
||||
}
|
||||
|
@ -8,7 +8,6 @@ import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapSto
|
||||
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 接口
|
||||
@ -127,4 +126,8 @@ public interface RobotMapStopService extends IService<RobotMapStopDO> {
|
||||
* @return
|
||||
*/
|
||||
List<RobotMapStopDO> getStopRobotNoByRobotNoList(List<String> robotNos);
|
||||
|
||||
void rcsStopRobotAddLog(String robotNo);
|
||||
|
||||
void rcsDeleteStopRobotAddLog(String robotNo);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ 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.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotAcceptTaskDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.task.dto.RobotSimulationPoseDTO;
|
||||
import cn.iocoder.yudao.module.system.api.robot.dto.FloorZoneDTO;
|
||||
import cn.iocoder.yudao.module.system.constant.robot.RobotTaskChcheConstant;
|
||||
@ -186,9 +187,9 @@ public class RobotMapStopServiceImpl extends ServiceImpl<RobotMapStopMapper, Rob
|
||||
throw exception(ROBOT_ALREADY_STOP);
|
||||
}
|
||||
|
||||
RobotSimulationPoseDTO robotSimulationPose = new RobotSimulationPoseDTO();
|
||||
robotSimulationPose.setCommandType(RobotCommandTypeEnum.EMERGENCY_STOP.getType());
|
||||
List<String> list = Arrays.asList(robotNo);
|
||||
RobotAcceptTaskDTO robotSimulationPose = new RobotAcceptTaskDTO();
|
||||
robotSimulationPose.setExecutionType(RobotCommandTypeEnum.PAUSE.getType());
|
||||
List<String> list = Collections.singletonList(robotNo);
|
||||
informationService.sendEmergencyStopOrRecoveryToRobot(robotSimulationPose, list, "远遥暂停车辆");
|
||||
|
||||
String mac = informationService.getMacByRobotNo(robotNo);
|
||||
@ -240,9 +241,9 @@ public class RobotMapStopServiceImpl extends ServiceImpl<RobotMapStopMapper, Rob
|
||||
}
|
||||
}
|
||||
|
||||
RobotSimulationPoseDTO robotSimulationPose = new RobotSimulationPoseDTO();
|
||||
robotSimulationPose.setCommandType(RobotCommandTypeEnum.RECOVERY.getType());
|
||||
List<String> list = Arrays.asList(robotNo);
|
||||
RobotAcceptTaskDTO robotSimulationPose = new RobotAcceptTaskDTO();
|
||||
robotSimulationPose.setExecutionType(RobotCommandTypeEnum.CONTINUE.getType());
|
||||
List<String> list = Collections.singletonList(robotNo);
|
||||
informationService.sendEmergencyStopOrRecoveryToRobot(robotSimulationPose, list, "远遥恢复车辆");
|
||||
|
||||
deleteRobotMapStopByRobotNos(list);
|
||||
@ -271,5 +272,43 @@ public class RobotMapStopServiceImpl extends ServiceImpl<RobotMapStopMapper, Rob
|
||||
.in(RobotMapStopDO::getRobotNo, robotNos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rcsStopRobotAddLog(String robotNo) {
|
||||
String mac = informationService.getMacByRobotNo(robotNo);
|
||||
List<String> list = Collections.singletonList(robotNo);
|
||||
String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + mac;
|
||||
Object o = redisUtil.get(floorAreaKey);
|
||||
|
||||
Long id = -1l;
|
||||
if (ObjectUtil.isNotEmpty(o)) {
|
||||
FloorZoneDTO floorZone = JSON.parseObject((String) o, FloorZoneDTO.class);
|
||||
PositionMapDO positionMap = positionMapMapper.selectOne(new LambdaQueryWrapperX<PositionMapDO>()
|
||||
.eq(PositionMapDO::getFloor, floorZone.getFloor())
|
||||
.eq(PositionMapDO::getArea, floorZone.getArea()));
|
||||
if (ObjectUtil.isNotEmpty(positionMap)) {
|
||||
id = positionMap.getId();
|
||||
}
|
||||
}
|
||||
|
||||
createRobotMapStop(id, list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rcsDeleteStopRobotAddLog(String robotNo) {
|
||||
List<RobotMapStopDO> stopRobotNoByRobotNo = getStopRobotNoByRobotNo(robotNo);
|
||||
if (ObjectUtil.isEmpty(stopRobotNoByRobotNo) ){
|
||||
return;
|
||||
}
|
||||
Long mapId = stopRobotNoByRobotNo.get(0).getPositionMapId();
|
||||
deleteRobotMapStopByRobotNos(Collections.singletonList(robotNo));
|
||||
List<RobotMapStopDO> positionMapItems = mapStopMapper.selectList(new LambdaQueryWrapperX<RobotMapStopDO>()
|
||||
.eq(RobotMapStopDO::getStopType, ZeroOneEnum.ONE.getType())
|
||||
.eq(RobotMapStopDO::getPositionMapId, mapId));
|
||||
if (ObjectUtil.isNotEmpty(positionMapItems)) {
|
||||
return;
|
||||
}
|
||||
mapStopMapper.deleteRobotMapStopByMapId(mapId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -212,6 +212,8 @@ zn:
|
||||
send_robot_init_pose: true # 是否为发送默认的车辆所在地图和点位
|
||||
synchronous_all_map_node: 500 # 点位信息每次发送的数据量
|
||||
task_not_check: true # 创建任务不校验
|
||||
check_shortest_distance: 1.5 # 检测点最短距离
|
||||
check_longest_distance: 3.0 # 检测点最长距离
|
||||
|
||||
|
||||
#海康威视的相关配置
|
||||
|
@ -247,6 +247,8 @@ zn:
|
||||
send_robot_init_pose: true # 是否为发送默认的车辆所在地图和点位
|
||||
synchronous_all_map_node: 500 # 点位信息每次发送的数据量
|
||||
task_not_check: true # 创建任务不校验
|
||||
check_shortest_distance: 1.5 # 检测点最短距离
|
||||
check_longest_distance: 3.0 # 检测点最长距离
|
||||
|
||||
logging:
|
||||
file:
|
||||
|
@ -240,6 +240,8 @@ zn:
|
||||
send_robot_init_pose: true # 是否为发送默认的车辆所在地图和点位
|
||||
synchronous_all_map_node: 500 # 点位信息每次发送的数据量
|
||||
task_not_check: true # 创建任务不校验
|
||||
check_shortest_distance: 1.5 # 检测点最短距离
|
||||
check_longest_distance: 3.0 # 检测点最长距离
|
||||
|
||||
#海康威视的相关配置
|
||||
isc:
|
||||
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseLocationTypeMapper">
|
||||
|
||||
<!--
|
||||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||
-->
|
||||
|
||||
</mapper>
|
@ -346,7 +346,7 @@
|
||||
t1.deleted = '0'
|
||||
and t2.deleted = '0'
|
||||
and t2.occur_error = '1'
|
||||
and ((t2.task_type = '1' and t2.task_stage in ('2','3','4')) or (t2.task_type = '6') or (t2.task_type = '5' and t2.task_stage = '2'))
|
||||
and ((t2.task_type = '1' and t2.task_stage in ('1','2','3','4')) or (t2.task_type = '6') or (t2.task_type = '5' and t2.task_stage = '2'))
|
||||
and t2.task_status = '1'
|
||||
and t1.task_status = '1'
|
||||
<if test="pageReqVO.robotNo != null and pageReqVO.robotNo != ''">
|
||||
|
Loading…
Reference in New Issue
Block a user