diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/DeviceInformationController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/DeviceInformationController.java index ee9f6a2d5..d1e772c02 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/DeviceInformationController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/information/DeviceInformationController.java @@ -123,4 +123,12 @@ public class DeviceInformationController { List list = informationService.getDeviceNumber(); return success(list); } + + @GetMapping("/getInformationList") + @Operation(summary = "获得所有设备信息(含最后通讯时间)") + @PreAuthorize("@ss.hasPermission('device:information:query')") + public CommonResult> getInformationList(@Valid DeviceInformationPageReqVO pageReqVO) { + List list = informationService.getInformationList(pageReqVO); + return success(BeanUtils.toBean(list, DeviceInformationRespVO.class)); + } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/path/PathPlanningController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/path/PathPlanningController.java new file mode 100644 index 000000000..30ed60f0e --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/path/PathPlanningController.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.system.controller.admin.path; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotInformationSaveReqVO; +import cn.iocoder.yudao.module.system.service.path.PathPlanningService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 同步信息给路径规划") +@RestController +@RequestMapping("/system/path/planning") +@Validated +public class PathPlanningController { + + @Resource + private PathPlanningService pathPlanningService; + + @PutMapping("/synchronousPoint") + @Operation(summary = "同步全部的点位信息") + @PreAuthorize("@ss.hasPermission('robot:information:synchronousPoint')") + public CommonResult synchronousPoint() { + pathPlanningService.synchronousPoint(); + return success("同步完成"); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotInformationPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotInformationPageReqVO.java index 19f485ddf..39121f0ec 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotInformationPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotInformationPageReqVO.java @@ -33,6 +33,9 @@ public class RobotInformationPageReqVO extends PageParam { @Schema(description = "mac地址") private String macAddress; + @Schema(description = "车辆状态类型(待命:standby, 任务中:inTask, 锁定:doLock, 离线:offline, 充电中:charge, 故障:fault)") + private String robotStatisticsType; + @Schema(description = "上传图片附件", example = "https://www.iocoder.cn") private String url; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/information/RobotStatisticsTypeEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/information/RobotStatisticsTypeEnum.java new file mode 100644 index 000000000..8036bf495 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/robot/information/RobotStatisticsTypeEnum.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.system.enums.robot.information; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 车辆分页-车辆状态 + */ +@Getter +@AllArgsConstructor +public enum RobotStatisticsTypeEnum { + + STANDBY("standby","待命"), + INTASK("inTask","任务中"), + DOLOCK("doLock","锁定"), + OFFLINE("offline","离线"), + CHARGE("charge","充电中"), + FAULT("fault","故障"); + /** + * 类型 + */ + private final String type; + private final String msg; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationService.java index 3b83348dc..8a98dc7a7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationService.java @@ -100,4 +100,10 @@ public interface DeviceInformationService { */ List getDeviceNumber(); + /** + * 查看全部设备 + * @param pageReqVO + * @return + */ + List getInformationList(@Valid DeviceInformationPageReqVO pageReqVO); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationServiceImpl.java index aa5ab5293..1eb553149 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/information/DeviceInformationServiceImpl.java @@ -238,6 +238,39 @@ public class DeviceInformationServiceImpl implements DeviceInformationService { return list; } + @Override + public List getInformationList(DeviceInformationPageReqVO dto) { + + List deviceInformationDOS = informationMapper.selectList(new LambdaQueryWrapper() + .like(dto.getDeviceNo() != null, DeviceInformationDO::getDeviceNo, dto.getDeviceNo()) + .eq(dto.getDeviceType() != null, DeviceInformationDO::getDeviceType, dto.getDeviceType()) + ); + + if (ObjectUtil.isEmpty(deviceInformationDOS)) { + return new ArrayList<>(); + } + + // todo 需要设置设备通讯的时间 + for (DeviceInformationDO deviceInformationDO : deviceInformationDOS) { + String deviceKey = DeviceChcheConstant.DEVICE_LAST_TIME +deviceInformationDO.getMacAddress(); + Object object = redisUtil.get(deviceKey); + if (ObjectUtil.isEmpty(object)) { + deviceInformationDO.setDeviceStatus(DeviceStatusEnum.OFF_LINE.getType()); + continue; + } + try { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime curTimeLDT = LocalDateTime.parse((String)object, df); + deviceInformationDO.setDeviceLastTime(curTimeLDT); + deviceInformationDO.setDeviceStatus(DeviceStatusEnum.ON_LINE.getType()); + } catch (Exception e) { + log.info("查询设备最后通讯时间异常 :{}",e.getMessage()); + } + } + + return deviceInformationDOS; + } + @Override public void mapBindDeviceInfo(MapBindDeviceInfoDTO dto) { DeviceInformationDO deviceInformationDO = informationMapper.selectById(dto.getDeviceInfoId()); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java new file mode 100644 index 000000000..283ebf1e0 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java @@ -0,0 +1,5 @@ +package cn.iocoder.yudao.module.system.service.path; + +public interface PathPlanningService { + void synchronousPoint(); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java new file mode 100644 index 000000000..5a0a90c4b --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.system.service.path; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +/** + * 同步信息给车辆 + */ +@Slf4j +@Service +public class PathPlanningServiceImpl implements PathPlanningService { + + + /** + * 同步全部的点位信息 + */ + @Override + public void synchronousPoint() { + + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java index a72e9e56a..f0010a045 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java @@ -15,6 +15,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotInformationMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotModelMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper; import cn.iocoder.yudao.module.system.enums.robot.*; +import cn.iocoder.yudao.module.system.enums.robot.information.RobotStatisticsTypeEnum; import cn.iocoder.yudao.module.system.util.redis.RedisUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.stereotype.Service; @@ -150,7 +151,49 @@ public class RobotInformationServiceImpl implements RobotInformationService { targetList.stream().forEach(v -> { setMsgAndRobotStatus(v); }); - dataPage.setList(targetList); + + if (ObjectUtil.isNotEmpty(pageReqVO.getRobotStatisticsType())) { + List resultList = new ArrayList<>(); + for (RobotInformationPageRespVO v : targetList) { + if (RobotStatisticsTypeEnum.STANDBY.getType().equals(pageReqVO.getRobotStatisticsType()) + && v.getRobotTaskStatus().equals(0)) { + resultList.add(v); + continue; + } + + if (RobotStatisticsTypeEnum.INTASK.getType().equals(pageReqVO.getRobotStatisticsType()) + && v.getRobotTaskStatus().equals(1)) { + resultList.add(v); + continue; + } + + if (RobotStatisticsTypeEnum.CHARGE.getType().equals(pageReqVO.getRobotStatisticsType()) + && v.getRobotTaskStatus().equals(2)) { + resultList.add(v); + continue; + } + + if (RobotStatisticsTypeEnum.DOLOCK.getType().equals(pageReqVO.getRobotStatisticsType()) + && v.getRobotEssenceStatus().equals(1)) { + resultList.add(v); + continue; + } + + if (RobotStatisticsTypeEnum.OFFLINE.getType().equals(pageReqVO.getRobotStatisticsType()) + && v.getOnlineStatus().equals(1)) { + resultList.add(v); + continue; + } + + if (RobotStatisticsTypeEnum.FAULT.getType().equals(pageReqVO.getRobotStatisticsType()) + && v.getRobotEssenceStatus().equals(2)) { + resultList.add(v); + } + } + dataPage.setList(resultList); + }else { + dataPage.setList(targetList); + } return dataPage; }