diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java index da286cccc3..50e22fd63b 100644 --- a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java +++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java @@ -34,28 +34,30 @@ public interface ErrorCodeConstants { ErrorCode ALERT_RECORD_NOT_EXISTS = new ErrorCode(1_003_000_003, "告警记录不存在"); //======================================数据采集相关================================================= - ErrorCode DEVICE_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_000, "采集设备模型不存在"); - ErrorCode DEVICE_MODEL_CODE_EXISTS = new ErrorCode(1_003_000_000, "采集设备模型编码已存在"); - - ErrorCode DEVICE_ID_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_000, "该设备模型ID不能为空"); - ErrorCode POINT_ID_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_000, "该点位参数ID不能为空"); - - ErrorCode DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS = new ErrorCode(1_003_000_000, "采集设备模型点位不存在"); - ErrorCode DEVICE_ATTRIBUTE_NOT_EXISTS = new ErrorCode(1_003_000_000, "设备属性不存在"); - ErrorCode DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS = new ErrorCode(1_003_000_000, "采集点分类不存在"); + ErrorCode DEVICE_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_001, "采集设备模型不存在"); + ErrorCode DEVICE_MODEL_CODE_EXISTS = new ErrorCode(1_003_000_002, "采集设备模型编码已存在"); + ErrorCode DEVICE_ID_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_003, "该设备模型ID不能为空"); + ErrorCode POINT_ID_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_004, "该点位参数ID不能为空"); + ErrorCode DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS = new ErrorCode(1_003_000_005, "采集设备模型点位不存在"); + ErrorCode DEVICE_ATTRIBUTE_NOT_EXISTS = new ErrorCode(1_003_000_006, "设备属性不存在"); + ErrorCode DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS = new ErrorCode(1_003_000_007, "采集点分类不存在"); ErrorCode DEVICE_CODE_EXISTS = new ErrorCode(1_003_000_000, "采集点编码已存在"); - ErrorCode DEVICE_ATTRIBUTE_TYPE_REFERENCES_EXISTS = new ErrorCode(1_003_000_000, "存在采集点类型已被引用,请先删除对应引用"); + ErrorCode DEVICE_ATTRIBUTE_TYPE_REFERENCES_EXISTS = new ErrorCode(1_003_000_008, "存在采集点类型已被引用,请先删除对应引用"); + ErrorCode ENDPOINT_DOES_NOT_EXIS = new ErrorCode(1_003_000_009, "暂未设置设备端点"); + ErrorCode DEVICE_DOES_NOT_EXIST= new ErrorCode(1_003_000_010, "该采集设备不存在"); + ErrorCode DEVICE_ID_DOES_NOT_EXIST= new ErrorCode(1_003_000_011, "该设备ID不能为空"); + ErrorCode OPC_USERNAME_DOES_NOT_EXIST= new ErrorCode(1_003_000_012, "OPC连接账号不能为空"); + ErrorCode OPC_PASSWORD_DOES_NOT_EXIST= new ErrorCode(1_003_000_013, "OPC连接账号不能为空"); + ErrorCode OPC_CONNECT_FAILURE_DOES_NOT_EXIST= new ErrorCode(1_003_000_014, "OPC连接失败,请检测url及账号密码是否正确"); + ErrorCode OPC_CLOSE_CONNECT_FAILURE= new ErrorCode(1_003_000_015, "OPC断开连接失败"); + ErrorCode OPC_PARAMETER_DOES_NOT_EXIST= new ErrorCode(1_003_000_016, "连接关闭参数不存在"); - ErrorCode ENDPOINT_DOES_NOT_EXIS = new ErrorCode(1_003_000_000, "暂未设置设备端点"); - ErrorCode DEVICE_DOES_NOT_EXIST= new ErrorCode(1_003_000_000, "该采集设备不存在"); - ErrorCode DEVICE_ID_DOES_NOT_EXIST= new ErrorCode(1_003_000_000, "该设备ID不能为空"); - ErrorCode OPC_USERNAME_DOES_NOT_EXIST= new ErrorCode(1_003_000_000, "OPC连接账号不能为空"); - ErrorCode OPC_PASSWORD_DOES_NOT_EXIST= new ErrorCode(1_003_000_000, "OPC连接账号不能为空"); - ErrorCode OPC_CONNECT_FAILURE_DOES_NOT_EXIST= new ErrorCode(1_003_000_000, "OPC连接失败,请检测url及账号密码是否正确"); - ErrorCode OPC_CLOSE_CONNECT_FAILURE= new ErrorCode(1_003_000_000, "OPC断开连接失败"); - ErrorCode OPC_PARAMETER_DOES_NOT_EXIST= new ErrorCode(1_003_000_000, "连接关闭参数不存在"); - ErrorCode CREATE_TDENGINE_FAILURE= new ErrorCode(1_003_000_000, "创建Tdengine子表失败"); + // ======================================= 点位规则 ============================================ + ErrorCode DEVICE_POINT_RULES_NOT_EXISTS = new ErrorCode(1_004_000_001, "点位规则不存在"); + ErrorCode DEVICE_MODEL_RULES_NOT_EXISTS = new ErrorCode(1_004_000_002, "点位规则关联模型不存在"); + ErrorCode DEVICE_OPERATION_RECORD_NOT_EXISTS = new ErrorCode(1_004_000_003, "运行记录不存在"); + // ======================================= 配方 ============================================ ErrorCode RECIPE_NOT_EXISTS = new ErrorCode(1_003_000_000, "配方主不存在"); ErrorCode RECIPE_TYPE_NOT_EXISTS = new ErrorCode(1_003_000_000, "配方类型表(基础字典)不存在"); ErrorCode RECIPE_POINT_NOT_EXISTS = new ErrorCode(1_003_000_000, "手动配置参数表(绑定配方)不存在"); 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 4acfd8c8c4..6c9cb258e1 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 @@ -6,13 +6,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO; import cn.iocoder.yudao.module.infra.service.job.JobService; import cn.iocoder.yudao.module.iot.controller.admin.device.vo.*; import cn.iocoder.yudao.module.iot.controller.admin.devicecontactmodel.vo.DeviceContactModelPageReqVO; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceAttributeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.service.device.DeviceService; import cn.iocoder.yudao.module.iot.service.device.TDengineService; import com.fasterxml.jackson.core.JsonProcessingException; @@ -57,20 +56,6 @@ public class DeviceController { DeviceDO device = deviceService.createDevice(createReqVO); //初始化Td表 tDengineService.initDatabaseAndTable(device.getId()); - //添加定时任务 - // 创建 JobSaveReqVO 对象实例 -// JobSaveReqVO jobSaveReqVO = new JobSaveReqVO(); -// // 设置任务属性(根据您的业务需求设置具体值) -// jobSaveReqVO.setName("deviceJob_" + device.getId()); // 处理器名称唯一 -// jobSaveReqVO.setHandlerName("deviceJob"); // 处理器名称唯一 -// jobSaveReqVO.setHandlerParam("{\"deviceId\": \"" + device.getId() + "\"}"); // 使用设备ID作为参数值 -// jobSaveReqVO.setCronExpression("*/5 * * * * ?"); // CRON表达式,每5秒执行一次[1,3](@ref) -// jobSaveReqVO.setRetryCount(3); // 重试次数 -// jobSaveReqVO.setRetryInterval(5000); // 重试间隔(毫秒) -// jobSaveReqVO.setMonitorTimeout(30000); // 监控超时时间(毫秒) -// jobSaveReqVO.setDeviceId(device.getId()); -// -// jobService.createJob(jobSaveReqVO); return success(device); } @@ -103,8 +88,8 @@ public class DeviceController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('iot:device:query')") public CommonResult getDevice(@RequestParam("id") Long id) { - DeviceDO device = deviceService.getDevice(id); - return success(BeanUtils.toBean(device, DeviceRespVO.class)); + DeviceRespVO deviceRespVO = deviceService.getDevice(id); + return success(deviceRespVO); } @GetMapping("/page") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/scheduled/coretask/DeviceTask.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/scheduled/coretask/DeviceTask.java index 98a41f0e9d..d93f949fc8 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/scheduled/coretask/DeviceTask.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/scheduled/coretask/DeviceTask.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.util.opc.OpcUtils; import cn.iocoder.yudao.module.iot.controller.admin.device.enums.TaskTypeEnum; import cn.iocoder.yudao.module.iot.controller.admin.device.scheduled.core.Task; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper; import cn.iocoder.yudao.module.iot.service.device.TDengineService; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DevicePointRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DevicePointRespVO.java index 5d7359a35b..6544322556 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DevicePointRespVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DevicePointRespVO.java @@ -1,11 +1,9 @@ package cn.iocoder.yudao.module.iot.controller.admin.device.vo; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; -import com.alibaba.excel.annotation.ExcelProperty; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.ToString; import java.util.List; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DeviceRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DeviceRespVO.java index 2a7f992e7b..247b7e6a52 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DeviceRespVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/DeviceRespVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.device.vo; +import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.PointRulesRespVO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRulesDO; import com.alibaba.excel.annotation.write.style.ColumnWidth; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -100,4 +102,6 @@ public class DeviceRespVO { @ExcelProperty("密码") private String password; + @Schema(description = "点位规则") + private List pointRulesVOList; } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicecontactmodel/DeviceContactModelController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicecontactmodel/DeviceContactModelController.java index da68a4ded0..69b323483b 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicecontactmodel/DeviceContactModelController.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicecontactmodel/DeviceContactModelController.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.iot.controller.admin.devicecontactmodel; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -9,7 +9,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import javax.validation.constraints.*; import javax.validation.*; import javax.servlet.http.*; import java.util.*; @@ -87,6 +86,17 @@ public class DeviceContactModelController { return success(BeanUtils.toBean(pageResult, DeviceContactModelRespVO.class)); } + + @GetMapping("/list") + @Operation(summary = "获得采集设备模型-点位管理 列表") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')") + public CommonResult> getDeviceContactModelList(@RequestParam("id") Long id) { + List deviceModelAttribute = deviceContactModelService.getDeviceContactModelList(id); + return success(deviceModelAttribute); + } + + @GetMapping("/export-excel") @Operation(summary = "导出采集设备模型-点位管理 Excel") @PreAuthorize("@ss.hasPermission('iot:device-contact-model:export')") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/DeviceModelAttributeController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/DeviceModelAttributeController.java index 453cefd11e..cf7ba4b025 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/DeviceModelAttributeController.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/DeviceModelAttributeController.java @@ -78,6 +78,16 @@ public class DeviceModelAttributeController { return success(BeanUtils.toBean(deviceModelAttribute, DeviceModelAttributeRespVO.class)); } + @GetMapping("/list") + @Operation(summary = "获得采集设备模型-点位管理 列表") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')") + public CommonResult> getDeviceModelAttributeList(@RequestParam("id") Long id) { + List deviceModelAttribute = deviceModelAttributeService.getDeviceModelAttributeList(id); + return success(deviceModelAttribute); + } + + @GetMapping("/page") @Operation(summary = "获得采集设备模型-点位管理分页") @PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/DeviceModelRulesController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/DeviceModelRulesController.java new file mode 100644 index 0000000000..869693f3d3 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/DeviceModelRulesController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules; + +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSON; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelrules.DeviceModelRulesDO; +import cn.iocoder.yudao.module.iot.service.devicemodelrules.DeviceModelRulesService; + +@Tag(name = "管理后台 - 点位规则关联模型") +@RestController +@RequestMapping("/iot/device-model-rules") +@Validated +public class DeviceModelRulesController { + + @Resource + private DeviceModelRulesService deviceModelRulesService; + + @PostMapping("/create") + @Operation(summary = "创建点位规则关联模型") + @PreAuthorize("@ss.hasPermission('iot:device-model-rules:create')") + public CommonResult createDeviceModelRules(@Valid @RequestBody DeviceModelRulesSaveReqVO createReqVO) { + return success(deviceModelRulesService.createDeviceModelRules(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新点位规则关联模型") + @PreAuthorize("@ss.hasPermission('iot:device-model-rules:update')") + public CommonResult updateDeviceModelRules(@Valid @RequestBody DeviceModelRulesSaveReqVO updateReqVO) { + deviceModelRulesService.updateDeviceModelRules(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除点位规则关联模型") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('iot:device-model-rules:delete')") + public CommonResult deleteDeviceModelRules(@RequestParam("id") Long id) { + deviceModelRulesService.deleteDeviceModelRules(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得点位规则关联模型") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:device-model-rules:query')") + public CommonResult getDeviceModelRules(@RequestParam("id") Long id) { + DeviceModelRulesDO deviceModelRules = deviceModelRulesService.getDeviceModelRules(id); + DeviceModelRulesRespVO deviceModelRulesRespVO = BeanUtils.toBean(deviceModelRules, DeviceModelRulesRespVO.class); + if (StringUtils.isNotBlank(deviceModelRulesRespVO.getFieldRule())){ + List pointRulesVOList = JSON.parseArray(deviceModelRulesRespVO.getFieldRule(), PointRulesRespVO.class); + deviceModelRulesRespVO.setPointRulesVOList(pointRulesVOList); + } + return success(deviceModelRulesRespVO); + } + + @GetMapping("/page") + @Operation(summary = "获得点位规则关联模型分页") + @PreAuthorize("@ss.hasPermission('iot:device-model-rules:query')") + public CommonResult> getDeviceModelRulesPage(@Valid DeviceModelRulesPageReqVO pageReqVO) { + PageResult pageResult = deviceModelRulesService.getDeviceModelRulesPage(pageReqVO); + PageResult modelRulesRespVOPageResult = BeanUtils.toBean(pageResult, DeviceModelRulesRespVO.class); + for (DeviceModelRulesRespVO deviceModelRulesRespVO : modelRulesRespVOPageResult.getList()) { + if (StringUtils.isNotBlank(deviceModelRulesRespVO.getFieldRule())) { + List pointRulesVOList = JSON.parseArray(deviceModelRulesRespVO.getFieldRule(), PointRulesRespVO.class); + deviceModelRulesRespVO.setPointRulesVOList(pointRulesVOList); + } + } + + + return success(modelRulesRespVOPageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出点位规则关联模型 Excel") + @PreAuthorize("@ss.hasPermission('iot:device-model-rules:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDeviceModelRulesExcel(@Valid DeviceModelRulesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = deviceModelRulesService.getDeviceModelRulesPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "点位规则关联模型.xls", "数据", DeviceModelRulesRespVO.class, + BeanUtils.toBean(list, DeviceModelRulesRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesPageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesPageReqVO.java new file mode 100644 index 0000000000..413bf3b536 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 点位规则关联模型分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DeviceModelRulesPageReqVO extends PageParam { + + @Schema(description = "标识符") + private String identifier; + + @Schema(description = "名称", example = "王五") + private String fieldName; + + @Schema(description = "规则") + private String fieldRule; + + @Schema(description = "默认值") + private String defaultValue; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "关联设备模型Id", example = "13397") + private Long modelId; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesRespVO.java new file mode 100644 index 0000000000..61204d148b --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesRespVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 点位规则关联模型 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DeviceModelRulesRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10916") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "标识符") + @ExcelProperty("标识符") + private String identifier; + + @Schema(description = "名称", example = "王五") + @ExcelProperty("名称") + private String fieldName; + + @Schema(description = "规则") + @ExcelProperty("规则") + private String fieldRule; + + @Schema(description = "默认值") + @ExcelProperty("默认值") + private String defaultValue; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "关联设备模型Id", example = "13397") + @ExcelProperty("关联设备模型Id") + private Long modelId; + + @Schema(description = "点位规则") + private List pointRulesVOList; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesSaveReqVO.java new file mode 100644 index 0000000000..632db3bbae --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/DeviceModelRulesSaveReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo; + +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 点位规则关联模型新增/修改 Request VO") +@Data +public class DeviceModelRulesSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10916") + private Long id; + + @Schema(description = "标识符") + private String identifier; + + @Schema(description = "名称", example = "王五") + private String fieldName; + + @Schema(description = "规则") + private String fieldRule; + + @Schema(description = "默认值") + private String defaultValue; + + @Schema(description = "关联设备模型Id", example = "13397") + private Long modelId; + + @Schema(description = "点位规则列表", implementation = PointRulesRespVO.class) + private List pointRulesVOList; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/PointRulesRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/PointRulesRespVO.java new file mode 100644 index 0000000000..737214e753 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/PointRulesRespVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 点位具体规则 Resp VO") +@Data +public class PointRulesRespVO { + + @Schema(description = "点位规则") + private String rule; + + @Schema(description = "点位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10916") + private Long id; + + @Schema(description = "符号") + private String operator; + + @Schema(description = "符号值") + private String operatorRule; + + @Schema(description = "规则值") + private String ruleValue; +} diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/RulesRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/RulesRespVO.java new file mode 100644 index 0000000000..ea3bed4117 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelrules/vo/RulesRespVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo; + + +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "管理后台 - 点位规则 Resp VO") +@Data +public class RulesRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10916") + private Long id; + + @Schema(description = "标识符") + private String identifier; + + @Schema(description = "名称") + private String fieldName; + + @Schema(description = "默认值") + private String defaultValue; + + @ArraySchema(schema = @Schema(implementation = PointRulesRespVO.class)) + private List pointRulesVOList; + +} diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/DeviceOperationRecordController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/DeviceOperationRecordController.java new file mode 100644 index 0000000000..d16e8d3efa --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/DeviceOperationRecordController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.iot.controller.admin.deviceoperationrecord; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.iot.controller.admin.deviceoperationrecord.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.deviceoperationrecord.DeviceOperationRecordDO; +import cn.iocoder.yudao.module.iot.service.deviceoperationrecord.DeviceOperationRecordService; + +@Tag(name = "管理后台 - 运行记录") +@RestController +@RequestMapping("/iot/device-operation-record") +@Validated +public class DeviceOperationRecordController { + + @Resource + private DeviceOperationRecordService deviceOperationRecordService; + + @PostMapping("/create") + @Operation(summary = "创建运行记录") + @PreAuthorize("@ss.hasPermission('iot:device-operation-record:create')") + public CommonResult createDeviceOperationRecord(@Valid @RequestBody DeviceOperationRecordSaveReqVO createReqVO) { + return success(deviceOperationRecordService.createDeviceOperationRecord(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新运行记录") + @PreAuthorize("@ss.hasPermission('iot:device-operation-record:update')") + public CommonResult updateDeviceOperationRecord(@Valid @RequestBody DeviceOperationRecordSaveReqVO updateReqVO) { + deviceOperationRecordService.updateDeviceOperationRecord(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除运行记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('iot:device-operation-record:delete')") + public CommonResult deleteDeviceOperationRecord(@RequestParam("id") Long id) { + deviceOperationRecordService.deleteDeviceOperationRecord(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得运行记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:device-operation-record:query')") + public CommonResult getDeviceOperationRecord(@RequestParam("id") Long id) { + DeviceOperationRecordDO deviceOperationRecord = deviceOperationRecordService.getDeviceOperationRecord(id); + return success(BeanUtils.toBean(deviceOperationRecord, DeviceOperationRecordRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得运行记录分页") + @PreAuthorize("@ss.hasPermission('iot:device-operation-record:query')") + public CommonResult> getDeviceOperationRecordPage(@Valid DeviceOperationRecordPageReqVO pageReqVO) { + PageResult pageResult = deviceOperationRecordService.getDeviceOperationRecordPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DeviceOperationRecordRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出运行记录 Excel") + @PreAuthorize("@ss.hasPermission('iot:device-operation-record:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDeviceOperationRecordExcel(@Valid DeviceOperationRecordPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = deviceOperationRecordService.getDeviceOperationRecordPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "运行记录.xls", "数据", DeviceOperationRecordRespVO.class, + BeanUtils.toBean(list, DeviceOperationRecordRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordPageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordPageReqVO.java new file mode 100644 index 0000000000..2f094875b3 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.iot.controller.admin.deviceoperationrecord.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 运行记录分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DeviceOperationRecordPageReqVO extends PageParam { + + @Schema(description = "设备ID", example = "18965") + private Long deviceId; + + @Schema(description = "模型ID", example = "26876") + private Long modelId; + + @Schema(description = "规则值") + private String rule; + + @Schema(description = "地址值") + private String addressValue; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "类型 1-RUNNING 2-ALRAM", example = "2") + private Integer recordType; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordRespVO.java new file mode 100644 index 0000000000..4aaca04ea8 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.iot.controller.admin.deviceoperationrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 运行记录 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DeviceOperationRecordRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4283") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "设备ID", example = "18965") + @ExcelProperty("设备ID") + private Long deviceId; + + @Schema(description = "模型ID", example = "26876") + @ExcelProperty("模型ID") + private Long modelId; + + @Schema(description = "规则值") + @ExcelProperty("规则值") + private String rule; + + @Schema(description = "地址值") + @ExcelProperty("地址值") + private String addressValue; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "类型 1-RUNNING 2-ALRAM", example = "2") + @ExcelProperty("类型 1-RUNNING 2-ALRAM") + private Integer recordType; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordSaveReqVO.java new file mode 100644 index 0000000000..5c7aec7f07 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/deviceoperationrecord/vo/DeviceOperationRecordSaveReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.iot.controller.admin.deviceoperationrecord.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 运行记录新增/修改 Request VO") +@Data +public class DeviceOperationRecordSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4283") + private Long id; + + @Schema(description = "设备ID", example = "18965") + private Long deviceId; + + @Schema(description = "模型ID", example = "26876") + private Long modelId; + + @Schema(description = "规则值") + private String rule; + + @Schema(description = "地址值") + private String addressValue; + + @Schema(description = "类型 1-RUNNING 2-ALRAM", example = "2") + private Integer recordType; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/DevicePointRulesController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/DevicePointRulesController.java new file mode 100644 index 0000000000..1debf70962 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/DevicePointRulesController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicepointrules; + +import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.PointRulesRespVO; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSON; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.iot.controller.admin.devicepointrules.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRulesDO; +import cn.iocoder.yudao.module.iot.service.devicepointrules.DevicePointRulesService; + +@Tag(name = "管理后台 - 点位规则") +@RestController +@RequestMapping("/iot/device-point-rules") +@Validated +public class DevicePointRulesController { + + @Resource + private DevicePointRulesService devicePointRulesService; + + @PostMapping("/create") + @Operation(summary = "创建点位规则") + @PreAuthorize("@ss.hasPermission('iot:device-point-rules:create')") + public CommonResult createDevicePointRules(@Valid @RequestBody DevicePointRulesSaveReqVO createReqVO) { + return success(devicePointRulesService.createDevicePointRules(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新点位规则") + @PreAuthorize("@ss.hasPermission('iot:device-point-rules:update')") + public CommonResult updateDevicePointRules(@Valid @RequestBody DevicePointRulesSaveReqVO updateReqVO) { + devicePointRulesService.updateDevicePointRules(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除点位规则") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('iot:device-point-rules:delete')") + public CommonResult deleteDevicePointRules(@RequestParam("id") Long id) { + devicePointRulesService.deleteDevicePointRules(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得点位规则") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:device-point-rules:query')") + public CommonResult getDevicePointRules(@RequestParam("id") Long id) { + DevicePointRulesDO devicePointRules = devicePointRulesService.getDevicePointRules(id); + return success(BeanUtils.toBean(devicePointRules, DevicePointRulesRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得点位规则分页") + @PreAuthorize("@ss.hasPermission('iot:device-point-rules:query')") + public CommonResult> getDevicePointRulesPage(@Valid DevicePointRulesPageReqVO pageReqVO) { + PageResult pageResult = devicePointRulesService.getDevicePointRulesPage(pageReqVO); + PageResult rulesRespVOPageResult = BeanUtils.toBean(pageResult, DevicePointRulesRespVO.class); + for (DevicePointRulesRespVO devicePointRulesRespVO : rulesRespVOPageResult.getList()) { + if (StringUtils.isNotBlank(devicePointRulesRespVO.getFieldRule())) { + List pointRulesVOList = JSON.parseArray(devicePointRulesRespVO.getFieldRule(), PointRulesRespVO.class); + devicePointRulesRespVO.setPointRulesVOList(pointRulesVOList); + } + + } + + return success(rulesRespVOPageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出点位规则 Excel") + @PreAuthorize("@ss.hasPermission('iot:device-point-rules:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDevicePointRulesExcel(@Valid DevicePointRulesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = devicePointRulesService.getDevicePointRulesPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "点位规则.xls", "数据", DevicePointRulesRespVO.class, + BeanUtils.toBean(list, DevicePointRulesRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesPageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesPageReqVO.java new file mode 100644 index 0000000000..90a9ca355b --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicepointrules.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 点位规则分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DevicePointRulesPageReqVO extends PageParam { + + @Schema(description = "标识符") + private String identifier; + + @Schema(description = "名称", example = "赵六") + private String fieldName; + + @Schema(description = "规则") + private String fieldRule; + + @Schema(description = "默认值") + private String defaultValue; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "设备模型Id", example = "19582") + private Long deviceId; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesRespVO.java new file mode 100644 index 0000000000..54c4ffde50 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicepointrules.vo; + +import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.PointRulesRespVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 点位规则 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DevicePointRulesRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13120") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "标识符") + @ExcelProperty("标识符") + private String identifier; + + @Schema(description = "名称", example = "赵六") + @ExcelProperty("名称") + private String fieldName; + + @Schema(description = "规则") + @ExcelProperty("规则") + private String fieldRule; + + @Schema(description = "默认值") + @ExcelProperty("默认值") + private String defaultValue; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "设备模型Id", example = "19582") + @ExcelProperty("设备模型Id") + private Long deviceId; + + @Schema(description = "点位规则") + private List pointRulesVOList; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesSaveReqVO.java new file mode 100644 index 0000000000..af3a4771ce --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicepointrules/vo/DevicePointRulesSaveReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.iot.controller.admin.devicepointrules.vo; + +import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.PointRulesRespVO; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 点位规则新增/修改 Request VO") +@Data +public class DevicePointRulesSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13120") + private Long id; + + @Schema(description = "标识符") + private String identifier; + + @Schema(description = "名称", example = "赵六") + private String fieldName; + + @Schema(description = "规则") + private String fieldRule; + + @Schema(description = "默认值") + private String defaultValue; + + @Schema(description = "设备模型Id", example = "19582") + private Long deviceId; + + @Schema(description = "点位规则列表", implementation = PointRulesRespVO.class) + private List pointRulesVOList; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipedevicerecord/RecipeDeviceRecordController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipedevicerecord/RecipeDeviceRecordController.java index 40c8818530..a0ba78a9d4 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipedevicerecord/RecipeDeviceRecordController.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipedevicerecord/RecipeDeviceRecordController.java @@ -1,16 +1,9 @@ package cn.iocoder.yudao.module.iot.controller.admin.recipedevicerecord; -import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.RecipePageReqVO; -import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.RecipeRespVO; -import cn.iocoder.yudao.module.iot.controller.admin.recipepointrecord.vo.RecipePointRecordSaveReqVO; -import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.recipeplandetail.RecipePlanDetailDO; -import cn.iocoder.yudao.module.iot.dal.dataobject.recipepointrecord.RecipePointRecordDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.service.device.DeviceService; import cn.iocoder.yudao.module.iot.service.recipe.RecipeService; import cn.iocoder.yudao.module.iot.service.recipeplandetail.RecipePlanDetailService; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -19,7 +12,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import javax.validation.constraints.*; import javax.validation.*; import javax.servlet.http.*; import java.util.*; @@ -42,17 +34,8 @@ import cn.iocoder.yudao.module.iot.service.recipedevicerecord.RecipeDeviceRecord import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.web.bind.annotation.*; - - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import cn.iocoder.yudao.module.iot.controller.admin.recipedevicerecord.vo.*; - // 新增必要的导入 import cn.iocoder.yudao.module.iot.service.recipedeviceattribute.RecipeDeviceAttributeService; import cn.iocoder.yudao.module.iot.service.device.TDengineService; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/devicecontactmodel/DeviceContactModelDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicecontactmodel/DeviceContactModelDO.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/devicecontactmodel/DeviceContactModelDO.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicecontactmodel/DeviceContactModelDO.java index decba95841..458f0fefc1 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/devicecontactmodel/DeviceContactModelDO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicecontactmodel/DeviceContactModelDO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.iot.dal.devicecontactmodel; +package cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicemodelrules/DeviceModelRulesDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicemodelrules/DeviceModelRulesDO.java new file mode 100644 index 0000000000..08339791c6 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicemodelrules/DeviceModelRulesDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelrules; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 点位规则关联模型 DO + * + * @author 必硕科技 + */ +@TableName("iot_device_model_rules") +@KeySequence("iot_device_model_rules_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DeviceModelRulesDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 标识符 + */ + private String identifier; + /** + * 名称 + */ + private String fieldName; + /** + * 规则 + */ + private String fieldRule; + /** + * 默认值 + */ + private String defaultValue; + /** + * 关联设备模型Id + */ + private Long modelId; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/deviceoperationrecord/DeviceOperationRecordDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/deviceoperationrecord/DeviceOperationRecordDO.java new file mode 100644 index 0000000000..7211335d5e --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/deviceoperationrecord/DeviceOperationRecordDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.iot.dal.dataobject.deviceoperationrecord; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 运行记录 DO + * + * @author 必硕科技 + */ +@TableName("iot_device_operation_record") +@KeySequence("iot_device_operation_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DeviceOperationRecordDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 设备ID + */ + private Long deviceId; + /** + * 模型ID + */ + private Long modelId; + /** + * 规则值 + */ + private String rule; + /** + * 地址值 + */ + private String addressValue; + /** + * 类型 1-RUNNING 2-ALRAM + */ + private Integer recordType; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicepointrules/DevicePointRulesDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicepointrules/DevicePointRulesDO.java new file mode 100644 index 0000000000..a621cc44ea --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/devicepointrules/DevicePointRulesDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 点位规则 DO + * + * @author 必硕科技 + */ +@TableName("iot_device_point_rules") +@KeySequence("iot_device_point_rules_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DevicePointRulesDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 标识符 + */ + private String identifier; + /** + * 名称 + */ + private String fieldName; + /** + * 规则 + */ + private String fieldRule; + /** + * 默认值 + */ + private String defaultValue; + /** + * 设备模型Id + */ + private Long deviceId; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceattributetype/DeviceAttributeTypeMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceattributetype/DeviceAttributeTypeMapper.java index a01f15cb23..c500e3c61a 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceattributetype/DeviceAttributeTypeMapper.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceattributetype/DeviceAttributeTypeMapper.java @@ -3,14 +3,10 @@ package cn.iocoder.yudao.module.iot.dal.mysql.deviceattributetype; import java.util.*; import java.util.stream.Collectors; -import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceAttributeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO; -import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; import com.alibaba.excel.util.StringUtils; import org.apache.ibatis.annotations.Mapper; import cn.iocoder.yudao.module.iot.controller.admin.deviceattributetype.vo.*; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicecontactmodel/DeviceContactModelMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicecontactmodel/DeviceContactModelMapper.java index a533c4c35c..dba362301d 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicecontactmodel/DeviceContactModelMapper.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicecontactmodel/DeviceContactModelMapper.java @@ -7,10 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.iot.controller.admin.devicemodelattribute.vo.DeviceModelAttributePageReqVO; -import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; -import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import com.alibaba.excel.util.StringUtils; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicemodelrules/DeviceModelRulesMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicemodelrules/DeviceModelRulesMapper.java new file mode 100644 index 0000000000..e044e29dc2 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicemodelrules/DeviceModelRulesMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.iot.dal.mysql.devicemodelrules; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelrules.DeviceModelRulesDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.*; + +/** + * 点位规则关联模型 Mapper + * + * @author 必硕科技 + */ +@Mapper +public interface DeviceModelRulesMapper extends BaseMapperX { + + default PageResult selectPage(DeviceModelRulesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DeviceModelRulesDO::getIdentifier, reqVO.getIdentifier()) + .likeIfPresent(DeviceModelRulesDO::getFieldName, reqVO.getFieldName()) + .eqIfPresent(DeviceModelRulesDO::getFieldRule, reqVO.getFieldRule()) + .eqIfPresent(DeviceModelRulesDO::getDefaultValue, reqVO.getDefaultValue()) + .betweenIfPresent(DeviceModelRulesDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(DeviceModelRulesDO::getModelId, reqVO.getModelId()) + .orderByDesc(DeviceModelRulesDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceoperationrecord/DeviceOperationRecordMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceoperationrecord/DeviceOperationRecordMapper.java new file mode 100644 index 0000000000..f5c7c17aca --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceoperationrecord/DeviceOperationRecordMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.iot.dal.mysql.deviceoperationrecord; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.iot.dal.dataobject.deviceoperationrecord.DeviceOperationRecordDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.iot.controller.admin.deviceoperationrecord.vo.*; + +/** + * 运行记录 Mapper + * + * @author 必硕科技 + */ +@Mapper +public interface DeviceOperationRecordMapper extends BaseMapperX { + + default PageResult selectPage(DeviceOperationRecordPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DeviceOperationRecordDO::getDeviceId, reqVO.getDeviceId()) + .eqIfPresent(DeviceOperationRecordDO::getModelId, reqVO.getModelId()) + .eqIfPresent(DeviceOperationRecordDO::getRule, reqVO.getRule()) + .eqIfPresent(DeviceOperationRecordDO::getAddressValue, reqVO.getAddressValue()) + .betweenIfPresent(DeviceOperationRecordDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(DeviceOperationRecordDO::getRecordType, reqVO.getRecordType()) + .orderByDesc(DeviceOperationRecordDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicepointrules/DevicePointRulesMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicepointrules/DevicePointRulesMapper.java new file mode 100644 index 0000000000..d02d568694 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/devicepointrules/DevicePointRulesMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.iot.dal.mysql.devicepointrules; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRulesDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.iot.controller.admin.devicepointrules.vo.*; + +/** + * 点位规则 Mapper + * + * @author 必硕科技 + */ +@Mapper +public interface DevicePointRulesMapper extends BaseMapperX { + + default PageResult selectPage(DevicePointRulesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DevicePointRulesDO::getIdentifier, reqVO.getIdentifier()) + .likeIfPresent(DevicePointRulesDO::getFieldName, reqVO.getFieldName()) + .eqIfPresent(DevicePointRulesDO::getFieldRule, reqVO.getFieldRule()) + .eqIfPresent(DevicePointRulesDO::getDefaultValue, reqVO.getDefaultValue()) + .betweenIfPresent(DevicePointRulesDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(DevicePointRulesDO::getDeviceId, reqVO.getDeviceId()) + .orderByDesc(DevicePointRulesDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/job/DeviceJob.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/job/DeviceJob.java index 897ae10dd5..c549cded1c 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/job/DeviceJob.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/job/DeviceJob.java @@ -1,30 +1,19 @@ package cn.iocoder.yudao.module.iot.job; -import cn.iocoder.yudao.framework.common.util.opc.OpcUtils; import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; -import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; -import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; -import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper; -import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelattribute.DeviceModelAttributeMapper; -import cn.iocoder.yudao.module.iot.service.device.DeviceService; import cn.iocoder.yudao.module.iot.service.device.TDengineService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Date; -import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_DOES_NOT_EXIST; @Slf4j @Component 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 d333084b3e..d75f6ceb4b 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 @@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.iot.controller.admin.device.vo.*; import cn.iocoder.yudao.module.iot.controller.admin.devicecontactmodel.vo.DeviceContactModelPageReqVO; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceAttributeDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import com.fasterxml.jackson.core.JsonProcessingException; import javax.validation.Valid; @@ -52,7 +52,7 @@ public interface DeviceService { * @param id 编号 * @return 物联设备 */ - DeviceDO getDevice(Long id); + DeviceRespVO getDevice(Long id); DeviceDO getDeviceByName(String name); DeviceDO getDeviceByTopic(String topic); 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 16b5658ac5..051805853e 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 @@ -15,13 +15,17 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO; import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelrules.DeviceModelRulesDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRulesDO; import cn.iocoder.yudao.module.iot.dal.dataobject.mqttdatarecord.MqttDataRecordDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper; import cn.iocoder.yudao.module.iot.dal.mysql.deviceattributetype.DeviceAttributeTypeMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicemodel.DeviceModelMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelattribute.DeviceModelAttributeMapper; +import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelrules.DeviceModelRulesMapper; +import cn.iocoder.yudao.module.iot.dal.mysql.devicepointrules.DevicePointRulesMapper; import cn.iocoder.yudao.module.iot.dal.mysql.mqttdatarecord.MqttDataRecordMapper; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceAttributeDO; import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceAttributeMapper; @@ -92,6 +96,13 @@ public class DeviceServiceImpl implements DeviceService { @Resource private TaskSchedulerManager taskSchedulerManager; + @Resource + private DeviceModelRulesMapper deviceModelRulesMapper; + + @Resource + private DevicePointRulesMapper devicePointRulesMapper; + + @Override @Transactional(rollbackFor = Exception.class) public DeviceDO createDevice(DeviceSaveReqVO createReqVO) { @@ -111,6 +122,8 @@ public class DeviceServiceImpl implements DeviceService { device.setTenantId("1"); deviceMapper.insert(device); + + //新增模板点位 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(DeviceModelAttributeDO::getDeviceModelId,createReqVO.getDeviceModelId()); List deviceModelAttributeDOS = deviceModelAttributeMapper.selectList(lambdaQueryWrapper); @@ -130,10 +143,32 @@ public class DeviceServiceImpl implements DeviceService { //创建时序数据库 // createTDengine(device.getId()); - // 返回 + //新增规则点位 + addNewRulePoints(createReqVO.getDeviceModelId(),device.getId()); + + return device; } + private void addNewRulePoints(Long deviceModelId,Long deviceId) { + + List devicePointRulesDOList = new ArrayList<>(); + DeviceModelDO deviceModelDO = deviceModelMapper.selectById(deviceModelId); + if(deviceModelDO == null){ + return; + } + List deviceModelRulesDOList = deviceModelRulesMapper.selectList(Wrappers.lambdaQuery() + .eq(DeviceModelRulesDO::getModelId, deviceModelDO.getId())); + + for (DeviceModelRulesDO deviceModelRulesDO : deviceModelRulesDOList) { + DevicePointRulesDO devicePointRulesDO = new DevicePointRulesDO(); + BeanUtils.copyProperties(deviceModelRulesDO, devicePointRulesDO); + devicePointRulesDO.setDeviceId(deviceId); + devicePointRulesDOList.add(devicePointRulesDO); + } + devicePointRulesMapper.insertBatch(devicePointRulesDOList); + } + //@Scheduled(cron="0/5 * * * * ? ") //每1秒执行一次 public void updateDeviceStatus(){ List list = deviceMapper.selectList(); @@ -191,8 +226,20 @@ public class DeviceServiceImpl implements DeviceService { } @Override - public DeviceDO getDevice(Long id) { - return deviceMapper.selectById(id); + public DeviceRespVO getDevice(Long id) { + DeviceDO deviceDO = deviceMapper.selectById(id); + DeviceRespVO deviceRespVO = BeanUtils.toBean(deviceDO, DeviceRespVO.class); + List devicePointRulesDOList = devicePointRulesMapper.selectList(Wrappers.lambdaQuery() + .eq(DevicePointRulesDO::getDeviceId, id)); + + //设置点位规则 + if (!devicePointRulesDOList.isEmpty()){ + + deviceRespVO.setPointRulesVOList(devicePointRulesDOList); + } + + return deviceRespVO; + } @Override public DeviceDO getDeviceByName(String name) { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceattributetype/DeviceAttributeTypeServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceattributetype/DeviceAttributeTypeServiceImpl.java index f5c9aae5d6..d130f345f7 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceattributetype/DeviceAttributeTypeServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceattributetype/DeviceAttributeTypeServiceImpl.java @@ -1,16 +1,14 @@ package cn.iocoder.yudao.module.iot.service.deviceattributetype; import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper; -import cn.iocoder.yudao.module.iot.dal.mysql.devicemodel.DeviceModelMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelattribute.DeviceModelAttributeMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import javax.validation.constraints.NotEmpty; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; @@ -19,7 +17,6 @@ import java.util.*; import cn.iocoder.yudao.module.iot.controller.admin.deviceattributetype.vo.*; import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.iot.dal.mysql.deviceattributetype.DeviceAttributeTypeMapper; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicecontactmodel/DeviceContactModelService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicecontactmodel/DeviceContactModelService.java index 642f073c25..8eca7be5bc 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicecontactmodel/DeviceContactModelService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicecontactmodel/DeviceContactModelService.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.devicecontactmodel; import javax.validation.*; import cn.iocoder.yudao.module.iot.controller.admin.devicecontactmodel.vo.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import java.util.List; @@ -52,4 +52,5 @@ public interface DeviceContactModelService { */ PageResult getDeviceContactModelPage(DeviceContactModelPageReqVO pageReqVO); + List getDeviceContactModelList(Long id); } \ No newline at end of file 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 92009d5576..a57283a114 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 @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.iot.service.devicecontactmodel; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -73,4 +74,9 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService return deviceContactModelMapper.selectPage(pageReqVO); } + @Override + public List getDeviceContactModelList(Long id) { + return deviceContactModelMapper.selectList(Wrappers.lambdaQuery().eq(DeviceContactModelDO::getDeviceId,id)); + } + } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodel/DeviceModelServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodel/DeviceModelServiceImpl.java index 61c9ba69d1..2a0f46ef7c 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodel/DeviceModelServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodel/DeviceModelServiceImpl.java @@ -4,9 +4,12 @@ import cn.hutool.core.bean.BeanUtil; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelrules.DeviceModelRulesDO; import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelattribute.DeviceModelAttributeMapper; +import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelrules.DeviceModelRulesMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.checkerframework.checker.units.qual.A; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -43,6 +46,9 @@ public class DeviceModelServiceImpl implements DeviceModelService { @Resource private DeviceModelAttributeMapper deviceModelAttributeMapper; + @Resource + private DeviceModelRulesMapper deviceModelRulesMapper; + @Override public Long createDeviceModel(DeviceModelSaveReqVO createReqVO) { //编码重复判断 @@ -57,10 +63,37 @@ public class DeviceModelServiceImpl implements DeviceModelService { // 插入 DeviceModelDO deviceModel = BeanUtils.toBean(createReqVO, DeviceModelDO.class); deviceModelMapper.insert(deviceModel); + + //插入点位规则 + insertionPointRule(deviceModel.getId()); + + // 返回 return deviceModel.getId(); } + private void insertionPointRule(Long id) { + //TODO 待优化RUNNING及ALRAM + List deviceModelRulesDOList = new ArrayList<>(); + + DeviceModelRulesDO deviceModelRulesDO = new DeviceModelRulesDO(); + deviceModelRulesDO.setIdentifier("RUNNING"); + deviceModelRulesDO.setFieldName("运行"); + deviceModelRulesDO.setDefaultValue("运行"); + deviceModelRulesDO.setModelId(id); + deviceModelRulesDOList.add(deviceModelRulesDO); + + DeviceModelRulesDO deviceModelRulesDO1 = new DeviceModelRulesDO(); + deviceModelRulesDO1.setIdentifier("ALARM"); + deviceModelRulesDO1.setFieldName("报警"); + deviceModelRulesDO1.setDefaultValue("报警"); + deviceModelRulesDO1.setModelId(id); + deviceModelRulesDOList.add(deviceModelRulesDO1); + + deviceModelRulesMapper.insertBatch(deviceModelRulesDOList); + + } + @Override public void updateDeviceModel(DeviceModelSaveReqVO updateReqVO) { //编码重复判断 diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeService.java index e2f867dd60..e8ac483ad9 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeService.java @@ -53,4 +53,6 @@ public interface DeviceModelAttributeService { PageResult getDeviceModelAttributePage(DeviceModelAttributePageReqVO pageReqVO); List> operationAnalysisDetails(Long deviceId, Long modelId,String collectionStartTime, String collectionEndTime); + + List getDeviceModelAttributeList(Long id); } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java index 5f673ab6ac..09a0b28b43 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttr import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO; import cn.iocoder.yudao.module.iot.dal.mysql.deviceattributetype.DeviceAttributeTypeMapper; import cn.iocoder.yudao.module.iot.service.device.TDengineService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; @@ -15,6 +16,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.sql.Timestamp; +import java.sql.Wrapper; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -201,5 +203,11 @@ public class DeviceModelAttributeServiceImpl implements DeviceModelAttributeServ return resultList; } + @Override + public List getDeviceModelAttributeList(Long id) { + + return deviceModelAttributeMapper.selectList(Wrappers.lambdaQuery().eq(DeviceModelAttributeDO::getDeviceModelId,id)); + } + } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelrules/DeviceModelRulesService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelrules/DeviceModelRulesService.java new file mode 100644 index 0000000000..7a352736fb --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelrules/DeviceModelRulesService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.iot.service.devicemodelrules; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelrules.DeviceModelRulesDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 点位规则关联模型 Service 接口 + * + * @author 必硕科技 + */ +public interface DeviceModelRulesService { + + /** + * 创建点位规则关联模型 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDeviceModelRules(@Valid DeviceModelRulesSaveReqVO createReqVO); + + /** + * 更新点位规则关联模型 + * + * @param updateReqVO 更新信息 + */ + void updateDeviceModelRules(@Valid DeviceModelRulesSaveReqVO updateReqVO); + + /** + * 删除点位规则关联模型 + * + * @param id 编号 + */ + void deleteDeviceModelRules(Long id); + + /** + * 获得点位规则关联模型 + * + * @param id 编号 + * @return 点位规则关联模型 + */ + DeviceModelRulesDO getDeviceModelRules(Long id); + + /** + * 获得点位规则关联模型分页 + * + * @param pageReqVO 分页查询 + * @return 点位规则关联模型分页 + */ + PageResult getDeviceModelRulesPage(DeviceModelRulesPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelrules/DeviceModelRulesServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelrules/DeviceModelRulesServiceImpl.java new file mode 100644 index 0000000000..6bb63a8992 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelrules/DeviceModelRulesServiceImpl.java @@ -0,0 +1,81 @@ +package cn.iocoder.yudao.module.iot.service.devicemodelrules; + +import com.alibaba.fastjson.JSON; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelrules.DeviceModelRulesDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelrules.DeviceModelRulesMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; + +/** + * 点位规则关联模型 Service 实现类 + * + * @author 必硕科技 + */ +@Service +@Validated +public class DeviceModelRulesServiceImpl implements DeviceModelRulesService { + + @Resource + private DeviceModelRulesMapper deviceModelRulesMapper; + + @Override + public Long createDeviceModelRules(DeviceModelRulesSaveReqVO createReqVO) { + // 插入 + DeviceModelRulesDO deviceModelRules = BeanUtils.toBean(createReqVO, DeviceModelRulesDO.class); + deviceModelRulesMapper.insert(deviceModelRules); + // 返回 + return deviceModelRules.getId(); + } + + @Override + public void updateDeviceModelRules(DeviceModelRulesSaveReqVO updateReqVO) { + // 校验存在 + validateDeviceModelRulesExists(updateReqVO.getId()); + // 更新 + DeviceModelRulesDO updateObj = BeanUtils.toBean(updateReqVO, DeviceModelRulesDO.class); + if (!updateReqVO.getPointRulesVOList().isEmpty()){ + String jsonString = JSON.toJSONString(updateReqVO.getPointRulesVOList()); + updateObj.setFieldRule(jsonString); + + } + + deviceModelRulesMapper.updateById(updateObj); + } + + @Override + public void deleteDeviceModelRules(Long id) { + // 校验存在 + validateDeviceModelRulesExists(id); + // 删除 + deviceModelRulesMapper.deleteById(id); + } + + private void validateDeviceModelRulesExists(Long id) { + if (deviceModelRulesMapper.selectById(id) == null) { + throw exception(DEVICE_MODEL_RULES_NOT_EXISTS); + } + } + + @Override + public DeviceModelRulesDO getDeviceModelRules(Long id) { + return deviceModelRulesMapper.selectById(id); + } + + @Override + public PageResult getDeviceModelRulesPage(DeviceModelRulesPageReqVO pageReqVO) { + return deviceModelRulesMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceoperationrecord/DeviceOperationRecordService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceoperationrecord/DeviceOperationRecordService.java new file mode 100644 index 0000000000..5e3af18836 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceoperationrecord/DeviceOperationRecordService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.iot.service.deviceoperationrecord; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.iot.controller.admin.deviceoperationrecord.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.deviceoperationrecord.DeviceOperationRecordDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 运行记录 Service 接口 + * + * @author 必硕科技 + */ +public interface DeviceOperationRecordService { + + /** + * 创建运行记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDeviceOperationRecord(@Valid DeviceOperationRecordSaveReqVO createReqVO); + + /** + * 更新运行记录 + * + * @param updateReqVO 更新信息 + */ + void updateDeviceOperationRecord(@Valid DeviceOperationRecordSaveReqVO updateReqVO); + + /** + * 删除运行记录 + * + * @param id 编号 + */ + void deleteDeviceOperationRecord(Long id); + + /** + * 获得运行记录 + * + * @param id 编号 + * @return 运行记录 + */ + DeviceOperationRecordDO getDeviceOperationRecord(Long id); + + /** + * 获得运行记录分页 + * + * @param pageReqVO 分页查询 + * @return 运行记录分页 + */ + PageResult getDeviceOperationRecordPage(DeviceOperationRecordPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceoperationrecord/DeviceOperationRecordServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceoperationrecord/DeviceOperationRecordServiceImpl.java new file mode 100644 index 0000000000..52469c3c0b --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/deviceoperationrecord/DeviceOperationRecordServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.iot.service.deviceoperationrecord; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.iot.controller.admin.deviceoperationrecord.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.deviceoperationrecord.DeviceOperationRecordDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.iot.dal.mysql.deviceoperationrecord.DeviceOperationRecordMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; + +/** + * 运行记录 Service 实现类 + * + * @author 必硕科技 + */ +@Service +@Validated +public class DeviceOperationRecordServiceImpl implements DeviceOperationRecordService { + + @Resource + private DeviceOperationRecordMapper deviceOperationRecordMapper; + + @Override + public Long createDeviceOperationRecord(DeviceOperationRecordSaveReqVO createReqVO) { + // 插入 + DeviceOperationRecordDO deviceOperationRecord = BeanUtils.toBean(createReqVO, DeviceOperationRecordDO.class); + deviceOperationRecordMapper.insert(deviceOperationRecord); + // 返回 + return deviceOperationRecord.getId(); + } + + @Override + public void updateDeviceOperationRecord(DeviceOperationRecordSaveReqVO updateReqVO) { + // 校验存在 + validateDeviceOperationRecordExists(updateReqVO.getId()); + // 更新 + DeviceOperationRecordDO updateObj = BeanUtils.toBean(updateReqVO, DeviceOperationRecordDO.class); + deviceOperationRecordMapper.updateById(updateObj); + } + + @Override + public void deleteDeviceOperationRecord(Long id) { + // 校验存在 + validateDeviceOperationRecordExists(id); + // 删除 + deviceOperationRecordMapper.deleteById(id); + } + + private void validateDeviceOperationRecordExists(Long id) { + if (deviceOperationRecordMapper.selectById(id) == null) { + throw exception(DEVICE_OPERATION_RECORD_NOT_EXISTS); + } + } + + @Override + public DeviceOperationRecordDO getDeviceOperationRecord(Long id) { + return deviceOperationRecordMapper.selectById(id); + } + + @Override + public PageResult getDeviceOperationRecordPage(DeviceOperationRecordPageReqVO pageReqVO) { + return deviceOperationRecordMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicepointrules/DevicePointRulesService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicepointrules/DevicePointRulesService.java new file mode 100644 index 0000000000..234c166159 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicepointrules/DevicePointRulesService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.iot.service.devicepointrules; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.iot.controller.admin.devicepointrules.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRulesDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 点位规则 Service 接口 + * + * @author 必硕科技 + */ +public interface DevicePointRulesService { + + /** + * 创建点位规则 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDevicePointRules(@Valid DevicePointRulesSaveReqVO createReqVO); + + /** + * 更新点位规则 + * + * @param updateReqVO 更新信息 + */ + void updateDevicePointRules(@Valid DevicePointRulesSaveReqVO updateReqVO); + + /** + * 删除点位规则 + * + * @param id 编号 + */ + void deleteDevicePointRules(Long id); + + /** + * 获得点位规则 + * + * @param id 编号 + * @return 点位规则 + */ + DevicePointRulesDO getDevicePointRules(Long id); + + /** + * 获得点位规则分页 + * + * @param pageReqVO 分页查询 + * @return 点位规则分页 + */ + PageResult getDevicePointRulesPage(DevicePointRulesPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicepointrules/DevicePointRulesServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicepointrules/DevicePointRulesServiceImpl.java new file mode 100644 index 0000000000..40e0a0d9da --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicepointrules/DevicePointRulesServiceImpl.java @@ -0,0 +1,81 @@ +package cn.iocoder.yudao.module.iot.service.devicepointrules; + +import com.alibaba.fastjson.JSON; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.iot.controller.admin.devicepointrules.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRulesDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.iot.dal.mysql.devicepointrules.DevicePointRulesMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; + +/** + * 点位规则 Service 实现类 + * + * @author 必硕科技 + */ +@Service +@Validated +public class DevicePointRulesServiceImpl implements DevicePointRulesService { + + @Resource + private DevicePointRulesMapper devicePointRulesMapper; + + @Override + public Long createDevicePointRules(DevicePointRulesSaveReqVO createReqVO) { + // 插入 + DevicePointRulesDO devicePointRules = BeanUtils.toBean(createReqVO, DevicePointRulesDO.class); + devicePointRulesMapper.insert(devicePointRules); + // 返回 + return devicePointRules.getId(); + } + + @Override + public void updateDevicePointRules(DevicePointRulesSaveReqVO updateReqVO) { + // 校验存在 + validateDevicePointRulesExists(updateReqVO.getId()); + // 更新 + DevicePointRulesDO updateObj = BeanUtils.toBean(updateReqVO, DevicePointRulesDO.class); + if (!updateReqVO.getPointRulesVOList().isEmpty()){ + String jsonString = JSON.toJSONString(updateReqVO.getPointRulesVOList()); + updateObj.setFieldRule(jsonString); + + } + + devicePointRulesMapper.updateById(updateObj); + } + + @Override + public void deleteDevicePointRules(Long id) { + // 校验存在 + validateDevicePointRulesExists(id); + // 删除 + devicePointRulesMapper.deleteById(id); + } + + private void validateDevicePointRulesExists(Long id) { + if (devicePointRulesMapper.selectById(id) == null) { + throw exception(DEVICE_POINT_RULES_NOT_EXISTS); + } + } + + @Override + public DevicePointRulesDO getDevicePointRules(Long id) { + return devicePointRulesMapper.selectById(id); + } + + @Override + public PageResult getDevicePointRulesPage(DevicePointRulesPageReqVO pageReqVO) { + return devicePointRulesMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/devicemodelrules/DeviceModelRulesMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/devicemodelrules/DeviceModelRulesMapper.xml new file mode 100644 index 0000000000..cbe044263c --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/devicemodelrules/DeviceModelRulesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/deviceoperationrecord/DeviceOperationRecordMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/deviceoperationrecord/DeviceOperationRecordMapper.xml new file mode 100644 index 0000000000..cbcab4b99a --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/deviceoperationrecord/DeviceOperationRecordMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/devicepointrules/DevicePointRulesMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/devicepointrules/DevicePointRulesMapper.xml new file mode 100644 index 0000000000..9dc1f3a2f4 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/devicepointrules/DevicePointRulesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java index 30eb1358fd..61fae06954 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java @@ -1,8 +1,5 @@ package cn.iocoder.yudao.module.mes.service.criticalcomponent; -import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO; -import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; import cn.iocoder.yudao.module.mes.dal.dataobject.repairtems.RepairTemsDO; import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper; @@ -13,7 +10,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; @@ -21,14 +17,11 @@ import java.util.stream.Collectors; import cn.iocoder.yudao.module.mes.controller.admin.criticalcomponent.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.dal.mysql.criticalcomponent.CriticalComponentMapper; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS; -import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_ATTRIBUTE_TYPE_REFERENCES_EXISTS; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImpl.java index c7a828bc92..f71751604f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImpl.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.mes.service.energydevice; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper; import cn.iocoder.yudao.module.iot.service.device.TDengineService; import cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo.*; @@ -15,7 +15,6 @@ import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java index 1f6cbb95cd..7be0cae69f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java @@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.erp.controller.admin.autocode.util.AutoCodeUtil; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; -import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper; import cn.iocoder.yudao.module.iot.service.device.DeviceService; @@ -34,7 +34,6 @@ import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/ticketmanagement/TicketManagementServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/ticketmanagement/TicketManagementServiceImpl.java index 30c3f36368..9a38880469 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/ticketmanagement/TicketManagementServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/ticketmanagement/TicketManagementServiceImpl.java @@ -117,7 +117,7 @@ public class TicketManagementServiceImpl implements TicketManagementService { public List getMaintenanceByDeviceId(Long id,String startTime,String endTime,String ids) { DeviceLedgerDO deviceLedgerDO = deviceLedgerMapper.selectById(id); - //点检列表 + //保养列表 List inspectionList = ticketResultsMapper.findByDeviceIdAndPlanType(id, PlanTypeEnum.MAINTENANCE.getCode(),startTime,endTime,ids); if(CollectionUtils.isNotEmpty(inspectionList)){ deviceLedgerDO.setInspectionList(inspectionList); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/ticketresults/TicketResultsMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/ticketresults/TicketResultsMapper.xml index c20d0d9647..6533c47191 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/ticketresults/TicketResultsMapper.xml +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/ticketresults/TicketResultsMapper.xml @@ -14,10 +14,11 @@ SELECT mtr.*, mtm.task_time, - mtm.operator + CONCAT( '(', su.username, ')', su.nickname) as operator from besure.mes_ticket_results mtr left join besure.mes_ticket_management mtm on mtm.id = mtr.management_id + left join besure.system_users su on mtm.operator = su.id WHERE 1=1