Browse Source

eureka修改端口,新增球机旋转保存点位功能

dev-shibei
yj 1 year ago
parent
commit
141f123017
  1. 2
      device_cars/src/main/java/com/xr/device_car/config/common/MyBatisPlusConfig.java
  2. 3
      device_cars/src/main/java/com/xr/device_car/config/common/WebConfig.java
  3. 13
      device_cars/src/main/java/com/xr/device_car/config/utils/DateUtils.java
  4. 25
      device_cars/src/main/java/com/xr/device_car/modules/analysis/controller/FocalLengthConfigController.java
  5. 28
      device_cars/src/main/java/com/xr/device_car/modules/analysis/controller/MeterInitializationController.java
  6. 61
      device_cars/src/main/java/com/xr/device_car/modules/analysis/entity/SnExport.java
  7. 130
      device_cars/src/main/java/com/xr/device_car/modules/analysis/entity/SnMeterHistory.java
  8. 130
      device_cars/src/main/java/com/xr/device_car/modules/analysis/entity/SnMeterShow.java
  9. 35
      device_cars/src/main/java/com/xr/device_car/modules/analysis/entity/XlsExport1.java
  10. 20
      device_cars/src/main/java/com/xr/device_car/modules/analysis/mapper/SnExportMapper.java
  11. 20
      device_cars/src/main/java/com/xr/device_car/modules/analysis/mapper/SnMeterHistoryMapper.java
  12. 20
      device_cars/src/main/java/com/xr/device_car/modules/analysis/mapper/SnMeterShowMapper.java
  13. 17
      device_cars/src/main/java/com/xr/device_car/modules/analysis/service/SnExportService.java
  14. 18
      device_cars/src/main/java/com/xr/device_car/modules/analysis/service/SnMeterHistoryService.java
  15. 20
      device_cars/src/main/java/com/xr/device_car/modules/analysis/service/SnMeterShowService.java
  16. 45
      device_cars/src/main/java/com/xr/device_car/modules/analysis/service/impl/SnExportServiceImpl.java
  17. 48
      device_cars/src/main/java/com/xr/device_car/modules/analysis/service/impl/SnMeterHistoryServiceImpl.java
  18. 44
      device_cars/src/main/java/com/xr/device_car/modules/analysis/service/impl/SnMeterShowServiceImpl.java
  19. 75
      device_cars/src/main/java/com/xr/device_car/modules/largescreen/SnMeterHistoryController.java
  20. 73
      device_cars/src/main/java/com/xr/device_car/modules/largescreen/SnMeterShowController.java
  21. 417
      device_cars/src/main/java/com/xr/device_car/modules/largescreen/XlsDataController.java
  22. BIN
      device_cars/src/main/resources/file/XlsExport3.xls
  23. 5
      device_gather/src/main/java/com/xr/device/netty/NettyConfig.java
  24. 7
      device_gather/src/main/java/com/xr/device/netty/NettyServer.java
  25. 7
      device_gather/src/main/java/com/xr/device/schedule/GetMeterSchedule.java
  26. 2
      drone_data/src/main/resources/application-dev.yml

2
device_cars/src/main/java/com/xr/device_car/config/common/MyBatisPlusConfig.java

@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@MapperScan("com.xr.device_car.analysis.mapper")
@MapperScan("com.xr.device_car.modules.analysis.mapper")
@Configuration
public class MyBatisPlusConfig {

3
device_cars/src/main/java/com/xr/device_car/config/common/WebConfig.java

@ -18,6 +18,7 @@ public class WebConfig implements WebMvcConfigurer {
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor())
.addPathPatterns("/**").excludePathPatterns("/user/webLogin")
.excludePathPatterns("/user/login","/user/getUserByToken","/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");
.excludePathPatterns("/user/login","/user/getUserByToken","/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"
,"/models/sn-meter-history/list","/models/sn-meter-show/list");
}
}

13
device_cars/src/main/java/com/xr/device_car/config/utils/DateUtils.java

@ -1,6 +1,7 @@
package com.xr.device_car.config.utils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.joda.time.DateTime;
import java.lang.management.ManagementFactory;
import java.text.ParseException;
@ -214,4 +215,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
}
return dateList;
}
/**
* 对日期的进行加/
*
* @param date 日期
* @param days 天数负数为减
* @return /减几天后的日期
*/
public static Date addDateDays(Date date, int days) {
DateTime dateTime = new DateTime(date);
return dateTime.plusDays(days).toDate();
}
}

25
device_cars/src/main/java/com/xr/device_car/modules/analysis/controller/FocalLengthConfigController.java

@ -14,6 +14,10 @@ import com.xr.device_car.modules.analysis.service.FocalLengthConfigService;
import com.xr.device_car.modules.analysis.service.MeterConfigService;
import com.xr.device_car.modules.analysis.service.MeterTypeService;
import com.xr.device_car.modules.system.entity.UserInfo;
import com.xr.onvifhk.entity.BallheadPT;
import com.xr.onvifhk.entity.DeviceInfo;
import com.xr.onvifhk.entity.OnvifAuthBean;
import com.xr.onvifhk.util.HkComUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
@ -250,7 +254,26 @@ public class FocalLengthConfigController {
bufferedImage = Files.urlByImage(buffered);
}
if(deviceCamera.getDeviceType().equals("3") || deviceCamera.getDeviceType().equals("4")){ // 拉取球机
bufferedImage= HkComUtil.getBole(deviceCamera);
DeviceInfo info = new DeviceInfo();
info.setAccount(deviceCamera.getAccount());
info.setPassword(deviceCamera.getPassword());
info.setIp(deviceCamera.getDeviceIp());
info.setPort(deviceCamera.getDevicePort());
BallheadPT ball=new BallheadPT();
if(StringUtils.isNotEmpty(meterConfig.getCameraX()) &&
StringUtils.isNotEmpty(meterConfig.getCameraY())&&
StringUtils.isNotEmpty(meterConfig.getCameraZ())){
ball.setX(meterConfig.getCameraX());
ball.setY(meterConfig.getCameraY());
ball.setZ(meterConfig.getCameraZ());
String uri = HkComUtil.getBole(info,ball);
try{
bufferedImage = Files.urlByImage(uri);
}catch (Exception e){
uri = uri.replace(deviceCamera.getAccount()+":"+deviceCamera.getPassword()+"@","");
bufferedImage = Files.urlByImages(uri,deviceCamera.getAccount(),deviceCamera.getPassword());
}
}
}
byte [] bytes= Files.bufferedImageToByte(bufferedImage);
focalLengthConfig.setFocalPicture(bytes);

28
device_cars/src/main/java/com/xr/device_car/modules/analysis/controller/MeterInitializationController.java

@ -13,6 +13,9 @@ import com.xr.device_car.modules.analysis.service.DeviceCameraService;
import com.xr.device_car.modules.analysis.service.IMeterInitializationService;
import com.xr.device_car.modules.analysis.service.MeterConfigService;
import com.xr.device_car.modules.analysis.service.MeterTypeService;
import com.xr.onvifhk.entity.BallheadPT;
import com.xr.onvifhk.entity.DeviceInfo;
import com.xr.onvifhk.util.HkComUtil;
import io.minio.MinioClient;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
@ -59,7 +62,22 @@ public class MeterInitializationController {
bufferedImage= AdbUtil.getCamDevice();
}
if(deviceCamera.getDeviceType().equals("3") || deviceCamera.getDeviceType().equals("4")){ // 拉取球机
bufferedImage= HkComUtil.getBole(deviceCamera);
DeviceInfo info = getDeviceInfo(deviceCamera);
if(StringUtils.isNotEmpty(config.getCameraX()) &&
StringUtils.isNotEmpty(config.getCameraY())&&
StringUtils.isNotEmpty(config.getCameraZ())){
BallheadPT ball=new BallheadPT();
ball.setX(config.getCameraX());
ball.setY(config.getCameraY());
ball.setZ(config.getCameraZ());
String uri = HkComUtil.getBole(info,ball);
try{
bufferedImage = Files.urlByImage(uri);
}catch (Exception e){
uri = uri.replace(deviceCamera.getAccount()+":"+deviceCamera.getPassword()+"@","");
bufferedImage = Files.urlByImages(uri,deviceCamera.getAccount(),deviceCamera.getPassword());
}
}
}
long l = new Date().getTime();
String path = StaticPropUtil.imagePath +l+".png";
@ -171,5 +189,13 @@ public class MeterInitializationController {
return Result.OK("初始化完成");
}
private DeviceInfo getDeviceInfo(DeviceCamera camera){
DeviceInfo info=new DeviceInfo();
info.setAccount(camera.getAccount());
info.setIp(camera.getDeviceIp());
info.setPassword(camera.getPassword());
info.setPort(camera.getDevicePort());
return info;
}
}

61
device_cars/src/main/java/com/xr/device_car/modules/analysis/entity/SnExport.java

@ -0,0 +1,61 @@
package com.xr.device_car.modules.analysis.entity;
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 java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
/**
* 导出表配置
* @TableName sn_export
*/
@TableName(value ="sn_export")
@Data
public class SnExport implements Serializable {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private Integer id;
/**
* 标题
*/
private String title;
/**
* 导出表名称
*/
private String exportName;
/**
* 创建时间
*/
private LocalDateTime createAt;
/**
* 修改时间
*/
private LocalDateTime updateAt;
/**
* 默认0正常1删除
*/
private Integer deletedFlag;
/**
* 标题ID
*/
private Integer titleId;
/**
* 排序
*/
private Integer orderNum;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

130
device_cars/src/main/java/com/xr/device_car/modules/analysis/entity/SnMeterHistory.java

@ -0,0 +1,130 @@
package com.xr.device_car.modules.analysis.entity;
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 java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
/**
*
* @TableName sn_meter_history
*/
@TableName(value ="sn_meter_history")
@Data
public class SnMeterHistory implements Serializable {
/**
* 主键id
*/
private Integer id;
/**
* 表计id
*/
private Integer meterId;
/**
* 设备类型
*/
private String deviceType;
/**
* 表计类型配置编号
*/
private Integer meterType;
/**
* 表计类型名称
*/
private String meterTypeId;
/**
* 建模模型Id
*/
private String meterCode;
/**
* 安装位置
*/
private String meterPosition;
/**
* 变电站名称
*/
private String standName;
/**
* 所属站
*/
private Integer stationId;
/**
* 电压等级(1安全电压2低压3高压4超高压5特高压)
*/
private String voltageClass;
/**
* 识别间隔
*/
private String room;
/**
* 回路名称
*/
private String loopName;
/**
* 相别
*/
private String mutually;
/**
* 0读取异常 1正常 2越线告警
*/
private Integer status;
/**
* 读数时间
*/
private LocalDateTime recognitionTime;
/**
* 表计照片
*/
private String url;
/**
* 告警最小值
*/
private Double max;
/**
* 告警最大值
*/
private Double min;
/**
* 读数值
*/
private String reading2;
/**
* 读数值
*/
private String readingValue;
/**
* 报警确认值0默认 1已经确认
*/
private Integer alarmConfirm;
/**
* 读数单位
*/
private String unit;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

130
device_cars/src/main/java/com/xr/device_car/modules/analysis/entity/SnMeterShow.java

@ -0,0 +1,130 @@
package com.xr.device_car.modules.analysis.entity;
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 java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
/**
*
* @TableName sn_meter_show
*/
@TableName(value ="sn_meter_show")
@Data
public class SnMeterShow implements Serializable {
/**
* 主键id
*/
private Integer id;
/**
* 表计id
*/
private Integer meterId;
/**
* 设备类型
*/
private String deviceType;
/**
* 表计类型配置编号
*/
private Integer meterType;
/**
* 表计类型名称
*/
private String meterTypeId;
/**
* 建模模型Id
*/
private String meterCode;
/**
* 安装位置
*/
private String meterPosition;
/**
* 变电站名称
*/
private String standName;
/**
* 所属站
*/
private Integer stationId;
/**
* 电压等级(1安全电压2低压3高压4超高压5特高压)
*/
private String voltageClass;
/**
* 识别间隔
*/
private String room;
/**
* 回路名称
*/
private String loopName;
/**
* 相别
*/
private String mutually;
/**
* 0读取异常 1正常 2越线告警
*/
private Integer status;
/**
* 读数时间
*/
private LocalDateTime recognitionTime;
/**
* 表计照片
*/
private String url;
/**
* 告警最小值
*/
private Double max;
/**
* 告警最大值
*/
private Double min;
/**
* 读数值
*/
private String reading2;
/**
* 读数值
*/
private String readingValue;
/**
* 报警确认值0默认 1已经确认
*/
private Integer alarmConfirm;
/**
* 读数单位
*/
private String unit;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

35
device_cars/src/main/java/com/xr/device_car/modules/analysis/entity/XlsExport1.java

@ -0,0 +1,35 @@
package com.xr.device_car.modules.analysis.entity;
import lombok.Data;
@Data
public class XlsExport1 {
private static final long serialVersionUID = 1L;
private String reading1 = "*";
private String reading2 = "*";
private String reading3 = "*";
private String reading4 = "*";
private String reading5 = "*";
private String reading6 = "*";
private String reading7 = "*";
private String reading8 = "*";
private String reading9 = "*";
private String reading10 = "*";
private String reading11 = "*";
private String reading12 = "*";
private String reading13 = "*";
private String reading14 = "*";
private String reading15 = "*";
private String reading16 = "*";
private String reading17 = "*";
private String reading18 = "*";
private String reading19 = "*";
private String reading20 = "*";
private String reading21 = "*";
private String reading22 = "*";
private String reading23 = "*";
private String reading24 = "*";
private String reading25 = "*";
private String reading26 = "*";
}

20
device_cars/src/main/java/com/xr/device_car/modules/analysis/mapper/SnExportMapper.java

@ -0,0 +1,20 @@
package com.xr.device_car.modules.analysis.mapper;
import com.xr.device_car.modules.analysis.entity.SnExport;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 范亚杰
* @description 针对表sn_export(导出表配置)的数据库操作Mapper
* @createDate 2024-07-30 17:03:43
* @Entity com.xr.device_car.modules.analysis.entity.SnExport
*/
@Mapper
public interface SnExportMapper extends BaseMapper<SnExport> {
}

20
device_cars/src/main/java/com/xr/device_car/modules/analysis/mapper/SnMeterHistoryMapper.java

@ -0,0 +1,20 @@
package com.xr.device_car.modules.analysis.mapper;
import com.xr.device_car.modules.analysis.entity.SnMeterHistory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 范亚杰
* @description 针对表sn_meter_history的数据库操作Mapper
* @createDate 2024-07-30 13:31:51
* @Entity com.xr.device_car.modules.analysis.entity.SnMeterHistory
*/
@Mapper
public interface SnMeterHistoryMapper extends BaseMapper<SnMeterHistory> {
}

20
device_cars/src/main/java/com/xr/device_car/modules/analysis/mapper/SnMeterShowMapper.java

@ -0,0 +1,20 @@
package com.xr.device_car.modules.analysis.mapper;
import com.xr.device_car.modules.analysis.entity.SnMeterShow;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 范亚杰
* @description 针对表sn_meter_show的数据库操作Mapper
* @createDate 2024-07-30 15:14:34
* @Entity com.xr.device_car.modules.analysis.entity.SnMeterShow
*/
@Mapper
public interface SnMeterShowMapper extends BaseMapper<SnMeterShow> {
}

17
device_cars/src/main/java/com/xr/device_car/modules/analysis/service/SnExportService.java

@ -0,0 +1,17 @@
package com.xr.device_car.modules.analysis.service;
import com.xr.device_car.modules.analysis.entity.SnExport;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @author 范亚杰
* @description 针对表sn_export(导出表配置)的数据库操作Service
* @createDate 2024-07-30 17:03:43
*/
public interface SnExportService extends IService<SnExport> {
List<SnExport> getListByName(SnExport param);
}

18
device_cars/src/main/java/com/xr/device_car/modules/analysis/service/SnMeterHistoryService.java

@ -0,0 +1,18 @@
package com.xr.device_car.modules.analysis.service;
import com.xr.device_car.modules.analysis.entity.SnMeterHistory;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
import java.util.List;
/**
* @author 范亚杰
* @description 针对表sn_meter_history的数据库操作Service
* @createDate 2024-07-30 13:31:51
*/
public interface SnMeterHistoryService extends IService<SnMeterHistory> {
List<SnMeterHistory> getListByRoomIds(List<Integer> circuitIds, Date checkDate);
List<SnMeterHistory> getListByCircuitIds(List<Integer> circuitIds, Date checkDate, SnMeterHistory param);
}

20
device_cars/src/main/java/com/xr/device_car/modules/analysis/service/SnMeterShowService.java

@ -0,0 +1,20 @@
package com.xr.device_car.modules.analysis.service;
import com.xr.device_car.modules.analysis.entity.SnMeterShow;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
import java.util.List;
/**
* @author 范亚杰
* @description 针对表sn_meter_show的数据库操作Service
* @createDate 2024-07-30 15:14:34
*/
public interface SnMeterShowService extends IService<SnMeterShow> {
List<SnMeterShow> getListByCircuitIds(List<String> loopName, Date checkDate);
List<SnMeterShow> getListByCircuitIds(List<String> loopName, Date checkDate, SnMeterShow param);
}

45
device_cars/src/main/java/com/xr/device_car/modules/analysis/service/impl/SnExportServiceImpl.java

@ -0,0 +1,45 @@
package com.xr.device_car.modules.analysis.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xr.device_car.modules.analysis.entity.SnExport;
import com.xr.device_car.modules.analysis.service.SnExportService;
import com.xr.device_car.modules.analysis.mapper.SnExportMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author 范亚杰
* @description 针对表sn_export(导出表配置)的数据库操作Service实现
* @createDate 2024-07-30 17:03:43
*/
@Service
@DS("db2")
public class SnExportServiceImpl extends ServiceImpl<SnExportMapper, SnExport>
implements SnExportService{
@Override
public List<SnExport> getListByName(SnExport param) {
QueryWrapper<SnExport> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
// 标题/ID
.eq(StringUtils.isNotEmpty(param.getTitle()), SnExport::getTitle, param.getTitle())
// 导出表名称
.eq(StringUtils.isNotEmpty(param.getExportName()), SnExport::getExportName, param.getExportName())
// 创建时间
.eq(param.getCreateAt() != null, SnExport::getCreateAt, param.getCreateAt())
// 修改时间
.eq(param.getUpdateAt() != null, SnExport::getUpdateAt, param.getUpdateAt())
.orderByAsc(SnExport::getOrderNum)
;
return list(queryWrapper);
}
}

48
device_cars/src/main/java/com/xr/device_car/modules/analysis/service/impl/SnMeterHistoryServiceImpl.java

@ -0,0 +1,48 @@
package com.xr.device_car.modules.analysis.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xr.device_car.modules.analysis.entity.SnMeterHistory;
import com.xr.device_car.modules.analysis.service.SnMeterHistoryService;
import com.xr.device_car.modules.analysis.mapper.SnMeterHistoryMapper;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @author 范亚杰
* @description 针对表sn_meter_history的数据库操作Service实现
* @createDate 2024-07-30 13:31:51
*/
@Service
@DS("db2")
public class SnMeterHistoryServiceImpl extends ServiceImpl<SnMeterHistoryMapper, SnMeterHistory>
implements SnMeterHistoryService{
@Override
public List<SnMeterHistory> getListByRoomIds(List<Integer> roomIds, Date checkDate) {
QueryWrapper<SnMeterHistory> queryWrapper = new QueryWrapper<>();
// String idsStr = "ORDER BY FIELD (id,"+ String.join(",", circuitIds.stream().map(Object::toString).collect(Collectors.toList()))+")";
queryWrapper.lambda().in(SnMeterHistory::getMeterId, roomIds)
.ge(checkDate !=null, SnMeterHistory::getRecognitionTime, checkDate);
// .le(checkDate !=null, SnMeterHistory::getRecognitionTime, DateUtils.addDateDays(checkDate,1));
return list(queryWrapper);
}
@Override
public List<SnMeterHistory> getListByCircuitIds(List<Integer> circuitIds, Date checkDate, SnMeterHistory param) {
QueryWrapper<SnMeterHistory> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(SnMeterHistory::getDeviceType, circuitIds)
.eq(param.getDeviceType()!=null, SnMeterHistory::getDeviceType, param.getDeviceType())
.ge(checkDate !=null, SnMeterHistory::getRecognitionTime, checkDate);
// .le(checkDate !=null, SnMeterHistory::getRecognitionTime, DateUtils.addDateDays(checkDate,1));
return list(queryWrapper);
}
}

44
device_cars/src/main/java/com/xr/device_car/modules/analysis/service/impl/SnMeterShowServiceImpl.java

@ -0,0 +1,44 @@
package com.xr.device_car.modules.analysis.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xr.device_car.config.utils.DateUtils;
import com.xr.device_car.modules.analysis.entity.SnMeterShow;
import com.xr.device_car.modules.analysis.service.SnMeterShowService;
import com.xr.device_car.modules.analysis.mapper.SnMeterShowMapper;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @author 范亚杰
* @description 针对表sn_meter_show的数据库操作Service实现
* @createDate 2024-07-30 15:14:34
*/
@Service
@DS("db2")
public class SnMeterShowServiceImpl extends ServiceImpl<SnMeterShowMapper, SnMeterShow>
implements SnMeterShowService{
@Override
public List<SnMeterShow> getListByCircuitIds(List<String> loopName, Date checkDate) {
return getListByCircuitIds( loopName, checkDate, new SnMeterShow());
}
@Override
public List<SnMeterShow> getListByCircuitIds(List<String> loopName, Date checkDate, SnMeterShow param) {
QueryWrapper<SnMeterShow> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(SnMeterShow::getLoopName, loopName)
.eq(param.getDeviceType()!=null, SnMeterShow::getDeviceType, param.getDeviceType())
.ge(checkDate !=null, SnMeterShow::getRecognitionTime, checkDate)
.le(checkDate !=null, SnMeterShow::getRecognitionTime, DateUtils.addDateDays(checkDate,1));
return list(queryWrapper);
}
}

75
device_cars/src/main/java/com/xr/device_car/modules/largescreen/SnMeterHistoryController.java

@ -0,0 +1,75 @@
package com.xr.device_car.modules.largescreen;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xr.device_car.config.common.Result;
import com.xr.device_car.config.utils.StaticPropUtil;
import com.xr.device_car.config.utils.StringUtils;
import com.xr.device_car.modules.analysis.entity.SnMeterHistory;
import com.xr.device_car.modules.analysis.entity.SnMeterHistory;
import com.xr.device_car.modules.analysis.service.SnMeterHistoryService;
import com.xr.device_car.modules.analysis.service.SnMeterHistoryService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@RestController
@RequestMapping("/models/sn-meter-history")
@RequiredArgsConstructor
public class SnMeterHistoryController {
private final SnMeterHistoryService snMeterHistoryService;
@PostMapping(value = "/list")
public Result<List<SnMeterHistory>> info(@Valid @RequestBody SnMeterHistory param) {
param.setStationId(StaticPropUtil.stationId);
QueryWrapper<SnMeterHistory> query=new QueryWrapper<>();
query.lambda()
// 表计ID
.eq(param.getMeterId() != null, SnMeterHistory::getMeterId, param.getMeterId())
// 设备类型
.eq(StringUtils.isNotEmpty(param.getDeviceType()), SnMeterHistory::getDeviceType, param.getDeviceType())
// 表计类型id
.eq(param.getMeterTypeId() != null, SnMeterHistory::getMeterTypeId, param.getMeterTypeId())
// 1油温表2油位表3有载档位4SF6密度表5开关动作计数器6避雷器泄漏电流表7压力表8水位表
.eq(StringUtils.isNotEmpty(param.getMeterType()), SnMeterHistory::getMeterType, param.getMeterType())
// 表计编号
.eq(StringUtils.isNotEmpty(param.getMeterCode()), SnMeterHistory::getMeterCode, param.getMeterCode())
// 表计安装位置
.eq(StringUtils.isNotEmpty(param.getMeterPosition()), SnMeterHistory::getMeterPosition, param.getMeterPosition())
// 站点名称
.eq(StringUtils.isNotEmpty(param.getStandName()), SnMeterHistory::getStandName, param.getStandName())
// 站点ID
.eq(StringUtils.isNotEmpty(param.getStationId()), SnMeterHistory::getStationId, param.getStationId())
// 电压等级(kv)
.eq(StringUtils.isNotEmpty(param.getVoltageClass()), SnMeterHistory::getVoltageClass, param.getVoltageClass())
// 房间
.eq(StringUtils.isNotEmpty(param.getRoom()), SnMeterHistory::getRoom, param.getRoom())
// 回路名称
.eq(StringUtils.isNotEmpty(param.getLoopName()), SnMeterHistory::getLoopName, param.getLoopName())
// 相别
.eq(StringUtils.isNotEmpty(param.getMutually()), SnMeterHistory::getMutually, param.getMutually())
// 0读取异常 1正常 2越线告警
.eq(param.getStatus() != null, SnMeterHistory::getStatus, param.getStatus())
// 识别时间
.eq(param.getRecognitionTime() != null, SnMeterHistory::getRecognitionTime, param.getRecognitionTime())
// 图片地址
.eq(StringUtils.isNotEmpty(param.getUrl()), SnMeterHistory::getUrl, param.getUrl())
// 阈值最小值
.eq(StringUtils.isNotEmpty(param.getMax()), SnMeterHistory::getMax, param.getMax())
// 阈值最大值
.eq(StringUtils.isNotEmpty(param.getMin()), SnMeterHistory::getMin, param.getMin())
// 读数值2
.eq(StringUtils.isNotEmpty(param.getReading2()), SnMeterHistory::getReading2, param.getReading2())
// 读数值
.eq(param.getAlarmConfirm() != null, SnMeterHistory::getAlarmConfirm, param.getAlarmConfirm());
List<SnMeterHistory> data = snMeterHistoryService.list(query);
return Result.OK(data);
}
}

73
device_cars/src/main/java/com/xr/device_car/modules/largescreen/SnMeterShowController.java

@ -0,0 +1,73 @@
package com.xr.device_car.modules.largescreen;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xr.device_car.config.common.Result;
import com.xr.device_car.config.utils.StaticPropUtil;
import com.xr.device_car.config.utils.StringUtils;
import com.xr.device_car.modules.analysis.entity.SnMeterShow;
import com.xr.device_car.modules.analysis.entity.SnMeterShow;
import com.xr.device_car.modules.analysis.service.SnMeterShowService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@RestController
@RequestMapping("/models/sn-meter-show")
@RequiredArgsConstructor
public class SnMeterShowController {
private final SnMeterShowService snMeterShowService;
@PostMapping(value = "/list")
public Result<List<SnMeterShow>> info(@Valid @RequestBody SnMeterShow param) {
param.setStationId(StaticPropUtil.stationId);
QueryWrapper<SnMeterShow> query=new QueryWrapper<>();
query.lambda()
// 表计ID
.eq(param.getMeterId() != null, SnMeterShow::getMeterId, param.getMeterId())
// 设备类型
.eq(StringUtils.isNotEmpty(param.getDeviceType()), SnMeterShow::getDeviceType, param.getDeviceType())
// 表计类型id
.eq(param.getMeterTypeId() != null, SnMeterShow::getMeterTypeId, param.getMeterTypeId())
// 1油温表2油位表3有载档位4SF6密度表5开关动作计数器6避雷器泄漏电流表7压力表8水位表
.eq(StringUtils.isNotEmpty(param.getMeterType()), SnMeterShow::getMeterType, param.getMeterType())
// 表计编号
.eq(StringUtils.isNotEmpty(param.getMeterCode()), SnMeterShow::getMeterCode, param.getMeterCode())
// 表计安装位置
.eq(StringUtils.isNotEmpty(param.getMeterPosition()), SnMeterShow::getMeterPosition, param.getMeterPosition())
// 站点名称
.eq(StringUtils.isNotEmpty(param.getStandName()), SnMeterShow::getStandName, param.getStandName())
// 站点ID
.eq(StringUtils.isNotEmpty(param.getStationId()), SnMeterShow::getStationId, param.getStationId())
// 电压等级(kv)
.eq(StringUtils.isNotEmpty(param.getVoltageClass()), SnMeterShow::getVoltageClass, param.getVoltageClass())
// 房间
.eq(StringUtils.isNotEmpty(param.getRoom()), SnMeterShow::getRoom, param.getRoom())
// 回路名称
.eq(StringUtils.isNotEmpty(param.getLoopName()), SnMeterShow::getLoopName, param.getLoopName())
// 相别
.eq(StringUtils.isNotEmpty(param.getMutually()), SnMeterShow::getMutually, param.getMutually())
// 0读取异常 1正常 2越线告警
.eq(param.getStatus() != null, SnMeterShow::getStatus, param.getStatus())
// 识别时间
.eq(param.getRecognitionTime() != null, SnMeterShow::getRecognitionTime, param.getRecognitionTime())
// 图片地址
.eq(StringUtils.isNotEmpty(param.getUrl()), SnMeterShow::getUrl, param.getUrl())
// 阈值最小值
.eq(StringUtils.isNotEmpty(param.getMax()), SnMeterShow::getMax, param.getMax())
// 阈值最大值
.eq(StringUtils.isNotEmpty(param.getMin()), SnMeterShow::getMin, param.getMin())
// 读数值2
.eq(StringUtils.isNotEmpty(param.getReading2()), SnMeterShow::getReading2, param.getReading2())
// 读数值
.eq(param.getAlarmConfirm() != null, SnMeterShow::getAlarmConfirm, param.getAlarmConfirm());
List<SnMeterShow> data = snMeterShowService.list(query);
return Result.OK(data);
}
}

417
device_cars/src/main/java/com/xr/device_car/modules/largescreen/XlsDataController.java

@ -0,0 +1,417 @@
package com.xr.device_car.modules.largescreen;
import com.alibaba.excel.util.StringUtils;
import com.xr.device_car.modules.analysis.entity.SnExport;
import com.xr.device_car.modules.analysis.entity.SnMeterHistory;
import com.xr.device_car.modules.analysis.entity.XlsExport1;
import com.xr.device_car.modules.analysis.service.SnExportService;
import com.xr.device_car.modules.analysis.service.SnMeterHistoryService;
import com.xr.device_car.modules.analysis.service.SnMeterShowService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@RestController
@RequestMapping("/models/xls")
@RequiredArgsConstructor
public class XlsDataController {
private final SnMeterHistoryService snMeterHistoryService;
private final SnMeterShowService snMeterShowService;
private final SnExportService snExportService;
@GetMapping(value = "/export3/{date}")
public void export3(@PathVariable(required = false) String date, HttpServletResponse response) {
this.hisExport(date,response);
}
private void hisExport( String date, HttpServletResponse response) {
String fileName = "数字化表计全面巡视作业卡";
getResponseHeader(response, fileName, date);
List<Integer> roomIds = getTitleId(fileName+"-s1");
Date checkDate = new Date();
if(StringUtils.isNotBlank(date)) {
//checkDate = DateUtils.stringToDate(date, DATE_PATTERN);
}
List<SnMeterHistory> showList = snMeterHistoryService.getListByRoomIds(roomIds,checkDate);
HashMap<Integer, XlsExport1> tmp1 = new HashMap<>();
//油温表 1 油位表 2 档位表 3
showList.forEach(r->{
if( !tmp1.containsKey(r.getMeterId()) ) {
tmp1.put(r.getMeterId(),new XlsExport1());
}
if ( r.getMeterTypeId().equals(1) && r.getMeterPosition().equals("本体") ) {
tmp1.get(r.getMeterId()).setReading1("本体油温表:"+r.getReadingValue());
} else if ( r.getMeterTypeId().equals(1) && r.getMeterPosition().equals("本体南侧") ) {
tmp1.get(r.getMeterId()).setReading1("本体南侧油温表1:"+r.getReadingValue());
} else if( r.getMeterTypeId().equals(1) && r.getMeterPosition().equals("本体北侧") ){
tmp1.get(r.getMeterId()).setReading2("本体北侧油温表2:"+r.getReadingValue());
}else if( r.getMeterTypeId().equals(2) && r.getMeterPosition().equals("本体") ){
tmp1.get(r.getMeterId()).setReading3("本体油位:"+r.getReadingValue());
}else if( r.getMeterTypeId().equals(2) && r.getMeterPosition().equals("有载") ){
tmp1.get(r.getMeterId()).setReading4("有载油位:"+r.getReadingValue());
}else if( r.getMeterTypeId().equals(3) && r.getMeterPosition().equals("有载") ){
tmp1.get(r.getMeterId()).setReading5("有载档位:"+r.getReadingValue());
}
});
List<XlsExport1> sheet1List = new ArrayList<>();
roomIds.forEach (r->{
sheet1List.add(tmp1.get(r));
});
//组合电器(GIS)1
List<Integer> distinctionId = getTitleId(fileName+"-s2");
SnMeterHistory p = new SnMeterHistory();
p.setDeviceType("组合电器");
showList = snMeterHistoryService.getListByCircuitIds(distinctionId,checkDate,p);
HashMap<Integer,XlsExport1> tmp2 = new HashMap<>();
showList.forEach(r->{
// //林上2B79/1号主变
// if(r.getCircuitId().equals(2) || r.getCircuitId().equals(9)){
// r.setCircuitId(1900);
// }
// //康上2B80/2号主变
// if(r.getCircuitId().equals(10) || r.getCircuitId().equals(6)){
// r.setCircuitId(1700);
// }
// if( !tmp2.containsKey(r.getCircuitId()) ) {
// tmp2.put(r.getCircuitId(),new XlsExport1());
// }
//
// if ( r.getMeterPosition().equals("通管气室") && r.getDistinctionId().equals(1) && StringUtils.isNotBlank(r.getReadingValue()) ) {
// tmp2.get(r.getCircuitId()).setReading1("A相:"+r.getReadingValue());
// } else if ( r.getMeterPosition().equals("通管气室") && r.getDistinctionId().equals(2) ) {
// tmp2.get(r.getCircuitId()).setReading2("B相:"+r.getReadingValue());
// } else if ( r.getMeterPosition().equals("通管气室") && r.getDistinctionId().equals(3) ) {
// tmp2.get(r.getCircuitId()).setReading3("C相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("GIS室通管气室") && r.getDistinctionId().equals(1) ){
// tmp2.get(r.getCircuitId()).setReading4("A相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("GIS室通管气室") && r.getDistinctionId().equals(2) ){
// tmp2.get(r.getCircuitId()).setReading5("B相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("GIS室通管气室") && r.getDistinctionId().equals(3) ){
// tmp2.get(r.getCircuitId()).setReading6("C相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("开关气室") && r.getDistinctionId().equals(1) ){
// tmp2.get(r.getCircuitId()).setReading7("A相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("开关气室") && r.getDistinctionId().equals(2) ){
// tmp2.get(r.getCircuitId()).setReading8("B相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("开关气室") && r.getDistinctionId().equals(3) ){
// tmp2.get(r.getCircuitId()).setReading9("C相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("开关变压器侧流变气室") ){
// tmp2.get(r.getCircuitId()).setReading10(r.getReadingValue());
// }else if( r.getMeterPosition().equals("开关线路侧流变气室") ){
// tmp2.get(r.getCircuitId()).setReading11(r.getReadingValue());
// }else if( r.getMeterPosition().equals("避雷器气室")){
// tmp2.get(r.getCircuitId()).setReading12(r.getReadingValue());
// }else if( r.getMeterPosition().equals("过渡气室")){
// tmp2.get(r.getCircuitId()).setReading13(r.getReadingValue());
// }else if( r.getMeterPosition().equals("压变气室")){
// tmp2.get(r.getCircuitId()).setReading14(r.getReadingValue());
// }else if( r.getMeterPosition().equals("线路电缆端筒体气室")){
// tmp2.get(r.getCircuitId()).setReading15(r.getReadingValue());
// }else if( r.getMeterPosition().equals("母刀气室")){
// tmp2.get(r.getCircuitId()).setReading16(r.getReadingValue());
// }else if( r.getMeterPosition().equals("变刀气室")){
// tmp2.get(r.getCircuitId()).setReading17(r.getReadingValue());
// }else if( r.getMeterPosition().equals("开关") && r.getDistinctionId().equals(1) ){
// tmp2.get(r.getCircuitId()).setReading18("A相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("开关") && r.getDistinctionId().equals(2) ){
// tmp2.get(r.getCircuitId()).setReading19("B相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("开关") && r.getDistinctionId().equals(3) ){
// tmp2.get(r.getCircuitId()).setReading20("C相:"+r.getReadingValue());
// }else if( r.getMeterPosition().equals("避雷器") && r.getDistinctionId().equals(1) ){
// tmp2.get(r.getCircuitId()).setReading21("A相:"+r.getReadingValue());
// tmp2.get(r.getCircuitId()).setReading24("A相:"+r.getReading2());
// }else if( r.getMeterPosition().equals("避雷器") && r.getDistinctionId().equals(2) ){
// tmp2.get(r.getCircuitId()).setReading22("B相:"+r.getReadingValue());
// tmp2.get(r.getCircuitId()).setReading25("B相:"+r.getReading2());
// }else if( r.getMeterPosition().equals("避雷器") && r.getDistinctionId().equals(3) ){
// tmp2.get(r.getCircuitId()).setReading23("C相:"+r.getReadingValue());
// tmp2.get(r.getCircuitId()).setReading26("C相:"+r.getReading2());
// }
});
List<XlsExport1> sheet2List = new ArrayList<>();
distinctionId.forEach (r->{
if(r.equals(2) || r.equals(6)){
return;
}
//林上2B79/1号主变
if(r.equals(2) || r.equals(9)){
r=1900;
}else if(r.equals(10) || r.equals(6)){
r=1700;
}
sheet2List.add(tmp2.get(r));
});
//
List<Integer> s3 = getTitleId(fileName+"-s3");
showList = snMeterHistoryService.getListByCircuitIds(s3,checkDate, p);
HashMap<Integer,XlsExport1> tmp3 = new HashMap<>();
showList.forEach(r->{
// if( !tmp3.containsKey(r.getCircuitId()) ) {
// tmp3.put(r.getCircuitId(),new XlsExport1());
// }
// if ( r.getMeterPosition().equals("开关气室") ) {
// tmp3.get(r.getCircuitId()).setReading1(r.getReadingValue());
// } else if ( r.getMeterPosition().equals("开关线路侧流变") ) {
// tmp3.get(r.getCircuitId()).setReading2(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("母刀气室") ) {
// tmp3.get(r.getCircuitId()).setReading3(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("线刀气室") ) {
// tmp3.get(r.getCircuitId()).setReading4(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("开关") ) {
// tmp3.get(r.getCircuitId()).setReading5(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("一母刀气室") ) {
// tmp3.get(r.getCircuitId()).setReading6(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("一母侧流变气室") ) {
// tmp3.get(r.getCircuitId()).setReading7(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("二母刀气室") ) {
// tmp3.get(r.getCircuitId()).setReading8(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("二母侧流变气室") ) {
// tmp3.get(r.getCircuitId()).setReading9(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("三母刀气室") ) {
// tmp3.get(r.getCircuitId()).setReading10(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("三母侧流变气室") ) {
// tmp3.get(r.getCircuitId()).setReading11(r.getReadingValue());
// }else if ( r.getMeterPosition().equals("三母扩展气室") ) {
// tmp3.get(r.getCircuitId()).setReading12(r.getReadingValue());
// }
});
List<XlsExport1> sheet3List = new ArrayList<>();
s3.forEach (r->{
sheet3List.add(tmp3.get(r));
});
//
List<Integer> s41 = getTitleId(fileName+"-s41");
//showList = snMeterHistoryService.getListByCircuitIds(s41,checkDate);
XlsExport1 sheet41List = new XlsExport1();
//动作计数器 5 //58 //59 //60 //61
showList.forEach(r->{
// if ( r.getDistinctionId().equals(1) && r.getCircuitId().equals(58) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())){
// sheet41List.setReading1("A相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading13("A相:" + r.getReading2());
// }
// } else if ( r.getDistinctionId().equals(2) && r.getCircuitId().equals(58) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading2("B相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading14("B相:"+r.getReading2());
// }
// } else if ( r.getDistinctionId().equals(3) && r.getCircuitId().equals(58) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading3("C相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading15("C相:"+r.getReading2());
// }
// }else if ( r.getDistinctionId().equals(1) && r.getCircuitId().equals(59) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading4("A相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading16("A相:"+r.getReading2());
// }
// } else if ( r.getDistinctionId().equals(2) && r.getCircuitId().equals(59) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading5("B相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading17("B相:"+r.getReading2());
// }
// } else if ( r.getDistinctionId().equals(3) && r.getCircuitId().equals(59) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading6("C相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading18("C相:"+r.getReading2());
// }
// }else if ( r.getDistinctionId().equals(1) && r.getCircuitId().equals(60) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading7("A相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading19("A相:"+r.getReading2());
// }
// } else if ( r.getDistinctionId().equals(2) && r.getCircuitId().equals(60) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading8("B相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading20("B相:"+r.getReading2());
// }
// } else if ( r.getDistinctionId().equals(3) && r.getCircuitId().equals(60) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading9("C相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading21("C相:"+r.getReading2());
// }
// } else if ( r.getDistinctionId().equals(2) && r.getCircuitId().equals(61) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading10("A相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading22("A相:"+r.getReading2());
// }
// } else if ( r.getDistinctionId().equals(3) && r.getCircuitId().equals(61) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading11("B相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading23("B相:"+r.getReading2());
// }
// }else if ( r.getDistinctionId().equals(1) && r.getCircuitId().equals(61) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// sheet41List.setReading12("C相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// sheet41List.setReading24("C相:"+r.getReading2());
// }
// }
});
//回路+相别+设备类型
// SnExport param = new SnExport();
// param.setExportName(fileName+"-s4");
// List<SnExport> exporList = snExportService.getListByName(param);
// List<Integer> circuitIds = new ArrayList<>();
// HashMap<String,String> readMap = new HashMap<>();
// exporList.forEach(r->{
// readMap.put(r.getTitleId().toString(),r.getOrderNum().toString());
// circuitIds.add(r.getTitleId());
// });
//
// showList = snMeterHistoryService.getListByCircuitIds(circuitIds,checkDate);
// //动作计数器 5 泄漏电流表 6
// showList.forEach(r->{
// String mk = r.getCircuitId().toString();
// if( readMap.containsKey(mk)){
// readMap.put("readmap"+ readMap.get(mk),r.getReadingValue());
// }
// });
// XlsExport3 readMapBean = new XlsExport3();
// try {
// BeanUtils.copyProperties(readMapBean,readMap);
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// //----
// List<Integer> s5 = getTitleId(fileName+"-s5");
// showList = snMeterHistoryService.getListByCircuitIds(s5,checkDate);
// HashMap<Integer,XlsExport1> tmp6 = new HashMap<>();
// showList.forEach(r->{
// if( !tmp6.containsKey(r.getCircuitId()) ) {
// tmp6.put(r.getCircuitId(),new XlsExport1());
// }
// //动作计数器 5 泄漏电流表 6
// if ( r.getMeterTypeId().equals(6) && r.getDistinctionId().equals(1) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())){
// tmp6.get(r.getCircuitId()).setReading1("A相:"+r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// tmp6.get(r.getCircuitId()).setReading4("A相:" + r.getReading2());
// }
// } else if ( r.getMeterTypeId().equals(6) && r.getDistinctionId().equals(2) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// tmp6.get(r.getCircuitId()).setReading2("B相:" + r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// tmp6.get(r.getCircuitId()).setReading5("B相:" + r.getReading2());
// }
// }else if ( r.getMeterTypeId().equals(6) && r.getDistinctionId().equals(3) ) {
// if(StringUtils.isNotBlank(r.getReadingValue())) {
// tmp6.get(r.getCircuitId()).setReading3("C相:" + r.getReadingValue());
// }
// if(StringUtils.isNotBlank(r.getReading2())) {
// tmp6.get(r.getCircuitId()).setReading6("C相:" + r.getReading2());
// }
// }
// });
// List<XlsExport1> sheet5List = new ArrayList<>();
// s5.forEach (r->{
// sheet5List.add(tmp6.get(r));
// });
//
// try {
// String templateFileName = this.templateFileName + "file/XlsExport3.xls";
// // 如果有多个list 模板上必须有{前缀.} 这里的前缀就是 data1,然后多个list必须用 FillWrapper包裹
// // 方案1 根据对象填充
// try ( ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(templateFileName).build() ) {
// FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
//
// WriteSheet sheet1 = EasyExcel.writerSheet("变压器").build();
// excelWriter.fill(new FillWrapper("data1", sheet1List), fillConfig,sheet1);
//
// WriteSheet sheet2 = EasyExcel.writerSheet("组合电器(GIS)1").build();
// excelWriter.fill(new FillWrapper("data2", sheet2List), fillConfig,sheet2);
//
// WriteSheet sheet3 = EasyExcel.writerSheet("组合电器(GIS)2").build();
// excelWriter.fill(new FillWrapper("data3", sheet3List), fillConfig,sheet3);
//
// WriteSheet sheet4 = EasyExcel.writerSheet("开关柜").build();
// excelWriter.fill(readMapBean, sheet4);
// excelWriter.fill(sheet41List, sheet4);
//
// WriteSheet sheet5 = EasyExcel.writerSheet("敞开式避雷器").build();
// excelWriter.fill(new FillWrapper("data6", sheet5List), fillConfig,sheet5);
//
// excelWriter.finish();
// }
// } catch (IOException e) {
// throw new RuntimeException(e);
// }
}
private HttpServletResponse getResponseHeader(HttpServletResponse response, String fileName, String date){
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + encodeStr(fileName+"-"+date) + ".xlsx");
return response;
}
private List<Integer> getTitleId(String fileName){
SnExport param = new SnExport();
param.setExportName(fileName);
List<SnExport> exporList = snExportService.getListByName(param);
List<Integer> ids = new ArrayList<>();
exporList.forEach(r->{
ids.add(r.getTitleId());
});
return ids;
}
/**
* 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
* @param str
* @return
*/
private String encodeStr(String str){
try {
return URLEncoder.encode(str, "UTF-8").replaceAll("\\+", "%20");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
}

BIN
device_cars/src/main/resources/file/XlsExport3.xls

Binary file not shown.

5
device_gather/src/main/java/com/xr/device/netty/NettyConfig.java

@ -1,5 +1,6 @@
package com.xr.device.netty;
import com.xr.device.websocket.DeviceWebSocketHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -12,7 +13,7 @@ public class NettyConfig {
}
@Bean
public NettyServer nettyServer(HeartbeatService heartbeatService) {
return new NettyServer(heartbeatService);
public NettyServer nettyServer(HeartbeatService heartbeatService, DeviceWebSocketHandler deviceWebSocketHandler) {
return new NettyServer(heartbeatService,deviceWebSocketHandler);
}
}

7
device_gather/src/main/java/com/xr/device/netty/NettyServer.java

@ -1,5 +1,6 @@
package com.xr.device.netty;
import com.xr.device.websocket.DeviceWebSocketHandler;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
@ -13,9 +14,11 @@ public class NettyServer {
private final int port = 8520;
private final HeartbeatService heartbeatService;
private final DeviceWebSocketHandler deviceWebSocketHandler;
public NettyServer(HeartbeatService heartbeatService) {
public NettyServer(HeartbeatService heartbeatService,DeviceWebSocketHandler deviceWebSocketHandler) {
this.heartbeatService = heartbeatService;
this.deviceWebSocketHandler=deviceWebSocketHandler;
}
public void start() throws InterruptedException {
@ -29,7 +32,7 @@ public class NettyServer {
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
ch.pipeline().addLast(new DeviceHandler(heartbeatService));
ch.pipeline().addLast(new DeviceHandler(heartbeatService,deviceWebSocketHandler));
}
})
.option(ChannelOption.SO_BACKLOG, 128)

7
device_gather/src/main/java/com/xr/device/schedule/GetMeterSchedule.java

@ -18,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
@ -202,4 +203,10 @@ public class GetMeterSchedule {
return Files.uploadImageForPath(image, StaticPropUtil.imgPath,sfm.format(date)+"\\\\"+date.getTime()+".jpg");
}
@PreDestroy
public void cleanup() {
// 清理资源的逻辑,例如关闭数据库连接池等
log.info("Cleaning up resources...");
}
}

2
drone_data/src/main/resources/application-dev.yml

@ -50,7 +50,7 @@ work:
password: public
clientId: publish_client
broker: tcp://localhost:1883
topic: mqtt/test
topic: camera/heartbeat
timeout: 30000
interval: 20
#work:

Loading…
Cancel
Save