解决json解析异常

This commit is contained in:
2024-05-16 09:33:23 +08:00
parent bba53f7d57
commit f184e371f0
15 changed files with 87 additions and 30 deletions

View File

@@ -48,7 +48,7 @@
<dependency> <dependency>
<groupId>net.java.dev.jna</groupId> <groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId> <artifactId>jna</artifactId>
<version>5.8.0</version> <version>5.5.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>

View File

@@ -56,6 +56,12 @@
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>
<artifactId>event-api</artifactId> <artifactId>event-api</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>com.sun.jna</groupId>
<artifactId>jna</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>
@@ -67,7 +73,11 @@
<artifactId>jackson-datatype-jsr310</artifactId> <artifactId>jackson-datatype-jsr310</artifactId>
</dependency> </dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.5.0</version>
</dependency>
</dependencies> </dependencies>

View File

@@ -0,0 +1,31 @@
package com.njcn.advance.model.responsibility;
import com.sun.jna.Structure;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
/**
* @author: tw
* @date: 2022/1/12 10:57
*/
public class HIKSDKStructure extends Structure {
protected List<String> getFieldOrder(){
List<String> fieldOrderList = new ArrayList<String>();
for (Class<?> cls = getClass();
!cls.equals(HIKSDKStructure.class);
cls = cls.getSuperclass()) {
Field[] fields = cls.getDeclaredFields();
int modifiers;
for (Field field : fields) {
modifiers = field.getModifiers();
if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) {
continue;
}
fieldOrderList.add(field.getName());
}
}
return fieldOrderList;
}
}

View File

@@ -3,6 +3,7 @@ package com.njcn.advance.model.responsibility;
import com.sun.jna.Structure; import com.sun.jna.Structure;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections;
import java.util.List; import java.util.List;
public class HKDataStruct extends Structure implements Serializable { public class HKDataStruct extends Structure implements Serializable {
@@ -13,7 +14,7 @@ public class HKDataStruct extends Structure implements Serializable {
@Override @Override
protected List getFieldOrder() { protected List getFieldOrder() {
return null; return Collections.singletonList("hk");
} }
public HKDataStruct(double[] hk) { public HKDataStruct(double[] hk) {

View File

@@ -4,6 +4,7 @@ import com.sun.jna.Structure;
import java.io.Serializable; import java.io.Serializable;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
@@ -15,7 +16,8 @@ public class PDataStruct extends Structure implements Serializable {
@Override @Override
protected List getFieldOrder() { protected List getFieldOrder() {
return null; // return null;
return Collections.singletonList("p");
} }
public PDataStruct(double[] p) { public PDataStruct(double[] p) {

View File

@@ -6,7 +6,7 @@ import java.io.Serializable;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
public class QvvrStruct extends Structure implements Serializable { public class QvvrStruct extends HIKSDKStructure implements Serializable {
public static final int MAX_P_NODE= 200; //功率节点个数限制按200个限制 public static final int MAX_P_NODE= 200; //功率节点个数限制按200个限制
public static final int MAX_P_NUM= 96 * 100; //功率数据按15分钟间隔100天处理 public static final int MAX_P_NUM= 96 * 100; //功率数据按15分钟间隔100天处理
public static final int MAX_HARM_NUM= 1440 * 100; //谐波数据按一分钟间隔100天处理 public static final int MAX_HARM_NUM= 1440 * 100; //谐波数据按一分钟间隔100天处理
@@ -193,8 +193,8 @@ public class QvvrStruct extends Structure implements Serializable {
this.sim_data = sim_data; this.sim_data = sim_data;
} }
@Override // @Override
protected List getFieldOrder() { // protected List getFieldOrder() {
return Arrays.asList(new String[]{"sumFKdata", "sumHKdata"}); // return Arrays.asList(new String[]{"sumFKdata", "sumHKdata"});
} // }
} }

View File

@@ -166,7 +166,7 @@ public class RespDataServiceImpl extends ServiceImpl<RespDataMapper, RespData> i
harmNum = pNum; harmNum = pNum;
//至此基础数据组装完毕,开始组装功率数据和谐波数据 //至此基础数据组装完毕,开始组装功率数据和谐波数据
//先做谐波数据理论上到这步的时候谐波数据是满足完整性并已经补充完整性到100%,此处需要将谐波数据与功率数据长度匹配上 //先做谐波数据理论上到这步的时候谐波数据是满足完整性并已经补充完整性到100%,此处需要将谐波数据与功率数据长度匹配上
RespHarmData respHarmData = getRespHarmData(responsibilityCalculateParam,lineInterval); RespHarmData respHarmData = getRespHarmData(responsibilityCalculateParam, lineInterval);
//harmData填充完毕后开始组装功率数据 //harmData填充完毕后开始组装功率数据
//首先获取当前时间内的各个用户的数据 //首先获取当前时间内的各个用户的数据
Map<String/*用户名*/, List<UserDataExcel>> originalPData = new HashMap<>(); Map<String/*用户名*/, List<UserDataExcel>> originalPData = new HashMap<>();
@@ -200,7 +200,12 @@ public class RespDataServiceImpl extends ServiceImpl<RespDataMapper, RespData> i
} }
} }
//至此功率数据也组装完毕,调用友谊提供的接口 //至此功率数据也组装完毕,调用友谊提供的接口
QvvrStruct qvvrStruct = new QvvrStruct(); QvvrStruct qvvrStruct = null;
try {
qvvrStruct = new QvvrStruct();
} catch (Exception exception) {
exception.printStackTrace();
}
qvvrStruct.cal_flag = 0; qvvrStruct.cal_flag = 0;
qvvrStruct.p_node = pNode; qvvrStruct.p_node = pNode;
qvvrStruct.p_num = pNum; qvvrStruct.p_num = pNum;
@@ -212,7 +217,11 @@ public class RespDataServiceImpl extends ServiceImpl<RespDataMapper, RespData> i
ResponsibilityCallDllOrSo responsibilityCallDllOrSo = new ResponsibilityCallDllOrSo("harm_response"); ResponsibilityCallDllOrSo responsibilityCallDllOrSo = new ResponsibilityCallDllOrSo("harm_response");
responsibilityCallDllOrSo.setPath(); responsibilityCallDllOrSo.setPath();
ResponsibilityCallDllOrSo.ResponsibilityLibrary responsibilityLibrary = ResponsibilityCallDllOrSo.ResponsibilityLibrary.INSTANTCE; ResponsibilityCallDllOrSo.ResponsibilityLibrary responsibilityLibrary = ResponsibilityCallDllOrSo.ResponsibilityLibrary.INSTANTCE;
responsibilityLibrary.harm_response(qvvrStruct); try {
responsibilityLibrary.harm_response(qvvrStruct);
} catch (Exception exception) {
exception.printStackTrace();
}
//至此接口调用结束,开始组装动态责任数据和用户责任量化结果 //至此接口调用结束,开始组装动态责任数据和用户责任量化结果
//首先判断cal_ok的标识位是否为1为0表示程序没有计算出结果 //首先判断cal_ok的标识位是否为1为0表示程序没有计算出结果
if (qvvrStruct.cal_ok == 0) { if (qvvrStruct.cal_ok == 0) {
@@ -863,14 +872,14 @@ public class RespDataServiceImpl extends ServiceImpl<RespDataMapper, RespData> i
pNum = dateStr.size() * 48; pNum = dateStr.size() * 48;
finalData = dealFinalDataByLineInterval(finalData); finalData = dealFinalDataByLineInterval(finalData);
} }
return new RespCommon(pNum, userIntervalTime,lineInterval); return new RespCommon(pNum, userIntervalTime, lineInterval);
} }
/*** /***
* 获取责任需要的谐波数据 * 获取责任需要的谐波数据
*/ */
private RespHarmData getRespHarmData(ResponsibilityCalculateParam responsibilityCalculateParam, int lineInterval){ private RespHarmData getRespHarmData(ResponsibilityCalculateParam responsibilityCalculateParam, int lineInterval) {
HarmHistoryDataDTO data = harmDataFeignClient.getHistoryHarmData(new HistoryHarmParam(responsibilityCalculateParam.getSearchBeginTime(), responsibilityCalculateParam.getSearchEndTime(), responsibilityCalculateParam.getLineId(), responsibilityCalculateParam.getType(), responsibilityCalculateParam.getTime())).getData(); HarmHistoryDataDTO data = harmDataFeignClient.getHistoryHarmData(new HistoryHarmParam(responsibilityCalculateParam.getSearchBeginTime(), responsibilityCalculateParam.getSearchEndTime(), responsibilityCalculateParam.getLineId(), responsibilityCalculateParam.getType(), responsibilityCalculateParam.getTime())).getData();
List<HarmData> historyData = data.getHistoryData(); List<HarmData> historyData = data.getHistoryData();
historyData = getDataWithLineInterval(historyData, lineInterval); historyData = getDataWithLineInterval(historyData, lineInterval);
@@ -881,12 +890,12 @@ public class RespDataServiceImpl extends ServiceImpl<RespDataMapper, RespData> i
for (int i = 0; i < historyData.size(); i++) { for (int i = 0; i < historyData.size(); i++) {
Float value = historyData.get(i).getValue(); Float value = historyData.get(i).getValue();
if (value != null) { if (value != null) {
value = value * 1000; // value = value * 1000;
} }
harmData[i] = value; harmData[i] = value;
harmTime.add(PubUtils.instantToDate(historyData.get(i).getTime()).getTime()); harmTime.add(PubUtils.instantToDate(historyData.get(i).getTime()).getTime());
} }
return new RespHarmData(harmData,harmTime,data.getOverLimit()); return new RespHarmData(harmData, harmTime, data.getOverLimit());
} }
} }

View File

@@ -21,16 +21,16 @@
<dependencies> <dependencies>
<!--pq-device-boot和pms-device-boot只能选择一个--> <!--pq-device-boot和pms-device-boot只能选择一个-->
<!-- <dependency> <dependency>
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>
<artifactId>pq-device-boot</artifactId> <artifactId>pq-device-boot</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency>--> </dependency>
<dependency> <!-- <dependency>-->
<groupId>com.njcn</groupId> <!-- <groupId>com.njcn</groupId>-->
<artifactId>pms-device-boot</artifactId> <!-- <artifactId>pms-device-boot</artifactId>-->
<version>${project.version}</version> <!-- <version>${project.version}</version>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>

View File

@@ -231,6 +231,7 @@ whitelist:
- /system-boot/** - /system-boot/**
- /supervision-boot/** - /supervision-boot/**
- /user-boot/** - /user-boot/**
- /harmonic-boot/**
- /user-boot/user/listAllUserByDeptId - /user-boot/user/listAllUserByDeptId

View File

@@ -1153,7 +1153,8 @@ public class HistoryResultServiceImpl implements HistoryResultService {
//以时间分组时,需要加上时间间隔,比如此处需要加上监测点的采样间隔 //以时间分组时,需要加上时间间隔,比如此处需要加上监测点的采样间隔
.groupBy("time(" + lineDetailData.getInterval() + "m)") .groupBy("time(" + lineDetailData.getInterval() + "m)")
.timeAsc(); .timeAsc();
historyData = dataIMapper.getIHistoryData(influxQueryWrapper); String string = influxQueryWrapper.generateSql();
historyData = dataIMapper.getIHistoryData(string);
if (CollectionUtils.isEmpty(historyData)) { if (CollectionUtils.isEmpty(historyData)) {
//如果数据为空,则提示给用户暂无数据 //如果数据为空,则提示给用户暂无数据
throw new BusinessException(HarmonicResponseEnum.NO_DATA); throw new BusinessException(HarmonicResponseEnum.NO_DATA);

View File

@@ -18,7 +18,10 @@ public interface IDataIMapper extends InfluxDbBaseMapper<DataI> {
DataI getMeanAllTimesData(InfluxQueryWrapper influxQueryWrapper); DataI getMeanAllTimesData(InfluxQueryWrapper influxQueryWrapper);
List<HarmData> getIHistoryData(InfluxQueryWrapper influxQueryWrapper); // List<HarmData> getIHistoryData(InfluxQueryWrapper influxQueryWrapper);
@Select(value = "#{sql}",resultType = HarmData.class)
List<HarmData> getIHistoryData(@Param("sql")String sql);
List<DataI> getStatisticsByWraper(InfluxQueryWrapper influxQueryWrapper); List<DataI> getStatisticsByWraper(InfluxQueryWrapper influxQueryWrapper);

View File

@@ -63,9 +63,9 @@ public class QuitRunningDeviceController extends BaseController {
@PostMapping("/update") @PostMapping("/update")
@ApiOperation("更新设备退运") @ApiOperation("更新设备退运")
@ApiImplicitParam(name = "quitRunningDeviceUpdateParam", value = "实体参数", required = true) @ApiImplicitParam(name = "quitRunningDeviceUpdateParam", value = "实体参数", required = true)
public HttpResult<String> quitRunningDeviceUpdate(@RequestBody @Validated QuitRunningDeviceParam.QuitRunningDeviceUpdateParam quitRunningDeviceUpdateParam) { public HttpResult<String> updateQuitRunningDevice(@RequestBody @Validated QuitRunningDeviceParam.QuitRunningDeviceUpdateParam quitRunningDeviceUpdateParam) {
String methodDescribe = getMethodDescribe("quitRunningDeviceUpdateParam"); String methodDescribe = getMethodDescribe("quitRunningDeviceUpdateParam");
String runningDeviceId = quitRunningDeviceService.quitRunningDeviceUpdate(quitRunningDeviceUpdateParam); String runningDeviceId = quitRunningDeviceService.updateQuitRunningDevice(quitRunningDeviceUpdateParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, runningDeviceId, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, runningDeviceId, methodDescribe);
} }

View File

@@ -18,7 +18,7 @@ import com.njcn.supervision.pojo.vo.device.QuitRunningDeviceVO;
public interface IQuitRunningDeviceService extends IService<QuitRunningDevice> { public interface IQuitRunningDeviceService extends IService<QuitRunningDevice> {
String addRunningDevice(QuitRunningDeviceParam quitRunningDeviceParam); String addRunningDevice(QuitRunningDeviceParam quitRunningDeviceParam);
String quitRunningDeviceUpdate(QuitRunningDeviceParam.QuitRunningDeviceUpdateParam quitRunningDeviceUpdateParam); String updateQuitRunningDevice(QuitRunningDeviceParam.QuitRunningDeviceUpdateParam quitRunningDeviceUpdateParam);
Page<QuitRunningDeviceVO> getQuitRunningDevice(QuitRunningDeviceParam.QuitRunningDeviceQueryParam quitRunningDeviceQueryParam); Page<QuitRunningDeviceVO> getQuitRunningDevice(QuitRunningDeviceParam.QuitRunningDeviceQueryParam quitRunningDeviceQueryParam);

View File

@@ -87,7 +87,7 @@ public class QuitRunningDeviceServiceImpl extends ServiceImpl<QuitRunningDeviceM
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String quitRunningDeviceUpdate(QuitRunningDeviceParam.QuitRunningDeviceUpdateParam quitRunningDeviceUpdateParam) { public String updateQuitRunningDevice(QuitRunningDeviceParam.QuitRunningDeviceUpdateParam quitRunningDeviceUpdateParam) {
QuitRunningDevice quitRunningDevice = this.baseMapper.selectById(quitRunningDeviceUpdateParam.getId()); QuitRunningDevice quitRunningDevice = this.baseMapper.selectById(quitRunningDeviceUpdateParam.getId());
BeanUtils.copyProperties(quitRunningDeviceUpdateParam, quitRunningDevice); BeanUtils.copyProperties(quitRunningDeviceUpdateParam, quitRunningDevice);
quitRunningDevice.setState(DataStateEnum.ENABLE.getCode()); quitRunningDevice.setState(DataStateEnum.ENABLE.getCode());
@@ -173,7 +173,6 @@ public class QuitRunningDeviceServiceImpl extends ServiceImpl<QuitRunningDeviceM
QuitRunningDevice quitRunningDevice = this.baseMapper.selectById(id); QuitRunningDevice quitRunningDevice = this.baseMapper.selectById(id);
QuitRunningDeviceVO quitRunningDeviceVO = new QuitRunningDeviceVO(); QuitRunningDeviceVO quitRunningDeviceVO = new QuitRunningDeviceVO();
BeanUtils.copyProperties(quitRunningDevice, quitRunningDeviceVO); BeanUtils.copyProperties(quitRunningDevice, quitRunningDeviceVO);
//通过,则需要远程将该装置调整为退运
if (quitRunningDeviceVO.getDeviceType() == 1) { if (quitRunningDeviceVO.getDeviceType() == 1) {
DeviceVO deviceVO = lineFeignClient.getDeviceDetailData(quitRunningDeviceVO.getDeviceId()).getData(); DeviceVO deviceVO = lineFeignClient.getDeviceDetailData(quitRunningDeviceVO.getDeviceId()).getData();
quitRunningDeviceVO.setDeviceName(deviceVO.getName()); quitRunningDeviceVO.setDeviceName(deviceVO.getName());