设备数量统计

This commit is contained in:
cbs 2025-02-13 09:48:46 +08:00
parent c7b477e6ab
commit 12eb16047c
13 changed files with 106 additions and 4 deletions

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.information;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.DeviceInformationDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.MapBindDeviceInfoDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.StatisticsInformationDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationRespVO;
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationSaveReqVO;
@ -116,4 +117,10 @@ public class DeviceInformationController {
return success(map);
}
@GetMapping("/deviceNumber")
@Operation(summary = "统计设备数量")
public CommonResult<List<StatisticsInformationDTO>> getDeviceNumber() {
List<StatisticsInformationDTO> list = informationService.getDeviceNumber();
return success(list);
}
}

View File

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.system.controller.admin.information.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class StatisticsInformationDTO {
@Schema(description = "设备类型 字典device_type", example = "2")
private Integer deviceType;
@Schema(description = "设备数量", example = "2")
private Integer number = 0;
}

View File

@ -35,6 +35,7 @@ public class DeviceInformationPageReqVO extends PageParam {
@Schema(description = "深度")
private BigDecimal locationDeep;
//1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机
@Schema(description = "设备类型 字典device_type", example = "2")
private Integer deviceType;

View File

@ -42,6 +42,7 @@ public class DeviceInformationRespVO {
@ExcelProperty("深度")
private BigDecimal locationDeep;
//1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机
@Schema(description = "设备类型 字典device_type", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("设备类型 字典device_type")
private Integer deviceType;

View File

@ -35,6 +35,7 @@ public class DeviceInformationSaveReqVO {
@Schema(description = "深度")
private BigDecimal locationDeep;
//1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机
@Schema(description = "设备类型 字典device_type", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "设备类型不能为空")
private Integer deviceType;

View File

@ -59,6 +59,7 @@ public class DeviceInformationDO extends BaseDO {
*/
private BigDecimal locationDeep;
/**
* 1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机
* 设备类型 字典device_type
*/
private Integer deviceType;

View File

@ -10,9 +10,10 @@ import lombok.Getter;
@Getter
@AllArgsConstructor
public enum CommandConfigTypeEnum {
ONE(1); //充电设置(页面)
CHARG_CONFIG(1,"充电设置(页面)");
/**
* 类型
*/
private final Integer type;
private final String msg;
}

View File

@ -8,7 +8,7 @@ import lombok.Getter;
public enum DeviceTypeEnum {
CHARGING_STATION(1, "充电桩"),
Conveyor_line(2, "输送线"),
CONVEYOR_LINE(2, "输送线"),
PALLETIZER(3, "码垛机"),
AUTOMATIC_DOOR(4, "自动门"),
HOIST(5, "提升机"),

View File

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.system.enums.device;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum PictureConfigEnum {
DEFAULT(1, "默认图片"),
UPLOAD(2, "上传图片"),
NOT_DISPLAY(3, "不显示图片");
/**
* 类型
*/
private final Integer type;
/**
* 说明
*/
private final String msg;
}

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.service.information;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.DeviceInformationDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.MapBindDeviceInfoDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.StatisticsInformationDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO;
@ -92,4 +93,11 @@ public interface DeviceInformationService {
* @return
*/
Map<Integer, List<DeviceInformationDO>> classification();
/**
* 统计设备
* @return
*/
List<StatisticsInformationDTO> getDeviceNumber();
}

View File

@ -8,11 +8,16 @@ import cn.iocoder.yudao.module.grpc.api.GrpcServiceApi;
import cn.iocoder.yudao.module.system.constant.device.DeviceChcheConstant;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.DeviceInformationDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.MapBindDeviceInfoDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.dto.StatisticsInformationDTO;
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO;
import cn.iocoder.yudao.module.system.dal.mysql.config.CommonConfigMapper;
import cn.iocoder.yudao.module.system.dal.mysql.information.DeviceInformationMapper;
import cn.iocoder.yudao.module.system.enums.device.DeviceStatusEnum;
import cn.iocoder.yudao.module.system.enums.device.PictureConfigEnum;
import cn.iocoder.yudao.module.system.service.dict.DictDataService;
import cn.iocoder.yudao.module.system.util.redis.RedisUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
@ -45,6 +50,9 @@ public class DeviceInformationServiceImpl implements DeviceInformationService {
@Resource
private DeviceInformationMapper informationMapper;
@Resource
private DictDataService dictDataService;
@Resource
private GrpcServiceApi grpcServiceApi;
@ -59,6 +67,17 @@ public class DeviceInformationServiceImpl implements DeviceInformationService {
if (ObjectUtil.isNotEmpty(pageResult.getList())) {
throw exception(INFORMATION_MAC_EXIST);
}
//默认图片
if (PictureConfigEnum.DEFAULT.getType().equals(createReqVO.getPictureConfig())) {
List<DictDataDO> deviceType = dictDataService.getDictDataListByDictType("device_type");
DictDataDO dictDataDO = deviceType.stream()
.filter(v -> Integer.valueOf(v.getValue()).equals(createReqVO.getDeviceType()))
.findFirst()
.orElse(new DictDataDO());
createReqVO.setUrl(dictDataDO.getRemark());
}
// 插入
DeviceInformationDO information = BeanUtils.toBean(createReqVO, DeviceInformationDO.class);
information.setDeviceStatus(1);
@ -191,6 +210,34 @@ public class DeviceInformationServiceImpl implements DeviceInformationService {
return collect;
}
/**
* 统计设备
* @return
*/
@Override
public List<StatisticsInformationDTO> getDeviceNumber() {
List<DeviceInformationDO> deviceInformationDOS = informationMapper.selectList(new LambdaQueryWrapper<DeviceInformationDO>());
if (ObjectUtil.isEmpty(deviceInformationDOS)) {
return new ArrayList<>();
}
List<StatisticsInformationDTO> list = deviceInformationDOS.stream()
.filter(v -> ObjectUtil.isNotEmpty(v.getDeviceType()))
.collect(Collectors.groupingBy(DeviceInformationDO::getDeviceType))
.entrySet().stream()
.map(v -> {
Integer key = v.getKey();
int number = v.getValue().size();
StatisticsInformationDTO statisticsInformationDTO = new StatisticsInformationDTO();
statisticsInformationDTO.setDeviceType(key);
statisticsInformationDTO.setNumber(number);
return statisticsInformationDTO;
}).collect(Collectors.toList());
return list;
}
@Override
public void mapBindDeviceInfo(MapBindDeviceInfoDTO dto) {
DeviceInformationDO deviceInformationDO = informationMapper.selectById(dto.getDeviceInfoId());

View File

@ -76,7 +76,7 @@ public class AutoChargeServiceImpl implements AutoChargeService {
public void autoChargeJob() {
TenantContextHolder.setTenantId(1L);
CommonConfigDO commonConfigDO = configMapper.selectOne(new LambdaQueryWrapper<CommonConfigDO>()
.eq(CommonConfigDO::getConfigType, CommandConfigTypeEnum.ONE.getType()));
.eq(CommonConfigDO::getConfigType, CommandConfigTypeEnum.CHARG_CONFIG.getType()));
if (ObjectUtil.isEmpty(commonConfigDO)) {
log.info("暂未配置充电信息");

View File

@ -127,7 +127,7 @@ public class DistributeTasksServiceImpl implements DistributeTasksService {
Pair<List<RobotInformationDO>, List<RobotTaskDetailDO>> pair = Pair.of(new ArrayList<>(), new ArrayList<>());
CommonConfigDO commonConfigDO = configMapper.selectOne(new LambdaQueryWrapper<CommonConfigDO>()
.eq(CommonConfigDO::getConfigType, CommandConfigTypeEnum.ONE.getType()));
.eq(CommonConfigDO::getConfigType, CommandConfigTypeEnum.CHARG_CONFIG.getType()));
CommonConfigVO chargeConfig= JSONUtil.toBean(commonConfigDO.getConfigStr(),CommonConfigVO.class);
LocalDateTime now = LocalDateTime.now();
if ((ObjectUtil.isNotEmpty(chargeConfig.getScheduleChargeEndTime()) &&