Browse Source

中山站部署内容

dev-zs
yj 2 years ago
parent
commit
c1a14d82b2
  1. 32
      device_cars/src/main/java/com/xr/device_car/config/utils/Files.java
  2. 2
      device_cars/src/main/resources/application-dev.yml
  3. 2
      device_cars/src/main/resources/application.yml
  4. 6
      device_iec61850clent/src/main/java/com/xr/iec61850clent/common/configvalue/StaticProperties.java
  5. 7
      device_iec61850clent/src/main/java/com/xr/iec61850clent/common/util/StaticPropUtil.java
  6. 76
      device_iec61850clent/src/main/java/com/xr/iec61850clent/common/util/UploadUtil.java
  7. 3
      device_iec61850clent/src/main/java/com/xr/iec61850clent/models/entity/MeterConfig.java
  8. 5
      device_iec61850clent/src/main/java/com/xr/iec61850clent/models/entity/MeterReadingRecord.java
  9. 15
      device_iec61850clent/src/main/java/com/xr/iec61850clent/models/iec61850run/Iec61850clent.java
  10. 6
      device_iec61850clent/src/main/java/com/xr/iec61850clent/models/mapper/MeterConfigMapper.java
  11. 6
      device_iec61850clent/src/main/java/com/xr/iec61850clent/models/service/MeterConfigService.java
  12. 11
      device_iec61850clent/src/main/java/com/xr/iec61850clent/models/service/impl/MeterConfigServiceImpl.java
  13. 5
      device_iec61850clent/src/main/resources/application-dev.yml
  14. 4
      device_iec61850clent/src/main/resources/application-prod.yml
  15. 46
      device_iec61850clent/src/main/resources/mapper/MeterConfigMapper.xml
  16. 18
      device_udpclent/src/main/java/com/xr/device_udpclent/common/config/AppConfig.java
  17. 53
      device_udpclent/src/main/java/com/xr/device_udpclent/common/utils/Files.java
  18. 2
      device_udpclent/src/main/java/com/xr/device_udpclent/models/entity/MeterReadingRecord.java
  19. 2
      device_udpclent/src/main/java/com/xr/device_udpclent/models/scheduled/ImageDiscernScheduled.java
  20. 52
      device_udpclent/src/main/java/com/xr/device_udpclent/models/scheduled/UdpClentScheduled.java
  21. 6
      device_udpclent/src/main/resources/application-dev.yml
  22. 4
      device_udpclent/src/main/resources/application-prod.yml
  23. 2
      device_udpclent/src/main/resources/application.yml
  24. 4
      device_udpclent/src/main/resources/mapper/MeterReadingRecordMapper.xml

32
device_cars/src/main/java/com/xr/device_car/config/utils/Files.java

@ -345,6 +345,38 @@ public class Files {
return fileName; return fileName;
} }
/**
* 给图片化框
*image 图片
* */
public static BufferedImage drawRectangleAndText(BufferedImage image, int x1, int y1, int x2, int y2, String text) {
// 创建一个Graphics2D对象
Graphics2D g2d = image.createGraphics();
// 设置抗锯齿
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 绘制红色框
g2d.setColor(Color.RED);
g2d.drawRect(x1, y1, x2 - x1, y2 - y1);
// 设置字体和颜色
g2d.setFont(new Font("Arial", Font.BOLD, 12));
g2d.setColor(Color.RED);
// 获取文本的宽度和高度
FontMetrics fm = g2d.getFontMetrics();
int textWidth = fm.stringWidth(text);
int textHeight = fm.getHeight();
// 绘制文本
g2d.drawString(text, x2 - textWidth - 5, y1 + textHeight - 5);
// 释放资源
g2d.dispose();
return image;
}

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

@ -90,5 +90,5 @@ minio:
secretKey: minioadmin secretKey: minioadmin
udp: udp:
server: server:
host: 192.168.1.100 host: 172.26.4.59
port: 9300 port: 9300

2
device_cars/src/main/resources/application.yml

@ -2,7 +2,7 @@ spring:
profiles: profiles:
#active: dev #开发环境 #active: dev #开发环境
# active: test #测试环境5 # active: test #测试环境5
active: prod #生产环境 active: dev #生产环境
# active: prod #生产环境 # active: prod #生产环境
application: application:
name: deviceCars name: deviceCars

6
device_iec61850clent/src/main/java/com/xr/iec61850clent/common/configvalue/StaticProperties.java

@ -11,4 +11,10 @@ public class StaticProperties {
@Value("${device.deviceId}") @Value("${device.deviceId}")
private Integer deviceId; private Integer deviceId;
@Value("${upload.img.url}")
private String imgUrl;
@Value("${upload.img.path}")
private String imgPath;
} }

7
device_iec61850clent/src/main/java/com/xr/iec61850clent/common/util/StaticPropUtil.java

@ -6,9 +6,14 @@ public class StaticPropUtil {
public static Integer deviceId; public static Integer deviceId;
public static String imgUrl;
public static String imgPath;
public static void initDingDingProp(StaticProperties dingProperties){ public static void initDingDingProp(StaticProperties dingProperties){
deviceId=dingProperties.getDeviceId(); deviceId=dingProperties.getDeviceId();
imgUrl = dingProperties.getImgUrl();
imgPath = dingProperties.getImgPath();
} }
} }

76
device_iec61850clent/src/main/java/com/xr/iec61850clent/common/util/UploadUtil.java

@ -0,0 +1,76 @@
package com.xr.iec61850clent.common.util;
import org.apache.poi.ss.usermodel.Workbook;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.util.Date;
public class UploadUtil {
public static String uploadExcel(Workbook workbook,String path,String url1,String fileName) throws Exception{
FileOutputStream outputStream =new FileOutputStream(path+fileName);
workbook.write(outputStream);
outputStream.close();
String url = url1+fileName;
return url;
}
public static String uploadImage(String clentIp,Integer configId,String fileName) throws Exception {
// 构建完整的路径
String url = "http://"+clentIp+":8080/tao/snapshot";
SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd-HH");
String date = sim.format(new Date());
String dates[] = date.split("-");
String year = dates[0];
String month = dates[1];
String day = dates[2];
String ho = dates[3];
String fullPath = StaticPropUtil.imgUrl+configId + File.separator + year + File.separator + month + File.separator + day + File.separator +ho+File.separator+ fileName;
// 创建目录结构
Path directoryPath = Paths.get(StaticPropUtil.imgUrl,configId.toString(), year, month, day,ho);
if (!java.nio.file.Files.exists(directoryPath)) {
java.nio.file.Files.createDirectories(directoryPath);
}
downloadImage(url,fullPath);
// 构建URL
String url1 = StaticPropUtil.imgUrl+ configId + "/" + year + "/"+ month + "/" + day + "/" +ho+"/"+ fileName;
return url1;
}
public static void delFile(String path,String url,String fileUrl){
String filePath = fileUrl.replace(url,path).replace("/","\\");
File file = new File(filePath);
if(file.exists()){
file.delete();
}
}
public static void downloadImage(String imageUrl, String destinationPath) throws IOException {
URL url = new URL(imageUrl);
try (InputStream in = url.openStream();
FileOutputStream out = new FileOutputStream(destinationPath)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
}
}
}

3
device_iec61850clent/src/main/java/com/xr/iec61850clent/models/entity/MeterConfig.java

@ -68,6 +68,9 @@ public class MeterConfig implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String cameraName; private String cameraName;
@TableField(exist = false)
private String deviceIp;
/** /**
* 表计类型配置编号 * 表计类型配置编号
*/ */

5
device_iec61850clent/src/main/java/com/xr/iec61850clent/models/entity/MeterReadingRecord.java

@ -59,6 +59,11 @@ public class MeterReadingRecord implements Serializable {
*/ */
private String readingValue; private String readingValue;
/**
* 图片地址
*/
private String readingUrl;
/** /**
* 创建人 * 创建人
*/ */

15
device_iec61850clent/src/main/java/com/xr/iec61850clent/models/iec61850run/Iec61850clent.java

@ -9,6 +9,7 @@ import com.beanit.iec61850bean.*;
import com.beanit.iec61850bean.internal.cli.*; import com.beanit.iec61850bean.internal.cli.*;
import com.xr.iec61850clent.common.util.ModeUtil; import com.xr.iec61850clent.common.util.ModeUtil;
import com.xr.iec61850clent.common.util.SpringUtils; import com.xr.iec61850clent.common.util.SpringUtils;
import com.xr.iec61850clent.common.util.UploadUtil;
import com.xr.iec61850clent.models.entity.*; import com.xr.iec61850clent.models.entity.*;
import com.xr.iec61850clent.models.service.*; import com.xr.iec61850clent.models.service.*;
import lombok.Data; import lombok.Data;
@ -152,10 +153,10 @@ public class Iec61850clent extends Thread{
lds.setUpdateTime(new Date()); lds.setUpdateTime(new Date());
lds.setF(lds5000.getF()); lds.setF(lds5000.getF());
lds5000Service.updateById(lds); lds5000Service.updateById(lds);
QueryWrapper<MeterConfig>queryWrapper1=new QueryWrapper<>(); MeterConfig config=meterConfigService.selectNoJzConfig(lds.getId());
queryWrapper1.eq("ids5000_id",lds.getId());
MeterConfig config=meterConfigService.getOne(queryWrapper1);
if(config!=null){ if(config!=null){
String fileName = config.getId()+new Date().getTime()+".jpg";
String url= UploadUtil.uploadImage(config.getDeviceIp(),config.getId(),fileName);
MeterType type=meterTypeService.getById(config.getTypeId()); MeterType type=meterTypeService.getById(config.getTypeId());
MeterReadingRecord meterReadingRecord=new MeterReadingRecord(); MeterReadingRecord meterReadingRecord=new MeterReadingRecord();
meterReadingRecord.setMeterId(config.getId()); meterReadingRecord.setMeterId(config.getId());
@ -210,6 +211,7 @@ public class Iec61850clent extends Thread{
meterReadingRecord.setReadingTime(new Date()); meterReadingRecord.setReadingTime(new Date());
meterReadingRecord.setCreateUser("SYSTEM"); meterReadingRecord.setCreateUser("SYSTEM");
meterReadingRecord.setCreateTime(new Date()); meterReadingRecord.setCreateTime(new Date());
meterReadingRecord.setReadingUrl(url);
meterReadingRecord.setMeterTypeId(config.getTypeId()); meterReadingRecord.setMeterTypeId(config.getTypeId());
meterReadingRecord.setOwningInterval(config.getOwningInterval()); meterReadingRecord.setOwningInterval(config.getOwningInterval());
if(config.getIsJz()!=1){ if(config.getIsJz()!=1){
@ -223,10 +225,10 @@ public class Iec61850clent extends Thread{
} }
} }
} }
QueryWrapper<MeterConfig> queryWrapper=new QueryWrapper<>(); List<MeterConfig> meterConfigs=meterConfigService.selectJzConfig();
queryWrapper.eq("is_jz",1);
List<MeterConfig> meterConfigs=meterConfigService.list(queryWrapper);
for (MeterConfig config:meterConfigs){ for (MeterConfig config:meterConfigs){
String fileName = config.getId()+new Date().getTime()+".jpg";
String url= UploadUtil.uploadImage(config.getDeviceIp(),config.getId(),fileName);
MeterReadingRecord meterReadingRecord=new MeterReadingRecord(); MeterReadingRecord meterReadingRecord=new MeterReadingRecord();
meterReadingRecord.setMeterId(config.getId()); meterReadingRecord.setMeterId(config.getId());
meterReadingRecord.setReadingType(config.getTypeId()); meterReadingRecord.setReadingType(config.getTypeId());
@ -238,6 +240,7 @@ public class Iec61850clent extends Thread{
meterReadingRecord.setReadingTime(new Date()); meterReadingRecord.setReadingTime(new Date());
meterReadingRecord.setCreateUser("SYSTEM"); meterReadingRecord.setCreateUser("SYSTEM");
meterReadingRecord.setCreateTime(new Date()); meterReadingRecord.setCreateTime(new Date());
meterReadingRecord.setReadingUrl(url);
meterReadingRecord.setMeterTypeId(config.getTypeId()); meterReadingRecord.setMeterTypeId(config.getTypeId());
meterReadingRecord.setOwningInterval(config.getOwningInterval()); meterReadingRecord.setOwningInterval(config.getOwningInterval());
meterReadingRecordService.save(meterReadingRecord); meterReadingRecordService.save(meterReadingRecord);

6
device_iec61850clent/src/main/java/com/xr/iec61850clent/models/mapper/MeterConfigMapper.java

@ -4,12 +4,18 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xr.iec61850clent.models.entity.MeterConfig; import com.xr.iec61850clent.models.entity.MeterConfig;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* @Entity com.xr.iec61850clent.models.entity.MeterConfig * @Entity com.xr.iec61850clent.models.entity.MeterConfig
*/ */
@Mapper @Mapper
public interface MeterConfigMapper extends BaseMapper<MeterConfig> { public interface MeterConfigMapper extends BaseMapper<MeterConfig> {
List<MeterConfig> selectJzConfig();
MeterConfig selectNoJzConfig(Integer ids5000Id);
} }

6
device_iec61850clent/src/main/java/com/xr/iec61850clent/models/service/MeterConfigService.java

@ -3,9 +3,15 @@ package com.xr.iec61850clent.models.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.xr.iec61850clent.models.entity.MeterConfig; import com.xr.iec61850clent.models.entity.MeterConfig;
import java.util.List;
/** /**
* *
*/ */
public interface MeterConfigService extends IService<MeterConfig> { public interface MeterConfigService extends IService<MeterConfig> {
List<MeterConfig> selectJzConfig();
MeterConfig selectNoJzConfig(Integer ids5000Id);
} }

11
device_iec61850clent/src/main/java/com/xr/iec61850clent/models/service/impl/MeterConfigServiceImpl.java

@ -7,6 +7,8 @@ import com.xr.iec61850clent.models.mapper.MeterConfigMapper;
import com.xr.iec61850clent.models.service.MeterConfigService; import com.xr.iec61850clent.models.service.MeterConfigService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* *
*/ */
@ -15,6 +17,15 @@ import org.springframework.stereotype.Service;
public class MeterConfigServiceImpl extends ServiceImpl<MeterConfigMapper, MeterConfig> public class MeterConfigServiceImpl extends ServiceImpl<MeterConfigMapper, MeterConfig>
implements MeterConfigService{ implements MeterConfigService{
@Override
public List<MeterConfig> selectJzConfig() {
return ((MeterConfigMapper)this.baseMapper).selectJzConfig();
}
@Override
public MeterConfig selectNoJzConfig(Integer ids5000Id) {
return ((MeterConfigMapper)this.baseMapper).selectNoJzConfig(ids5000Id);
}
} }

5
device_iec61850clent/src/main/resources/application-dev.yml

@ -79,3 +79,8 @@ eureka:
defaultZone: http://localhost:8084/eureka defaultZone: http://localhost:8084/eureka
device: device:
deviceId: 3 deviceId: 3
upload:
img:
url: http://192.168.1.83:18081/file/img/zs/
path: D:\\service\\fileService\\img\\zs\\

4
device_iec61850clent/src/main/resources/application-prod.yml

@ -79,3 +79,7 @@ eureka:
defaultZone: http://localhost:8084/eureka defaultZone: http://localhost:8084/eureka
device: device:
deviceId: 3 deviceId: 3
upload:
img:
url: http://192.168.1.94:18081/file/img/zs/
path: D:\\service\\fileService\\img\\zs\\

46
device_iec61850clent/src/main/resources/mapper/MeterConfigMapper.xml

@ -0,0 +1,46 @@
<?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.xr.iec61850clent.models.mapper.MeterConfigMapper">
<resultMap id="BaseResultMap" type="com.xr.iec61850clent.models.entity.MeterConfig">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="voltageClass" column="voltage_class" jdbcType="VARCHAR"/>
<result property="owningInterval" column="owning_interval" jdbcType="VARCHAR"/>
<result property="identificationInterval" column="identification_interval" jdbcType="VARCHAR"/>
<result property="deviceName" column="device_name" jdbcType="VARCHAR"/>
<result property="deviceType" column="device_type" jdbcType="VARCHAR"/>
<result property="meterCode" column="meter_code" jdbcType="VARCHAR"/>
<result property="meterName" column="meter_name" jdbcType="VARCHAR"/>
<result property="cameraId" column="camera_id" jdbcType="INTEGER"/>
<result property="typeId" column="type_id" jdbcType="INTEGER"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="firstTime" column="first_time" jdbcType="TIMESTAMP"/>
<result property="algorithmType" column="algorithm_type" jdbcType="VARCHAR"/>
<result property="intervalTime" column="interval_time" jdbcType="INTEGER"/>
<result property="intervalType" column="interval_type" jdbcType="INTEGER"/>
<result property="focalNumber" column="focal_number" jdbcType="INTEGER"/>
<result property="parameterConfig" column="parameter_config" jdbcType="VARCHAR"/>
<result property="remarks" column="remarks" jdbcType="VARCHAR"/>
<result property="initStatus" column="init_status" jdbcType="VARCHAR"/>
<result property="createUser" column="create_user" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="cameraType" column="device_type" jdbcType="VARCHAR"/>
<result property="cameraName" column="position" jdbcType="VARCHAR"/>
<result property="typeAlias" column="type_alias" jdbcType="VARCHAR"/>
<result property="ip" column="device_ip" jdbcType="VARCHAR"/>
</resultMap>
<select id="selectJzConfig" resultType="com.xr.iec61850clent.models.entity.MeterConfig">
select a.*,b.device_ip from meter_config a left join device_camera b
on a.camera_id = b.id where a.is_jz=1
</select>
<select id="selectNoJzConfig" resultType="com.xr.iec61850clent.models.entity.MeterConfig">
select a.*,b.device_ip from meter_config a left join device_camera b
on a.camera_id = b.id where a.ids5000_id=#{ids5000Id}
</select>
</mapper>

18
device_udpclent/src/main/java/com/xr/device_udpclent/common/config/AppConfig.java

@ -0,0 +1,18 @@
package com.xr.device_udpclent.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
@Configuration
public class AppConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(5);
scheduler.initialize();
return scheduler;
}
}

53
device_udpclent/src/main/java/com/xr/device_udpclent/common/utils/Files.java

@ -12,7 +12,11 @@ import java.net.Authenticator;
import java.net.PasswordAuthentication; import java.net.PasswordAuthentication;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.Base64; import java.util.Base64;
import java.util.Date;
public class Files { public class Files {
@ -65,6 +69,55 @@ public class Files {
return toFile; return toFile;
} }
public static BufferedImage bytesTobufferedImage(byte[] bytes){
BufferedImage image = null;
try {
// 利用ByteArrayInputStream将字节数据转换成InputStream
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
// 使用ImageIO读取InputStream中的数据转换为BufferedImage
image = ImageIO.read(bais);
// 关闭ByteArrayInputStream
bais.close();
// 此时,image就是转换后的BufferedImage对象,可以进行显示或其他处理
// 例如显示图像:
// ImageIcon icon=new ImageIcon(image);
// JOptionPane.showMessageDialog(null, icon);
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
public static String uploadImage(BufferedImage bufferedImage, Integer configId) throws Exception {
// 构建完整的路径
String fileName = configId+new Date().getTime()+".jpg";
SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");
String date = sim.format(new Date());
String dates[] = date.split("-");
String year = dates[0];
String month = dates[1];
String day = dates[2];
String fullPath = StaticPropUtil.imagePath + configId + File.separator + year + File.separator + month + File.separator + day + File.separator + fileName;
// 创建目录结构
Path directoryPath = Paths.get(StaticPropUtil.imagePath, configId.toString(), year, month, day);
if (!java.nio.file.Files.exists(directoryPath)) {
java.nio.file.Files.createDirectories(directoryPath);
}
// 创建文件并写入图像
File file = new File(fullPath);
ImageIO.write(bufferedImage, "jpg", file);
// 构建URL
String url = StaticPropUtil.imageUrl + configId + "/" + year + "/"+ month + "/" + day + "/" + fileName;
return url;
}

2
device_udpclent/src/main/java/com/xr/device_udpclent/models/entity/MeterReadingRecord.java

@ -63,6 +63,8 @@ public class MeterReadingRecord implements Serializable {
*/ */
private Integer dataType; private Integer dataType;
private String readingUrl;
/** /**
* 读数值 * 读数值
*/ */

2
device_udpclent/src/main/java/com/xr/device_udpclent/models/scheduled/ImageDiscernScheduled.java

@ -34,7 +34,7 @@ public class ImageDiscernScheduled {
private static Logger log= LoggerFactory.getLogger(ImageDiscernScheduled.class); private static Logger log= LoggerFactory.getLogger(ImageDiscernScheduled.class);
@Scheduled(cron = "0 0/3 * * * ?") //@Scheduled(cron = "0 0/3 * * * ?")
public void imageDiscernTask() throws Exception{ //定时拍摄网络摄像头,并且解析后存储到读数表 public void imageDiscernTask() throws Exception{ //定时拍摄网络摄像头,并且解析后存储到读数表
try{ try{
QueryWrapper<MeterConfig> queryConfig=new QueryWrapper<>(); QueryWrapper<MeterConfig> queryConfig=new QueryWrapper<>();

52
device_udpclent/src/main/java/com/xr/device_udpclent/models/scheduled/UdpClentScheduled.java

@ -1,17 +1,25 @@
package com.xr.device_udpclent.models.scheduled; package com.xr.device_udpclent.models.scheduled;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xr.device_udpclent.common.config.udp.UdbConfig; import com.xr.device_udpclent.common.config.udp.UdbConfig;
import com.xr.device_udpclent.common.utils.EnumUtil; import com.xr.device_udpclent.common.utils.EnumUtil;
import com.xr.device_udpclent.common.utils.Files;
import com.xr.device_udpclent.models.entity.FocalLengthConfig;
import com.xr.device_udpclent.models.entity.MeterConfig;
import com.xr.device_udpclent.models.entity.MeterReadingRecord; import com.xr.device_udpclent.models.entity.MeterReadingRecord;
import com.xr.device_udpclent.models.service.FocalLengthConfigService;
import com.xr.device_udpclent.models.service.MeterConfigService;
import com.xr.device_udpclent.models.service.MeterReadingRecordService; import com.xr.device_udpclent.models.service.MeterReadingRecordService;
import com.xr.device_udpclent.models.service.UdpClientService; import com.xr.device_udpclent.models.service.UdpClientService;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.awt.image.BufferedImage;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
@ -19,7 +27,7 @@ import java.util.zip.CRC32;
import java.util.zip.Checksum; import java.util.zip.Checksum;
@Component @Configuration
public class UdpClentScheduled { public class UdpClentScheduled {
@Autowired @Autowired
@ -28,26 +36,52 @@ public class UdpClentScheduled {
@Autowired @Autowired
private MeterReadingRecordService meterReadingRecordService; private MeterReadingRecordService meterReadingRecordService;
@Autowired
private FocalLengthConfigService focalLengthConfigService;
@Scheduled(cron = "0 0/3 * * * ?") @Scheduled(cron = "0 0/3 * * * ?")
//定时发送监测数据 //定时发送监测数据
public void udpTask() throws UnsupportedEncodingException, InterruptedException { public void udpTask(){
if(meterReadingRecordService == null){ if(meterReadingRecordService == null){
meterReadingRecordService = SpringUtil.getBean(MeterReadingRecordService.class); meterReadingRecordService = SpringUtil.getBean(MeterReadingRecordService.class);
} }
List<MeterReadingRecord> list = meterReadingRecordService.selectMaxReading(); List<MeterReadingRecord> list = meterReadingRecordService.selectMaxReading();
for (MeterReadingRecord record:list){ for (MeterReadingRecord record:list){
// QueryWrapper<FocalLengthConfig> wrapper=new QueryWrapper<>();
// wrapper.eq("config_id",record.getMeterId());
// List<FocalLengthConfig> configs=focalLengthConfigService.list(wrapper);
// if(configs.size()>0){
// BufferedImage image = Files.bytesTobufferedImage(configs.get(0).getFocalPicture());
// try {
// String url = Files.uploadImage(image,record.getMeterId());
// record.setReadingUrl(url);
// meterReadingRecordService.updateById(record);
// }catch (Exception e){
// e.printStackTrace();
// }
// }
ByteBuf buf = Unpooled.buffer(); ByteBuf buf = Unpooled.buffer();
ByteBuf checksumBuffer = Unpooled.buffer(Long.BYTES); ByteBuf checksumBuffer = Unpooled.buffer(Long.BYTES);
buf.writeBytes(new byte[]{(byte) 0xEB, (byte) 0x90,(byte) 0xEB, (byte) 0x90,(byte)0x55}); buf.writeBytes(new byte[]{(byte) 0xEB, (byte) 0x90,(byte) 0xEB, (byte) 0x90,(byte)0x78});
buf.writeShortLE(3); buf.writeShortLE(3);
buf.writeShort(record.getMeterId()); buf.writeShort(record.getMeterId());
buf.writeByte(2); buf.writeByte(2);
String s="在线监测"; String s="在线监测#"+record.getReadingUrl();
byte [] sx=s.getBytes("GB2312"); byte [] sx;
try {
sx = s.getBytes("GB2312");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
buf.writeByte(sx.length); buf.writeByte(sx.length);
buf.writeBytes(sx); buf.writeBytes(sx);
byte [] sz = record.getReadingValue().getBytes("GB2312"); byte [] sz;
try {
sz = record.getReadingValue().getBytes("GB2312");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
buf.writeByte(sz.length); buf.writeByte(sz.length);
buf.writeBytes(sz); buf.writeBytes(sz);
buf.writeBytes(generateCP56Time2a()); buf.writeBytes(generateCP56Time2a());
@ -71,7 +105,11 @@ public class UdpClentScheduled {
buf.writeBytes(checksumBuffer); buf.writeBytes(checksumBuffer);
System.out.println(EnumUtil.byteBufTo16Str(buf)); System.out.println(EnumUtil.byteBufTo16Str(buf));
udpClientService.sendData(buf); udpClientService.sendData(buf);
Thread.sleep(100); try {
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
} }
} }

6
device_udpclent/src/main/resources/application-dev.yml

@ -88,11 +88,11 @@ logging:
logging: debug logging: debug
udp: udp:
server: server:
host: 192.168.1.100 host: 172.26.4.59
port: 9300 port: 9300
upLoad: upLoad:
path: D:\\images\\images\\ url: http://116.196.120.81:18081/file/img/zs/
url: http://localhost:85/upload/ path: D:\\service\\fileService\\img\\zs\\
python: python:
path: C:\\Users\\admin\\Anaconda3\\envs\\myconda310\\python.exe path: C:\\Users\\admin\\Anaconda3\\envs\\myconda310\\python.exe
modelPath: D:\\smartGrid\\smartGrid\\models modelPath: D:\\smartGrid\\smartGrid\\models

4
device_udpclent/src/main/resources/application-prod.yml

@ -91,8 +91,8 @@ udp:
host: 192.168.1.100 host: 192.168.1.100
port: 9300 port: 9300
upLoad: upLoad:
path: D:\\images\\images\\ url: http://192.168.1.94:18081/file/img/zs/
url: http://localhost:85/upload/ path: D:\\service\\fileService\\img\\zs\\
python: python:
path: C:\\Users\\admin\\Anaconda3\\envs\\myconda310\\python.exe path: C:\\Users\\admin\\Anaconda3\\envs\\myconda310\\python.exe
modelPath: D:\\smartGrid\\smartGrid\\models modelPath: D:\\smartGrid\\smartGrid\\models

2
device_udpclent/src/main/resources/application.yml

@ -1,6 +1,6 @@
spring: spring:
profiles: profiles:
active: prod #开发环境 active: dev #开发环境
# active: test #测试环境5 # active: test #测试环境5
#active: prod #生产环境 #active: prod #生产环境
application: application:

4
device_udpclent/src/main/resources/mapper/MeterReadingRecordMapper.xml

@ -30,10 +30,10 @@
</sql> </sql>
<select id="selectMaxReading" resultMap="BaseResultMap"> <select id="selectMaxReading" resultMap="BaseResultMap">
select a.meter_id,b.reading_time,b.reading_value select a.id,a.meter_id,b.reading_time,b.reading_value,b.reading_url
from (select meter_id,max(id) id from (select meter_id,max(id) id
from meter_reading_record GROUP BY meter_id) from meter_reading_record GROUP BY meter_id)
a LEFT JOIN (select id,reading_time,reading_value from meter_reading_record) b a LEFT JOIN (select id,reading_time,reading_value,reading_url from meter_reading_record) b
on a.id = b.id LEFT JOIN meter_config c on a.meter_id=c.id where c.status=1 on a.id = b.id LEFT JOIN meter_config c on a.meter_id=c.id where c.status=1
</select> </select>
</mapper> </mapper>

Loading…
Cancel
Save