调整普倍思设备为自动化

This commit is contained in:
zy 2025-11-29 12:26:52 +08:00
parent 5c5af49668
commit 5c74970672
17 changed files with 408 additions and 77 deletions

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -197,6 +198,13 @@ public class SurvDeviceDeploy extends Model<SurvDeviceDeploy> {
@TableField("SURV_CONFIG_ID") @TableField("SURV_CONFIG_ID")
private String survConfigId; private String survConfigId;
/**
* 设备配置串
*/
@TableField("DEVICE_CONFIG")
@ApiModelProperty(value = "设备配置串")
private String deviceConfig;
@Override @Override
protected Serializable pkVal() { protected Serializable pkVal() {
return this.id; return this.id;

View File

@ -94,8 +94,8 @@ public class SurvTransdataAir extends Model<SurvTransdataAir> {
/** /**
* 站点ID * 站点ID
*/ */
// @TableField("STATION_ID") @TableField("STATION_ID")
// private String stationId; private String stationId;
/** /**
* 设备ID * 设备ID
@ -106,8 +106,8 @@ public class SurvTransdataAir extends Model<SurvTransdataAir> {
/** /**
* 站点编号 * 站点编号
*/ */
// @TableField("STATION_CODE") @TableField("STATION_CODE")
// private String stationCode; private String stationCode;
/** /**
* 设备编号 * 设备编号
@ -124,14 +124,14 @@ public class SurvTransdataAir extends Model<SurvTransdataAir> {
/** /**
* 站点名称 * 站点名称
*/ */
// @TableField("STATION_NAME") @TableField("STATION_NAME")
// private String stationName; private String stationName;
/** /**
* 设备名称 * 设备名称
*/ */
// @TableField("DEVICE_NAME") @TableField("DEVICE_NAME")
// private String deviceName; private String deviceName;
/** /**
* 租户号 * 租户号

View File

@ -221,8 +221,8 @@ public class SurvTransdataSoil extends Model<SurvTransdataSoil> {
/** /**
* 站点ID * 站点ID
*/ */
// @TableField("STATION_ID") @TableField("STATION_ID")
// private String stationId; private String stationId;
/** /**
* 设备ID * 设备ID
@ -233,8 +233,8 @@ public class SurvTransdataSoil extends Model<SurvTransdataSoil> {
/** /**
* 站点编号 * 站点编号
*/ */
// @TableField("STATION_CODE") @TableField("STATION_CODE")
// private String stationCode; private String stationCode;
/** /**
* 设备编号 * 设备编号
@ -251,14 +251,15 @@ public class SurvTransdataSoil extends Model<SurvTransdataSoil> {
/** /**
* 站点名称 * 站点名称
*/ */
// @TableField("STATION_NAME") @TableField("STATION_NAME")
// private String stationName; private String stationName;
/** /**
* 设备名称 * 设备名称
*/ */
// @TableField("DEVICE_NAME") @TableField("DEVICE_NAME")
// private String deviceName; private String deviceName;
/** /**
* 租户号 * 租户号
@ -309,6 +310,10 @@ public class SurvTransdataSoil extends Model<SurvTransdataSoil> {
private String deployId; private String deployId;
@Override @Override
protected Serializable pkVal() { protected Serializable pkVal() {
return this.id; return this.id;

View File

@ -0,0 +1,10 @@
package com.lanhai.o.iot.pbs;
import lombok.Data;
import java.util.List;
@Data
public class ResolvConfig {
List<ResolveConfigDetail> resolvConfig;
}

View File

@ -0,0 +1,27 @@
package com.lanhai.o.iot.pbs;
import lombok.Data;
@Data
public class ResolveConfigDetail {
/**
* 索引
*/
private String index;
/**
* 报文取值范围
*/
private String range;
/**
* 实体字段
*/
private String field;
/**
* 排序
*/
private Integer sortNo;
}

View File

@ -0,0 +1,76 @@
package com.lanhai.o.iot.pbs;
import lombok.Data;
import java.util.Date;
/**
* 普倍思解析实体
*/
@Data
public class WaterCommonTransVo {
/**
* 数据ID
*/
private String dataId;
private String deployCode;
/**
* 总磷
*/
private String dataWaterTp;
private String dataWaterTpSy;
private String dataWaterTpLd;
/**
* 总氮
*/
private String dataWaterTn;
private String dataWaterTnSy;
private String dataWaterTnLd;
/**
* 硝态氮
*/
private String dataWaterNo;
/**
* 氨氮
*/
private String dataWaterNh;
private String dataWaterNhSy;
private String dataWaterNhLd;
/**
* 化学需氧量
*/
private String dataWaterCod;
private String dataWaterCodSy;
private String dataWaterCodLd;
private String fluidLevel;//液位
private String firstValveStatus;//1#球阀状态
private String secondValveStatus;//2#球阀状态
private String crashStopStatus;//急停状态
private String waterPumpStatus;//水泵状态
private String mainSideStatus;//主副泵状态
/**
* 数据更新时间
*/
private Date dataDateTime;
/**
* 数据获取类型;realTime=实时dayTime=日数据month=月数据year=年数据
*/
private String dataGatherType;
}

View File

@ -1,5 +1,6 @@
package com.lanhai.service; package com.lanhai.service;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvTransdataLivestockwater; import com.lanhai.entity.SurvTransdataLivestockwater;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.lanhai.entity.SurvTransdataOrientwater; import com.lanhai.entity.SurvTransdataOrientwater;
@ -13,7 +14,7 @@ public interface ISurvTransdataLivestockwaterService extends IService<SurvTransd
SurvTransdataLivestockwater getOneByDeviceCode(String deviceCode); SurvTransdataLivestockwater getOneByDeviceCode(String deviceCode);
void saveBaowen(String str); void saveBaowen(String str, SurvDeviceDeploy deploy);

View File

@ -1,6 +1,7 @@
package com.lanhai.service; package com.lanhai.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvTransdataOrientwater; import com.lanhai.entity.SurvTransdataOrientwater;
/** /**
@ -14,7 +15,7 @@ public interface ISurvTransdataOrientwaterService extends IService<SurvTransdata
SurvTransdataOrientwater getOneByDeviceCode(String deviceCode); SurvTransdataOrientwater getOneByDeviceCode(String deviceCode);
void saveBaowen(String str); void saveBaowen(String str, SurvDeviceDeploy deploy);

View File

@ -16,6 +16,7 @@ import com.lanhai.service.ISurvAlertRecordService;
import com.lanhai.service.ISurvDeviceDeployService; import com.lanhai.service.ISurvDeviceDeployService;
import com.lanhai.service.ISurvStationInfoService; import com.lanhai.service.ISurvStationInfoService;
import com.lanhai.util.DataUtil; import com.lanhai.util.DataUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -29,6 +30,7 @@ import java.util.*;
* *
*/ */
@Service @Service
@Slf4j
public class SurvAlertRecordServiceImpl extends ServiceImpl<SurvAlertRecordMapper, SurvAlertRecord> implements ISurvAlertRecordService { public class SurvAlertRecordServiceImpl extends ServiceImpl<SurvAlertRecordMapper, SurvAlertRecord> implements ISurvAlertRecordService {
@ -128,6 +130,10 @@ public class SurvAlertRecordServiceImpl extends ServiceImpl<SurvAlertRecordMappe
for (String key : zhibiaomap.keySet()) { for (String key : zhibiaomap.keySet()) {
//获取报文中某个指标的数据 //获取报文中某个指标的数据
String baowenVal = baowenMap.get(key); String baowenVal = baowenMap.get(key);
if(StringUtils.isBlank(baowenVal)){
log.error("**********设备:{},编号:{},监测项:{}未在报文中出现,跳过************",deviceDeploy.getDeployDes(),deviceDeploy.getDeployCode(),baowenVal);
continue;
}
//获取某个指标的阈值 //获取某个指标的阈值
JSONObject jsonObject = zhibiaomap.get(key); JSONObject jsonObject = zhibiaomap.get(key);
Set<String> set = jsonObject.keySet(); Set<String> set = jsonObject.keySet();

View File

@ -2,13 +2,11 @@ package com.lanhai.service.Impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.lanhai.constant.PollutionConstants; import com.lanhai.constant.PollutionConstants;
import com.lanhai.entity.ScEquZhibiao; import com.lanhai.entity.*;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvHisdataLivestockwater;
import com.lanhai.entity.SurvTransdataLivestockwater;
import com.lanhai.mapper.SurvHisdataLivestockwaterMapper; import com.lanhai.mapper.SurvHisdataLivestockwaterMapper;
import com.lanhai.service.ISurvHisdataLivestockwaterService; import com.lanhai.service.ISurvHisdataLivestockwaterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanhai.service.ISurvStationInfoService;
import com.lanhai.util.BigDecimalRandomAdjuster; import com.lanhai.util.BigDecimalRandomAdjuster;
import com.lanhai.util.DateUtils; import com.lanhai.util.DateUtils;
import com.lanhai.util.SpringBeanUtils; import com.lanhai.util.SpringBeanUtils;
@ -40,6 +38,10 @@ public class SurvHisdataLivestockwaterServiceImpl extends ServiceImpl<SurvHisdat
@Lazy @Lazy
private ScEquZhibiaoServiceImpl zhibiaoService; private ScEquZhibiaoServiceImpl zhibiaoService;
@Autowired
@Lazy
private ISurvStationInfoService survStationInfoService;
@Override @Override
public SurvTransdataLivestockwater genData(SurvDeviceDeploy deploy) { public SurvTransdataLivestockwater genData(SurvDeviceDeploy deploy) {
String deployCode = deploy.getDeployCode(); String deployCode = deploy.getDeployCode();
@ -155,6 +157,17 @@ public class SurvHisdataLivestockwaterServiceImpl extends ServiceImpl<SurvHisdat
hisdataLivestockwater.setCrashStopStatus("0"); hisdataLivestockwater.setCrashStopStatus("0");
hisdataLivestockwater.setWaterPumpStatus("0"); hisdataLivestockwater.setWaterPumpStatus("0");
hisdataLivestockwater.setMainSideStatus("0"); hisdataLivestockwater.setMainSideStatus("0");
hisdataLivestockwater.setDeviceId(deploy.getId());
hisdataLivestockwater.setDeviceName(deploy.getDeployDes());
hisdataLivestockwater.setStationCode(deploy.getStationCode());
if(StringUtils.isNotBlank(deploy.getStationCode())){
SurvStationInfo info = survStationInfoService.getByCode(deploy.getStationCode());
if(info!=null){
hisdataLivestockwater.setStationName(info.getStationName());
hisdataLivestockwater.setStationId(info.getId());
}
}
save(hisdataLivestockwater); save(hisdataLivestockwater);

View File

@ -2,14 +2,12 @@ package com.lanhai.service.Impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.lanhai.constant.PollutionConstants; import com.lanhai.constant.PollutionConstants;
import com.lanhai.entity.ScEquZhibiao; import com.lanhai.entity.*;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvHisdataOrientwater;
import com.lanhai.entity.SurvTransdataOrientwater;
import com.lanhai.mapper.SurvHisdataOrientwaterMapper; import com.lanhai.mapper.SurvHisdataOrientwaterMapper;
import com.lanhai.mapper.SurvTransdataOrientwaterMapper; import com.lanhai.mapper.SurvTransdataOrientwaterMapper;
import com.lanhai.service.ISurvHisdataOrientwaterService; import com.lanhai.service.ISurvHisdataOrientwaterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanhai.service.ISurvStationInfoService;
import com.lanhai.service.ISurvTransdataOrientwaterService; import com.lanhai.service.ISurvTransdataOrientwaterService;
import com.lanhai.util.BigDecimalRandomAdjuster; import com.lanhai.util.BigDecimalRandomAdjuster;
import com.lanhai.util.DateUtils; import com.lanhai.util.DateUtils;
@ -48,6 +46,10 @@ public class SurvHisdataOrientwaterServiceImpl extends ServiceImpl<SurvHisdataOr
@Lazy @Lazy
private ScEquZhibiaoServiceImpl zhibiaoService; private ScEquZhibiaoServiceImpl zhibiaoService;
@Autowired
@Lazy
private ISurvStationInfoService survStationInfoService;
@Override @Override
public SurvTransdataOrientwater genData(SurvDeviceDeploy deploy) { public SurvTransdataOrientwater genData(SurvDeviceDeploy deploy) {
@ -175,6 +177,18 @@ public class SurvHisdataOrientwaterServiceImpl extends ServiceImpl<SurvHisdataOr
hisdataOrientwater.setCrashStopStatus("0"); hisdataOrientwater.setCrashStopStatus("0");
hisdataOrientwater.setWaterPumpStatus("0"); hisdataOrientwater.setWaterPumpStatus("0");
hisdataOrientwater.setMainSideStatus("0"); hisdataOrientwater.setMainSideStatus("0");
hisdataOrientwater.setDeviceId(deploy.getId());
hisdataOrientwater.setDeviceName(deploy.getDeployDes());
hisdataOrientwater.setStationCode(deploy.getStationCode());
if(StringUtils.isNotBlank(deploy.getStationCode())){
SurvStationInfo info = survStationInfoService.getByCode(deploy.getStationCode());
if(info!=null){
hisdataOrientwater.setStationName(info.getStationName());
hisdataOrientwater.setStationId(info.getId());
}
}
save(hisdataOrientwater); save(hisdataOrientwater);
BeanUtil.copyProperties(hisdataOrientwater, newestData); BeanUtil.copyProperties(hisdataOrientwater, newestData);

View File

@ -6,11 +6,13 @@ import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lanhai.entity.*; import com.lanhai.entity.*;
import com.lanhai.mapper.SurvTransdataLivestockwaterMapper; import com.lanhai.mapper.SurvTransdataLivestockwaterMapper;
import com.lanhai.o.iot.pbs.WaterCommonTransVo;
import com.lanhai.service.ISurvAlertRecordService; import com.lanhai.service.ISurvAlertRecordService;
import com.lanhai.service.ISurvHisdataLivestockwaterService; import com.lanhai.service.ISurvHisdataLivestockwaterService;
import com.lanhai.service.ISurvTransdataLivestockwaterService; import com.lanhai.service.ISurvTransdataLivestockwaterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanhai.util.DataUtil; import com.lanhai.util.DataUtil;
import com.lanhai.util.TUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -39,7 +41,8 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
private ISurvAlertRecordService alertRecordService; private ISurvAlertRecordService alertRecordService;
@Autowired @Autowired
private SurvHisdataLivestockwaterErrorServiceImpl hisdataLivestockwaterErrorService; private SurvHisdataLivestockwaterErrorServiceImpl hisdataLivestockwaterErrorService;
@Autowired
private SurvStationInfoServiceImpl survStationInfoService;
@Override @Override
public SurvTransdataLivestockwater getOneByDeviceCode(String deviceCode) { public SurvTransdataLivestockwater getOneByDeviceCode(String deviceCode) {
@ -50,9 +53,12 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
@Override @Override
@Transactional @Transactional
public void saveBaowen(String str) { public void saveBaowen(String str,SurvDeviceDeploy deploy) {
try { try {
SurvTransdataLivestockwater livestockwater = DataUtil.strToLivewater(str); // SurvTransdataLivestockwater livestockwater = DataUtil.strToLivewater(str);
SurvTransdataLivestockwater livestockwater = new SurvTransdataLivestockwater();
WaterCommonTransVo waterCommonTransVo = DataUtil.strToWaterTrans(str,deploy);
BeanUtil.copyProperties(waterCommonTransVo,livestockwater);
//保存或者更新实时表 //保存或者更新实时表
SurvTransdataLivestockwater transdataLivestockwater = getOneByDeviceCode(livestockwater.getDeployCode()); SurvTransdataLivestockwater transdataLivestockwater = getOneByDeviceCode(livestockwater.getDeployCode());
if(transdataLivestockwater == null){ if(transdataLivestockwater == null){
@ -64,6 +70,19 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
} }
transdataLivestockwater.setCreatedBy("wb");//创建人 transdataLivestockwater.setCreatedBy("wb");//创建人
transdataLivestockwater.setCreateTime(new Date());//创建时间 transdataLivestockwater.setCreateTime(new Date());//创建时间
transdataLivestockwater.setDeviceId(deploy.getId());
transdataLivestockwater.setDeviceName(deploy.getDeployDes());
if(StringUtils.isNotBlank(deploy.getStationCode())){
SurvStationInfo info = survStationInfoService.getByCode(deploy.getStationCode());
if(info!=null){
transdataLivestockwater.setStationCode(info.getStationCode());
transdataLivestockwater.setStationName(info.getStationName());
transdataLivestockwater.setStationId(info.getId());
}
}
//舍弃为空负数无意义的长串类数据 //舍弃为空负数无意义的长串类数据
boolean isok = true; boolean isok = true;
if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterTp())){ if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterTp())){
@ -80,6 +99,13 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
}else{ }else{
isok =false; isok =false;
} }
if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterNo())){
if(transdataLivestockwater.getDataWaterNo().contains("-") || transdataLivestockwater.getDataWaterNo().length()>10 || "0.0000".equals(transdataLivestockwater.getDataWaterNo())){
isok =false;
}
}else{
isok =false;
}
if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterNh())){ if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterNh())){
if(transdataLivestockwater.getDataWaterNh().contains("-") || transdataLivestockwater.getDataWaterNh().length()>10 || "0.0000".equals(transdataLivestockwater.getDataWaterNh()) ){ if(transdataLivestockwater.getDataWaterNh().contains("-") || transdataLivestockwater.getDataWaterNh().length()>10 || "0.0000".equals(transdataLivestockwater.getDataWaterNh()) ){
isok =false; isok =false;
@ -109,15 +135,13 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
Map<String, String> baowenMap = new HashMap<String, String>(); Map<String, String> baowenMap = new HashMap<String, String>();
baowenMap.put("mn", transdataLivestockwater.getDeployCode()); baowenMap.put("mn", transdataLivestockwater.getDeployCode());
baowenMap.put("DataTime", dataDateTimeStr); baowenMap.put("DataTime", dataDateTimeStr);
baowenMap.put("e1", transdataLivestockwater.getDataWaterTp()); Map<String, String> dataMap = TUtil.getAllKeyValuePairs(transdataLivestockwater);
baowenMap.put("e2", transdataLivestockwater.getDataWaterTpSy()); if(dataMap!=null && !dataMap.isEmpty()){
baowenMap.put("e3", transdataLivestockwater.getDataWaterTpLd()); baowenMap.putAll(dataMap);
baowenMap.put("e4", transdataLivestockwater.getDataWaterTn()); }
baowenMap.put("e5", transdataLivestockwater.getDataWaterTnSy()); alertRecordService.saveBaojingV2(baowenMap,deploy,null);
baowenMap.put("e6", transdataLivestockwater.getDataWaterTnLd()); }else{//无效数据进错误数据表
baowenMap.put("e7", transdataLivestockwater.getDataWaterNo()); log.error("xxxxxxxxx无效数据转入错误数据表xxxxxxxxxx");
alertRecordService.saveBaojing(baowenMap);
}else{
SurvHisdataLivestockwaterError error = new SurvHisdataLivestockwaterError(); SurvHisdataLivestockwaterError error = new SurvHisdataLivestockwaterError();
BeanUtil.copyProperties(transdataLivestockwater, error); BeanUtil.copyProperties(transdataLivestockwater, error);
hisdataLivestockwaterErrorService.save(error); hisdataLivestockwaterErrorService.save(error);

View File

@ -5,14 +5,14 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanhai.entity.SurvHisdataOrientwater; import com.lanhai.entity.*;
import com.lanhai.entity.SurvHisdataOrientwaterError;
import com.lanhai.entity.SurvTransdataOrientwater;
import com.lanhai.mapper.SurvTransdataOrientwaterMapper; import com.lanhai.mapper.SurvTransdataOrientwaterMapper;
import com.lanhai.o.iot.pbs.WaterCommonTransVo;
import com.lanhai.service.ISurvAlertRecordService; import com.lanhai.service.ISurvAlertRecordService;
import com.lanhai.service.ISurvHisdataOrientwaterService; import com.lanhai.service.ISurvHisdataOrientwaterService;
import com.lanhai.service.ISurvTransdataOrientwaterService; import com.lanhai.service.ISurvTransdataOrientwaterService;
import com.lanhai.util.DataUtil; import com.lanhai.util.DataUtil;
import com.lanhai.util.TUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -41,6 +41,8 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
private ISurvAlertRecordService alertRecordService; private ISurvAlertRecordService alertRecordService;
@Autowired @Autowired
private SurvHisdataOrientwaterErrorServiceImpl hisdataOrientwaterErrorService; private SurvHisdataOrientwaterErrorServiceImpl hisdataOrientwaterErrorService;
@Autowired
private SurvStationInfoServiceImpl survStationInfoService;
@Override @Override
public SurvTransdataOrientwater getOneByDeviceCode(String deviceCode) { public SurvTransdataOrientwater getOneByDeviceCode(String deviceCode) {
@ -51,10 +53,13 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
@Override @Override
@Transactional @Transactional
public void saveBaowen(String str) { public void saveBaowen(String str, SurvDeviceDeploy deploy) {
try { try {
SurvTransdataOrientwater orientwater = DataUtil.strToOrientwater(str); // SurvTransdataOrientwater orientwater = DataUtil.strToOrientwater(str);
SurvTransdataOrientwater orientwater = new SurvTransdataOrientwater();
WaterCommonTransVo waterCommonTransVo = DataUtil.strToWaterTrans(str,deploy);
BeanUtil.copyProperties(waterCommonTransVo,orientwater);
//保存或者更新实时表 //保存或者更新实时表
SurvTransdataOrientwater transdataOrientwater = getOneByDeviceCode(orientwater.getDeployCode()); SurvTransdataOrientwater transdataOrientwater = getOneByDeviceCode(orientwater.getDeployCode());
if(transdataOrientwater == null){ if(transdataOrientwater == null){
@ -66,6 +71,15 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
} }
transdataOrientwater.setCreatedBy("wb");//创建人 transdataOrientwater.setCreatedBy("wb");//创建人
transdataOrientwater.setCreateTime(new Date());//创建时间 transdataOrientwater.setCreateTime(new Date());//创建时间
if(StringUtils.isNotBlank(deploy.getStationCode())){
SurvStationInfo info = survStationInfoService.getByCode(deploy.getStationCode());
if(info!=null){
transdataOrientwater.setStationCode(info.getStationCode());
transdataOrientwater.setStationName(info.getStationName());
transdataOrientwater.setStationId(info.getId());
}
}
//舍弃为空负数无意义的长串类数据 //舍弃为空负数无意义的长串类数据
boolean isok = true; boolean isok = true;
if(StringUtils.isNotBlank(transdataOrientwater.getDataWaterTp())){ if(StringUtils.isNotBlank(transdataOrientwater.getDataWaterTp())){
@ -89,6 +103,22 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
}else{ }else{
isok =false; isok =false;
} }
if(StringUtils.isNotBlank(transdataOrientwater.getDataWaterNh())){
if(transdataOrientwater.getDataWaterNh().contains("-") || transdataOrientwater.getDataWaterNh().length()>10 || "0.0000".equals(transdataOrientwater.getDataWaterNh()) ){
isok =false;
}
}else{
isok =false;
}
if(StringUtils.isNotBlank(transdataOrientwater.getDataWaterCod())){
if(transdataOrientwater.getDataWaterCod().contains("-") || transdataOrientwater.getDataWaterCod().length()>10 || "0.0000".equals(transdataOrientwater.getDataWaterCod()) ){
isok =false;
}
}else{
isok =false;
}
if(isok) { if(isok) {
saveOrUpdate(transdataOrientwater); saveOrUpdate(transdataOrientwater);
//保存历史表 //保存历史表
@ -103,15 +133,14 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
Map<String, String> baowenMap = new HashMap<String, String>(); Map<String, String> baowenMap = new HashMap<String, String>();
baowenMap.put("mn", transdataOrientwater.getDeployCode()); baowenMap.put("mn", transdataOrientwater.getDeployCode());
baowenMap.put("DataTime", dataDateTimeStr); baowenMap.put("DataTime", dataDateTimeStr);
baowenMap.put("e1", transdataOrientwater.getDataWaterTp());
baowenMap.put("e2", transdataOrientwater.getDataWaterTpSy()); Map<String, String> dataMap = TUtil.getAllKeyValuePairs(transdataOrientwater);
baowenMap.put("e3", transdataOrientwater.getDataWaterTpLd()); if(dataMap!=null && !dataMap.isEmpty()){
baowenMap.put("e4", transdataOrientwater.getDataWaterTn()); baowenMap.putAll(dataMap);
baowenMap.put("e5", transdataOrientwater.getDataWaterTnSy()); }
baowenMap.put("e6", transdataOrientwater.getDataWaterTnLd()); alertRecordService.saveBaojingV2(baowenMap,deploy,null);
baowenMap.put("e7", transdataOrientwater.getDataWaterNo()); }else{//无效数据进错误数据表
alertRecordService.saveBaojing(baowenMap); log.error("xxxxxxxxx无效数据转入错误数据表xxxxxxxxxx");
}else{
SurvHisdataOrientwaterError survHisdataOrientwaterError =new SurvHisdataOrientwaterError(); SurvHisdataOrientwaterError survHisdataOrientwaterError =new SurvHisdataOrientwaterError();
BeanUtil.copyProperties(transdataOrientwater,survHisdataOrientwaterError); BeanUtil.copyProperties(transdataOrientwater,survHisdataOrientwaterError);
survHisdataOrientwaterError.setTransDate(new Date()); survHisdataOrientwaterError.setTransDate(new Date());

View File

@ -12,6 +12,7 @@ import com.lanhai.mapper.SurvTransdataSoilMapper;
import com.lanhai.service.*; import com.lanhai.service.*;
import com.lanhai.util.TUtil; import com.lanhai.util.TUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -38,6 +39,8 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
private ISurvTransdataAirService transdataAirService; private ISurvTransdataAirService transdataAirService;
@Autowired @Autowired
private ISurvHisdataAirService hisdataAirService; private ISurvHisdataAirService hisdataAirService;
@Autowired
private ISurvStationInfoService survStationInfoService;
@Override @Override
@ -103,7 +106,22 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
soil.setTenantId(deploy.getTenantId()); soil.setTenantId(deploy.getTenantId());
SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_SOIL.getType()); SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_SOIL.getType());
soil.setDeployId(survDeviceDeploy!=null?survDeviceDeploy.getId():null);
if(survDeviceDeploy!=null){
soil.setDeployId(survDeviceDeploy.getId());
soil.setStationCode(survDeviceDeploy.getStationCode());
soil.setDeviceName(survDeviceDeploy.getDeployDes());
if(StringUtils.isNotBlank(survDeviceDeploy.getStationCode())){
SurvStationInfo survStationInfo = survStationInfoService.getByCode(survDeviceDeploy.getStationCode());
if(survStationInfo!=null) {
soil.setStationName(survStationInfo.getStationName());
soil.setStationId(survStationInfo.getId());
}
}
}
saveOrUpdate(soil); saveOrUpdate(soil);
//更新设备的上次更新时间 //更新设备的上次更新时间
deviceDeployService.update(new LambdaUpdateWrapper<SurvDeviceDeploy>() deviceDeployService.update(new LambdaUpdateWrapper<SurvDeviceDeploy>()
@ -166,7 +184,20 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
air.setTenantId(deploy.getTenantId()); air.setTenantId(deploy.getTenantId());
SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_AIR.getType()); SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_AIR.getType());
air.setDeployId(survDeviceDeploy!=null?survDeviceDeploy.getId():null);
if(survDeviceDeploy!=null){
air.setDeployId(survDeviceDeploy.getId());
air.setStationCode(survDeviceDeploy.getStationCode());
air.setDeviceName(survDeviceDeploy.getDeployDes());
if(StringUtils.isNotBlank(survDeviceDeploy.getStationCode())){
SurvStationInfo survStationInfo = survStationInfoService.getByCode(survDeviceDeploy.getStationCode());
if(survStationInfo!=null) {
air.setStationName(survStationInfo.getStationName());
air.setStationId(survStationInfo.getId());
}
}
}
transdataAirService.saveOrUpdate(air); transdataAirService.saveOrUpdate(air);
//更新设备的上次更新时间 //更新设备的上次更新时间
deviceDeployService.update(new LambdaUpdateWrapper<SurvDeviceDeploy>() deviceDeployService.update(new LambdaUpdateWrapper<SurvDeviceDeploy>()
@ -241,7 +272,19 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
soil.setTenantId(deploy.getTenantId()); soil.setTenantId(deploy.getTenantId());
SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.WATER_QULITY.getType()); SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.WATER_QULITY.getType());
soil.setDeployId(survDeviceDeploy!=null?survDeviceDeploy.getId():null); if(survDeviceDeploy!=null){
soil.setDeployId(survDeviceDeploy.getId());
soil.setStationCode(survDeviceDeploy.getStationCode());
soil.setDeviceName(survDeviceDeploy.getDeployDes());
if(StringUtils.isNotBlank(survDeviceDeploy.getStationCode())){
SurvStationInfo survStationInfo = survStationInfoService.getByCode(survDeviceDeploy.getStationCode());
if(survStationInfo!=null) {
soil.setStationName(survStationInfo.getStationName());
soil.setStationId(survStationInfo.getId());
}
}
}
saveOrUpdate(soil); saveOrUpdate(soil);
@ -304,7 +347,21 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
air.setDeployCode(mn);//设备编号 air.setDeployCode(mn);//设备编号
air.setTenantId(deploy.getTenantId()); air.setTenantId(deploy.getTenantId());
SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_AIR.getType()); SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_AIR.getType());
air.setDeployId(survDeviceDeploy!=null?survDeviceDeploy.getId():null);
if(survDeviceDeploy!=null){
air.setDeployId(survDeviceDeploy.getId());
air.setStationCode(survDeviceDeploy.getStationCode());
air.setDeviceName(survDeviceDeploy.getDeployDes());
if(StringUtils.isNotBlank(survDeviceDeploy.getStationCode())){
SurvStationInfo survStationInfo = survStationInfoService.getByCode(survDeviceDeploy.getStationCode());
if(survStationInfo!=null) {
air.setStationName(survStationInfo.getStationName());
air.setStationId(survStationInfo.getId());
}
}
}
transdataAirService.saveOrUpdate(air); transdataAirService.saveOrUpdate(air);

View File

@ -1,6 +1,7 @@
package com.lanhai.thread; package com.lanhai.thread;
import com.lanhai.constant.CommonConstant; import com.lanhai.constant.CommonConstant;
import com.lanhai.constant.PollutionConstants;
import com.lanhai.entity.SurvDeviceDeploy; import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.service.ISurvDeviceDeployService; import com.lanhai.service.ISurvDeviceDeployService;
import com.lanhai.service.ISurvTransdataLivestockwaterService; import com.lanhai.service.ISurvTransdataLivestockwaterService;
@ -51,33 +52,28 @@ public class ClentThread implements Runnable {
byte[] in2b = baos.toByteArray(); byte[] in2b = baos.toByteArray();
String s = DataUtil.bytesToHexString(in2b); String s = DataUtil.bytesToHexString(in2b);
s = s.replaceAll(" ",""); s = s.replaceAll(" ","");
log.error("报文:"+s);
String substring = s.substring(2, 4); String substring = s.substring(2, 4);
List<String> list = new ArrayList<>(); String code = CommonConstant.XZP_WATER+substring;
list.add("01"); log.error("===================收到tcp设备消息:{}===============",code);
list.add("02"); log.error("xxxxxxxxxxx{}原始报文:{}xxxxxxxxxxxxxxxxxx",code,s);
list.add("03");
list.add("04");
if(list.contains(substring)){
if("01".equals(substring) || "02".equals(substring)){
transdataOrientwaterService.saveBaowen(s);
}else if("03".equals(substring) || "04".equals(substring)){
transdataLivestockwaterService.saveBaowen(s);
}
String code = CommonConstant.XZP_WATER+s.substring(2,4);
log.error("code111:"+code);
SurvDeviceDeploy deviceDeploy = deviceDeployService.getOneByCode(code); SurvDeviceDeploy deviceDeploy = deviceDeployService.getOneByCode(code);
if(deviceDeploy != null && (!hostAddress.equals(deviceDeploy.getIpAddr()) || !port.equals(deviceDeploy.getPort()))){ if(deviceDeploy != null && (!hostAddress.equals(deviceDeploy.getIpAddr()) || !port.equals(deviceDeploy.getPort()))){
if(PollutionConstants.WATER_ORIENT.equals(deviceDeploy.getDeployType())){
transdataOrientwaterService.saveBaowen(s,deviceDeploy);
} else if (PollutionConstants.WATER_LIVE.equals(deviceDeploy.getDeployType())) {
transdataLivestockwaterService.saveBaowen(s,deviceDeploy);
}
//更新设备信息
deviceDeploy.setIpAddr(hostAddress); deviceDeploy.setIpAddr(hostAddress);
deviceDeploy.setPort(port); deviceDeploy.setPort(port);
deviceDeployService.updateById(deviceDeploy); deviceDeployService.updateById(deviceDeploy);
log.error("更新了111"+deviceDeploy.getId()+","+deviceDeploy.getIpAddr()+",prot:"+deviceDeploy.getPort()); log.error("============更新了设备信息:"+deviceDeploy.getId()+","+deviceDeploy.getIpAddr()+",prot:"+deviceDeploy.getPort());
}
} }
} }
} catch (Exception e) { } catch (Exception e) {

View File

@ -1,11 +1,16 @@
package com.lanhai.util; package com.lanhai.util;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.lanhai.constant.CommonConstant; import com.lanhai.constant.CommonConstant;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvTransdataLivestockwater; import com.lanhai.entity.SurvTransdataLivestockwater;
import com.lanhai.entity.SurvTransdataOrientwater; import com.lanhai.entity.SurvTransdataOrientwater;
import com.lanhai.o.iot.pbs.ResolvConfig;
import com.lanhai.o.iot.pbs.ResolveConfigDetail;
import com.lanhai.o.iot.pbs.WaterCommonTransVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -269,7 +274,36 @@ public class DataUtil{
} }
public static WaterCommonTransVo strToWaterTrans(String str, SurvDeviceDeploy deploy) {
WaterCommonTransVo waterCommonTransVo = new WaterCommonTransVo();
if(StringUtils.isNotBlank(str) && deploy!=null && deploy.getDeviceConfig() !=null){
waterCommonTransVo.setDataDateTime(new Date());
waterCommonTransVo.setDataGatherType("realTime");
waterCommonTransVo.setDeployCode(deploy.getDeployCode());
//根据配置进行解析
ResolvConfig resolvConfig = JSONUtil.toBean(deploy.getDeviceConfig(), ResolvConfig.class);
if(resolvConfig.getResolvConfig()!=null && !resolvConfig.getResolvConfig().isEmpty()){
for (ResolveConfigDetail resolveConfigDetail : resolvConfig.getResolvConfig()) {
try{
String[] configs = resolveConfigDetail.getRange().split("-");
int leftside = Integer.parseInt(configs[0]);
int rightSide = Integer.parseInt(configs[1]);
String vals = getVal(str.substring(leftside,rightSide));
TUtil.setFieldValue(waterCommonTransVo,resolveConfigDetail.getField(),vals);
}catch (Exception e){
log.error("=========普备思设备解析错误跳过=={}=======",JSONUtil.toJsonStr(resolveConfigDetail));
e.printStackTrace();
}
}
}
}
log.error("<=========普备思设备解析完成=={}=======>",JSONUtil.toJsonStr(waterCommonTransVo));
return waterCommonTransVo;
}

View File

@ -2,7 +2,9 @@ package com.lanhai.util;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @createTime 2023年07月26日 20:54:00 * @createTime 2023年07月26日 20:54:00
@ -148,4 +150,32 @@ public class TUtil {
return fieldNames; return fieldNames;
} }
/**
* 通过反射获取实体所有字段的键值对
* @param entity 实体对象
* @return 包含所有字段名和值的Map
*/
public static Map<String, String> getAllKeyValuePairs(Object entity) {
Map<String, String> result = new HashMap<>();
if (entity == null) {
return result;
}
Class<?> clazz = entity.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true); // 设置可访问私有字段
Object value = field.get(entity);
result.put(field.getName(), String.valueOf(value));
} catch (IllegalAccessException e) {
System.err.println("无法访问字段: " + field.getName());
}
}
return result;
}
} }