调整普倍思设备为自动化

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

View File

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

View File

@ -221,8 +221,8 @@ public class SurvTransdataSoil extends Model<SurvTransdataSoil> {
/**
* 站点ID
*/
// @TableField("STATION_ID")
// private String stationId;
@TableField("STATION_ID")
private String stationId;
/**
* 设备ID
@ -233,8 +233,8 @@ public class SurvTransdataSoil extends Model<SurvTransdataSoil> {
/**
* 站点编号
*/
// @TableField("STATION_CODE")
// private String stationCode;
@TableField("STATION_CODE")
private String stationCode;
/**
* 设备编号
@ -251,14 +251,15 @@ public class SurvTransdataSoil extends Model<SurvTransdataSoil> {
/**
* 站点名称
*/
// @TableField("STATION_NAME")
// private String stationName;
@TableField("STATION_NAME")
private String stationName;
/**
* 设备名称
*/
// @TableField("DEVICE_NAME")
// private String deviceName;
@TableField("DEVICE_NAME")
private String deviceName;
/**
* 租户号
@ -309,6 +310,10 @@ public class SurvTransdataSoil extends Model<SurvTransdataSoil> {
private String deployId;
@Override
protected Serializable pkVal() {
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;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvTransdataLivestockwater;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lanhai.entity.SurvTransdataOrientwater;
@ -13,7 +14,7 @@ public interface ISurvTransdataLivestockwaterService extends IService<SurvTransd
SurvTransdataLivestockwater getOneByDeviceCode(String deviceCode);
void saveBaowen(String str);
void saveBaowen(String str, SurvDeviceDeploy deploy);

View File

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

View File

@ -2,13 +2,11 @@ package com.lanhai.service.Impl;
import cn.hutool.core.bean.BeanUtil;
import com.lanhai.constant.PollutionConstants;
import com.lanhai.entity.ScEquZhibiao;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvHisdataLivestockwater;
import com.lanhai.entity.SurvTransdataLivestockwater;
import com.lanhai.entity.*;
import com.lanhai.mapper.SurvHisdataLivestockwaterMapper;
import com.lanhai.service.ISurvHisdataLivestockwaterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanhai.service.ISurvStationInfoService;
import com.lanhai.util.BigDecimalRandomAdjuster;
import com.lanhai.util.DateUtils;
import com.lanhai.util.SpringBeanUtils;
@ -40,6 +38,10 @@ public class SurvHisdataLivestockwaterServiceImpl extends ServiceImpl<SurvHisdat
@Lazy
private ScEquZhibiaoServiceImpl zhibiaoService;
@Autowired
@Lazy
private ISurvStationInfoService survStationInfoService;
@Override
public SurvTransdataLivestockwater genData(SurvDeviceDeploy deploy) {
String deployCode = deploy.getDeployCode();
@ -155,6 +157,17 @@ public class SurvHisdataLivestockwaterServiceImpl extends ServiceImpl<SurvHisdat
hisdataLivestockwater.setCrashStopStatus("0");
hisdataLivestockwater.setWaterPumpStatus("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);

View File

@ -2,14 +2,12 @@ package com.lanhai.service.Impl;
import cn.hutool.core.bean.BeanUtil;
import com.lanhai.constant.PollutionConstants;
import com.lanhai.entity.ScEquZhibiao;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvHisdataOrientwater;
import com.lanhai.entity.SurvTransdataOrientwater;
import com.lanhai.entity.*;
import com.lanhai.mapper.SurvHisdataOrientwaterMapper;
import com.lanhai.mapper.SurvTransdataOrientwaterMapper;
import com.lanhai.service.ISurvHisdataOrientwaterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanhai.service.ISurvStationInfoService;
import com.lanhai.service.ISurvTransdataOrientwaterService;
import com.lanhai.util.BigDecimalRandomAdjuster;
import com.lanhai.util.DateUtils;
@ -48,6 +46,10 @@ public class SurvHisdataOrientwaterServiceImpl extends ServiceImpl<SurvHisdataOr
@Lazy
private ScEquZhibiaoServiceImpl zhibiaoService;
@Autowired
@Lazy
private ISurvStationInfoService survStationInfoService;
@Override
public SurvTransdataOrientwater genData(SurvDeviceDeploy deploy) {
@ -175,6 +177,18 @@ public class SurvHisdataOrientwaterServiceImpl extends ServiceImpl<SurvHisdataOr
hisdataOrientwater.setCrashStopStatus("0");
hisdataOrientwater.setWaterPumpStatus("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);
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.lanhai.entity.*;
import com.lanhai.mapper.SurvTransdataLivestockwaterMapper;
import com.lanhai.o.iot.pbs.WaterCommonTransVo;
import com.lanhai.service.ISurvAlertRecordService;
import com.lanhai.service.ISurvHisdataLivestockwaterService;
import com.lanhai.service.ISurvTransdataLivestockwaterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanhai.util.DataUtil;
import com.lanhai.util.TUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@ -39,7 +41,8 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
private ISurvAlertRecordService alertRecordService;
@Autowired
private SurvHisdataLivestockwaterErrorServiceImpl hisdataLivestockwaterErrorService;
@Autowired
private SurvStationInfoServiceImpl survStationInfoService;
@Override
public SurvTransdataLivestockwater getOneByDeviceCode(String deviceCode) {
@ -50,9 +53,12 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
@Override
@Transactional
public void saveBaowen(String str) {
public void saveBaowen(String str,SurvDeviceDeploy deploy) {
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());
if(transdataLivestockwater == null){
@ -64,6 +70,19 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
}
transdataLivestockwater.setCreatedBy("wb");//创建人
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;
if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterTp())){
@ -80,6 +99,13 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
}else{
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(transdataLivestockwater.getDataWaterNh().contains("-") || transdataLivestockwater.getDataWaterNh().length()>10 || "0.0000".equals(transdataLivestockwater.getDataWaterNh()) ){
isok =false;
@ -109,15 +135,13 @@ public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl<SurvTran
Map<String, String> baowenMap = new HashMap<String, String>();
baowenMap.put("mn", transdataLivestockwater.getDeployCode());
baowenMap.put("DataTime", dataDateTimeStr);
baowenMap.put("e1", transdataLivestockwater.getDataWaterTp());
baowenMap.put("e2", transdataLivestockwater.getDataWaterTpSy());
baowenMap.put("e3", transdataLivestockwater.getDataWaterTpLd());
baowenMap.put("e4", transdataLivestockwater.getDataWaterTn());
baowenMap.put("e5", transdataLivestockwater.getDataWaterTnSy());
baowenMap.put("e6", transdataLivestockwater.getDataWaterTnLd());
baowenMap.put("e7", transdataLivestockwater.getDataWaterNo());
alertRecordService.saveBaojing(baowenMap);
}else{
Map<String, String> dataMap = TUtil.getAllKeyValuePairs(transdataLivestockwater);
if(dataMap!=null && !dataMap.isEmpty()){
baowenMap.putAll(dataMap);
}
alertRecordService.saveBaojingV2(baowenMap,deploy,null);
}else{//无效数据进错误数据表
log.error("xxxxxxxxx无效数据转入错误数据表xxxxxxxxxx");
SurvHisdataLivestockwaterError error = new SurvHisdataLivestockwaterError();
BeanUtil.copyProperties(transdataLivestockwater, error);
hisdataLivestockwaterErrorService.save(error);

View File

@ -5,14 +5,14 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanhai.entity.SurvHisdataOrientwater;
import com.lanhai.entity.SurvHisdataOrientwaterError;
import com.lanhai.entity.SurvTransdataOrientwater;
import com.lanhai.entity.*;
import com.lanhai.mapper.SurvTransdataOrientwaterMapper;
import com.lanhai.o.iot.pbs.WaterCommonTransVo;
import com.lanhai.service.ISurvAlertRecordService;
import com.lanhai.service.ISurvHisdataOrientwaterService;
import com.lanhai.service.ISurvTransdataOrientwaterService;
import com.lanhai.util.DataUtil;
import com.lanhai.util.TUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@ -41,6 +41,8 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
private ISurvAlertRecordService alertRecordService;
@Autowired
private SurvHisdataOrientwaterErrorServiceImpl hisdataOrientwaterErrorService;
@Autowired
private SurvStationInfoServiceImpl survStationInfoService;
@Override
public SurvTransdataOrientwater getOneByDeviceCode(String deviceCode) {
@ -51,10 +53,13 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
@Override
@Transactional
public void saveBaowen(String str) {
public void saveBaowen(String str, SurvDeviceDeploy deploy) {
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());
if(transdataOrientwater == null){
@ -66,6 +71,15 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
}
transdataOrientwater.setCreatedBy("wb");//创建人
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;
if(StringUtils.isNotBlank(transdataOrientwater.getDataWaterTp())){
@ -89,6 +103,22 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
}else{
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) {
saveOrUpdate(transdataOrientwater);
//保存历史表
@ -103,15 +133,14 @@ public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl<SurvTransda
Map<String, String> baowenMap = new HashMap<String, String>();
baowenMap.put("mn", transdataOrientwater.getDeployCode());
baowenMap.put("DataTime", dataDateTimeStr);
baowenMap.put("e1", transdataOrientwater.getDataWaterTp());
baowenMap.put("e2", transdataOrientwater.getDataWaterTpSy());
baowenMap.put("e3", transdataOrientwater.getDataWaterTpLd());
baowenMap.put("e4", transdataOrientwater.getDataWaterTn());
baowenMap.put("e5", transdataOrientwater.getDataWaterTnSy());
baowenMap.put("e6", transdataOrientwater.getDataWaterTnLd());
baowenMap.put("e7", transdataOrientwater.getDataWaterNo());
alertRecordService.saveBaojing(baowenMap);
}else{
Map<String, String> dataMap = TUtil.getAllKeyValuePairs(transdataOrientwater);
if(dataMap!=null && !dataMap.isEmpty()){
baowenMap.putAll(dataMap);
}
alertRecordService.saveBaojingV2(baowenMap,deploy,null);
}else{//无效数据进错误数据表
log.error("xxxxxxxxx无效数据转入错误数据表xxxxxxxxxx");
SurvHisdataOrientwaterError survHisdataOrientwaterError =new SurvHisdataOrientwaterError();
BeanUtil.copyProperties(transdataOrientwater,survHisdataOrientwaterError);
survHisdataOrientwaterError.setTransDate(new Date());

View File

@ -12,6 +12,7 @@ import com.lanhai.mapper.SurvTransdataSoilMapper;
import com.lanhai.service.*;
import com.lanhai.util.TUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -38,6 +39,8 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
private ISurvTransdataAirService transdataAirService;
@Autowired
private ISurvHisdataAirService hisdataAirService;
@Autowired
private ISurvStationInfoService survStationInfoService;
@Override
@ -103,7 +106,22 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
soil.setTenantId(deploy.getTenantId());
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);
//更新设备的上次更新时间
deviceDeployService.update(new LambdaUpdateWrapper<SurvDeviceDeploy>()
@ -166,7 +184,20 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
air.setTenantId(deploy.getTenantId());
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);
//更新设备的上次更新时间
deviceDeployService.update(new LambdaUpdateWrapper<SurvDeviceDeploy>()
@ -241,7 +272,19 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
soil.setTenantId(deploy.getTenantId());
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);
@ -304,7 +347,21 @@ public class SurvTransdataSoilServiceImpl extends ServiceImpl<SurvTransdataSoilM
air.setDeployCode(mn);//设备编号
air.setTenantId(deploy.getTenantId());
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);

View File

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

View File

@ -1,11 +1,16 @@
package com.lanhai.util;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.lanhai.constant.CommonConstant;
import com.lanhai.entity.SurvDeviceDeploy;
import com.lanhai.entity.SurvTransdataLivestockwater;
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 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.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @createTime 2023年07月26日 20:54:00
@ -148,4 +150,32 @@ public class TUtil {
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;
}
}