From ea73246653fe5788002e6df4325a33568c4ca763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8A=9B?= Date: Thu, 4 Aug 2022 10:18:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=89=E5=85=A8=E9=97=A8?= =?UTF-8?q?=EF=BC=8C3d=E5=BA=93=E6=88=BF=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/device/domain/DeviceInfo.java | 8 +++ .../repository/DeviceInfoRepository.java | 3 + .../controller/AlarmInfoController.java | 12 +++- .../controller/DisplayConfigController.java | 32 ++++++++++ .../controller/SecurityDoorController.java | 10 +++ .../storeroom3d/domain/DisplayConfig.java | 62 +++++++++++++++++++ .../storeroom3d/domain/SecurityDoor.java | 22 ++++--- .../repository/SecurityDoorRepository.java | 9 +++ .../service/DisplayConfigService.java | 27 ++++++++ .../service/SecurityDoorService.java | 4 ++ .../service/impl/AlarmInfoServiceImpl.java | 20 +++++- .../service/impl/DisplayConfigImpl.java | 33 ++++++++++ .../service/impl/SecurityDoorServiceImpl.java | 20 ++++++ 13 files changed, 251 insertions(+), 11 deletions(-) create mode 100644 storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/DisplayConfigController.java create mode 100644 storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java create mode 100644 storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DisplayConfigService.java create mode 100644 storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DisplayConfigImpl.java diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java index 88bba99..ddac159 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java @@ -1,7 +1,9 @@ package com.storeroom.modules.device.domain; +import com.alibaba.fastjson.annotation.JSONField; import com.storeroom.base.BaseEntity; +import com.storeroom.modules.storeroom3d.domain.DisplayConfig; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -12,6 +14,7 @@ import javax.persistence.*; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Objects; +import java.util.Set; @Entity @Getter @@ -133,6 +136,11 @@ public class DeviceInfo extends BaseEntity implements Serializable { @ApiModelProperty(value = "是否回调") private OperatingState isCallback; +// @JSONField(serialize = false) +// @ManyToMany(mappedBy = "deviceInfo") +// @ApiModelProperty(value = "3D库房显示配置") +// private Set displayConfig; + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java index b6c006f..fb7cbfa 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java @@ -23,6 +23,9 @@ public interface DeviceInfoRepository extends JpaRepository, List findByStoreroomId(Storeroom storeroomId); + + + /** * 根据ip 端口号 查询 * diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java index 1dc1ac0..1dfaf4f 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java @@ -2,8 +2,10 @@ package com.storeroom.modules.storeroom3d.controller; import com.storeroom.annotaion.rest.AnonymousGetMapping; +import com.storeroom.exception.BaseException; import com.storeroom.modules.storeroom3d.service.AlarmInfoService; import com.storeroom.utils.ApiResponse; +import com.storeroom.utils.StringUtils; import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,9 +22,17 @@ public class AlarmInfoController { private final AlarmInfoService alarmInfoService; @AnonymousGetMapping("all") - public ApiResponse queryAllAlarm(@RequestParam String storeroomId) { + public ApiResponse queryAllAlarm() { return ApiResponse.success(alarmInfoService.getAllAlarmInfo()); } + @AnonymousGetMapping("storeroom") + public ApiResponse queryStoreroomId(@RequestParam String storeroomId) { + if (StringUtils.isEmpty(storeroomId)){ + throw new BaseException("库房id不能为空"); + } + return ApiResponse.success(alarmInfoService.getStoreroomDevice(storeroomId)); + } + } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/DisplayConfigController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/DisplayConfigController.java new file mode 100644 index 0000000..621ba58 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/DisplayConfigController.java @@ -0,0 +1,32 @@ +package com.storeroom.modules.storeroom3d.controller; + + +import com.storeroom.annotaion.rest.AnonymousGetMapping; +import com.storeroom.exception.BaseException; +import com.storeroom.modules.storeroom3d.service.DisplayConfigService; +import com.storeroom.utils.ApiResponse; +import com.storeroom.utils.StringUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/displayconfig/") +@Api(tags = "3d库房显示配置") +@RequiredArgsConstructor +public class DisplayConfigController { + + private final DisplayConfigService displayConfigService; + + @AnonymousGetMapping("deviceinfo") + @ApiOperation("查询设备") + public ApiResponse queryDevice(@RequestParam String storeroomId) { + if (StringUtils.isEmpty(storeroomId)) { + throw new BaseException("库房id不能为空"); + } + return ApiResponse.success(displayConfigService.queryDevceInfo(storeroomId)); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java index 635f51a..44633ca 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java @@ -1,6 +1,7 @@ package com.storeroom.modules.storeroom3d.controller; +import com.storeroom.annotaion.rest.AnonymousGetMapping; import com.storeroom.annotaion.rest.AnonymousPostMapping; import com.storeroom.exception.BaseException; import com.storeroom.modules.storeroom3d.domain.SecurityDoor; @@ -14,6 +15,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @@ -33,7 +35,15 @@ public class SecurityDoorController { && ObjectUtils.isEmpty(securityDoor.getAlarmLevel())) { throw new BaseException("必填字段不能为空"); } + securityDoorService.create(securityDoor); return ApiResponse.success(ResponseStatus.SUCCESS); } + + @ApiOperation("通过库房id查询门禁") + @AnonymousGetMapping("storeroom") + public ApiResponse findAll() { + + return ApiResponse.success(securityDoorService.queryStoreroom()); + } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java new file mode 100644 index 0000000..49eb941 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java @@ -0,0 +1,62 @@ +package com.storeroom.modules.storeroom3d.domain; + + +import com.storeroom.base.BaseEntity; +import com.storeroom.modules.device.domain.DeviceInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Objects; +import java.util.Set; + +@Getter +@Setter +@Entity +@Table(name = "display_config") +public class DisplayConfig extends BaseEntity implements Serializable { + + @Id + @Column(name = "id") + @NotNull(groups = BaseEntity.Update.class) + @ApiModelProperty(value = "id", hidden = true) + private String id; + + + @ManyToMany(fetch = FetchType.EAGER) + @ApiModelProperty(value = "设备信息") + @JoinTable(name = "display_device_info", joinColumns = {@JoinColumn(name = "display_config_id",referencedColumnName = "id")}, + inverseJoinColumns = {@JoinColumn(name = "device_info_id",referencedColumnName = "id")}) + private Set deviceInfo; + + + @Column(name = "div_position") + @ApiModelProperty(name = "标签定位") + private String divPosition; + + @Column(name = "is_display") + @ApiModelProperty(name = "是否显示") + private Boolean isDisplay; + + + @Column(name = "bind_state") + @ApiModelProperty(name = "绑定状态") + private Boolean bindState; + + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DisplayConfig that = (DisplayConfig) o; + return Objects.equals(id, that.id) && Objects.equals(deviceInfo, that.deviceInfo) && Objects.equals(divPosition, that.divPosition) && Objects.equals(isDisplay, that.isDisplay) && Objects.equals(bindState, that.bindState); + } + + @Override + public int hashCode() { + return Objects.hash(id, deviceInfo, divPosition, isDisplay, bindState); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/SecurityDoor.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/SecurityDoor.java index b1a0e75..c572974 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/SecurityDoor.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/SecurityDoor.java @@ -29,40 +29,44 @@ public class SecurityDoor extends BaseEntity implements Serializable { @Column(name = "device_id") - @ApiModelProperty(value = "设备id",hidden = true) + @ApiModelProperty(value = "设备id") private String deviceId; @Column(name = "tid") - @ApiModelProperty(value = "标签id",hidden = true) + @ApiModelProperty(value = "标签id") private String tid; @Column(name = "alarm_event") - @ApiModelProperty(value = "0:出门;1:进门",hidden = true) + @ApiModelProperty(value = "0:出门;1:进门") private Integer alarmEvent; @Column(name = "user_id") - @ApiModelProperty(value = "用户id",hidden = true) - private Integer userId; + @ApiModelProperty(value = "用户id") + private String userId; @Column(name = "alarm_level") - @ApiModelProperty(value = "0:异常;1:正常",hidden = true) + @ApiModelProperty(value = "0:异常;1:正常") private Integer alarmLevel; @Column(name = "alarm_msg") - @ApiModelProperty(value = "描述",hidden = true) + @ApiModelProperty(value = "描述") private String alarmMsg; + @Column(name = "storeroom_id") + @ApiModelProperty(value = "库房id") + private String storeroomId; + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; SecurityDoor that = (SecurityDoor) o; - return Objects.equals(id, that.id) && Objects.equals(deviceId, that.deviceId) && Objects.equals(tid, that.tid) && Objects.equals(alarmEvent, that.alarmEvent) && Objects.equals(userId, that.userId) && Objects.equals(alarmLevel, that.alarmLevel) && Objects.equals(alarmMsg, that.alarmMsg); + return Objects.equals(id, that.id) && Objects.equals(deviceId, that.deviceId) && Objects.equals(tid, that.tid) && Objects.equals(alarmEvent, that.alarmEvent) && Objects.equals(userId, that.userId) && Objects.equals(alarmLevel, that.alarmLevel) && Objects.equals(alarmMsg, that.alarmMsg) && Objects.equals(storeroomId, that.storeroomId); } @Override public int hashCode() { - return Objects.hash(id, deviceId, tid, alarmEvent, userId, alarmLevel, alarmMsg); + return Objects.hash(id, deviceId, tid, alarmEvent, userId, alarmLevel, alarmMsg, storeroomId); } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/SecurityDoorRepository.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/SecurityDoorRepository.java index 90cdab0..25299de 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/SecurityDoorRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/SecurityDoorRepository.java @@ -5,5 +5,14 @@ import com.storeroom.modules.storeroom3d.domain.SecurityDoor; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import java.util.List; + public interface SecurityDoorRepository extends JpaRepository, JpaSpecificationExecutor { + + /** + * 根据库房id查询通道门 + * @param storeroomId + * @return + */ + List findByStoreroomId(String storeroomId); } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DisplayConfigService.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DisplayConfigService.java new file mode 100644 index 0000000..b8f61c1 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DisplayConfigService.java @@ -0,0 +1,27 @@ +package com.storeroom.modules.storeroom3d.service; + +import com.storeroom.modules.device.domain.DeviceInfo; +import com.storeroom.modules.device.service.dto.DeviceInfoDto; +import com.storeroom.modules.storeroom3d.domain.DisplayConfig; + +import java.util.List; + +public interface DisplayConfigService { + + + /** + * 绑定参数 + * + * @return + */ + DisplayConfig bind(DisplayConfig displayConfig); + + + /** + * 通过库房id查询设备 + * + * @param storeroomId + * @return + */ + List queryDevceInfo(String storeroomId); +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/SecurityDoorService.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/SecurityDoorService.java index 93c7938..6f7035b 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/SecurityDoorService.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/SecurityDoorService.java @@ -2,7 +2,11 @@ package com.storeroom.modules.storeroom3d.service; import com.storeroom.modules.storeroom3d.domain.SecurityDoor; +import java.util.List; + public interface SecurityDoorService { void create(SecurityDoor securityDoor); + + List queryStoreroom(); } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java index cbababc..eb8bb60 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java @@ -1,7 +1,9 @@ package com.storeroom.modules.storeroom3d.service.impl; import com.storeroom.modules.device.domain.DeviceInfo; +import com.storeroom.modules.device.domain.Storeroom; import com.storeroom.modules.device.repository.DeviceInfoRepository; +import com.storeroom.modules.device.repository.StoreroomRepository; import com.storeroom.modules.storeroom3d.domain.GetCurAlarm; import com.storeroom.modules.storeroom3d.repository.GetCurAlarmRepository; import com.storeroom.modules.storeroom3d.service.AlarmInfoService; @@ -26,6 +28,7 @@ public class AlarmInfoServiceImpl implements AlarmInfoService { private final ThirdApiService thirdApiService; private final GetCurAlarmMapper getCurAlarmMapper; private final GetCurAlarmRepository getCurAlarmRepository; + private final StoreroomRepository storeroomRepository; @Override public Object getAllAlarmInfo() { @@ -48,6 +51,21 @@ public class AlarmInfoServiceImpl implements AlarmInfoService { @Override public Object getStoreroomDevice(String storeroomId) { - return null; + Storeroom storeroom = storeroomRepository.findById(storeroomId).orElseGet(Storeroom::new); + List deviceInfoList = deviceInfoRepository.findByStoreroomId(storeroom); + List alarmDtos = thirdApiService.getAllDeviceAlarm(); + List alarmDtos1 = new ArrayList<>(); + //过滤设备id为空的数据 + List alarmDtos2 = alarmDtos.stream().filter(getCurAlarmDto -> Objects.equals(getCurAlarmDto.getDevice_id(), "")).collect(Collectors.toList()); + for (int i = 0; i < alarmDtos2.size(); i++) { + for (int k = 0; k < deviceInfoList.size(); k++) { + if (Objects.equals(alarmDtos.get(i).getDevice_id(), deviceInfoList.get(k).getDeviceId())) { + alarmDtos1.add(alarmDtos.get(i)); + // GetCurAlarm getCurAlarm = getCurAlarmMapper.toEntity(alarmDtos.get(i)); + } + } + } + + return alarmDtos; } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DisplayConfigImpl.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DisplayConfigImpl.java new file mode 100644 index 0000000..d33a887 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DisplayConfigImpl.java @@ -0,0 +1,33 @@ +package com.storeroom.modules.storeroom3d.service.impl; + +import com.storeroom.modules.device.domain.DeviceInfo; +import com.storeroom.modules.device.domain.Storeroom; +import com.storeroom.modules.device.repository.DeviceInfoRepository; +import com.storeroom.modules.device.repository.StoreroomRepository; +import com.storeroom.modules.device.service.dto.DeviceInfoDto; +import com.storeroom.modules.storeroom3d.domain.DisplayConfig; +import com.storeroom.modules.storeroom3d.service.DisplayConfigService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class DisplayConfigImpl implements DisplayConfigService { + + private final DeviceInfoRepository deviceInfoRepository; + private final StoreroomRepository storeroomRepository; + + + @Override + public DisplayConfig bind(DisplayConfig displayConfig) { + return null; + } + + @Override + public List queryDevceInfo(String storeroomId) { + Storeroom storeroom = storeroomRepository.findById(storeroomId).orElseGet(Storeroom::new); + return deviceInfoRepository.findByStoreroomId(storeroom); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/SecurityDoorServiceImpl.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/SecurityDoorServiceImpl.java index a877ed4..d98bbfc 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/SecurityDoorServiceImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/SecurityDoorServiceImpl.java @@ -1,11 +1,19 @@ package com.storeroom.modules.storeroom3d.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.storeroom.modules.device.domain.Storeroom; +import com.storeroom.modules.device.repository.StoreroomRepository; import com.storeroom.modules.storeroom3d.domain.SecurityDoor; import com.storeroom.modules.storeroom3d.repository.SecurityDoorRepository; import com.storeroom.modules.storeroom3d.service.SecurityDoorService; +import com.storeroom.utils.FastjsonUtils; import com.storeroom.utils.NanoIdUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; @Service @@ -14,10 +22,22 @@ public class SecurityDoorServiceImpl implements SecurityDoorService { private final SecurityDoorRepository securityDoorRepository; + private final StoreroomRepository storeroomRepository; @Override + @Transactional(rollbackFor = Exception.class) public void create(SecurityDoor securityDoor) { securityDoor.setId(NanoIdUtils.randomNanoId()); + PushServiceImpl pushService = new PushServiceImpl(); + Object obj = JSONObject.toJSON(securityDoor); + + pushService.pushMsgToAll(obj.toString()); + securityDoorRepository.save(securityDoor); } + + @Override + public List queryStoreroom() { + return securityDoorRepository.findAll(); + } }