diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java index d735861b7..e8da0afd6 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java @@ -345,6 +345,14 @@ public class DeviceController { return success(true); } + @PutMapping("/device-attribute/batch-update") + @Operation(summary = "根据 ID 批量更新设备点位类型、单位、倍率") + @PreAuthorize("@ss.hasPermission('iot:device:update')") + public CommonResult batchUpdateDeviceAttribute(@Valid @RequestBody DeviceAttributeBatchUpdateReqVO deviceAttributes) { + deviceService.updateDeviceAttributeBatch(deviceAttributes); + return success(true); + } + @DeleteMapping("/device-attribute/delete") @Parameter(name = "id", description = "编号", required = true) @Operation(summary = "删除设备属性") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/enums/TaskTypeEnum.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/enums/TaskTypeEnum.java index 2d36a2458..30df125cb 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/enums/TaskTypeEnum.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/enums/TaskTypeEnum.java @@ -49,15 +49,15 @@ public enum TaskTypeEnum { baseId = 0L; } - switch (this) { - case DEVICE: - return 1000000L + baseId; - case WORK_ORDER: - return 2000000L + baseId; - case MOLD_WORK_ORDER: - return 3000000L + baseId; - default: - return 9000000L + baseId; + if (this == DEVICE) { + return 1000000L + baseId; } + if (this == WORK_ORDER) { + return 2000000L + baseId; + } + if (this == MOLD_WORK_ORDER) { + return 3000000L + baseId; + } + return 9000000L + baseId; } } diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DeviceAttributeBatchUpdateReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DeviceAttributeBatchUpdateReqVO.java new file mode 100644 index 000000000..c40fca20d --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DeviceAttributeBatchUpdateReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.iot.controller.admin.device.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.util.List; + +@Schema(description = "管理后台 - 设备点位批量更新 Request VO") +@Data +public class DeviceAttributeBatchUpdateReqVO { + + @Schema(description = "点位 ID 列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1024, 1025]") + @NotEmpty(message = "点位 ID 列表不能为空") + private List ids; + + @Schema(description = "点位类型", example = "1") + private String attributeType; + + @Schema(description = "单位", example = "kg") + private String dataUnit; + + @Schema(description = "倍率", example = "1.0") + private Double ratio; + +} diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java index 7d47c0671..04c1967aa 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java @@ -99,6 +99,13 @@ public interface DeviceService { */ void updateDeviceAttribute(@Valid DeviceAttributeDO deviceAttribute); + /** + * 根据 ID 批量更新设备点位类型、单位、倍率 + * + * @param deviceAttributes 更新信息 + */ + void updateDeviceAttributeBatch(@Valid DeviceAttributeBatchUpdateReqVO deviceAttributes); + /** * 删除设备属性 * diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java index 704215eeb..a94613c44 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java @@ -779,6 +779,23 @@ public class DeviceServiceImpl implements DeviceService { deviceAttributeMapper.updateById(deviceAttribute); } + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDeviceAttributeBatch(DeviceAttributeBatchUpdateReqVO deviceAttributes) { + if (deviceAttributes == null || CollUtil.isEmpty(deviceAttributes.getIds())) { + return; + } + for (Long id : deviceAttributes.getIds()) { + DeviceContactModelDO updateObj = new DeviceContactModelDO(); + updateObj.setId(id); + updateObj.setAttributeType(deviceAttributes.getAttributeType()); + updateObj.setDataUnit(deviceAttributes.getDataUnit()); + updateObj.setRatio(deviceAttributes.getRatio()); + validateDeviceContactModelExists(updateObj.getId()); + deviceContactModelMapper.updateById(updateObj); + } + } + @Override public void deleteDeviceAttribute(Long id) { // 校验存在 @@ -1657,6 +1674,12 @@ public class DeviceServiceImpl implements DeviceService { } } + private void validateDeviceContactModelExists(Long id) { + if (deviceContactModelMapper.selectById(id) == null) { + throw exception(DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS); + } + } + private void deleteDeviceAttributeByDeviceId(Long deviceId) { deviceAttributeMapper.deleteByDeviceId(deviceId); } diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicecontactmodel/DeviceContactModelServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicecontactmodel/DeviceContactModelServiceImpl.java index 9eb79c2f2..ea238c446 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicecontactmodel/DeviceContactModelServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicecontactmodel/DeviceContactModelServiceImpl.java @@ -23,8 +23,8 @@ import java.time.format.DateTimeFormatter; import java.util.List; import java.util.concurrent.ThreadLocalRandom; -import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.DEVICE_CONTACT_MODEL_NOT_EXISTS; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS; import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_ATTRIBUTE_POTIN_CODE_EXISTS; import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_POINT_CODE_EXISTS; @@ -130,7 +130,7 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService private void validateDeviceContactModelExists(Long id) { if (deviceContactModelMapper.selectById(id) == null) { - throw exception(DEVICE_CONTACT_MODEL_NOT_EXISTS); + throw exception(DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS); } } @@ -156,4 +156,4 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService return deviceContactModelMapper.selectList(Wrappers.lambdaQuery().eq(DeviceContactModelDO::getDeviceId,id)); } -} \ No newline at end of file +}