From f06e5997787f6831359e723f2a0e5ff3399eff2a Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Tue, 25 Nov 2025 14:00:06 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BD=91=E9=A1=B5=E6=B7=BB=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=EF=BC=8C=E5=8A=A0=E8=AE=BE=E5=A4=87=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/controller/DeviceController.java | 28 +++++++++++++ .../business/dao/ex/DeviceGroupMapperExt.java | 5 +++ .../mappers/ex/DeviceGroupMapperExt.xml | 26 ++++++++++++ .../mappers/ex/DeviceInfoMapperExt.xml | 5 ++- .../business/dto/device/DeviceAddParams.java | 3 ++ .../dto/device/DeviceUpdateParams.java | 3 ++ .../devicegroup/DeviceGroupSearchParams.java | 25 +++++++++++ .../business/vo/device/DeviceVO.java | 6 +++ .../vo/devicegroup/DeviceGroupPageVO.java | 27 ++++++++++++ .../business/service/IDeviceService.java | 3 ++ .../service/impl/DeviceServiceImpl.java | 41 +++++++++++++++++++ 11 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 data-center-business-dao/src/main/resources/mappers/ex/DeviceGroupMapperExt.xml create mode 100644 data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/devicegroup/DeviceGroupSearchParams.java create mode 100644 data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/devicegroup/DeviceGroupPageVO.java diff --git a/data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/DeviceController.java b/data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/DeviceController.java index 7768802..c5870bb 100644 --- a/data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/DeviceController.java +++ b/data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/DeviceController.java @@ -19,6 +19,7 @@ import com.techsor.datacenter.business.dto.device.alert.DeviceAlertTemplateSearc import com.techsor.datacenter.business.dto.device.forward.DeviceForwardBatchParams; import com.techsor.datacenter.business.dto.device.forward.DeviceForwardQueryParams; import com.techsor.datacenter.business.dto.device.forward.DeviceForwardRemoveParmas; +import com.techsor.datacenter.business.dto.devicegroup.DeviceGroupSearchParams; import com.techsor.datacenter.business.model.MailSentResult; import com.techsor.datacenter.business.service.CommonService; import com.techsor.datacenter.business.service.CompanyService; @@ -32,6 +33,7 @@ import com.techsor.datacenter.business.vo.device.DeviceVO; import com.techsor.datacenter.business.vo.device.LambdaEmailResult; import com.techsor.datacenter.business.vo.device.MonitoringPointCategoryVO; +import com.techsor.datacenter.business.vo.devicegroup.DeviceGroupPageVO; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; @@ -628,4 +630,30 @@ public class DeviceController { @Parameter(name = "UTCOffset", description = "Offset between GMT and local time in minutes, e.g., -480 for GMT+8") @RequestHeader(required = true) Integer UTCOffset){ return deviceService.getMonitoringPointCategory(CompanyId, LanguageType); } + + @Operation(summary = "Get deviceGroup list") + @RequestMapping(value = "/deviceGroup/getListPage", method = RequestMethod.GET) + public PageResponse> getListPage( + @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required = true) String LoginName, + @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required = true) String AccessToken, + @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required = true) Long UserId, + @Parameter(name = "CompanyId", description = "User's company ID", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required = false) Long CompanyId, + @Parameter(name = "LanguageType", description = "Language type: 0 - Chinese, 1 - English, 2 - Japanese", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required = true) Integer LanguageType, + @Parameter(name = "UTCOffset", description = "Time zone offset in minutes from GMT, e.g., +480 for UTC+8", required = true, schema = @Schema(defaultValue = "-480")) @RequestHeader(required = true) Integer UTCOffset, + DeviceGroupSearchParams pageSearchParam) throws BusinessException { + + pageSearchParam.setUserId(UserId); + + PageResponse> pageResponse = new PageResponse<>(); + try { + pageResponse.setData(deviceService.getDeviceGroupListPage(pageSearchParam, CompanyId, UserId, LanguageType, UTCOffset)); + pageResponse.setCode(ResponseCode.SUCCESS); + pageResponse.setMsg("success"); + } catch (Exception e) { + logger.error("Error querying list", e); + pageResponse.setCode(ResponseCode.SERVER_ERROR); + pageResponse.setMsg("service error"); + } + return pageResponse; + } } diff --git a/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/DeviceGroupMapperExt.java b/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/DeviceGroupMapperExt.java index 0a680ee..b4183d3 100644 --- a/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/DeviceGroupMapperExt.java +++ b/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/DeviceGroupMapperExt.java @@ -2,10 +2,15 @@ package com.techsor.datacenter.business.dao.ex; import java.util.List; +import com.techsor.datacenter.business.dto.devicegroup.DeviceGroupSearchParams; +import com.techsor.datacenter.business.vo.devicegroup.DeviceGroupPageVO; import org.apache.ibatis.annotations.Mapper; import com.techsor.datacenter.business.dao.auto.DeviceGroupMapper; @Mapper public interface DeviceGroupMapperExt extends DeviceGroupMapper { + + List getListPage(DeviceGroupSearchParams pageSearchParam); + } diff --git a/data-center-business-dao/src/main/resources/mappers/ex/DeviceGroupMapperExt.xml b/data-center-business-dao/src/main/resources/mappers/ex/DeviceGroupMapperExt.xml new file mode 100644 index 0000000..7cb788b --- /dev/null +++ b/data-center-business-dao/src/main/resources/mappers/ex/DeviceGroupMapperExt.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file diff --git a/data-center-business-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml b/data-center-business-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml index 3afe20e..c6228a2 100644 --- a/data-center-business-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml +++ b/data-center-business-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml @@ -49,7 +49,8 @@ device_info.project_id as projectId, basic_floor.floor_id as floorId, device_info.wsclient_id as wsclientId, type.device_category_id,device_info.monitoring_point_name,device_info.monitoring_point_category_id,mpc.name monitoringPointCategoryName, device_info.data_provider_id, data_provider.name dataProviderName, device_info.retain_alert, - device_info.gateway_info_id, data_provider_gateway_info.name gatewayInfoName, device_info.alarm_level + device_info.gateway_info_id, data_provider_gateway_info.name gatewayInfoName, device_info.alarm_level, + dashboard_device_group.id deviceGroupId, dashboard_device_group.name deviceGroupName from device_info left join basic_project on device_info.project_id = basic_project.id @@ -63,6 +64,8 @@ left join type on device_info.type_id = type.id left join device_category on type.device_category_id = device_category.id left join device_alert_config dac on device_info.id=dac.device_config_id and dac.flag = 0 + left join dashboard_device_group_relation on dashboard_device_group_relation.device_info_id = device_info.id + left join dashboard_device_group on dashboard_device_group_relation.device_group_id = dashboard_device_group.id left join target_id_check tic on dac.id = tic.alert_config_id diff --git a/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/device/DeviceAddParams.java b/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/device/DeviceAddParams.java index 80f4730..0bb95f8 100644 --- a/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/device/DeviceAddParams.java +++ b/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/device/DeviceAddParams.java @@ -58,5 +58,8 @@ public class DeviceAddParams { @Schema(description = "dashboard自动恢复告警时是否保留告警:0-不保留,1-保留", example = "1") private Integer retainAlert; + @Schema(description ="设备组ID",example = "2") + private Long deviceGroupId; + } diff --git a/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/device/DeviceUpdateParams.java b/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/device/DeviceUpdateParams.java index 264940c..97f383d 100644 --- a/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/device/DeviceUpdateParams.java +++ b/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/device/DeviceUpdateParams.java @@ -59,4 +59,7 @@ public class DeviceUpdateParams { @Schema(description = "dashboard自动恢复告警时是否保留告警:0-不保留,1-保留", example = "1") private Integer retainAlert; + @Schema(description ="设备组ID",example = "2") + private Long deviceGroupId; + } diff --git a/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/devicegroup/DeviceGroupSearchParams.java b/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/devicegroup/DeviceGroupSearchParams.java new file mode 100644 index 0000000..f777297 --- /dev/null +++ b/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/devicegroup/DeviceGroupSearchParams.java @@ -0,0 +1,25 @@ +package com.techsor.datacenter.business.dto.devicegroup; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +import com.techsor.datacenter.business.dto.BaseSearchParams; + + +@EqualsAndHashCode(callSuper = true) +@Data +public class DeviceGroupSearchParams extends BaseSearchParams { + + @Schema(description = "设备组名",example = "张三李四") + private String name; + + @Schema(description = "设备组id,多个逗号连接",example = "1,47") + private String deviceGroupIds; + + @Schema(description = "设备组id", hidden = true) + private List deviceGroupIdList; + +} diff --git a/data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/device/DeviceVO.java b/data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/device/DeviceVO.java index a411377..3376934 100644 --- a/data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/device/DeviceVO.java +++ b/data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/device/DeviceVO.java @@ -120,4 +120,10 @@ public class DeviceVO { @Schema(description = "dashboard自动恢复告警时是否保留告警:0-不保留,1-保留", example = "1") private Integer retainAlert; + + @Schema(description ="设备组ID",example = "2") + private Long deviceGroupId; + + @Schema(description ="设备组组名",example = "组2") + private String deviceGroupName; } diff --git a/data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/devicegroup/DeviceGroupPageVO.java b/data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/devicegroup/DeviceGroupPageVO.java new file mode 100644 index 0000000..a04bda3 --- /dev/null +++ b/data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/devicegroup/DeviceGroupPageVO.java @@ -0,0 +1,27 @@ +package com.techsor.datacenter.business.vo.devicegroup; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class DeviceGroupPageVO { + + @Schema(description = "项目唯一标识ID,新增时无此参数",example = "2738967") + private Long deviceGroupId; + + @Schema(description = "楼宇ID",example = "222", hidden = true) + private Long buildingId; + + @Schema(description = "楼宇名称",example = "楼宇222", hidden = true) + private String buildingName; + + @Schema(description = "所属企业ID",example = "2738967", hidden = true) + private Long companyId; + + @Schema(description = "项目名称",example = "testDeviceGroup1", required = true) + private String name; + + @Schema(description = "remark", example = "remark") + private String remark; + +} diff --git a/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/IDeviceService.java b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/IDeviceService.java index cfad413..8231d2d 100644 --- a/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/IDeviceService.java +++ b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/IDeviceService.java @@ -16,6 +16,7 @@ import com.techsor.datacenter.business.dto.device.alert.DeviceAlertTemplateSearc import com.techsor.datacenter.business.dto.device.forward.DeviceForwardBatchParams; import com.techsor.datacenter.business.dto.device.forward.DeviceForwardQueryParams; import com.techsor.datacenter.business.dto.device.forward.DeviceForwardRemoveParmas; +import com.techsor.datacenter.business.dto.devicegroup.DeviceGroupSearchParams; import com.techsor.datacenter.business.importexcel.deviceAlertInfo.DeviceAlertInfoExcel; import com.techsor.datacenter.business.importexcel.deviceinfo.DeviceInfoExcel; import com.techsor.datacenter.business.model.MailSentResult; @@ -24,6 +25,7 @@ import com.techsor.datacenter.business.vo.device.DeviceVO; import com.techsor.datacenter.business.vo.device.LambdaEmailResult; import com.techsor.datacenter.business.vo.device.MonitoringPointCategoryVO; +import com.techsor.datacenter.business.vo.devicegroup.DeviceGroupPageVO; import org.springframework.http.ResponseEntity; import java.io.UnsupportedEncodingException; @@ -123,4 +125,5 @@ public interface IDeviceService { SimpleDataResponse> getMonitoringPointCategory(Long companyId, Integer languageType); + PageInfo getDeviceGroupListPage(DeviceGroupSearchParams pageSearchParam, Long companyId, Long userId, Integer languageType, Integer utcOffset); } diff --git a/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/DeviceServiceImpl.java b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/DeviceServiceImpl.java index d60a823..a4917a0 100644 --- a/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/DeviceServiceImpl.java +++ b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/DeviceServiceImpl.java @@ -36,6 +36,7 @@ import com.techsor.datacenter.business.dto.device.alert.DeviceAlertTemplateSearc import com.techsor.datacenter.business.dto.device.forward.DeviceForwardBatchParams; import com.techsor.datacenter.business.dto.device.forward.DeviceForwardQueryParams; import com.techsor.datacenter.business.dto.device.forward.DeviceForwardRemoveParmas; +import com.techsor.datacenter.business.dto.devicegroup.DeviceGroupSearchParams; import com.techsor.datacenter.business.importexcel.deviceAlertInfo.DeviceAlertInfoExcel; import com.techsor.datacenter.business.importexcel.deviceinfo.AlarmLevelMapping; import com.techsor.datacenter.business.importexcel.deviceinfo.DeviceGroupRelationExcel; @@ -63,6 +64,7 @@ import com.techsor.datacenter.business.vo.device.LambdaEmailResult; import com.techsor.datacenter.business.vo.device.MonitoringPointCategoryVO; import com.techsor.datacenter.business.vo.device.alert.DeviceAlertConfigVO; import com.techsor.datacenter.business.vo.device.forward.DeviceForwardConfigVO; +import com.techsor.datacenter.business.vo.devicegroup.DeviceGroupPageVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -261,6 +263,13 @@ public class DeviceServiceImpl implements IDeviceService { deviceInfo.setUpdatedTimestamp(currentUnix); this.deviceInfoMapperExt.insertSelective(deviceInfo); + if (null != deviceAddParams.getDeviceGroupId()) { + DeviceGroupRelation deviceGroupRelation = new DeviceGroupRelation(); + deviceGroupRelation.setDeviceGroupId(deviceAddParams.getDeviceGroupId()); + deviceGroupRelation.setDeviceInfoId(deviceInfo.getId()); + deviceGroupRelationMapperExt.insertSelective(deviceGroupRelation); + } + this.notificationService.saveDeviceCompanyMapping(deviceInfo.getDeviceId(), String.valueOf(companyId)); //Record log @@ -331,6 +340,17 @@ public class DeviceServiceImpl implements IDeviceService { deviceInfo.setTypeId(deviceUpdateParams.getTypeId().intValue()); } this.deviceInfoMapperExt.updateByPrimaryKeySelective(deviceInfo); + + DeviceGroupRelationExample example = new DeviceGroupRelationExample(); + example.createCriteria().andDeviceInfoIdEqualTo(deviceInfo.getId()); + deviceGroupRelationMapperExt.deleteByExample(example); + if (null != deviceUpdateParams.getDeviceGroupId()) { + DeviceGroupRelation deviceGroupRelation = new DeviceGroupRelation(); + deviceGroupRelation.setDeviceGroupId(deviceUpdateParams.getDeviceGroupId()); + deviceGroupRelation.setDeviceInfoId(deviceInfo.getId()); + deviceGroupRelationMapperExt.insertSelective(deviceGroupRelation); + } + this.notificationService.saveDeviceCompanyMapping(deviceInfo.getDeviceId(), String.valueOf(companyId)); //Record log userOperationLogsService.recordLog(companyId,userId,"编辑设备:"+deviceInfo.getDeviceName(), @@ -2684,6 +2704,27 @@ public class DeviceServiceImpl implements IDeviceService { return SimpleDataResponse.success(deviceInfoMapperExt.getMonitoringPointCategory(companyId)); } + + + @Override + public PageInfo getDeviceGroupListPage(DeviceGroupSearchParams pageSearchParam, Long companyId, + Long userId, Integer languageType, Integer uTCOffset) { + if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) { + pageSearchParam.setCompanyIdList(List.of(companyId)); + } else { + pageSearchParam.setCompanyIdList(commonOpt.filterCompanyIds(companyId, pageSearchParam.getCompanyIds())); + } + + if (StringUtils.isNotBlank(pageSearchParam.getDeviceGroupIds())) { + pageSearchParam.setDeviceGroupIdList(CommonUtil.commaStr2LongList(pageSearchParam.getDeviceGroupIds())); + } + + PageHelper.startPage(pageSearchParam.getPageNum() == null ? 1 : pageSearchParam.getPageNum(), + pageSearchParam.getPageSize() == null ? 20 : pageSearchParam.getPageSize()); + + List list = deviceGroupMapperExt.getListPage(pageSearchParam); + return new PageInfo<>(list); + } }