diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java index bf0a76b..049ac23 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java @@ -6,6 +6,7 @@ import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.model.DeviceGroup; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -35,4 +36,6 @@ DeviceGroup deviceGroupDetail(Long id); + boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup); + } diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java index bf0a76b..049ac23 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java @@ -6,6 +6,7 @@ import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.model.DeviceGroup; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -35,4 +36,6 @@ DeviceGroup deviceGroupDetail(Long id); + boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup); + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java index 4fc577c..ebce87b 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java @@ -54,12 +54,23 @@ } @Override + public ReturnDTO addBatchConfig(List busConfigs) { + AuthUser shiroUser = ShiroKit.getUser(); + busConfigs.forEach(busConfig -> { + busConfig.setCreateUserId(shiroUser.getId()); + busConfig.setCreateUserName(shiroUser.getName()); + }); + return ReturnUtil.success(this.saveBatch(busConfigs)); + } + + @Override public ReturnDTO addBusConfig(BusConfig busConfig) { AuthUser shiroUser = ShiroKit.getUser(); busConfig.setCreateUserId(shiroUser.getId()); busConfig.setCreateUserName(shiroUser.getName()); List busConfigList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) { + //toDo:没存储设备id for (String devcode : busConfig.getDevcodeList()) { BusConfig tempBusConfig = new BusConfig(); BeanUtil.copyProperties(busConfig, tempBusConfig); @@ -68,6 +79,7 @@ } } if (this.saveBatch(busConfigList)) { + //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定 convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList()); return ReturnUtil.success(); } @@ -88,7 +100,6 @@ if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) { return configList.get(0); } - return null; } diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java index bf0a76b..049ac23 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java @@ -6,6 +6,7 @@ import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.model.DeviceGroup; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -35,4 +36,6 @@ DeviceGroup deviceGroupDetail(Long id); + boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup); + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java index 4fc577c..ebce87b 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java @@ -54,12 +54,23 @@ } @Override + public ReturnDTO addBatchConfig(List busConfigs) { + AuthUser shiroUser = ShiroKit.getUser(); + busConfigs.forEach(busConfig -> { + busConfig.setCreateUserId(shiroUser.getId()); + busConfig.setCreateUserName(shiroUser.getName()); + }); + return ReturnUtil.success(this.saveBatch(busConfigs)); + } + + @Override public ReturnDTO addBusConfig(BusConfig busConfig) { AuthUser shiroUser = ShiroKit.getUser(); busConfig.setCreateUserId(shiroUser.getId()); busConfig.setCreateUserName(shiroUser.getName()); List busConfigList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) { + //toDo:没存储设备id for (String devcode : busConfig.getDevcodeList()) { BusConfig tempBusConfig = new BusConfig(); BeanUtil.copyProperties(busConfig, tempBusConfig); @@ -68,6 +79,7 @@ } } if (this.saveBatch(busConfigList)) { + //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定 convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList()); return ReturnUtil.success(); } @@ -88,7 +100,6 @@ if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) { return configList.get(0); } - return null; } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java index 0a16486..28c186f 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java @@ -12,6 +12,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -144,4 +145,12 @@ } + @Override + public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) { + List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds()); + deviceList.forEach(device -> { + device.setGroupId(deviceToGroup.getGroupId()); + }); + return deviceService.updateBatchById(deviceList); + } } diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java index bf0a76b..049ac23 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java @@ -6,6 +6,7 @@ import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.model.DeviceGroup; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -35,4 +36,6 @@ DeviceGroup deviceGroupDetail(Long id); + boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup); + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java index 4fc577c..ebce87b 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java @@ -54,12 +54,23 @@ } @Override + public ReturnDTO addBatchConfig(List busConfigs) { + AuthUser shiroUser = ShiroKit.getUser(); + busConfigs.forEach(busConfig -> { + busConfig.setCreateUserId(shiroUser.getId()); + busConfig.setCreateUserName(shiroUser.getName()); + }); + return ReturnUtil.success(this.saveBatch(busConfigs)); + } + + @Override public ReturnDTO addBusConfig(BusConfig busConfig) { AuthUser shiroUser = ShiroKit.getUser(); busConfig.setCreateUserId(shiroUser.getId()); busConfig.setCreateUserName(shiroUser.getName()); List busConfigList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) { + //toDo:没存储设备id for (String devcode : busConfig.getDevcodeList()) { BusConfig tempBusConfig = new BusConfig(); BeanUtil.copyProperties(busConfig, tempBusConfig); @@ -68,6 +79,7 @@ } } if (this.saveBatch(busConfigList)) { + //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定 convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList()); return ReturnUtil.success(); } @@ -88,7 +100,6 @@ if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) { return configList.get(0); } - return null; } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java index 0a16486..28c186f 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java @@ -12,6 +12,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -144,4 +145,12 @@ } + @Override + public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) { + List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds()); + deviceList.forEach(device -> { + device.setGroupId(deviceToGroup.getGroupId()); + }); + return deviceService.updateBatchById(deviceList); + } } diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java index 2854f94..032f25b 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java @@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** *

* 设备配置 设备下发配置所用表 前端控制器 @@ -61,6 +63,15 @@ return busConfigService.addBusConfig(request); } + @ApiOperation("批量下发配置(只针对同一类设备)") + @PostMapping("/addBatchConfig") + public ReturnDTO addBatchConfig(@RequestBody @Validated List request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return busConfigService.addBatchConfig(request); + } + @ApiOperation("删除(支持批删、单删)") @PostMapping("/delete") public ReturnDTO deleteBusConfig(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) { diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java index bf0a76b..049ac23 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java @@ -6,6 +6,7 @@ import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.model.DeviceGroup; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -35,4 +36,6 @@ DeviceGroup deviceGroupDetail(Long id); + boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup); + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java index 4fc577c..ebce87b 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java @@ -54,12 +54,23 @@ } @Override + public ReturnDTO addBatchConfig(List busConfigs) { + AuthUser shiroUser = ShiroKit.getUser(); + busConfigs.forEach(busConfig -> { + busConfig.setCreateUserId(shiroUser.getId()); + busConfig.setCreateUserName(shiroUser.getName()); + }); + return ReturnUtil.success(this.saveBatch(busConfigs)); + } + + @Override public ReturnDTO addBusConfig(BusConfig busConfig) { AuthUser shiroUser = ShiroKit.getUser(); busConfig.setCreateUserId(shiroUser.getId()); busConfig.setCreateUserName(shiroUser.getName()); List busConfigList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) { + //toDo:没存储设备id for (String devcode : busConfig.getDevcodeList()) { BusConfig tempBusConfig = new BusConfig(); BeanUtil.copyProperties(busConfig, tempBusConfig); @@ -68,6 +79,7 @@ } } if (this.saveBatch(busConfigList)) { + //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定 convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList()); return ReturnUtil.success(); } @@ -88,7 +100,6 @@ if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) { return configList.get(0); } - return null; } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java index 0a16486..28c186f 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java @@ -12,6 +12,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -144,4 +145,12 @@ } + @Override + public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) { + List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds()); + deviceList.forEach(device -> { + device.setGroupId(deviceToGroup.getGroupId()); + }); + return deviceService.updateBatchById(deviceList); + } } diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java index 2854f94..032f25b 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java @@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** *

* 设备配置 设备下发配置所用表 前端控制器 @@ -61,6 +63,15 @@ return busConfigService.addBusConfig(request); } + @ApiOperation("批量下发配置(只针对同一类设备)") + @PostMapping("/addBatchConfig") + public ReturnDTO addBatchConfig(@RequestBody @Validated List request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return busConfigService.addBatchConfig(request); + } + @ApiOperation("删除(支持批删、单删)") @PostMapping("/delete") public ReturnDTO deleteBusConfig(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) { diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java index 9660fa4..08984aa 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java @@ -12,23 +12,22 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; -import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.DeviceGroup; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.IDeviceGroupService; -import com.casic.missiles.util.DictCodeUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; -import java.io.IOException; -import java.util.List; /** *

@@ -103,4 +102,13 @@ return ReturnUtil.success(deviceGroupService.deviceGroupDetail(idDTO.getId())); } + + @ApiOperation("新增设备分组绑定关系") + @PostMapping("/addDeviceToGroup") + public ReturnDTO addDeviceToGroup(@RequestBody @Validated DeviceToGroupRequest deviceToGroup, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(deviceGroupService.addDeviceToGroup(deviceToGroup)); + } } diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java index bf0a76b..049ac23 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java @@ -6,6 +6,7 @@ import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.model.DeviceGroup; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -35,4 +36,6 @@ DeviceGroup deviceGroupDetail(Long id); + boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup); + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java index 4fc577c..ebce87b 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java @@ -54,12 +54,23 @@ } @Override + public ReturnDTO addBatchConfig(List busConfigs) { + AuthUser shiroUser = ShiroKit.getUser(); + busConfigs.forEach(busConfig -> { + busConfig.setCreateUserId(shiroUser.getId()); + busConfig.setCreateUserName(shiroUser.getName()); + }); + return ReturnUtil.success(this.saveBatch(busConfigs)); + } + + @Override public ReturnDTO addBusConfig(BusConfig busConfig) { AuthUser shiroUser = ShiroKit.getUser(); busConfig.setCreateUserId(shiroUser.getId()); busConfig.setCreateUserName(shiroUser.getName()); List busConfigList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) { + //toDo:没存储设备id for (String devcode : busConfig.getDevcodeList()) { BusConfig tempBusConfig = new BusConfig(); BeanUtil.copyProperties(busConfig, tempBusConfig); @@ -68,6 +79,7 @@ } } if (this.saveBatch(busConfigList)) { + //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定 convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList()); return ReturnUtil.success(); } @@ -88,7 +100,6 @@ if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) { return configList.get(0); } - return null; } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java index 0a16486..28c186f 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java @@ -12,6 +12,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -144,4 +145,12 @@ } + @Override + public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) { + List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds()); + deviceList.forEach(device -> { + device.setGroupId(deviceToGroup.getGroupId()); + }); + return deviceService.updateBatchById(deviceList); + } } diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java index 2854f94..032f25b 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java @@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** *

* 设备配置 设备下发配置所用表 前端控制器 @@ -61,6 +63,15 @@ return busConfigService.addBusConfig(request); } + @ApiOperation("批量下发配置(只针对同一类设备)") + @PostMapping("/addBatchConfig") + public ReturnDTO addBatchConfig(@RequestBody @Validated List request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return busConfigService.addBatchConfig(request); + } + @ApiOperation("删除(支持批删、单删)") @PostMapping("/delete") public ReturnDTO deleteBusConfig(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) { diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java index 9660fa4..08984aa 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java @@ -12,23 +12,22 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; -import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.DeviceGroup; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.IDeviceGroupService; -import com.casic.missiles.util.DictCodeUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; -import java.io.IOException; -import java.util.List; /** *

@@ -103,4 +102,13 @@ return ReturnUtil.success(deviceGroupService.deviceGroupDetail(idDTO.getId())); } + + @ApiOperation("新增设备分组绑定关系") + @PostMapping("/addDeviceToGroup") + public ReturnDTO addDeviceToGroup(@RequestBody @Validated DeviceToGroupRequest deviceToGroup, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(deviceGroupService.addDeviceToGroup(deviceToGroup)); + } } diff --git a/casic-iot-web/src/main/resources/config/application-dev.yml b/casic-iot-web/src/main/resources/config/application-dev.yml index 5199412..ec165dc 100644 --- a/casic-iot-web/src/main/resources/config/application-dev.yml +++ b/casic-iot-web/src/main/resources/config/application-dev.yml @@ -6,16 +6,16 @@ driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true username: root - password: 123456 + password: Casic203 dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 datasource: master: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true username: root - password: 123456 + password: Casic203 # use-ping-method: false sensorhub: #实现动态的双库操作,暂时不想合并 driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java index bf0a76b..049ac23 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java @@ -6,6 +6,7 @@ import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.model.DeviceGroup; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -35,4 +36,6 @@ DeviceGroup deviceGroupDetail(Long id); + boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup); + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java index 4fc577c..ebce87b 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java @@ -54,12 +54,23 @@ } @Override + public ReturnDTO addBatchConfig(List busConfigs) { + AuthUser shiroUser = ShiroKit.getUser(); + busConfigs.forEach(busConfig -> { + busConfig.setCreateUserId(shiroUser.getId()); + busConfig.setCreateUserName(shiroUser.getName()); + }); + return ReturnUtil.success(this.saveBatch(busConfigs)); + } + + @Override public ReturnDTO addBusConfig(BusConfig busConfig) { AuthUser shiroUser = ShiroKit.getUser(); busConfig.setCreateUserId(shiroUser.getId()); busConfig.setCreateUserName(shiroUser.getName()); List busConfigList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) { + //toDo:没存储设备id for (String devcode : busConfig.getDevcodeList()) { BusConfig tempBusConfig = new BusConfig(); BeanUtil.copyProperties(busConfig, tempBusConfig); @@ -68,6 +79,7 @@ } } if (this.saveBatch(busConfigList)) { + //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定 convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList()); return ReturnUtil.success(); } @@ -88,7 +100,6 @@ if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) { return configList.get(0); } - return null; } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java index 0a16486..28c186f 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java @@ -12,6 +12,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -144,4 +145,12 @@ } + @Override + public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) { + List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds()); + deviceList.forEach(device -> { + device.setGroupId(deviceToGroup.getGroupId()); + }); + return deviceService.updateBatchById(deviceList); + } } diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java index 2854f94..032f25b 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java @@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** *

* 设备配置 设备下发配置所用表 前端控制器 @@ -61,6 +63,15 @@ return busConfigService.addBusConfig(request); } + @ApiOperation("批量下发配置(只针对同一类设备)") + @PostMapping("/addBatchConfig") + public ReturnDTO addBatchConfig(@RequestBody @Validated List request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return busConfigService.addBatchConfig(request); + } + @ApiOperation("删除(支持批删、单删)") @PostMapping("/delete") public ReturnDTO deleteBusConfig(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) { diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java index 9660fa4..08984aa 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java @@ -12,23 +12,22 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; -import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.DeviceGroup; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.IDeviceGroupService; -import com.casic.missiles.util.DictCodeUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; -import java.io.IOException; -import java.util.List; /** *

@@ -103,4 +102,13 @@ return ReturnUtil.success(deviceGroupService.deviceGroupDetail(idDTO.getId())); } + + @ApiOperation("新增设备分组绑定关系") + @PostMapping("/addDeviceToGroup") + public ReturnDTO addDeviceToGroup(@RequestBody @Validated DeviceToGroupRequest deviceToGroup, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(deviceGroupService.addDeviceToGroup(deviceToGroup)); + } } diff --git a/casic-iot-web/src/main/resources/config/application-dev.yml b/casic-iot-web/src/main/resources/config/application-dev.yml index 5199412..ec165dc 100644 --- a/casic-iot-web/src/main/resources/config/application-dev.yml +++ b/casic-iot-web/src/main/resources/config/application-dev.yml @@ -6,16 +6,16 @@ driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true username: root - password: 123456 + password: Casic203 dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 datasource: master: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true username: root - password: 123456 + password: Casic203 # use-ping-method: false sensorhub: #实现动态的双库操作,暂时不想合并 driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/casic-iot-web/src/main/resources/config/application.yml b/casic-iot-web/src/main/resources/config/application.yml index 0fcd40b..789b3d9 100644 --- a/casic-iot-web/src/main/resources/config/application.yml +++ b/casic-iot-web/src/main/resources/config/application.yml @@ -87,6 +87,6 @@ code: generate: #作者 - author: cz + author: zt #待生成对象表名 - table-name: product_data_item,product_config_item \ No newline at end of file + table-name: device_to_group,device_to_product \ No newline at end of file diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java index 09d6d9a..b5575f5 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java @@ -39,7 +39,7 @@ private String groupName; @ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String") - @ExcelProperty(value = "设备状态", order = 2) + @DictCodeField(message = "设备状态不合法", cacheName = STATUS) private String status; @ExcelProperty(value = "设备最新数据", order = 3) @@ -52,6 +52,11 @@ @TableField("device_type") private String deviceType; + @ExcelProperty(value = "设备状态", order = 2) + @ApiModelProperty(value = "设备状态名称", dataType = "String") + @TableField(exist = false) + private String statusName; + @ExcelProperty(value = "设备类型", order = 4) @ApiModelProperty(value = "设备类型", dataType = "String") @TableField(exist = false) diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java new file mode 100644 index 0000000..bdab750 --- /dev/null +++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.group; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zt + * @date 2025-05-14 + */ +@ApiModel +@Data +public class DeviceToGroupRequest { + + @ApiModelProperty(value = "分组id", dataType = "Long") + private Long groupId; + + @ApiModelProperty(value = "设备ids集合", dataType = "List") + private List deviceIds; + +} + diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java index 0757408..9826441 100644 --- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java +++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java @@ -72,4 +72,9 @@ */ String ALARM_CATEGORY = "alarmCategory"; + /** + * 设备状态 + */ + String STATUS = "deviceStatus"; + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java index 720bb30..644b055 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java @@ -23,6 +23,8 @@ ReturnDTO addBusConfig(BusConfig busConfig); + ReturnDTO addBatchConfig(List busConfigs); + ReturnDTO deleteBusConfig(List ids); BusConfig findLatestConfigToBeSend(Long deviceId); diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java index bf0a76b..049ac23 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java @@ -6,6 +6,7 @@ import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.model.DeviceGroup; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -35,4 +36,6 @@ DeviceGroup deviceGroupDetail(Long id); + boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup); + } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java index 4fc577c..ebce87b 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java @@ -54,12 +54,23 @@ } @Override + public ReturnDTO addBatchConfig(List busConfigs) { + AuthUser shiroUser = ShiroKit.getUser(); + busConfigs.forEach(busConfig -> { + busConfig.setCreateUserId(shiroUser.getId()); + busConfig.setCreateUserName(shiroUser.getName()); + }); + return ReturnUtil.success(this.saveBatch(busConfigs)); + } + + @Override public ReturnDTO addBusConfig(BusConfig busConfig) { AuthUser shiroUser = ShiroKit.getUser(); busConfig.setCreateUserId(shiroUser.getId()); busConfig.setCreateUserName(shiroUser.getName()); List busConfigList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) { + //toDo:没存储设备id for (String devcode : busConfig.getDevcodeList()) { BusConfig tempBusConfig = new BusConfig(); BeanUtil.copyProperties(busConfig, tempBusConfig); @@ -68,6 +79,7 @@ } } if (this.saveBatch(busConfigList)) { + //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定 convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList()); return ReturnUtil.success(); } @@ -88,7 +100,6 @@ if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) { return configList.get(0); } - return null; } diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java index 0a16486..28c186f 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java @@ -12,6 +12,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; @@ -144,4 +145,12 @@ } + @Override + public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) { + List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds()); + deviceList.forEach(device -> { + device.setGroupId(deviceToGroup.getGroupId()); + }); + return deviceService.updateBatchById(deviceList); + } } diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java index 2854f94..032f25b 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/BusConfigController.java @@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** *

* 设备配置 设备下发配置所用表 前端控制器 @@ -61,6 +63,15 @@ return busConfigService.addBusConfig(request); } + @ApiOperation("批量下发配置(只针对同一类设备)") + @PostMapping("/addBatchConfig") + public ReturnDTO addBatchConfig(@RequestBody @Validated List request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return busConfigService.addBatchConfig(request); + } + @ApiOperation("删除(支持批删、单删)") @PostMapping("/delete") public ReturnDTO deleteBusConfig(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) { diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java index 9660fa4..08984aa 100644 --- a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java +++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceGroupController.java @@ -12,23 +12,22 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.group.DeviceGroupListRequest; import com.casic.missiles.dto.group.DeviceGroupListVO; -import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.dto.group.DeviceToGroupRequest; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.DeviceGroup; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.IDeviceGroupService; -import com.casic.missiles.util.DictCodeUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; -import java.io.IOException; -import java.util.List; /** *

@@ -103,4 +102,13 @@ return ReturnUtil.success(deviceGroupService.deviceGroupDetail(idDTO.getId())); } + + @ApiOperation("新增设备分组绑定关系") + @PostMapping("/addDeviceToGroup") + public ReturnDTO addDeviceToGroup(@RequestBody @Validated DeviceToGroupRequest deviceToGroup, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(deviceGroupService.addDeviceToGroup(deviceToGroup)); + } } diff --git a/casic-iot-web/src/main/resources/config/application-dev.yml b/casic-iot-web/src/main/resources/config/application-dev.yml index 5199412..ec165dc 100644 --- a/casic-iot-web/src/main/resources/config/application-dev.yml +++ b/casic-iot-web/src/main/resources/config/application-dev.yml @@ -6,16 +6,16 @@ driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true username: root - password: 123456 + password: Casic203 dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 datasource: master: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_iot?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true username: root - password: 123456 + password: Casic203 # use-ping-method: false sensorhub: #实现动态的双库操作,暂时不想合并 driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/casic-iot-web/src/main/resources/config/application.yml b/casic-iot-web/src/main/resources/config/application.yml index 0fcd40b..789b3d9 100644 --- a/casic-iot-web/src/main/resources/config/application.yml +++ b/casic-iot-web/src/main/resources/config/application.yml @@ -87,6 +87,6 @@ code: generate: #作者 - author: cz + author: zt #待生成对象表名 - table-name: product_data_item,product_config_item \ No newline at end of file + table-name: device_to_group,device_to_product \ No newline at end of file diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index 057250b..0d72544 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -51,6 +51,7 @@ // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { + //toDo:不建议串行处理业务数据,使用线程池并行处理 // 处理业务数据 defaultService.doParseBizTag(birmmFrame);