From 9168babc0339020a780efebe75786113c058ed34 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Fri, 10 Apr 2026 10:24:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oviphone/back/common/Constants.java | 4 +- .../resources/config/language/msg/msg_cn.yml | 8 +- .../resources/config/language/msg/msg_en.yml | 8 +- .../resources/config/language/msg/msg_jp.yml | 8 +- .../back/controller/AccountController.java | 1 - .../back/controller/DeviceController.java | 74 +++++++++++ .../resources/config/application.properties | 6 +- .../back/dao/MyBatisPlusGenerator.java | 6 +- .../back/dao/auto/DeviceInfoMapper.java | 16 +++ .../dao/auto/UserBuildingRelationMapper.java | 16 +++ .../back/dao/ex/BasicUserMapperExt.java | 1 + .../back/dao/ex/DeviceInfoMapperExt.java | 23 ++++ .../dao/ex/UserBuildingRelationMapperExt.java | 13 ++ .../mappers/auto/DeviceInfoMapper.xml | 37 ++++++ .../auto/UserBuildingRelationMapper.xml | 17 +++ .../mappers/ex/BasicUserMapperExt.xml | 10 ++ .../mappers/ex/DeviceInfoMapperExt.xml | 95 ++++++++++++++ .../ex/UserBuildingRelationMapperExt.xml | 20 +++ .../dto/device/DevicePageSearchParam.java | 70 +++++++++++ .../oviphone/back/model/DeviceInfo.java | 117 ++++++++++++++++++ .../back/model/UserBuildingRelation.java | 34 +++++ .../back/vo/building/BindedBuildingVO.java | 26 ++++ .../back/vo/building/BuildingPageVO.java | 44 +++++++ .../back/vo/device/DevicePageDTO.java | 87 +++++++++++++ .../oviphone/back/service/DeviceService.java | 17 +++ .../back/service/common/CommonOpt.java | 22 +++- .../back/service/impl/DeviceServiceImpl.java | 101 +++++++++++++++ 27 files changed, 870 insertions(+), 11 deletions(-) create mode 100644 buildics-oviphone-back-controller/src/main/java/com/buildics/oviphone/back/controller/DeviceController.java create mode 100644 buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/auto/DeviceInfoMapper.java create mode 100644 buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/auto/UserBuildingRelationMapper.java create mode 100644 buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/DeviceInfoMapperExt.java create mode 100644 buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/UserBuildingRelationMapperExt.java create mode 100644 buildics-oviphone-back-dao/src/main/resources/mappers/auto/DeviceInfoMapper.xml create mode 100644 buildics-oviphone-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml create mode 100644 buildics-oviphone-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml create mode 100644 buildics-oviphone-back-dao/src/main/resources/mappers/ex/UserBuildingRelationMapperExt.xml create mode 100644 buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/dto/device/DevicePageSearchParam.java create mode 100644 buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/model/DeviceInfo.java create mode 100644 buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/model/UserBuildingRelation.java create mode 100644 buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/building/BindedBuildingVO.java create mode 100644 buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/building/BuildingPageVO.java create mode 100644 buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/device/DevicePageDTO.java create mode 100644 buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/DeviceService.java create mode 100644 buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/impl/DeviceServiceImpl.java diff --git a/buildics-oviphone-back-common/src/main/java/com/buildics/oviphone/back/common/Constants.java b/buildics-oviphone-back-common/src/main/java/com/buildics/oviphone/back/common/Constants.java index 15dadb7..525f478 100644 --- a/buildics-oviphone-back-common/src/main/java/com/buildics/oviphone/back/common/Constants.java +++ b/buildics-oviphone-back-common/src/main/java/com/buildics/oviphone/back/common/Constants.java @@ -7,8 +7,8 @@ public class Constants { //这个很重要,不要随便动 public static final String DES_SALT = "ci3b512jwy199511"; - - public static final String APP_NAME = "buildics_oviphone_back:"; + + public static final String APP_NAME = "data-center-business:"; //用户ID,登录名,企业ID,token public static final String ACCESS_TOKEN_FORMAT = APP_NAME + "RequestHeader:AccessToken:{0}:{1}:{2}:{3}"; diff --git a/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_cn.yml b/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_cn.yml index 0f651aa..541bc83 100644 --- a/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_cn.yml +++ b/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_cn.yml @@ -35,4 +35,10 @@ msgcn: pwdFormatError: 密码组成必须包含数字、英文字母、特殊符号(~!@#$%^&*)且大于等于12位 oldPwdError: 旧密码错误 newPwdSameOld: 新密码不得与旧密码相同 - companyLimit: 最多可创建15个企业 \ No newline at end of file + companyLimit: 最多可创建15个企业 + category_1: zeta + category_2: Delta 故障 + category_3: Delta 计测 + category_4: Delta 累计 + category_5: 大金 + category_6: nittan \ No newline at end of file diff --git a/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_en.yml b/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_en.yml index 1af63ab..3f81eda 100644 --- a/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_en.yml +++ b/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_en.yml @@ -35,4 +35,10 @@ msgen: pwdFormatError: 密码组成必须包含数字、英文字母、特殊符号(~!@#$%^&*)且大于等于12位 oldPwdError: 旧密码错误 newPwdSameOld: 新密码不得与旧密码相同 - companyLimit: 最多可创建15个企业 \ No newline at end of file + companyLimit: 最多可创建15个企业 + category_1: zeta + category_2: Delta failure + category_3: Delta measurment + category_4: Delta accural + category_5: daikin + category_6: nittan \ No newline at end of file diff --git a/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_jp.yml b/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_jp.yml index be7730c..3a84af1 100644 --- a/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_jp.yml +++ b/buildics-oviphone-back-common/src/main/resources/config/language/msg/msg_jp.yml @@ -35,4 +35,10 @@ msgjp: pwdFormatError: パスワードの構成には、数字、アルファベット、特殊文字(~!@#$%^&*) で、12桁以上 oldPwdError: 旧パスワードエラー newPwdSameOld: 注:旧パスワードと同じものを使用しないでください - companyLimit: 最大15のエンタープライズを作成可能 \ No newline at end of file + companyLimit: 最大15のエンタープライズを作成可能 + category_1: zeta + category_2: Delta 故障 + category_3: Delta 計測 + category_4: Delta 積算 + category_5: daikin + category_6: nittan \ No newline at end of file diff --git a/buildics-oviphone-back-controller/src/main/java/com/buildics/oviphone/back/controller/AccountController.java b/buildics-oviphone-back-controller/src/main/java/com/buildics/oviphone/back/controller/AccountController.java index 341b199..0955c3c 100644 --- a/buildics-oviphone-back-controller/src/main/java/com/buildics/oviphone/back/controller/AccountController.java +++ b/buildics-oviphone-back-controller/src/main/java/com/buildics/oviphone/back/controller/AccountController.java @@ -32,7 +32,6 @@ import javax.imageio.ImageIO; * @author jwy-style * */ -@Hidden @RestController @RequestMapping("/account") @Tag(name = "AccountController",description = "账号登录/登出、获取验证码接口") diff --git a/buildics-oviphone-back-controller/src/main/java/com/buildics/oviphone/back/controller/DeviceController.java b/buildics-oviphone-back-controller/src/main/java/com/buildics/oviphone/back/controller/DeviceController.java new file mode 100644 index 0000000..cf2b7ba --- /dev/null +++ b/buildics-oviphone-back-controller/src/main/java/com/buildics/oviphone/back/controller/DeviceController.java @@ -0,0 +1,74 @@ +package com.buildics.oviphone.back.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.buildics.oviphone.back.common.exception.BusinessException; +import com.buildics.oviphone.back.common.response.PageResponse; +import com.buildics.oviphone.back.common.response.ResponseCode; +import com.buildics.oviphone.back.configurator.interceptor.AccessRequired; +import com.buildics.oviphone.back.dto.company.CompanySearchParams; +import com.buildics.oviphone.back.dto.device.DevicePageSearchParam; +import com.buildics.oviphone.back.service.DeviceService; +import com.buildics.oviphone.back.vo.company.CompanyPageDTO; +import com.buildics.oviphone.back.vo.device.DevicePageDTO; +import io.swagger.v3.oas.annotations.Hidden; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * + * @author jwy-style + * + */ +@RestController//代表返回的是json格式的数据,这个注解是Spring4之后新加的注解 +//@AccessRequired //注解标识是否需要验证token +@RequestMapping("/device") //http请求路径映射 +@Tag(name = "DeviceController",description = "设备管理的相关接口") +@SuppressWarnings("unchecked") +public class DeviceController { + + private static Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private DeviceService deviceService; + + + + @AccessRequired + @Operation(summary = "获取设备列表") + @RequestMapping(value = "/getListPage",method = RequestMethod.GET) + public PageResponse> getListPage( + @Parameter(name="LoginName",description="登录名",required=true,schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName, + @Parameter(name="AccessToken",description="鉴权token",required=true) @RequestHeader(required=true) String AccessToken, + @Parameter(name="UserId",description="用户ID",required=true,schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId, + @Parameter(name="CompanyId",description="所属企业ID",required=false,schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId, +// @Parameter(name="LoginCompanyId",description="登录用户的企业ID",required=false,schema = @Schema(defaultValue = "1") @RequestHeader(required=false) Long LoginCompanyId, + @Parameter(name="LanguageType",description="语言类型 0:中文 1:英文 2:日文",required=true,schema = @Schema(defaultValue = "0")) @RequestHeader(required=true) Integer LanguageType, + @Parameter(name="UTCOffset",description="格林威治时间与本地时间的差值,单位是分钟,比如东八区是 -480",required=true,schema = @Schema(defaultValue = "-480")) @RequestHeader(required=true) Integer UTCOffset, + DevicePageSearchParam pageSearchParam + ) throws BusinessException { + + pageSearchParam.setUserId(UserId); + + PageResponse> pageResponse = new PageResponse>(); + try{ + pageResponse.setData(deviceService.getListPage(pageSearchParam, CompanyId, UserId, LanguageType, UTCOffset)); + pageResponse.setCode(ResponseCode.SUCCESS); + pageResponse.setMsg("success"); + }catch (Exception e){ + logger.error("查询列表报错",e); + pageResponse.setCode(ResponseCode.SERVER_ERROR); + pageResponse.setMsg(ResponseCode.SERVER_ERROR_MSG); + } + return pageResponse; + } + +} diff --git a/buildics-oviphone-back-controller/src/main/resources/config/application.properties b/buildics-oviphone-back-controller/src/main/resources/config/application.properties index 40ac458..dfaaa7d 100644 --- a/buildics-oviphone-back-controller/src/main/resources/config/application.properties +++ b/buildics-oviphone-back-controller/src/main/resources/config/application.properties @@ -1,4 +1,4 @@ -server.port=${serverPort} +server.port=${serverPort:30007} spring.mvc.pathmatch.matching-strategy= ANT_PATH_MATCHER @@ -112,4 +112,6 @@ server.servlet.session.cookie.secure=true springdoc.swagger-ui.doc-expansion=none springdoc.swagger-ui.operations-sorter=alpha -springdoc.swagger-ui.tags-sorter=alpha \ No newline at end of file +springdoc.swagger-ui.tags-sorter=alpha + +wgbt.type.id=${wgbtTypeId:45,56} \ No newline at end of file diff --git a/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/MyBatisPlusGenerator.java b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/MyBatisPlusGenerator.java index 15477b0..b8cd33b 100644 --- a/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/MyBatisPlusGenerator.java +++ b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/MyBatisPlusGenerator.java @@ -92,7 +92,8 @@ public class MyBatisPlusGenerator { "basic_menu", "basic_role", "basic_company", - "basic_user" + "basic_user", + "device_info" ); // uuid算法主键的表 List assignIdTables = Arrays.asList( @@ -106,7 +107,8 @@ public class MyBatisPlusGenerator { // 没有主键的表 List noIdTables = Arrays.asList( "basic_role_menu_relation", - "basic_role_user_relation" + "basic_role_user_relation", + "user_building_relation" ); // 5. 为不同类型表创建不同的策略配置 diff --git a/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/auto/DeviceInfoMapper.java b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/auto/DeviceInfoMapper.java new file mode 100644 index 0000000..cc5f5bc --- /dev/null +++ b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/auto/DeviceInfoMapper.java @@ -0,0 +1,16 @@ +package com.buildics.oviphone.back.dao.auto; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.buildics.oviphone.back.model.DeviceInfo; + +/** + *

+ * Mapper 接口 + *

+ * + * @author jwy + * @since + */ +public interface DeviceInfoMapper extends BaseMapper { + +} diff --git a/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/auto/UserBuildingRelationMapper.java b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/auto/UserBuildingRelationMapper.java new file mode 100644 index 0000000..ed9d853 --- /dev/null +++ b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/auto/UserBuildingRelationMapper.java @@ -0,0 +1,16 @@ +package com.buildics.oviphone.back.dao.auto; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.buildics.oviphone.back.model.UserBuildingRelation; + +/** + *

+ * 用户楼宇关系表 Mapper 接口 + *

+ * + * @author jwy + * @since + */ +public interface UserBuildingRelationMapper extends BaseMapper { + +} diff --git a/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/BasicUserMapperExt.java b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/BasicUserMapperExt.java index 5266afa..b9e240f 100644 --- a/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/BasicUserMapperExt.java +++ b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/BasicUserMapperExt.java @@ -24,4 +24,5 @@ public interface BasicUserMapperExt extends BasicUserMapper{ UserInfoVO getAccountInfo(Map paramMap); + Integer checkBuildingManager(Long userId); } diff --git a/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/DeviceInfoMapperExt.java b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/DeviceInfoMapperExt.java new file mode 100644 index 0000000..654eab3 --- /dev/null +++ b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/DeviceInfoMapperExt.java @@ -0,0 +1,23 @@ +package com.buildics.oviphone.back.dao.ex; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.buildics.oviphone.back.dao.auto.BasicUserMapper; +import com.buildics.oviphone.back.dao.auto.DeviceInfoMapper; +import com.buildics.oviphone.back.dto.device.DevicePageSearchParam; +import com.buildics.oviphone.back.dto.user.OptUserParam; +import com.buildics.oviphone.back.dto.user.PageSearchParam; +import com.buildics.oviphone.back.vo.device.DevicePageDTO; +import com.buildics.oviphone.back.vo.user.UserInfoVO; +import com.buildics.oviphone.back.vo.user.UserPageDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +@Mapper +public interface DeviceInfoMapperExt extends DeviceInfoMapper { + + IPage getListPage(Page page, @Param("params") DevicePageSearchParam pageSearchParam); + +} diff --git a/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/UserBuildingRelationMapperExt.java b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/UserBuildingRelationMapperExt.java new file mode 100644 index 0000000..38a1c0a --- /dev/null +++ b/buildics-oviphone-back-dao/src/main/java/com/buildics/oviphone/back/dao/ex/UserBuildingRelationMapperExt.java @@ -0,0 +1,13 @@ +package com.buildics.oviphone.back.dao.ex; + +import com.buildics.oviphone.back.dao.auto.UserBuildingRelationMapper; +import com.buildics.oviphone.back.vo.building.BindedBuildingVO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface UserBuildingRelationMapperExt extends UserBuildingRelationMapper { + + List getBindedBuilding(Long sourceUserId); +} diff --git a/buildics-oviphone-back-dao/src/main/resources/mappers/auto/DeviceInfoMapper.xml b/buildics-oviphone-back-dao/src/main/resources/mappers/auto/DeviceInfoMapper.xml new file mode 100644 index 0000000..6a744bd --- /dev/null +++ b/buildics-oviphone-back-dao/src/main/resources/mappers/auto/DeviceInfoMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, device_id, device_sn, type_id, wsclient_id, space_id, device_name, remark, building_id, asset_id, flag, company_id, created_by, created_timestamp, updated_by, updated_timestamp, project_id, floor_id, flood_flag, administrator_id, sensor_id, sensor_maker_id, sensor_status + + + diff --git a/buildics-oviphone-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml b/buildics-oviphone-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml new file mode 100644 index 0000000..7aaf065 --- /dev/null +++ b/buildics-oviphone-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + user_id, building_id, create_time + + + diff --git a/buildics-oviphone-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml b/buildics-oviphone-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml index aced57f..7f2d4ad 100644 --- a/buildics-oviphone-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml +++ b/buildics-oviphone-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml @@ -92,5 +92,15 @@ inner join basic_company bcom on bcom.id = buser.company_id WHERE buser.flag != 1 and bcom.flag != 1 and (buser.login_name = #{loginname} OR buser.email = #{loginname}) + + \ No newline at end of file diff --git a/buildics-oviphone-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml b/buildics-oviphone-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml new file mode 100644 index 0000000..e078786 --- /dev/null +++ b/buildics-oviphone-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml @@ -0,0 +1,95 @@ + + + + + + + \ No newline at end of file diff --git a/buildics-oviphone-back-dao/src/main/resources/mappers/ex/UserBuildingRelationMapperExt.xml b/buildics-oviphone-back-dao/src/main/resources/mappers/ex/UserBuildingRelationMapperExt.xml new file mode 100644 index 0000000..25de63e --- /dev/null +++ b/buildics-oviphone-back-dao/src/main/resources/mappers/ex/UserBuildingRelationMapperExt.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/dto/device/DevicePageSearchParam.java b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/dto/device/DevicePageSearchParam.java new file mode 100644 index 0000000..e4d51a9 --- /dev/null +++ b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/dto/device/DevicePageSearchParam.java @@ -0,0 +1,70 @@ +package com.buildics.oviphone.back.dto.device; + +import com.buildics.oviphone.back.dto.BaseSearchParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** +* @author Mr.zhc +* @time 2022年7月27日12:06:35 +*/ +@Setter +@Getter +public class DevicePageSearchParam extends BaseSearchParams{ + + @Schema(description ="Binded building IDs", hidden = true) + private List bindBuildingIdList; + + @Schema(description ="type IDs", hidden = true) + private List typeIdList; + + @Schema(description = "Device SN", example = "2738967") + private String deviceSn; + + @Schema(description = "Device type ID", example = "2738967") + private Long typeId; + + @Schema(description = "Device category ID", example = "1") + private Long categoryId; + + @Schema(description = "Device ID", example = "2738967") + private String deviceId; + + @Schema(description = "Device ID", example = "[2738967]", hidden = true) + private List deviceIdList; + + @Schema(description = "Device name", example = "Device 1") + private String deviceName; + + @Schema(description = "Project ID", example = "1") + private Long projectId; + + @Schema(description = "Building ID", example = "1") + private Long buildingId; + + @Schema(description = "Floor ID", example = "1") + private Long floorId; + + @Schema(description = "Space ID", example = "1") + private Long spaceId; + + @Schema(description = "Asset symbol", example = "asset-01") + private String assetSymbol; + + @Schema(description = "Target ID value", example = "33") + private Integer targetIdValue; + + @Schema(description = "Device category ID", example = "12", title = "Device category ID") + private Long deviceCategoryId; + + @Schema(description = "order by [what]", example = "deviceId,deviceName,symbol") + private String orderBy; + + @Schema(description = "order mode", example = "desc,asc") + private String orderMode = "asc"; + + +} diff --git a/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/model/DeviceInfo.java b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/model/DeviceInfo.java new file mode 100644 index 0000000..7c2704e --- /dev/null +++ b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/model/DeviceInfo.java @@ -0,0 +1,117 @@ +package com.buildics.oviphone.back.model; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("device_info") +@Schema(description = "") +public class DeviceInfo implements Serializable { + + @TableId(value = "id", type = IdType.AUTO) + @Schema(description = "") + private Integer id; + + + @TableField("device_id") + @Schema(description = "") + private String deviceId; + + @TableField("device_sn") + @Schema(description = "用于记录SN,当SN与deviceId不同时使用") + private String deviceSn; + + @TableField("type_id") + @Schema(description = "") + private Integer typeId; + + @TableField("wsclient_id") + @Schema(description = "") + private Integer wsclientId; + + @TableField("space_id") + @Schema(description = "空间ID") + private Long spaceId; + + @TableField("device_name") + @Schema(description = "设备名称") + private String deviceName; + + @TableField("remark") + @Schema(description = "备注信息") + private String remark; + + @TableField("building_id") + @Schema(description = "楼宇ID") + private Long buildingId; + + @TableField("asset_id") + @Schema(description = "资产ID") + private Long assetId; + + @TableField("flag") + @Schema(description = "") + private Integer flag; + + @TableField("company_id") + @Schema(description = "公司ID") + private Long companyId; + + @TableField("created_by") + @Schema(description = "") + private Long createdBy; + + @TableField("created_timestamp") + @Schema(description = "") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdTimestamp; + + @TableField("updated_by") + @Schema(description = "") + private Long updatedBy; + + @TableField("updated_timestamp") + @Schema(description = "") + private Long updatedTimestamp; + + @TableField("project_id") + @Schema(description = "项目ID") + private Long projectId; + + @TableField("floor_id") + @Schema(description = "楼宇ID") + private Long floorId; + + @TableField("flood_flag") + @Schema(description = "洪水接口是否通知标志 (0:不通知, 1:通知)") + private Integer floodFlag; + + @TableField("administrator_id") + @Schema(description = "传感器管理者代码 (实证团体代码,需保留前导0,例: 36859)") + private String administratorId; + + @TableField("sensor_id") + @Schema(description = "传感器ID (管理者代码5位 + 管理编号5位,例: 1234567890)") + private String sensorId; + + @TableField("sensor_maker_id") + @Schema(description = "传感器厂商代码 (例: 001)") + private String sensorMakerId; + + @TableField("sensor_status") + @Schema(description = "传感器固有状态 (0001=传感器异常, 0010=处理部异常, 1000=维护中, 其他由厂商定义)") + private String sensorStatus; + + +} diff --git a/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/model/UserBuildingRelation.java b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/model/UserBuildingRelation.java new file mode 100644 index 0000000..c47818c --- /dev/null +++ b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/model/UserBuildingRelation.java @@ -0,0 +1,34 @@ +package com.buildics.oviphone.back.model; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("user_building_relation") +@Schema(description = "用户楼宇关系表") +public class UserBuildingRelation implements Serializable { + + + @TableField("user_id") + @Schema(description = "") + private Long userId; + + @TableField("building_id") + @Schema(description = "") + private Long buildingId; + + @TableField("create_time") + @Schema(description = "") + private Long createTime; + + +} diff --git a/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/building/BindedBuildingVO.java b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/building/BindedBuildingVO.java new file mode 100644 index 0000000..dc04202 --- /dev/null +++ b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/building/BindedBuildingVO.java @@ -0,0 +1,26 @@ +package com.buildics.oviphone.back.vo.building; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** +* @author Mr.Jiang +* @time 2022年7月21日 下午8:50:31 +*/ +@Data +public class BindedBuildingVO { + + @Schema(description = "Building ID (unique identifier, not applicable for new entries)", example = "2738967") + private Long buildingId; + + @Schema(description = "Building name", example = "testBuilding1", required = true) + private String buildingName; + + @Schema(description = "Address", example = "日本我孙子市", required = true) + private String address; + + @Schema(description = "User-defined building ID", example = "123AAA6", required = true) + private String udfBuildingId; + + +} diff --git a/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/building/BuildingPageVO.java b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/building/BuildingPageVO.java new file mode 100644 index 0000000..2c509d8 --- /dev/null +++ b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/building/BuildingPageVO.java @@ -0,0 +1,44 @@ +package com.buildics.oviphone.back.vo.building; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** +* @author Mr.Jiang +* @time 2022年7月21日 下午8:50:31 +*/ +@Data +public class BuildingPageVO{ + + @Schema(description = "Building ID (unique identifier, not applicable for new entries)", example = "2738967") + private Long buildingId; + + @Schema(description = "Company ID", example = "2738967") + private Long companyId; + + @Schema(description = "Company name", example = "testCompany1", required = true) + private String companyName; + + @Schema(description = "Building name", example = "testBuilding1", required = true) + private String buildingName; + + @Schema(description = "Address", example = "日本我孙子市", required = true) + private String address; + + @Schema(description = "User-defined building ID", example = "123AAA6", required = true) + private String udfBuildingId; + + @Schema(description ="Autodesk Cloud BIM Model Key", example = "123AAA6", required = true) + private String buildingBucket; + + @Schema(description ="Custom floor info", example = "[]", required = true) + private String floorInfoList; + + @Schema(description ="Building image number", example = "2") + private Integer thumbnailNum; + + @Schema(description ="displayed on the 2d3d, 0-yes, 1-no", example = "1") + private Integer showSwitch2d3d; + + +} diff --git a/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/device/DevicePageDTO.java b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/device/DevicePageDTO.java new file mode 100644 index 0000000..aafc0f9 --- /dev/null +++ b/buildics-oviphone-back-model/src/main/java/com/buildics/oviphone/back/vo/device/DevicePageDTO.java @@ -0,0 +1,87 @@ +package com.buildics.oviphone.back.vo.device; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** +* @author Mr.Jiang +* @time 2022年7月21日 下午8:50:31 +*/ +@Data +public class DevicePageDTO { + + private Long id; + + private String deviceId; + + private String deviceSn; + + private Long typeId; + + private Long categoryId; + + private String typeName; + + private Long wsclientId; + + private Long spaceId; + + private String spaceName; + + private String deviceName; + + private String remark; + + private Long buildingId; + + private String buildingName; + + private Long assetId; + + private String assetSymbol; + + private Integer flag; + + private Long companyId; + + private Long createdBy; + + private Long createdTimestamp; + + private Long updatedBy; + + private Long updatedTimestamp; + + private Long projectId; + + private Long floorId; + + private String floorName; + + private String targetId; + + private String targetIdValue; + + + @Schema(description = "Device Category ID", example = "5") + private Long deviceCategoryId; + + @Schema(description = "Device Category Name", example = "Dajin") + private String deviceCategoryName; + + @Schema(description = "洪水接口是否通知标志,0-不通知,1-通知", example = "1") + private Integer floodFlag; + + @Schema(description = "传感器管理者代码", example = "36859") + private String administratorId; + + @Schema(description = "传感器ID", example = "1234567890") + private String sensorId; + + @Schema(description = "传感器厂商代码", example = "001") + private String sensorMakerId; + + @Schema(description = "传感器固有状态", example = "0070") + private String sensorStatus; + +} diff --git a/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/DeviceService.java b/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/DeviceService.java new file mode 100644 index 0000000..0aaeea7 --- /dev/null +++ b/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/DeviceService.java @@ -0,0 +1,17 @@ +package com.buildics.oviphone.back.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.buildics.oviphone.back.dto.device.DevicePageSearchParam; +import com.buildics.oviphone.back.vo.company.CompanyPageDTO; +import com.buildics.oviphone.back.vo.device.DevicePageDTO; + +/** + * + * @author jwy-style + * + */ +public interface DeviceService { + + IPage getListPage(DevicePageSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType, Integer utcOffset); + +} diff --git a/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/common/CommonOpt.java b/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/common/CommonOpt.java index a0bd670..4329c21 100644 --- a/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/common/CommonOpt.java +++ b/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/common/CommonOpt.java @@ -3,7 +3,10 @@ package com.buildics.oviphone.back.service.common; import java.util.*; import java.util.stream.Collectors; +import com.buildics.oviphone.back.dao.ex.BasicUserMapperExt; +import com.buildics.oviphone.back.dao.ex.UserBuildingRelationMapperExt; import com.buildics.oviphone.back.model.BasicCompany; +import com.buildics.oviphone.back.vo.building.BindedBuildingVO; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -25,6 +28,10 @@ public class CommonOpt { @Autowired private BasicCompanyMapperExt basicCompanyMapperExt; + @Autowired + private BasicUserMapperExt basicUserMapperExt; + @Autowired + private UserBuildingRelationMapperExt userBuildingRelationMapperExt; /** @@ -85,5 +92,18 @@ public class CommonOpt { return false; } } - + + public List getBindBuildingIdList(Long userId) { + Integer buildingManager = basicUserMapperExt.checkBuildingManager(userId); + if (buildingManager > 0) { + return null;//null表示不限制, sql里面判定bindedBuildingList=null的话,就不限制楼宇 + } else { + List bindedBuildingList = userBuildingRelationMapperExt.getBindedBuilding(userId); + if (CollectionUtils.isEmpty(bindedBuildingList)) { + return Collections.singletonList(-1L);//-1的话,表示没有绑定 + } else { + return bindedBuildingList.stream().map(BindedBuildingVO::getBuildingId).collect(Collectors.toList()); + } + } + } } diff --git a/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/impl/DeviceServiceImpl.java b/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..b0df95d --- /dev/null +++ b/buildics-oviphone-back-service/src/main/java/com/buildics/oviphone/back/service/impl/DeviceServiceImpl.java @@ -0,0 +1,101 @@ +package com.buildics.oviphone.back.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.buildics.oviphone.back.common.language.msg.MsgLanguageChange; +import com.buildics.oviphone.back.dao.ex.BasicCompanyMapperExt; +import com.buildics.oviphone.back.dao.ex.BasicUserMapperExt; +import com.buildics.oviphone.back.dao.ex.DeviceInfoMapperExt; +import com.buildics.oviphone.back.dto.company.CompanySearchParams; +import com.buildics.oviphone.back.dto.device.DevicePageSearchParam; +import com.buildics.oviphone.back.service.CompanyService; +import com.buildics.oviphone.back.service.DeviceService; +import com.buildics.oviphone.back.service.common.CommonOpt; +import com.buildics.oviphone.back.util.async.OptAsync; +import com.buildics.oviphone.back.vo.company.CompanyPageDTO; +import com.buildics.oviphone.back.vo.device.DevicePageDTO; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * + * @author jwy-style + * + */ +@Service +public class DeviceServiceImpl implements DeviceService { + + private static Logger logger = LoggerFactory.getLogger(DeviceServiceImpl.class); + + @Value("${wgbt.type.id}") + private List wgbtTypeIdList; + + @Autowired + private OptAsync optAsync; + @Autowired + private MsgLanguageChange msgLanguageChange; + @Autowired + private BasicCompanyMapperExt basicCompanyMapperExt; + @Autowired + private CommonOpt commonOpt; + @Autowired + private DeviceInfoMapperExt deviceInfoMapperExt; + + + + + @Override + public IPage getListPage(DevicePageSearchParam pageSearchParam, Long companyId, + Long userId, Integer languageType, Integer uTCOffset) { + + pageSearchParam.setTypeIdList(wgbtTypeIdList); + + if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) { + pageSearchParam.setCompanyIdList(Arrays.asList(companyId)); + } else { + pageSearchParam.setCompanyIdList(commonOpt.filterCompanyIds(companyId, pageSearchParam.getCompanyIds())); + } + + if (pageSearchParam.getOrderBy()!=null){ + switch (pageSearchParam.getOrderBy()){ + case "device_name": + pageSearchParam.setOrderBy("device_name"); + break; + case "device_id": + pageSearchParam.setOrderBy("deviceId"); + break; + case "symbol": + pageSearchParam.setOrderBy("assetSymbol"); + break; + default: + pageSearchParam.setOrderBy(null); + } + } + + pageSearchParam.setBindBuildingIdList(commonOpt.getBindBuildingIdList(userId)); + + Page page = new Page<>( + pageSearchParam.getPageNum() == null ? 1 : pageSearchParam.getPageNum(), + pageSearchParam.getPageSize() == null ? 20 : pageSearchParam.getPageSize()); + IPage resultList = deviceInfoMapperExt.getListPage(page, pageSearchParam); + + if (CollectionUtils.isNotEmpty(resultList.getRecords())) { + for (DevicePageDTO devicePageDTO : resultList.getRecords()) { + if (null != devicePageDTO.getDeviceCategoryId()) { + devicePageDTO.setDeviceCategoryName(msgLanguageChange.getParameterMapByCode(languageType, "category_" + devicePageDTO.getDeviceCategoryId())); + } + } + } + + return resultList; + } + +}