Browse Source

ups接口代码提交

jingyuanchao 1 year ago
parent
commit
0f1bd35508
24 changed files with 1052 additions and 175 deletions
  1. 70 13
      project_data/sql/0.1.1/soc/soc.sql
  2. 115 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotUps.java
  3. 45 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotUpsAttr.java
  4. 97 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotUpsDataLog.java
  5. 51 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/iot/UpsStatus.java
  6. 2 2
      soc-modules/soc-modules-gen/src/main/java/com/xunmei/gen/util/CodeGenerators.java
  7. 64 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/controller/UpsController.java
  8. 21 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotUpsAttrMapper.java
  9. 16 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotUpsDataLogMapper.java
  10. 24 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotUpsMapper.java
  11. 16 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IIotUpsDataLogService.java
  12. 23 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IIotUpsService.java
  13. 5 46
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/NorthStatisticsSyncService.java
  14. 20 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotUpsDataLogServiceImpl.java
  15. 298 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotUpsServiceImpl.java
  16. 0 74
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/org/OrgEditDto.java
  17. 0 19
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/org/OrgReceiveDto.java
  18. 0 20
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/org/OrgReceivePageDto.java
  19. 14 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/ups/UpsDataVo.java
  20. 47 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/ups/UpsDeviceDataDto.java
  21. 38 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/ups/UpsDeviceDto.java
  22. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/util/RedisCheckRepeatDataUtil.java
  23. 5 0
      soc-modules/soc-modules-mediator/src/main/resources/mapper/IotUpsDataLogMapper.xml
  24. 80 0
      soc-modules/soc-modules-mediator/src/main/resources/mapper/IotUpsMapper.xml

+ 70 - 13
project_data/sql/0.1.1/soc/soc.sql

@@ -1,4 +1,3 @@
-
 -- soc v0.1.1 版本升级脚本
 
 DELIMITER ??
@@ -7,19 +6,77 @@ CREATE PROCEDURE schema_change()
 BEGIN
 
 
-    -- ups表增加唯一标识字段
-    IF NOT EXISTS(SELECT *
-                  FROM information_schema.columns
-                  WHERE table_schema = DATABASE()
-                    AND table_name = 'iot_ups'
-                    AND column_name = 'ups_unique_code') THEN
-        alter table iot_ups
-            add ups_unique_code varchar(225) null comment 'ups唯一标识,机构code+主机code+deviceCode组成设备唯一' after device_code;
-    END IF;
-
-
 END ??
 DELIMITER ;
 CALL schema_change();
+ -- 新增ups设备表
+drop table if exists iot_ups;
+create table if not exists iot_ups
+(
+    id                       bigint        not null
+        primary key,
+    org_id                   bigint        null comment '机构id',
+    org_name                 varchar(255)  null comment '机构名称',
+    org_path                 varchar(255)  null comment '机构path',
+    host_code                varchar(64)   null comment '视频物联网检测主机唯一标识',
+    device_name              varchar(100)  null comment '设备名称',
+    device_type              varchar(32)   null comment '设备类型',
+    device_code              varchar(64)   null comment '设备code',
+    ups_unique_code          varchar(225)  null comment 'ups唯一标识,机构code+主机code+deviceCode组成设备唯一',
+    info                     varchar(2000) null comment '属性信息数组',
+    deleted                  int default 0 null comment '0正常1删除',
+    state_update_time        datetime      null comment '最后一次状态更新时间',
+    update_time              datetime      null comment '更新时间,最后一次数据上传时间',
+    create_time              datetime      null comment '创建时间',
+    create_by                varchar(255)  null comment '创建人',
+    update_by                varchar(32)   null comment '修改人',
+    source                   int default 1 null comment '设备来源:0:平台主动新增,1:iot推送',
+    status                   int default 2 null comment '设备告警状态: 0:正常,1:异常,2:未知',
+    mains_electricity_status int default 2 null comment 'ups市电状态,0:正常1:异常2:未知',
+    low_pressure_status      int default 2 null comment 'ups电池电压低告警,0:正常1:异常2:未知',
+    constraint idx_unique_ups_code unique (ups_unique_code)
+)
+    comment 'ups表信息' row_format = DYNAMIC;
+
+-- 新增ups设备日志表
+drop table if exists iot_ups_data_log;
+create table if not exists iot_ups_data_log
+(
+    id                       bigint        not null
+        primary key,
+    org_id                   bigint        null comment '机构id',
+    org_name                 varchar(255)  null comment '机构名称',
+    org_path                 varchar(255)  null comment '机构path',
+    host_code                varchar(64)   null comment '视频物联网检测主机唯一标识',
+    device_name              varchar(100)  null comment '设备名称',
+    device_type              varchar(32)   null comment '设备类型',
+    device_code              varchar(64)   null comment '设备code',
+    ups_unique_code          varchar(225)  null comment 'ups唯一标识,机构code+主机code+deviceCode组成设备唯一',
+    info                     varchar(2000) null comment '属性信息数组',
+    deleted                  int default 0 null comment '0正常1删除',
+    state_update_time        datetime      null comment '最后一次状态更新时间',
+    update_time              datetime      null comment '更新时间,最后一次数据上传时间',
+    create_time              datetime      null comment '创建时间',
+    create_by                varchar(255)  null comment '创建人',
+    update_by                varchar(32)   null comment '修改人',
+    source                   int default 1 null comment '设备来源:0:平台主动新增,1:iot推送',
+    status                   int default 2 null comment '设备告警状态: 0:正常,1:异常,2:未知',
+    mains_electricity_status int default 2 null comment 'ups市电状态,0:正常1:异常2:未知',
+    low_pressure_status      int default 2 null comment 'ups电池电压低告警,0:正常1:异常2:未知',
+    ups_id                   bigint        null comment 'ups表id',
+    constraint idx_unique_ups_code unique (ups_unique_code)
+)
+    comment 'ups表信息' row_format = DYNAMIC;
 
-drop table iot_ups_data_log;
+-- 新增ups设备属性表
+drop table if exists iot_ups_attr;
+create table if not exists  iot_ups_attr
+(
+    id         int auto_increment
+        primary key,
+    rule_key   varchar(50)   null,
+    rule_value int           null,
+    unit       varchar(50)   null,
+    start      int default 0 null
+)
+    comment 'ups设备属性' row_format = DYNAMIC;

+ 115 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotUps.java

@@ -0,0 +1,115 @@
+package com.xunmei.common.core.domain.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * ups表信息
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+@Data
+@SuperBuilder
+@EqualsAndHashCode(callSuper = false)
+@TableName("iot_ups")
+@ApiModel(value="IotUps对象", description="ups表信息")
+public class IotUps implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("id")
+    private Long id;
+
+    @ApiModelProperty(value = "机构id")
+    @TableField("org_id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "机构名称")
+    @TableField("org_name")
+    private String orgName;
+
+    @ApiModelProperty(value = "机构path")
+    @TableField("org_path")
+    private String orgPath;
+
+    @ApiModelProperty(value = "视频物联网检测主机唯一标识")
+    @TableField("host_code")
+    private String hostCode;
+
+    @ApiModelProperty(value = "设备名称")
+    @TableField("device_name")
+    private String deviceName;
+
+    @ApiModelProperty(value = "设备类型")
+    @TableField("device_type")
+    private String deviceType;
+
+    @ApiModelProperty(value = "设备code")
+    @TableField("device_code")
+    private String deviceCode;
+
+    @ApiModelProperty(value = "ups唯一标识,机构code+主机code+deviceCode组成设备唯一")
+    @TableField("ups_unique_code")
+    private String upsUniqueCode;
+
+    @ApiModelProperty(value = "属性信息数组")
+    @TableField("info")
+    private String info;
+
+    @ApiModelProperty(value = "0正常1删除")
+    @TableField("deleted")
+    private Integer deleted;
+
+    @ApiModelProperty(value = "最后一次状态更新时间")
+    @TableField("state_update_time")
+    private LocalDateTime stateUpdateTime;
+
+    @ApiModelProperty(value = "更新时间,最后一次数据上传时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty(value = "修改人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty(value = "设备来源:0:平台主动新增,1:iot推送")
+    @TableField("source")
+    private Integer source;
+
+    @ApiModelProperty(value = "设备状态: 0:正常,1:异常,2:未知")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "ups市电状态,0:正常1:异常2:未知")
+    @TableField("mains_electricity_status")
+    private Integer mainsElectricityStatus;
+
+    @ApiModelProperty(value = "ups电池电压低告警0正常1异常")
+    @TableField("low_pressure_status")
+    private Integer lowPressureStatus;
+
+
+    public static String getUniqueCode(String orgCode, String hostCode, String deviceCode){
+        return orgCode +"_"+ hostCode+"_" + deviceCode;
+    }
+}

+ 45 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotUpsAttr.java

@@ -0,0 +1,45 @@
+package com.xunmei.common.core.domain.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * ups设备属性
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("iot_ups_attr")
+@ApiModel(value="IotUpsAttr对象", description="ups设备属性")
+public class IotUpsAttr implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("rule_key")
+    private String ruleKey;
+
+    @TableField("rule_value")
+    private Integer ruleValue;
+
+    @TableField("unit")
+    private String unit;
+
+    @TableField("start")
+    private Integer start;
+
+
+}

+ 97 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotUpsDataLog.java

@@ -0,0 +1,97 @@
+package com.xunmei.common.core.domain.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ups表信息
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("iot_ups_data_log")
+@ApiModel(value="IotUpsDataLog对象", description="ups表信息")
+public class IotUpsDataLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("id")
+    private Long id;
+
+    @ApiModelProperty(value = "机构id")
+    @TableField("org_id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "机构名称")
+    @TableField("org_name")
+    private String orgName;
+
+    @ApiModelProperty(value = "机构path")
+    @TableField("org_path")
+    private String orgPath;
+
+    @ApiModelProperty(value = "视频物联网检测主机唯一标识")
+    @TableField("host_code")
+    private String hostCode;
+
+    @ApiModelProperty(value = "设备名称")
+    @TableField("device_name")
+    private String deviceName;
+
+    @ApiModelProperty(value = "设备code")
+    @TableField("device_code")
+    private String deviceCode;
+
+    @ApiModelProperty(value = "ups唯一标识,机构code+主机code+deviceCode组成设备唯一")
+    @TableField("ups_unique_code")
+    private String upsUniqueCode;
+
+    @ApiModelProperty(value = "属性信息数组")
+    @TableField("info")
+    private String info;
+
+    @ApiModelProperty(value = "0正常1删除")
+    @TableField("deleted")
+    private Integer deleted;
+
+    @ApiModelProperty(value = "最后一次状态更新时间")
+    @TableField("state_update_time")
+    private LocalDateTime stateUpdateTime;
+
+    @ApiModelProperty(value = "更新时间,最后一次数据上传时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty(value = "修改人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty(value = "设备来源:1:iot推送")
+    @TableField("source")
+    private Integer source;
+
+    @ApiModelProperty(value = "ups表id")
+    @TableField("ups_id")
+    private Long upsId;
+
+
+}

+ 51 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/iot/UpsStatus.java

@@ -0,0 +1,51 @@
+package com.xunmei.common.core.enums.iot;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+@Getter
+@AllArgsConstructor
+public enum UpsStatus {
+
+    NORMAL(0, "水浸"),
+
+    ALARM(1, "烟感"),
+
+    UN_KNOW(2, "温湿度"),
+
+
+    ;
+
+    private final Integer status;
+
+    private final String description;
+
+
+    /**
+     * 所有枚举
+     */
+    private static final Map<Integer, UpsStatus> enumMap = new LinkedHashMap<>();
+
+    static {
+        for (UpsStatus enumNode : UpsStatus.values()) {
+            enumMap.put(enumNode.status, enumNode);
+        }
+    }
+
+    /**
+     * 根据code获取name
+     */
+    public static String getName(Integer code) {
+        UpsStatus e = enumMap.get(code);
+        return e != null ? e.getDescription() : "";
+    }
+
+    /**
+     * 根据code获取name
+     */
+    public static UpsStatus getUpsStatusEnum(Integer code) {
+        return enumMap.get(code);
+    }
+}

+ 2 - 2
soc-modules/soc-modules-gen/src/main/java/com/xunmei/gen/util/CodeGenerators.java

@@ -29,8 +29,8 @@ public class CodeGenerators {
         throw new MybatisPlusException("请输入正确的" + tip + "!");
     }*/
 
-    public static final String moduleName="com.xunmei.sms";
-    public static final String tableNames="sms_send_record";
+    public static final String moduleName="com.xunmei.mediator.api";
+    public static final String tableNames="iot_ups_attr";
 
     public static void main(String[] args) {
         // 代码生成器

+ 64 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/controller/UpsController.java

@@ -0,0 +1,64 @@
+package com.xunmei.mediator.api.controller;
+
+
+import com.xunmei.common.core.utils.JacksonUtils;
+import com.xunmei.mediator.api.service.IIotUpsService;
+import com.xunmei.mediator.domain.dto.ups.UpsDeviceDataDto;
+import com.xunmei.mediator.domain.dto.ups.UpsDeviceDto;
+import com.xunmei.system.api.dto.DataPageDto;
+import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
+import com.xunmei.system.api.util.LogUtils;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * ups表信息 前端控制器
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+@RestController
+@RequestMapping("/api/")
+public class UpsController {
+
+    @Autowired
+    private IIotUpsService upsService;
+
+
+    @ApiOperation("接受UPS信息同步")
+    @PostMapping({"/data/upsDeviceList/{msgId}"})
+    public ReceiveErrorDto upsDeviceList(@PathVariable String msgId, @RequestBody DataPageDto<UpsDeviceDto> request) {
+
+        LogUtils.BASE_INFO_UPS_DEVICE.info("【北向接口-{}】【msgId:{}】【接收参数:{}】", "接受UPS信息同步:/api/data/upsDeviceList", msgId, JacksonUtils.toJSONString(request));
+        ReceiveErrorDto errorDto = ReceiveErrorDto.success();
+        try {
+            errorDto = this.upsService.saveUpsDevice(request, msgId);
+        } catch (Exception e) {
+            e.printStackTrace();
+            LogUtils.BASE_INFO_UPS_DEVICE.error("保存失败,{}", e);
+            return ReceiveErrorDto.error("保存失败:" + e);
+        }
+        LogUtils.BASE_INFO_UPS_DEVICE.info("【北向接口-{}】【msgId:{}】【接收参数:{}】", "接受UPS信息同步:/api/data/upsDeviceList", msgId, JacksonUtils.toJSONString(errorDto));
+        return errorDto;
+    }
+
+    @ApiOperation("接受UPS实时状态信息")
+    @PostMapping({"/status/ups/{msgId}"})
+    public ReceiveErrorDto statusUps(@PathVariable String msgId, @RequestBody UpsDeviceDataDto request) {
+        LogUtils.BASE_INFO_UPS_DEVICE_DATA.info("【北向接口-{}】【msgId:{}】【接收参数:{}】", "接受UPS实时状态信息:/api/status/ups", msgId, JacksonUtils.toJSONString(request));
+        ReceiveErrorDto errorDto = ReceiveErrorDto.success();
+        try {
+            errorDto = this.upsService.saveUpsDeviceData(request, msgId);
+        } catch (Exception e) {
+            LogUtils.BASE_INFO_UPS_DEVICE_DATA.error("保存ups状态数据失败,{}", e);
+            return ReceiveErrorDto.error("保存失败:" + e);
+        }
+        LogUtils.BASE_INFO_UPS_DEVICE_DATA.info("【北向接口-{}】【msgId:{}】【接收参数:{}】", "接受UPS实时状态信息:/api/status/ups", msgId, JacksonUtils.toJSONString(errorDto));
+        return errorDto;
+    }
+
+}
+

+ 21 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotUpsAttrMapper.java

@@ -0,0 +1,21 @@
+package com.xunmei.mediator.api.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.iot.domain.IotUpsAttr;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * <p>
+ * ups设备属性 Mapper 接口
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+public interface IotUpsAttrMapper extends BaseMapper<IotUpsAttr> {
+
+    @Select("select * from iot_ups_attr where start=0")
+    List<IotUpsAttr> findUpsAttribute();
+}

+ 16 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotUpsDataLogMapper.java

@@ -0,0 +1,16 @@
+package com.xunmei.mediator.api.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.iot.domain.IotUpsDataLog;
+
+/**
+ * <p>
+ * ups表信息 Mapper 接口
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+public interface IotUpsDataLogMapper extends BaseMapper<IotUpsDataLog> {
+
+}

+ 24 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotUpsMapper.java

@@ -0,0 +1,24 @@
+package com.xunmei.mediator.api.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.iot.domain.IotUps;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * ups表信息 Mapper 接口
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+public interface IotUpsMapper extends BaseMapper<IotUps> {
+
+    void batchInsert(List<IotUps> upsDevices);
+    void batchUpdate(List<IotUps> upsDevices);
+
+    IotUps selectByUniqueCode(@Param("uniqueCode") String uniqueCode);
+
+}

+ 16 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IIotUpsDataLogService.java

@@ -0,0 +1,16 @@
+package com.xunmei.mediator.api.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.iot.domain.IotUpsDataLog;
+
+/**
+ * <p>
+ * ups表信息 服务类
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+public interface IIotUpsDataLogService extends IService<IotUpsDataLog> {
+
+}

+ 23 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IIotUpsService.java

@@ -0,0 +1,23 @@
+package com.xunmei.mediator.api.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.iot.domain.IotUps;
+import com.xunmei.mediator.domain.dto.ups.UpsDeviceDataDto;
+import com.xunmei.mediator.domain.dto.ups.UpsDeviceDto;
+import com.xunmei.system.api.dto.DataPageDto;
+import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
+
+/**
+ * <p>
+ * ups表信息 服务类
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+public interface IIotUpsService extends IService<IotUps> {
+
+    ReceiveErrorDto saveUpsDevice(DataPageDto<UpsDeviceDto> request, String msgId) throws IllegalAccessException;
+
+    ReceiveErrorDto saveUpsDeviceData(UpsDeviceDataDto request, String msgId) throws IllegalAccessException;
+}

+ 5 - 46
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/NorthStatisticsSyncService.java

@@ -2,7 +2,6 @@ package com.xunmei.mediator.api.service;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.mediator.api.mapper.MediatorNorthBaseStatisticsMapper;
@@ -11,10 +10,8 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.north.MediatorNorthBaseStatistics;
 import com.xunmei.system.api.domain.north.MediatorNorthBusinessStatistics;
 import com.xunmei.system.api.enums.DataType;
-import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -36,26 +33,21 @@ public class NorthStatisticsSyncService {
     private IMediatorNorthBusinessStatisticsService businessStatisticsService;
     @Autowired
     private RemoteOrgService orgService;
-    /**
-     * 接收和落库逻辑不同时的方法
-     */
 
-//    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)//事務未提交導致鎖失敗
+
     public void saveOrUpdateBaseCountByDataType(Integer dataType, Integer size, Boolean isSave) {
         synchronized (NorthStatisticsSyncService.class) {
             String today = DateUtil.today();
             List<MediatorNorthBaseStatistics> northBaseStatisticsList = this.northBaseStatisticsMapper.selectByDataTypeAndDate(dataType, today);
 
             MediatorNorthBaseStatistics northBaseStatistics = null;
-            if (northBaseStatisticsList.size() > 0) {
+            if (!northBaseStatisticsList.isEmpty()) {
                 northBaseStatistics = northBaseStatisticsList.get(0);
             }
             if (null == northBaseStatistics) {
-                System.out.println("不存在当天数据,开始新建");
                 northBaseStatistics = new MediatorNorthBaseStatistics();
                 northBaseStatistics.setDataType(dataType);
                 northBaseStatistics.setDate(DateUtils.toLocalDate(DateUtil.parseDate(today)));
-                System.out.println("新建數據詳情: \n" + northBaseStatistics.toString());
             }
             if (isSave) {
                 northBaseStatistics.setSaveCount(northBaseStatistics.getSaveCount() + size);
@@ -66,46 +58,13 @@ public class NorthStatisticsSyncService {
         }
     }
 
-    /**
-     * 接收和落库逻辑相同时的方法
-     * @param dataType
-     * @param size
-     */
-//    @Transactional(rollbackFor = Exception.class)
-    public void saveOrUpdateAllBaseCountByDataType(Integer dataType, Integer size) {
+    public void saveOrUpdateBusinessCountByDateAndDataType(String date, Integer dataType, Long size) {
         synchronized (NorthStatisticsSyncService.class) {
-//            System.out.println("线程名: " + Thread.currentThread().getName());
-            String today = DateUtil.today();
-            List<MediatorNorthBaseStatistics> northBaseStatisticsList = this.northBaseStatisticsMapper.selectByDataTypeAndDate(dataType, today);
-            MediatorNorthBaseStatistics northBaseStatistics = null;
-            if (northBaseStatisticsList.size() > 0) {
-                northBaseStatistics = northBaseStatisticsList.get(0);
-            }
-            if (null == northBaseStatistics) {
-                northBaseStatistics = new MediatorNorthBaseStatistics();
-                northBaseStatistics.setDataType(dataType);
-                northBaseStatistics.setDate(DateUtils.toLocalDate(DateUtil.parseDate(today)));
-            }
-            northBaseStatistics.setSaveCount(northBaseStatistics.getSaveCount() + size);
-            northBaseStatistics.setReceiveCount(northBaseStatistics.getReceiveCount() + size);
-            this.northBaseStatisticsService.saveOrUpdate(northBaseStatistics);
-        }
-    }
-
-    /**
-     * 防区状态数据单独处理,由接口进行异步刷新
-     * @param date
-     * @param dataType
-     * @param size
-     */
-//    @Transactional(rollbackFor = Exception.class)
-    public void saveOrUpdateBusinessCountByDateAndDataType(String date,Integer dataType,Long size){
-        synchronized (NorthStatisticsSyncService.class){
             MediatorNorthBusinessStatistics northBusinessStatistics = null;
             List<MediatorNorthBusinessStatistics> businessStatistics = this.businessStatisticsMapper.selectByDate(date);
-            if (CollectionUtil.isNotEmpty(businessStatistics)){
+            if (CollectionUtil.isNotEmpty(businessStatistics)) {
                 northBusinessStatistics = businessStatistics.get(0);
-            }else {
+            } else {
                 northBusinessStatistics = new MediatorNorthBusinessStatistics();
                 northBusinessStatistics.setDate(DateUtils.toLocalDate(DateUtil.parseDate(date)));
                 northBusinessStatistics.setOrgName(orgService.selectTopOrg(SecurityConstants.INNER).getShortName());

+ 20 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotUpsDataLogServiceImpl.java

@@ -0,0 +1,20 @@
+package com.xunmei.mediator.api.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.iot.domain.IotUpsDataLog;
+import com.xunmei.mediator.api.mapper.IotUpsDataLogMapper;
+import com.xunmei.mediator.api.service.IIotUpsDataLogService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ups表信息 服务实现类
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+@Service
+public class IotUpsDataLogServiceImpl extends ServiceImpl<IotUpsDataLogMapper, IotUpsDataLog> implements IIotUpsDataLogService {
+
+}

+ 298 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotUpsServiceImpl.java

@@ -0,0 +1,298 @@
+package com.xunmei.mediator.api.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.CacheConstants;
+import com.xunmei.common.core.domain.iot.domain.IotUps;
+import com.xunmei.common.core.domain.iot.domain.IotUpsAttr;
+import com.xunmei.common.core.enums.iot.UpsStatus;
+import com.xunmei.common.core.utils.DateUtils;
+import com.xunmei.common.redis.utils.RedisUtils;
+import com.xunmei.mediator.api.mapper.IotUpsAttrMapper;
+import com.xunmei.mediator.api.mapper.IotUpsMapper;
+import com.xunmei.mediator.api.service.IIotUpsService;
+import com.xunmei.mediator.api.service.NorthErrorService;
+import com.xunmei.mediator.api.service.NorthStatisticsSyncService;
+import com.xunmei.mediator.domain.dto.ups.UpsDataVo;
+import com.xunmei.mediator.domain.dto.ups.UpsDeviceDataDto;
+import com.xunmei.mediator.domain.dto.ups.UpsDeviceDto;
+import com.xunmei.mediator.util.CheckDataUtil;
+import com.xunmei.mediator.util.RedisCheckRepeatDataUtil;
+import com.xunmei.system.api.domain.north.NorthError;
+import com.xunmei.system.api.dto.DataPageDto;
+import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
+import com.xunmei.system.api.enums.DataType;
+import com.xunmei.system.api.util.LogUtils;
+import com.xunmei.system.api.vo.SysOrgVO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * <p>
+ * ups表信息 服务实现类
+ * </p>
+ *
+ * @author jingYuanChao
+ * @since 2024-06-18
+ */
+@Slf4j
+@Service
+public class IotUpsServiceImpl extends ServiceImpl<IotUpsMapper, IotUps> implements IIotUpsService {
+    @Autowired
+    private NorthStatisticsSyncService northStatisticsSyncService;
+    @Resource
+    NorthErrorService northErrorService;
+    @Resource
+    IotUpsAttrMapper upsAttrMapper;
+
+    @Override
+    public ReceiveErrorDto saveUpsDevice(DataPageDto<UpsDeviceDto> request, String msgId) throws IllegalAccessException {
+        //验证基础分页信息
+        ReceiveErrorDto dto = CheckDataUtil.checkObjFieldIsNull(request);
+        if (dto.getSuccess()) {
+            List<UpsDeviceDto> upsDeviceDtoLists = RedisCheckRepeatDataUtil.isCompleted(request, UpsDeviceDto.class);
+            LogUtils.BASE_INFO_UPS_DEVICE.info("判断是否获取UPS同步全部信息分页数据:{}", !upsDeviceDtoLists.isEmpty());
+            if (!upsDeviceDtoLists.isEmpty()) {
+                Map<String, Object> map = this.checkUpsInfo(upsDeviceDtoLists, msgId);
+                this.saveAll(map, upsDeviceDtoLists);
+            }
+        }
+        return dto;
+    }
+
+    @Override
+    public ReceiveErrorDto saveUpsDeviceData(UpsDeviceDataDto request, String msgId) throws IllegalAccessException {
+        String value = DigestUtils.md5Hex(request.getInfos());
+        String key = request.getOrgCode() + request.getDeviceCode() + "upsdata";
+        //验证是否在段时间内收到重复的数据
+        if (!RedisCheckRepeatDataUtil.checkData(key, value)) {
+            return ReceiveErrorDto.success("数据已接受,短时间内收到相同的ups数据,处理结果忽略:拒绝处理该数据");
+        }
+
+        //验证参数是否齐全
+        ReceiveErrorDto dto = checkUpsDataInfo(request);
+
+        if (!dto.getSuccess()) {
+            return dto;
+        }
+        //处理数据
+        Map<String, Object> map = this.buildUpsAndData(request);
+        dto = (ReceiveErrorDto) map.get("errorDto");
+        if (!dto.getSuccess()) {
+            return dto;
+        }
+        IotUps upsDevice = (IotUps) map.get("upsDevice");
+        try {
+            baseMapper.updateById(upsDevice);
+        } catch (Exception e) {
+            log.error("保存upsDevice失败:{}", e.getMessage());
+            throw new RuntimeException(e.getMessage());
+        }
+        return dto;
+    }
+
+    private Map<String, Object> buildUpsAndData(UpsDeviceDataDto request) {
+        IotUps upsDevice = baseMapper.selectByUniqueCode(IotUps.getUniqueCode(request.getOrgCode(), request.getHostCode(), request.getDeviceCode()));
+        ReceiveErrorDto errorDto = ReceiveErrorDto.success();
+        Map<String, Object> map = new HashMap<>();
+        if (upsDevice == null) {
+            errorDto.setSuccess(false);
+            errorDto.setErrorMsg("ups不存在!");
+            map.put("errorDto", errorDto);
+            return map;
+        }
+        upsDevice.setUpdateTime(DateUtils.toLocalDateTime(request.getUpdateTime()));
+        //List<UpsDataVo> infos = buildInfos(request.getInfos());
+        if (request.getInfos() != null) {
+            List<UpsDataVo> list = JSON.parseArray(request.getInfos(), UpsDataVo.class);
+            for (UpsDataVo vo : list) {
+                if (StringUtils.isNotEmpty(vo.getName()) && vo.getName().contains("UPS市电状态")) {
+                    upsDevice.setMainsElectricityStatus(Double.valueOf(vo.getVal()).intValue());
+                }
+                if (StringUtils.isNotEmpty(vo.getName()) && vo.getName().contains("UPS电池电压低告警")) {
+                    upsDevice.setLowPressureStatus(Double.valueOf(vo.getVal()).intValue());
+                }
+            }
+        }
+        map.put("errorDto", errorDto);
+        map.put("upsDevice", upsDevice);
+        return map;
+    }
+
+    private List<UpsDataVo> buildInfos(String infos) {
+        List<IotUpsAttr> rules = upsAttrMapper.findUpsAttribute();
+        List<UpsDataVo> list = JSON.parseArray(infos, UpsDataVo.class);
+        List<UpsDataVo> listNew = new ArrayList<>();
+        for (UpsDataVo vo : list) {
+            Optional<IotUpsAttr> attrOptional = rules.stream().filter(r -> r.getRuleKey().equals(vo.getName())).findFirst();
+            if (!attrOptional.isPresent()) {
+                continue;
+            }
+            IotUpsAttr rule = attrOptional.get();
+            UpsDataVo dataVo = new UpsDataVo();
+            dataVo.setName(rule.getRuleKey());
+            dataVo.setStatus(0);
+            if (rule.getRuleValue() == null) {
+                dataVo.setVal(String.format("%.2f", Double.valueOf(vo.getVal())) + rule.getUnit());
+            } else {
+                switch (rule.getRuleKey()) {
+                    case "UPS类型":
+                        if (Double.valueOf(vo.getVal()).intValue() == rule.getRuleValue()) {
+                            dataVo.setVal("在线式");
+                        } else {
+                            dataVo.setVal("后备式");
+                        }
+
+                        break;
+                    case "UPS旁路状态":
+                        if (Double.valueOf(vo.getVal()).intValue() == rule.getRuleValue()) {
+                            dataVo.setVal("逆变/直接输出");
+                        } else {
+                            dataVo.setVal("旁路输出");
+                        }
+
+                        break;
+                    case "UPS测试状态":
+                        if (Double.valueOf(vo.getVal()).intValue() == rule.getRuleValue()) {
+                            dataVo.setVal("没有在测试");
+                        } else {
+                            dataVo.setVal("正在进行测试");
+                        }
+                        break;
+                    default:
+                        if (Double.valueOf(vo.getVal()).intValue() == rule.getRuleValue()) {
+                            dataVo.setVal("正常");
+                        } else {
+                            dataVo.setVal("异常");
+                        }
+                        break;
+                }
+
+            }
+            listNew.add(dataVo);
+        }
+        return listNew;
+    }
+
+    private ReceiveErrorDto checkUpsDataInfo(UpsDeviceDataDto request) throws IllegalAccessException {
+        ReceiveErrorDto result = new ReceiveErrorDto();
+        result = CheckDataUtil.checkObjFieldIsNull(request, null);
+        if (result.getSuccess()) {
+            List<SysOrgVO> cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+            boolean b = cacheList.stream().anyMatch(r -> ObjectUtil.equal(r.getCode(), request.getOrgCode()));
+            if (!b) {
+                result.setSuccess(false);
+                result.setErrorMsg("参数非法:" + request.getOrgCode() + "不正确");
+            }
+        }
+        return result;
+    }
+
+    private void saveAll(Map<String, Object> map, List<UpsDeviceDto> upsDeviceDtoLists) {
+        List<NorthError> errors = (List<NorthError>) map.get("errors");
+        List<IotUps> upsDevices = (List<IotUps>) map.get("upsDevices");
+        List<IotUps> upsDeviceOlds = (List<IotUps>) map.get("upsDeviceOlds");
+        List<Long> orgIdList = (List<Long>) map.get("orgIdList");
+        this.northStatisticsSyncService.saveOrUpdateBaseCountByDataType(DataType.upsDeviceCount.getIndex(), upsDeviceDtoLists.size(), false);
+
+        try {
+            northErrorService.saveErrorData(errors);
+            this.updateDel(orgIdList);
+            if (ObjectUtil.isNotEmpty(upsDevices)) {
+                baseMapper.batchInsert(upsDevices);
+            }
+            if (ObjectUtil.isNotEmpty(upsDeviceOlds)) {
+                baseMapper.batchUpdate(upsDeviceOlds);
+            }
+        } catch (Exception e) {
+            log.error("批量保存ups失败:{}", e.getMessage());
+            LogUtils.BASE_INFO_UPS_DEVICE.error("批量保存ups失败,{}", e);
+            throw new RuntimeException(e.getMessage());
+        }
+
+    }
+
+    private void updateDel(List<Long> orgIdList) {
+        LambdaUpdateWrapper<IotUps> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(IotUps::getDeleted, 0);
+        updateWrapper.in(IotUps::getOrgId, orgIdList);
+        baseMapper.update(null, updateWrapper);
+    }
+
+    private Map<String, Object> checkUpsInfo(List<UpsDeviceDto> upsDeviceDtoLists, String msgId) throws IllegalAccessException {
+        List<SysOrgVO> orgList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+        Map<String, Object> map = new HashMap<>();
+        List<NorthError> errors = new ArrayList<>();
+        List<IotUps> upsDevices = new ArrayList<>();
+        List<IotUps> upsDeviceOlds = new ArrayList<>();
+        List<IotUps> upsDeviceAllOlds = baseMapper.selectList(new QueryWrapper<>());
+        NorthError error = null;
+        //获取机构列表
+        List<Long> list = new ArrayList<>();
+        for (UpsDeviceDto ups : upsDeviceDtoLists) {
+            SysOrgVO org = null;
+            error = CheckDataUtil.checkObjFieldIsNull(ups, msgId, "/api/data/upsDeviceList", null);
+            if (error != null) {
+                errors.add(error);
+                continue;
+            }
+            Optional<SysOrgVO> orgOptional = orgList.stream().filter(r -> r.getCode().equals(ups.getOrgCode())).findFirst();
+            if (!orgOptional.isPresent()) {
+                error = new NorthError(msgId, "/api/data/upsDeviceList", ups, "orgCode:" + ups.getOrgCode() + "不正确");
+                errors.add(error);
+                continue;
+            }
+            org = orgOptional.get();
+            if (!list.contains(org.getId())) {
+                list.add(org.getId());
+            }
+            IotUps upsDevice = this.buildUpsDevice(ups, org);
+            //判断老数据中是否有新数据
+            Optional<IotUps> upsOptional = upsDeviceAllOlds.stream().filter(r -> r.getUpsUniqueCode().equals(upsDevice.getUpsUniqueCode())).findAny();
+            if (upsOptional.isPresent()) {
+                IotUps upsDeviceOld = upsOptional.get();
+                BeanUtils.copyProperties(upsDeviceOld, upsDevice);
+                upsDeviceOlds.add(upsDeviceOld);
+            } else {
+                upsDevice.setId(IdWorker.getId());
+                upsDevices.add(upsDevice);
+            }
+
+        }
+        map.put("errors", errors);
+        //需要插入的数据
+        map.put("upsDevices", upsDevices);
+        //需要修改的数据
+        map.put("upsDeviceOlds", upsDeviceOlds);
+        map.put("orgIdList", list);
+        return map;
+    }
+
+    private IotUps buildUpsDevice(UpsDeviceDto ups, SysOrgVO org) {
+        return IotUps.builder()
+                .deviceCode(ups.getDeviceCode())
+                .deviceName(ups.getDeviceName())
+                .deviceType(ups.getDeviceType())
+                .hostCode(ups.getHostCode())
+                .orgId(org.getId())
+                .orgName(org.getName())
+                .orgPath(org.getPath())
+                .upsUniqueCode(IotUps.getUniqueCode(org.getCode(), ups.getHostCode(), ups.getDeviceCode()))
+                .deleted(0)
+                .status(UpsStatus.UN_KNOW.getStatus())
+                .build();
+
+
+    }
+}

+ 0 - 74
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/org/OrgEditDto.java

@@ -1,74 +0,0 @@
-package com.xunmei.mediator.domain.dto.org;
-
-import com.xunmei.common.core.enums.OrgTypeEnum;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-/**
- *
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel(description = "机构编辑")
-public class OrgEditDto{
-    @ApiModelProperty("编号")
-    private Long id;
-
-    @ApiModelProperty("银行名称")
-    @NotBlank(message = "请输入银行名称")
-    @Length(max = 50, message = "银行名称长度不能超过{max}")
-    private String name;
-
-    @ApiModelProperty("唯一编码")
-    @Length(max = 64, message = "唯一编码长度不能超过{max}")
-    private String oid;
-
-    @ApiModelProperty("机构类型")
-    @NotNull(message = "请选择机构类型")
-    private OrgTypeEnum type;
-
-    @ApiModelProperty("上级银行")
-    private Long parentId;
-
-    @ApiModelProperty("联系电话")
-    @NotBlank(message = "请输入联系电话")
-    @Length(max = 16, message = "联系电话长度不能超过16")
-    private String phone;
-
-    @ApiModelProperty("负责人")
-    @NotBlank(message = "请输入负责人")
-    @Length(max = 20, message = "负责人长度不能超过{max}")
-    private String manager;
-
-    @ApiModelProperty("负责人电话")
-    @NotBlank(message = "请输入负责人电话")
-    private String managerPhone;
-
-    @ApiModelProperty("地址")
-    @NotBlank(message = "请输入地址")
-    @Length(max = 50, message = "地址长度不能超过{max}")
-    private String address;
-
-    @ApiModelProperty("禁用")
-    @NotNull(message = "请输入禁用")
-    private Boolean isLock;
-
-    @ApiModelProperty("code")
-    @Length(max = 64, message = "code长度不能超过64")
-    private String code;
-
-    @ApiModelProperty("guid")
-    @Length(max = 36, message = "guid长度不能超过36")
-    private String guid;
-
-}

+ 0 - 19
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/org/OrgReceiveDto.java

@@ -1,19 +0,0 @@
-package com.xunmei.mediator.domain.dto.org;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-public class OrgReceiveDto {
-    private String organizationGuid;
-    private String organizationCode;
-    private String organizationName;
-    private String parentGuid;
-    private String longitude;
-    private String latitude;
-}

+ 0 - 20
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/org/OrgReceivePageDto.java

@@ -1,20 +0,0 @@
-package com.xunmei.mediator.domain.dto.org;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-public class OrgReceivePageDto {
-    private Long totalPage;
-    private Long currPage;
-    private String packageGuid;
-    private String buildTime;
-    private List<OrgReceiveDto> data;
-}

+ 14 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/ups/UpsDataVo.java

@@ -0,0 +1,14 @@
+package com.xunmei.mediator.domain.dto.ups;
+
+import lombok.*;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@EqualsAndHashCode
+public class UpsDataVo {
+    private String name;
+    private String val;
+    private Integer status;
+}

+ 47 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/ups/UpsDeviceDataDto.java

@@ -0,0 +1,47 @@
+package com.xunmei.mediator.domain.dto.ups;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * UPS信息同步表
+ * </p>
+ *
+ * @author oygj
+ * @since 2022-11-28
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@SuperBuilder
+public class UpsDeviceDataDto implements Serializable {
+    @ApiModelProperty(value = "机构guid")
+    private String orgCode;
+
+    @ApiModelProperty(value = "视频物联网检测主机唯一标识")
+    private String hostCode;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @ApiModelProperty(value = "设备code")
+    private String deviceCode;
+
+    @ApiModelProperty(value = "设备类型编码: 408")
+    private String deviceType;
+
+    @ApiModelProperty(value = "数据更新时间")
+    private Date updateTime;
+    @ApiModelProperty(value = "属性信息数组")
+    private String infos;
+
+
+
+}

+ 38 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/ups/UpsDeviceDto.java

@@ -0,0 +1,38 @@
+package com.xunmei.mediator.domain.dto.ups;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * <p>
+ * UPS信息同步表
+ * </p>
+ *
+ * @author oygj
+ * @since 2022-11-28
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class UpsDeviceDto {
+
+    @ApiModelProperty(value = "机构guid")
+    private String orgCode;
+    @ApiModelProperty(value = "视频物联网检测主机唯一标识")
+    private String hostCode;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @ApiModelProperty(value = "设备code")
+    private String deviceCode;
+
+    @ApiModelProperty(value = "设备类型编码: 408")
+    private String deviceType;
+
+
+}

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/util/RedisCheckRepeatDataUtil.java

@@ -25,7 +25,7 @@ public class RedisCheckRepeatDataUtil {
      * @param value
      * @return
      */
-    public boolean checkData(String key, String value) {
+    public static boolean checkData(String key, String value) {
         boolean flag = true;
         if (redisTemplate.hasKey(key)) {
             String val = (String) redisTemplate.opsForValue().get(key);

+ 5 - 0
soc-modules/soc-modules-mediator/src/main/resources/mapper/IotUpsDataLogMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.mediator.api.mapper.IotUpsDataLogMapper">
+
+</mapper>

+ 80 - 0
soc-modules/soc-modules-mediator/src/main/resources/mapper/IotUpsMapper.xml

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.mediator.api.mapper.IotUpsMapper">
+
+    <insert id="batchInsert" parameterType="java.util.List">
+        INSERT INTO iot_ups (
+        id,
+        org_id,
+        org_name,
+        org_path,
+        host_code,
+        device_name,
+        device_type,
+        device_code,
+        ups_unique_code,
+        info,
+        deleted,
+        state_update_time,
+        update_time,
+        create_time,
+        create_by,
+        update_by,
+        source,
+        status
+        ) VALUES
+        <foreach collection="list" item="item" index="index" separator=",">
+            (
+            #{item.id},
+            #{item.orgId},
+            #{item.orgName},
+            #{item.orgPath},
+            #{item.hostCode},
+            #{item.deviceName},
+            #{item.deviceType},
+            #{item.deviceCode},
+            #{item.upsUniqueCode},
+            #{item.info},
+            #{item.deleted},
+            #{item.stateUpdateTime},
+            #{item.updateTime},
+            #{item.createTime},
+            #{item.createBy},
+            #{item.updateBy},
+            #{item.source},
+            #{item.status}
+            )
+        </foreach>
+    </insert>
+
+
+    <update id="batchUpdate" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+            UPDATE iot_ups
+            <set>
+                <if test="item.orgId != null">org_id = #{item.orgId},</if>
+                <if test="item.orgName != null">org_name = #{item.orgName},</if>
+                <if test="item.orgPath != null">org_path = #{item.orgPath},</if>
+                <if test="item.hostCode != null">host_code = #{item.hostCode},</if>
+                <if test="item.deviceName != null">device_name = #{item.deviceName},</if>
+                <if test="item.deviceType != null">device_type = #{item.deviceType},</if>
+                <if test="item.deviceCode != null">device_code = #{item.deviceCode},</if>
+                <if test="item.upsUniqueCode != null">ups_unique_code = #{item.upsUniqueCode},</if>
+                <if test="item.info != null">info = #{item.info},</if>
+                <if test="item.deleted != null">deleted = #{item.deleted},</if>
+                <if test="item.stateUpdateTime != null">state_update_time = #{item.stateUpdateTime},</if>
+                <if test="item.updateTime != null">update_time = #{item.updateTime},</if>
+                <if test="item.createTime != null">create_time = #{item.createTime},</if>
+                <if test="item.createBy != null">create_by = #{item.createBy},</if>
+                <if test="item.updateBy != null">update_by = #{item.updateBy},</if>
+                <if test="item.source != null">`source` = #{item.source},</if>
+                <if test="item.status != null">`status` = #{item.status}</if>
+            </set>
+            WHERE id = #{item.id}
+        </foreach>
+    </update>
+
+    <select id="selectByUniqueCode" resultType="com.xunmei.common.core.domain.iot.domain.IotUps">
+        select * from iot_ups where ups_unique_code=#{uniqueCode}
+    </select>
+</mapper>