lipenghui 4 дней назад
Родитель
Сommit
1b7020ea6c
17 измененных файлов с 951 добавлено и 2 удалено
  1. 123 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupController.java
  2. 95 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailController.java
  3. 43 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailPageReqVO.java
  4. 51 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailRespVO.java
  5. 44 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailSaveReqVO.java
  6. 33 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupPageReqVO.java
  7. 42 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupRespVO.java
  8. 31 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupSaveReqVO.java
  9. 2 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java
  10. 44 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/devicegroup/IotDeviceGroupDO.java
  11. 59 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/devicegroup/IotDeviceGroupDetailDO.java
  12. 33 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/devicegroup/IotDeviceGroupDetailMapper.java
  13. 28 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/devicegroup/IotDeviceGroupMapper.java
  14. 57 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/devicegroup/IotDeviceGroupDetailService.java
  15. 82 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/devicegroup/IotDeviceGroupDetailServiceImpl.java
  16. 59 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/devicegroup/IotDeviceGroupService.java
  17. 125 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/devicegroup/IotDeviceGroupServiceImpl.java

+ 123 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupController.java

@@ -0,0 +1,123 @@
+package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderRespVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.service.devicegroup.IotDeviceGroupDetailService;
+import cn.iocoder.yudao.module.pms.service.devicegroup.IotDeviceGroupService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+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 java.util.*;
+import java.io.IOException;
+import java.util.concurrent.atomic.AtomicInteger;
+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.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 javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+@Tag(name = "管理后台 - PMS成套")
+@RestController
+@RequestMapping("/rq/iot-device-group")
+@Validated
+public class IotDeviceGroupController {
+
+    @Resource
+    private IotDeviceGroupService iotDeviceGroupService;
+    @Autowired
+    private IotDeviceGroupDetailService iotDeviceGroupDetailService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建PMS成套")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:create')")
+    public CommonResult<Long> createIotDeviceGroup(@Valid @RequestBody IotDeviceGroupSaveReqVO createReqVO) {
+        return success(iotDeviceGroupService.createIotDeviceGroup(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新PMS成套")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:update')")
+    public CommonResult<Boolean> updateIotDeviceGroup(@Valid @RequestBody IotDeviceGroupSaveReqVO updateReqVO) {
+        iotDeviceGroupService.updateIotDeviceGroup(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除PMS成套")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:delete')")
+    public CommonResult<Boolean> deleteIotDeviceGroup(@RequestParam("id") Long id) {
+        iotDeviceGroupService.deleteIotDeviceGroup(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得PMS成套")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:query')")
+    public CommonResult<IotDeviceGroupRespVO> getIotDeviceGroup(@RequestParam("id") Long id) {
+        IotDeviceGroupDO iotDeviceGroup = iotDeviceGroupService.getIotDeviceGroup(id);
+        IotDeviceGroupRespVO bean = BeanUtils.toBean(iotDeviceGroup, IotDeviceGroupRespVO.class);
+        List<IotDeviceGroupDetailDO> iotDeviceGroupDetailListByGroupId = iotDeviceGroupDetailService.getIotDeviceGroupDetailListByGroupId(iotDeviceGroup.getId());
+        bean.setDetails(iotDeviceGroupDetailListByGroupId);
+        return success(bean);
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得PMS成套分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:query')")
+    public CommonResult<PageResult<IotDeviceGroupRespVO>> getIotDeviceGroupPage(@Valid IotDeviceGroupPageReqVO pageReqVO) {
+        PageResult<IotDeviceGroupDO> pageResult = iotDeviceGroupService.getIotDeviceGroupPage(pageReqVO);
+        List<IotDeviceGroupRespVO> collect = pageResult.getList().stream().map(e -> {
+            IotDeviceGroupRespVO bean = BeanUtil.toBean(e, IotDeviceGroupRespVO.class);
+            List<IotDeviceGroupDetailDO> iotDeviceGroupDetailListByGroupId = iotDeviceGroupDetailService.getIotDeviceGroupDetailListByGroupId(e.getId());
+            bean.setDetails(iotDeviceGroupDetailListByGroupId);
+            return bean;
+        }).collect(Collectors.toList());
+        return success(new PageResult<>(collect, pageResult.getTotal()));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出PMS成套 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotDeviceGroupExcel(@Valid IotDeviceGroupPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotDeviceGroupDO> list = iotDeviceGroupService.getIotDeviceGroupPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "PMS成套.xls", "数据", IotDeviceGroupRespVO.class,
+                        BeanUtils.toBean(list, IotDeviceGroupRespVO.class));
+    }
+
+
+    @GetMapping("/device/group")
+    @Operation(summary = "获得某设备的成套信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:query')")
+    public CommonResult<PageResult<IotDeviceGroupDetailDO>> getDeviceGroup(@Valid IotDeviceGroupDetailPageReqVO reqVO) {
+        PageResult<IotDeviceGroupDetailDO> deviceGroupList = iotDeviceGroupService.getDeviceGroupList(reqVO);
+        return success(deviceGroupList);
+    }
+}

+ 95 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
+
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
+import cn.iocoder.yudao.module.pms.service.devicegroup.IotDeviceGroupDetailService;
+import org.springframework.web.bind.annotation.*;
+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 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 javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+@Tag(name = "管理后台 - PMS成套明细")
+@RestController
+@RequestMapping("/rq/iot-device-group-detail")
+@Validated
+public class IotDeviceGroupDetailController {
+
+    @Resource
+    private IotDeviceGroupDetailService iotDeviceGroupDetailService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建PMS成套明细")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:create')")
+    public CommonResult<Long> createIotDeviceGroupDetail(@Valid @RequestBody IotDeviceGroupDetailSaveReqVO createReqVO) {
+        return success(iotDeviceGroupDetailService.createIotDeviceGroupDetail(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新PMS成套明细")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:update')")
+    public CommonResult<Boolean> updateIotDeviceGroupDetail(@Valid @RequestBody IotDeviceGroupDetailSaveReqVO updateReqVO) {
+        iotDeviceGroupDetailService.updateIotDeviceGroupDetail(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除PMS成套明细")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:delete')")
+    public CommonResult<Boolean> deleteIotDeviceGroupDetail(@RequestParam("id") Long id) {
+        iotDeviceGroupDetailService.deleteIotDeviceGroupDetail(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得PMS成套明细")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:query')")
+    public CommonResult<IotDeviceGroupDetailRespVO> getIotDeviceGroupDetail(@RequestParam("id") Long id) {
+        IotDeviceGroupDetailDO iotDeviceGroupDetail = iotDeviceGroupDetailService.getIotDeviceGroupDetail(id);
+        return success(BeanUtils.toBean(iotDeviceGroupDetail, IotDeviceGroupDetailRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得PMS成套明细分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:query')")
+    public CommonResult<PageResult<IotDeviceGroupDetailRespVO>> getIotDeviceGroupDetailPage(@Valid IotDeviceGroupDetailPageReqVO pageReqVO) {
+        PageResult<IotDeviceGroupDetailDO> pageResult = iotDeviceGroupDetailService.getIotDeviceGroupDetailPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotDeviceGroupDetailRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出PMS成套明细 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotDeviceGroupDetailExcel(@Valid IotDeviceGroupDetailPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotDeviceGroupDetailDO> list = iotDeviceGroupDetailService.getIotDeviceGroupDetailPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "PMS成套明细.xls", "数据", IotDeviceGroupDetailRespVO.class,
+                        BeanUtils.toBean(list, IotDeviceGroupDetailRespVO.class));
+    }
+
+}

+ 43 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailPageReqVO.java

@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
+
+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 = "管理后台 - PMS成套明细分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotDeviceGroupDetailPageReqVO extends PageParam {
+
+    @Schema(description = "成套名称", example = "17288")
+    private Long groupId;
+
+    @Schema(description = "设备id", example = "29616")
+    private Long deviceId;
+
+    @Schema(description = "设备名称", example = "王五")
+    private String deviceName;
+
+    @Schema(description = "设备编码")
+    private String deviceCode;
+
+    @Schema(description = "是否主设备")
+    private Boolean ifMaster;
+
+    @Schema(description = "描述", example = "随便")
+    private String remark;
+
+    @Schema(description = "部门id", example = "2916")
+    private Long deptId;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 51 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailRespVO.java

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
+
+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 = "管理后台 - PMS成套明细 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotDeviceGroupDetailRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18152")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "成套名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "17288")
+    @ExcelProperty("成套名称")
+    private Long groupId;
+
+    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29616")
+    @ExcelProperty("设备id")
+    private Long deviceId;
+
+    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @ExcelProperty("设备名称")
+    private String deviceName;
+
+    @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("设备编码")
+    private String deviceCode;
+
+    @Schema(description = "是否主设备", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("是否主设备")
+    private Boolean ifMaster;
+
+    @Schema(description = "描述", example = "随便")
+    @ExcelProperty("描述")
+    private String remark;
+
+    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2916")
+    @ExcelProperty("部门id")
+    private Long deptId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 44 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailSaveReqVO.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.*;
+
+@Schema(description = "管理后台 - PMS成套明细新增/修改 Request VO")
+@Data
+public class IotDeviceGroupDetailSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18152")
+    private Long id;
+
+    @Schema(description = "成套名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "17288")
+    @NotNull(message = "成套名称不能为空")
+    private Long groupId;
+
+    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29616")
+    @NotNull(message = "设备id不能为空")
+    private Long deviceId;
+
+    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @NotEmpty(message = "设备名称不能为空")
+    private String deviceName;
+
+    @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "设备编码不能为空")
+    private String deviceCode;
+
+    @Schema(description = "是否主设备", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "是否主设备不能为空")
+    private Boolean ifMaster;
+
+    @Schema(description = "描述", example = "随便")
+    private String remark;
+
+    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2916")
+    @NotNull(message = "部门id不能为空")
+    private Long deptId;
+
+}

+ 33 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupPageReqVO.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
+
+import lombok.*;
+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 = "管理后台 - PMS成套分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotDeviceGroupPageReqVO extends PageParam {
+
+    @Schema(description = "成套名称", example = "赵六")
+    private String name;
+
+    @Schema(description = "成套编码")
+    private String code;
+
+    @Schema(description = "描述", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "部门id", example = "646")
+    private Long deptId;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 42 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupRespVO.java

@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
+
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - PMS成套 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotDeviceGroupRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "12540")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "成套名称", example = "赵六")
+    @ExcelProperty("成套名称")
+    private String name;
+
+    @Schema(description = "成套编码")
+    @ExcelProperty("成套编码")
+    private String code;
+
+    @Schema(description = "描述", example = "你说的对")
+    @ExcelProperty("描述")
+    private String remark;
+
+    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "646")
+    @ExcelProperty("部门id")
+    private Long deptId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    private List<IotDeviceGroupDetailDO> details;
+}

+ 31 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupSaveReqVO.java

@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Schema(description = "管理后台 - PMS成套新增/修改 Request VO")
+@Data
+public class IotDeviceGroupSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "12540")
+    private Long id;
+
+    @Schema(description = "成套名称", example = "赵六")
+    private String name;
+
+    @Schema(description = "成套编码")
+    private String code;
+
+    @Schema(description = "描述", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "646")
+    @NotNull(message = "部门id不能为空")
+    private Long deptId;
+
+
+    private List<IotDeviceGroupDetailSaveReqVO> details;
+}

+ 2 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java

@@ -1474,10 +1474,10 @@ public class IotStaticController {
                 yearData.add(yearCount);
             }
         });
-        ImmutableMap<String, Serializable> dailyResult = ImmutableMap.of("name", "日累完成井数~~en**dailyFinished", "data", dailyData);
+//        ImmutableMap<String, Serializable> dailyResult = ImmutableMap.of("name", "日累完成井数~~en**dailyFinished", "data", dailyData);
         ImmutableMap<String, Serializable> monthResult = ImmutableMap.of("name", "月累完成井数~~en**monthlyFinished", "data", monthData);
         ImmutableMap<String, Serializable> yearResult = ImmutableMap.of("name", "年累完井数~~en**annualFinished", "data", yearData);
-        return success(ImmutableMap.of("xAxis", xAxis, "series", ImmutableList.of(dailyResult, monthResult, yearResult)));
+        return success(ImmutableMap.of("xAxis", xAxis, "series", ImmutableList.of(monthResult, yearResult)));
     }
 
     /**

+ 44 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/devicegroup/IotDeviceGroupDO.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup;
+
+import lombok.*;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * PMS成套 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_iot_device_group")
+@KeySequence("rq_iot_device_group_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotDeviceGroupDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 成套名称
+     */
+    private String name;
+    /**
+     * 成套编码
+     */
+    private String code;
+    /**
+     * 描述
+     */
+    private String remark;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+}

+ 59 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/devicegroup/IotDeviceGroupDetailDO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup;
+
+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;
+
+/**
+ * PMS成套明细 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_iot_device_group_detail")
+@KeySequence("rq_iot_device_group_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotDeviceGroupDetailDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 成套名称
+     */
+    private Long groupId;
+    /**
+     * 设备id
+     */
+    private Long deviceId;
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+    /**
+     * 设备编码
+     */
+    private String deviceCode;
+    /**
+     * 是否主设备
+     */
+    private Boolean ifMaster;
+    /**
+     * 描述
+     */
+    private String remark;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+}

+ 33 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/devicegroup/IotDeviceGroupDetailMapper.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.devicegroup;
+
+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.pms.controller.admin.devicegroup.IotDeviceGroupDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * PMS成套明细 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotDeviceGroupDetailMapper extends BaseMapperX<IotDeviceGroupDetailDO> {
+
+    default PageResult<IotDeviceGroupDetailDO> selectPage(IotDeviceGroupDetailPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotDeviceGroupDetailDO>()
+                .eqIfPresent(IotDeviceGroupDetailDO::getGroupId, reqVO.getGroupId())
+                .eqIfPresent(IotDeviceGroupDetailDO::getDeviceId, reqVO.getDeviceId())
+                .likeIfPresent(IotDeviceGroupDetailDO::getDeviceName, reqVO.getDeviceName())
+                .eqIfPresent(IotDeviceGroupDetailDO::getDeviceCode, reqVO.getDeviceCode())
+                .eqIfPresent(IotDeviceGroupDetailDO::getIfMaster, reqVO.getIfMaster())
+                .eqIfPresent(IotDeviceGroupDetailDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(IotDeviceGroupDetailDO::getDeptId, reqVO.getDeptId())
+                .betweenIfPresent(IotDeviceGroupDetailDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotDeviceGroupDetailDO::getId));
+    }
+
+}

+ 28 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/devicegroup/IotDeviceGroupMapper.java

@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.devicegroup;
+
+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.pms.controller.admin.devicegroup.IotDeviceGroupPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * PMS成套 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotDeviceGroupMapper extends BaseMapperX<IotDeviceGroupDO> {
+
+    default PageResult<IotDeviceGroupDO> selectPage(IotDeviceGroupPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotDeviceGroupDO>()
+                .likeIfPresent(IotDeviceGroupDO::getName, reqVO.getName())
+                .eqIfPresent(IotDeviceGroupDO::getCode, reqVO.getCode())
+                .eqIfPresent(IotDeviceGroupDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(IotDeviceGroupDO::getDeptId, reqVO.getDeptId())
+                .betweenIfPresent(IotDeviceGroupDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotDeviceGroupDO::getId));
+    }
+
+}

+ 57 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/devicegroup/IotDeviceGroupDetailService.java

@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.pms.service.devicegroup;
+
+import java.util.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
+
+import javax.validation.Valid;
+
+/**
+ * PMS成套明细 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotDeviceGroupDetailService {
+    List<IotDeviceGroupDetailDO> getIotDeviceGroupDetailListByGroupId(Long groupId);
+    /**
+     * 创建PMS成套明细
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotDeviceGroupDetail(@Valid IotDeviceGroupDetailSaveReqVO createReqVO);
+
+    /**
+     * 更新PMS成套明细
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotDeviceGroupDetail(@Valid IotDeviceGroupDetailSaveReqVO updateReqVO);
+
+    /**
+     * 删除PMS成套明细
+     *
+     * @param id 编号
+     */
+    void deleteIotDeviceGroupDetail(Long id);
+
+    /**
+     * 获得PMS成套明细
+     *
+     * @param id 编号
+     * @return PMS成套明细
+     */
+    IotDeviceGroupDetailDO getIotDeviceGroupDetail(Long id);
+
+    /**
+     * 获得PMS成套明细分页
+     *
+     * @param pageReqVO 分页查询
+     * @return PMS成套明细分页
+     */
+    PageResult<IotDeviceGroupDetailDO> getIotDeviceGroupDetailPage(IotDeviceGroupDetailPageReqVO pageReqVO);
+
+}

+ 82 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/devicegroup/IotDeviceGroupDetailServiceImpl.java

@@ -0,0 +1,82 @@
+package cn.iocoder.yudao.module.pms.service.devicegroup;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.devicegroup.IotDeviceGroupDetailMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+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 javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * PMS成套明细 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotDeviceGroupDetailServiceImpl implements IotDeviceGroupDetailService {
+
+    @Resource
+    private IotDeviceGroupDetailMapper iotDeviceGroupDetailMapper;
+
+    @Override
+    public List<IotDeviceGroupDetailDO> getIotDeviceGroupDetailListByGroupId(Long groupId) {
+        return iotDeviceGroupDetailMapper.selectList("group_id", groupId);
+    }
+
+    @Override
+    public Long createIotDeviceGroupDetail(IotDeviceGroupDetailSaveReqVO createReqVO) {
+        // 插入
+        IotDeviceGroupDetailDO iotDeviceGroupDetail = BeanUtils.toBean(createReqVO, IotDeviceGroupDetailDO.class);
+        iotDeviceGroupDetail.setDeleted(false);
+        iotDeviceGroupDetailMapper.insert(iotDeviceGroupDetail);
+        // 返回
+        return iotDeviceGroupDetail.getId();
+    }
+
+    @Override
+    public void updateIotDeviceGroupDetail(IotDeviceGroupDetailSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotDeviceGroupDetailExists(updateReqVO.getId());
+        // 更新
+        IotDeviceGroupDetailDO updateObj = BeanUtils.toBean(updateReqVO, IotDeviceGroupDetailDO.class);
+        iotDeviceGroupDetailMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotDeviceGroupDetail(Long id) {
+        // 校验存在
+        validateIotDeviceGroupDetailExists(id);
+        // 删除
+        iotDeviceGroupDetailMapper.deleteById(id);
+    }
+
+    private void validateIotDeviceGroupDetailExists(Long id) {
+        if (iotDeviceGroupDetailMapper.selectById(id) == null) {
+            throw exception(new ErrorCode(2,"不存在"));
+        }
+    }
+
+    @Override
+    public IotDeviceGroupDetailDO getIotDeviceGroupDetail(Long id) {
+        return iotDeviceGroupDetailMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotDeviceGroupDetailDO> getIotDeviceGroupDetailPage(IotDeviceGroupDetailPageReqVO pageReqVO) {
+        return iotDeviceGroupDetailMapper.selectPage(pageReqVO);
+    }
+
+}

+ 59 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/devicegroup/IotDeviceGroupService.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.pms.service.devicegroup;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * PMS成套 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotDeviceGroupService {
+
+    /**
+     * 创建PMS成套
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotDeviceGroup(@Valid IotDeviceGroupSaveReqVO createReqVO);
+
+    /**
+     * 更新PMS成套
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotDeviceGroup(@Valid IotDeviceGroupSaveReqVO updateReqVO);
+
+    /**
+     * 删除PMS成套
+     *
+     * @param id 编号
+     */
+    void deleteIotDeviceGroup(Long id);
+
+    /**
+     * 获得PMS成套
+     *
+     * @param id 编号
+     * @return PMS成套
+     */
+    IotDeviceGroupDO getIotDeviceGroup(Long id);
+
+    /**
+     * 获得PMS成套分页
+     *
+     * @param pageReqVO 分页查询
+     * @return PMS成套分页
+     */
+    PageResult<IotDeviceGroupDO> getIotDeviceGroupPage(IotDeviceGroupPageReqVO pageReqVO);
+    PageResult<IotDeviceGroupDetailDO> getDeviceGroupList(IotDeviceGroupDetailPageReqVO reqVO);
+
+}

+ 125 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/devicegroup/IotDeviceGroupServiceImpl.java

@@ -0,0 +1,125 @@
+package cn.iocoder.yudao.module.pms.service.devicegroup;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.devicegroup.IotDeviceGroupSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.devicegroup.IotDeviceGroupDetailMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.devicegroup.IotDeviceGroupMapper;
+import cn.iocoder.yudao.module.pms.service.IotDeviceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import javax.annotation.Resource;
+
+import java.util.Collections;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * PMS成套 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotDeviceGroupServiceImpl implements IotDeviceGroupService {
+
+    @Resource
+    private IotDeviceGroupMapper iotDeviceGroupMapper;
+    @Autowired
+    private IotDeviceGroupDetailMapper iotDeviceGroupDetailMapper;
+    @Autowired
+    private IotDeviceService iotDeviceService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long createIotDeviceGroup(IotDeviceGroupSaveReqVO createReqVO) {
+        // 插入
+        List<IotDeviceGroupDetailSaveReqVO> details = createReqVO.getDetails();
+        IotDeviceGroupDO iotDeviceGroup = BeanUtils.toBean(createReqVO, IotDeviceGroupDO.class);
+        iotDeviceGroup.setDeleted(false);
+        iotDeviceGroupMapper.insert(iotDeviceGroup);
+        //子表插入
+        details.forEach(e ->{
+            IotDeviceGroupDetailDO bean = BeanUtil.toBean(e, IotDeviceGroupDetailDO.class);
+            bean.setGroupId(iotDeviceGroup.getId());
+            bean.setDeleted(false);
+            iotDeviceGroupDetailMapper.insert(bean);
+        });
+        // 返回
+        return iotDeviceGroup.getId();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateIotDeviceGroup(IotDeviceGroupSaveReqVO updateReqVO) {
+        // 校验存在
+        List<IotDeviceGroupDetailSaveReqVO> details = updateReqVO.getDetails();
+        validateIotDeviceGroupExists(updateReqVO.getId());
+        // 更新
+        IotDeviceGroupDO updateObj = BeanUtils.toBean(updateReqVO, IotDeviceGroupDO.class);
+        iotDeviceGroupMapper.updateById(updateObj);
+        //删除子表数据
+        iotDeviceGroupDetailMapper.delete("group_id", String.valueOf(updateObj.getId()));
+        //插入子表数据
+        details.forEach(e ->{
+           IotDeviceGroupDetailDO bean = BeanUtils.toBean(e, IotDeviceGroupDetailDO.class);
+           bean.setGroupId(updateReqVO.getId());
+           bean.setDeleted(false);
+           iotDeviceGroupDetailMapper.insert(bean);
+        });
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteIotDeviceGroup(Long id) {
+        // 校验存在
+        validateIotDeviceGroupExists(id);
+        // 删除
+        iotDeviceGroupMapper.deleteById(id);
+        //删除子表
+        iotDeviceGroupDetailMapper.delete("group_id", String.valueOf(id));
+    }
+
+    private void validateIotDeviceGroupExists(Long id) {
+        if (iotDeviceGroupMapper.selectById(id) == null) {
+            throw exception(new ErrorCode(2,"不存在"));
+        }
+    }
+
+    @Override
+    public IotDeviceGroupDO getIotDeviceGroup(Long id) {
+        return iotDeviceGroupMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotDeviceGroupDO> getIotDeviceGroupPage(IotDeviceGroupPageReqVO pageReqVO) {
+        return iotDeviceGroupMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public PageResult<IotDeviceGroupDetailDO> getDeviceGroupList(IotDeviceGroupDetailPageReqVO reqVO) {
+        IotDeviceDO iotDevice = iotDeviceService.getIotDevice(reqVO.getDeviceId());
+        List<IotDeviceGroupDetailDO> deviceCodes = iotDeviceGroupDetailMapper.selectList("device_code", iotDevice.getDeviceCode());
+        IotDeviceGroupDetailDO iotDeviceGroupDetailDO = deviceCodes.get(0);
+        Long groupId = iotDeviceGroupDetailDO.getGroupId();
+//        IotDeviceGroupDetailPageReqVO pageReqVO = new IotDeviceGroupDetailPageReqVO();
+        reqVO.setGroupId(groupId);
+        PageResult<IotDeviceGroupDetailDO> iotDeviceGroupDetailDOPageResult = iotDeviceGroupDetailMapper.selectPage(reqVO);
+        return iotDeviceGroupDetailDOPageResult;
+    }
+
+}