微调
This commit is contained in:
@@ -5,7 +5,6 @@ import cn.hutool.core.date.DatePattern;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||||
import com.njcn.gather.detection.pojo.enums.DetectionCodeEnum;
|
|
||||||
import com.njcn.gather.detection.pojo.po.DevData;
|
import com.njcn.gather.detection.pojo.po.DevData;
|
||||||
import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
|
import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
|
||||||
import com.njcn.gather.storage.pojo.po.AdHarmonicResult;
|
import com.njcn.gather.storage.pojo.po.AdHarmonicResult;
|
||||||
@@ -76,103 +75,4 @@ public class MsgUtil {
|
|||||||
}
|
}
|
||||||
return JSON.toJSONString(socketDataMsg);
|
return JSON.toJSONString(socketDataMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<DevData> toList(List<AdNonHarmonicResult> nonHarm, List<AdHarmonicResult> harm, boolean containBaseHarm) {
|
|
||||||
List<DevData> info = new ArrayList<>();
|
|
||||||
// if (CollUtil.isNotEmpty(nonHarm)) {
|
|
||||||
if (CollUtil.isNotEmpty(nonHarm)) {
|
|
||||||
Map<String, List<AdNonHarmonicResult>> noHarmMap = nonHarm.stream()
|
|
||||||
.collect(Collectors.groupingBy(x -> x.getMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN)) + "_" + x.getSort()));
|
|
||||||
noHarmMap.forEach((key, value) -> {
|
|
||||||
String[] split = key.split("_");
|
|
||||||
DevData data = new DevData();
|
|
||||||
data.setTime(split[2]);
|
|
||||||
data.setId(split[0] + "_" + split[1]);
|
|
||||||
List<DevData.SqlDataDTO> sqlDataDTOS = new ArrayList<>();
|
|
||||||
DevData.SqlDataDTO sqlDataDTO;
|
|
||||||
for (AdNonHarmonicResult result : value) {
|
|
||||||
sqlDataDTO = new DevData.SqlDataDTO();
|
|
||||||
sqlDataDTO.setType(result.getDataType());
|
|
||||||
sqlDataDTO.setDesc(result.getAdType());
|
|
||||||
DevData.SqlDataDTO.ListDTO listDTO = new DevData.SqlDataDTO.ListDTO();
|
|
||||||
listDTO.setA(StrUtil.isNotBlank(result.getAValue()) ? Double.valueOf(result.getAValue()) : null);
|
|
||||||
listDTO.setB(StrUtil.isNotBlank(result.getBValue()) ? Double.valueOf(result.getBValue()) : null);
|
|
||||||
listDTO.setC(StrUtil.isNotBlank(result.getCValue()) ? Double.valueOf(result.getCValue()) : null);
|
|
||||||
listDTO.setT(StrUtil.isNotBlank(result.getTValue()) ? Double.valueOf(result.getTValue()) : null);
|
|
||||||
sqlDataDTO.setList(listDTO);
|
|
||||||
sqlDataDTOS.add(sqlDataDTO);
|
|
||||||
}
|
|
||||||
data.setSqlData(sqlDataDTOS);
|
|
||||||
info.add(data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (CollUtil.isNotEmpty(harm)) {
|
|
||||||
Map<String, List<AdHarmonicResult>> harmMap = harm.stream()
|
|
||||||
.collect(Collectors.groupingBy(x -> x.getMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN))));
|
|
||||||
harmMap.forEach((key, value) -> {
|
|
||||||
List<DevData> collect = info.stream().filter(x -> key.equals(x.getId() + "_" + x.getTime())).collect(Collectors.toList());
|
|
||||||
List<DevData.SqlDataDTO> sqlDataDTOS = new ArrayList<>();
|
|
||||||
DevData.SqlDataDTO sqlDataDTO;
|
|
||||||
List<DevData.SqlDataHarmDTO> sqlDataHarmDTOS = new ArrayList<>();
|
|
||||||
DevData.SqlDataHarmDTO dataHarmDTO;
|
|
||||||
for (AdHarmonicResult harmonicResult : value) {
|
|
||||||
if (containBaseHarm) {
|
|
||||||
sqlDataDTO = new DevData.SqlDataDTO();
|
|
||||||
sqlDataDTO = new DevData.SqlDataDTO();
|
|
||||||
sqlDataDTO.setType(harmonicResult.getDataType());
|
|
||||||
sqlDataDTO.setDesc(harmonicResult.getAdType());
|
|
||||||
DevData.SqlDataDTO.ListDTO listDTO = new DevData.SqlDataDTO.ListDTO();
|
|
||||||
listDTO.setA(StrUtil.isNotBlank(harmonicResult.getAValue1()) ? Double.valueOf(harmonicResult.getAValue1()) : null);
|
|
||||||
listDTO.setB(StrUtil.isNotBlank(harmonicResult.getBValue1()) ? Double.valueOf(harmonicResult.getBValue1()) : null);
|
|
||||||
listDTO.setC(StrUtil.isNotBlank(harmonicResult.getCValue1()) ? Double.valueOf(harmonicResult.getCValue1()) : null);
|
|
||||||
sqlDataDTO.setList(listDTO);
|
|
||||||
sqlDataDTOS.add(sqlDataDTO);
|
|
||||||
}
|
|
||||||
|
|
||||||
dataHarmDTO = new DevData.SqlDataHarmDTO();
|
|
||||||
dataHarmDTO.setType(harmonicResult.getDataType());
|
|
||||||
dataHarmDTO.setDesc(harmonicResult.getAdType());
|
|
||||||
dataHarmDTO.setNum(containBaseHarm ? 49 : 50);
|
|
||||||
DevData.SqlDataHarmDTO.ListDTO listHarmDTO = new DevData.SqlDataHarmDTO.ListDTO();
|
|
||||||
listHarmDTO.setA(reflectHarmonicValue("a", harmonicResult, containBaseHarm));
|
|
||||||
listHarmDTO.setB(reflectHarmonicValue("b", harmonicResult, containBaseHarm));
|
|
||||||
listHarmDTO.setC(reflectHarmonicValue("c", harmonicResult, containBaseHarm));
|
|
||||||
dataHarmDTO.setList(listHarmDTO);
|
|
||||||
sqlDataHarmDTOS.add(dataHarmDTO);
|
|
||||||
}
|
|
||||||
if (CollUtil.isNotEmpty(collect)) {
|
|
||||||
collect.get(0).setSqlDataHarm(sqlDataHarmDTOS);
|
|
||||||
} else {
|
|
||||||
String[] split = key.split("_");
|
|
||||||
DevData data = new DevData();
|
|
||||||
data.setTime(split[2]);
|
|
||||||
data.setId(split[0] + "_" + split[1]);
|
|
||||||
data.setSqlData(sqlDataDTOS);
|
|
||||||
data.setSqlDataHarm(sqlDataHarmDTOS);
|
|
||||||
info.add(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
// }
|
|
||||||
return info;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<String> reflectHarmonicValue(String phase, AdHarmonicResult adHarmonicResult, boolean notContainBaseHarm) {
|
|
||||||
List<String> info = new ArrayList<>();
|
|
||||||
for (int i = notContainBaseHarm ? 2 : 1; i <= 50; i++) {
|
|
||||||
String fieldName = phase + "Value" + i;
|
|
||||||
try {
|
|
||||||
Field idField = AdHarmonicResult.class.getDeclaredField(fieldName);
|
|
||||||
idField.setAccessible(true);
|
|
||||||
String value = idField.get(adHarmonicResult) + "";
|
|
||||||
info.add(value);
|
|
||||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
package com.njcn.gather.device.controller;
|
package com.njcn.gather.device.controller;
|
||||||
|
|
||||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
|
||||||
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
|
||||||
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@@ -15,31 +12,22 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
|||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
import com.njcn.common.utils.LogUtil;
|
import com.njcn.common.utils.LogUtil;
|
||||||
import com.njcn.gather.device.pojo.enums.DevResponseEnum;
|
|
||||||
import com.njcn.gather.device.pojo.enums.PatternEnum;
|
|
||||||
import com.njcn.gather.device.pojo.param.PqDevParam;
|
import com.njcn.gather.device.pojo.param.PqDevParam;
|
||||||
import com.njcn.gather.device.pojo.po.PqDev;
|
import com.njcn.gather.device.pojo.po.PqDev;
|
||||||
import com.njcn.gather.device.pojo.vo.CNDevExcel;
|
|
||||||
import com.njcn.gather.device.pojo.vo.PqDevExcel;
|
|
||||||
import com.njcn.gather.device.pojo.vo.PqDevVO;
|
import com.njcn.gather.device.pojo.vo.PqDevVO;
|
||||||
import com.njcn.gather.device.pojo.vo.PreDetection;
|
import com.njcn.gather.device.pojo.vo.PreDetection;
|
||||||
import com.njcn.gather.device.service.IPqDevService;
|
import com.njcn.gather.device.service.IPqDevService;
|
||||||
import com.njcn.gather.system.dictionary.pojo.po.DictData;
|
|
||||||
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
|
||||||
import com.njcn.gather.type.pojo.po.DevType;
|
import com.njcn.gather.type.pojo.po.DevType;
|
||||||
import com.njcn.gather.type.service.IDevTypeService;
|
import com.njcn.gather.type.service.IDevTypeService;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
import com.njcn.web.utils.ExcelUtil;
|
|
||||||
import com.njcn.web.utils.FileUtil;
|
import com.njcn.web.utils.FileUtil;
|
||||||
import com.njcn.web.utils.HttpResultUtil;
|
import com.njcn.web.utils.HttpResultUtil;
|
||||||
import com.njcn.web.utils.PoiUtil;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiImplicitParams;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -63,7 +51,6 @@ import java.util.Map;
|
|||||||
public class PqDevController extends BaseController {
|
public class PqDevController extends BaseController {
|
||||||
|
|
||||||
private final IPqDevService pqDevService;
|
private final IPqDevService pqDevService;
|
||||||
private final IDictDataService dictDataService;
|
|
||||||
private final IDevTypeService devTypeService;
|
private final IDevTypeService devTypeService;
|
||||||
|
|
||||||
|
|
||||||
@@ -148,24 +135,14 @@ public class PqDevController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD)
|
||||||
@PostMapping("/export")
|
@PostMapping("/export")
|
||||||
@ApiOperation("导出被检设备数据")
|
@ApiOperation("批量导出被检设备")
|
||||||
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
|
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
|
||||||
public void export(@RequestBody @Validated PqDevParam.QueryParam queryParam) {
|
public void exportDev(@RequestBody @Validated PqDevParam.QueryParam queryParam) {
|
||||||
String methodDescribe = getMethodDescribe("export");
|
String methodDescribe = getMethodDescribe("exportDev");
|
||||||
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam);
|
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam);
|
||||||
DictData dictData = dictDataService.getDictDataById(queryParam.getPattern());
|
pqDevService.exportDev(queryParam);
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
|
||||||
if (PatternEnum.CONTRAST.getValue().equals(dictData.getCode())) {
|
|
||||||
List<PqDevExcel.ContrastExportData> data = pqDevService.getContrastExportData(queryParam);
|
|
||||||
ExcelUtil.exportExcel("被检设备导出数据.xlsx", PqDevExcel.ContrastExportData.class, data);
|
|
||||||
} else {
|
|
||||||
List<PqDevExcel.SimulateOrDigitalExportData> data = pqDevService.getSimulateOrDigitExportData(queryParam);
|
|
||||||
ExcelUtil.exportExcel("被检设备导出数据.xlsx", PqDevExcel.SimulateOrDigitalExportData.class, data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD)
|
||||||
@@ -176,108 +153,124 @@ public class PqDevController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
|
||||||
@PostMapping(value = "/importContrast")
|
@PostMapping(value = "/import")
|
||||||
@ApiOperation("批量导入被检设备数据")
|
@ApiOperation("批量导入被检设备")
|
||||||
@ApiImplicitParam(name = "file", value = "被检设备数据文件", required = true)
|
@ApiImplicitParams({
|
||||||
public HttpResult<Object> importContrastData(@RequestParam("file") MultipartFile file, HttpServletResponse response) {
|
@ApiImplicitParam(name = "file", value = "被检设备数据文件", required = true),
|
||||||
String methodDescribe = getMethodDescribe("importContrastData");
|
@ApiImplicitParam(name = "patternId", value = "模式id", required = true)
|
||||||
|
})
|
||||||
|
public HttpResult<String> importDev(@RequestParam("file") MultipartFile file, @RequestParam("patternId") String patternId, HttpServletResponse response) {
|
||||||
|
String methodDescribe = getMethodDescribe("importDev");
|
||||||
LogUtil.njcnDebug(log, "{},上传文件为:{}", methodDescribe, file.getOriginalFilename());
|
LogUtil.njcnDebug(log, "{},上传文件为:{}", methodDescribe, file.getOriginalFilename());
|
||||||
ImportParams params = new ImportParams();
|
boolean fileType = FileUtil.judgeFileIsExcel(file.getOriginalFilename());
|
||||||
params.setHeadRows(2);
|
if (!fileType) {
|
||||||
params.setNeedVerify(true);
|
throw new BusinessException(CommonResponseEnum.FILE_XLSX_ERROR);
|
||||||
params.setStartSheetIndex(0);
|
|
||||||
params.setSheetNum(1);
|
|
||||||
try {
|
|
||||||
ExcelImportResult<PqDevExcel.ContrastImportData> excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), PqDevExcel.ContrastImportData.class, params);
|
|
||||||
//如果存在非法数据,将不合格的数据导出
|
|
||||||
if (excelImportResult.isVerifyFail()) {
|
|
||||||
// 此处前端要做特殊处理,具体可以参考技术监督的数据导入
|
|
||||||
Workbook failWorkbook = excelImportResult.getFailWorkbook();
|
|
||||||
PoiUtil.exportFileByWorkbook(failWorkbook, "非法被检设备数据.xlsx", response);
|
|
||||||
} else {
|
|
||||||
//批量录入数据
|
|
||||||
List<PqDevExcel.ContrastImportData> list = excelImportResult.getList();
|
|
||||||
pqDevService.importContrastData(list);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new BusinessException(DevResponseEnum.IMPORT_DATA_FAIL);
|
|
||||||
}
|
}
|
||||||
|
pqDevService.importDev(file, patternId, null, response);
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
|
||||||
|
// @PostMapping(value = "/importContrast")
|
||||||
|
// @ApiOperation("批量导入被检设备数据")
|
||||||
|
// @ApiImplicitParam(name = "file", value = "被检设备数据文件", required = true)
|
||||||
|
// public HttpResult<Object> importContrastData(@RequestParam("file") MultipartFile file, HttpServletResponse response) {
|
||||||
|
// String methodDescribe = getMethodDescribe("importContrastData");
|
||||||
|
// LogUtil.njcnDebug(log, "{},上传文件为:{}", methodDescribe, file.getOriginalFilename());
|
||||||
|
// ImportParams params = new ImportParams();
|
||||||
|
// params.setHeadRows(2);
|
||||||
|
// params.setNeedVerify(true);
|
||||||
|
// params.setStartSheetIndex(0);
|
||||||
|
// params.setSheetNum(1);
|
||||||
|
// try {
|
||||||
|
// ExcelImportResult<PqDevExcel.ContrastImportData> excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), PqDevExcel.ContrastImportData.class, params);
|
||||||
|
// //如果存在非法数据,将不合格的数据导出
|
||||||
|
// if (excelImportResult.isVerifyFail()) {
|
||||||
|
// // 此处前端要做特殊处理,具体可以参考技术监督的数据导入
|
||||||
|
// Workbook failWorkbook = excelImportResult.getFailWorkbook();
|
||||||
|
// PoiUtil.exportFileByWorkbook(failWorkbook, "非法被检设备数据.xlsx", response);
|
||||||
|
// } else {
|
||||||
|
// //批量录入数据
|
||||||
|
// List<PqDevExcel.ContrastImportData> list = excelImportResult.getList();
|
||||||
|
// pqDevService.importContrastData(list);
|
||||||
|
// }
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// throw new BusinessException(DevResponseEnum.IMPORT_DATA_FAIL);
|
||||||
|
// }
|
||||||
|
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出灿能二楼设备
|
* 导出灿能二楼设备
|
||||||
*
|
*
|
||||||
* @param queryParam
|
* @param queryParam
|
||||||
*/
|
*/
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD)
|
// @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD)
|
||||||
@PostMapping("/exportCNDev")
|
// @PostMapping("/exportCNDev")
|
||||||
@ApiOperation("导出被检设备数据")
|
// @ApiOperation("导出被检设备数据")
|
||||||
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
|
// @ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
|
||||||
public void exportCNDev(@RequestBody @Validated PqDevParam.QueryParam queryParam) {
|
// public void exportCNDev(@RequestBody @Validated PqDevParam.QueryParam queryParam) {
|
||||||
String methodDescribe = getMethodDescribe("exportCNDev");
|
// String methodDescribe = getMethodDescribe("exportCNDev");
|
||||||
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam);
|
// LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam);
|
||||||
|
//
|
||||||
pqDevService.exportCNDev(queryParam);
|
// pqDevService.exportCNDev(queryParam);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下载灿能二楼设备导入文件模板
|
* 下载灿能二楼设备导入文件模板
|
||||||
*/
|
*/
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD)
|
// @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD)
|
||||||
@PostMapping("/downloadCNDevTemplate")
|
// @PostMapping("/downloadCNDevTemplate")
|
||||||
@ApiOperation("下载被检设备导入文件模板")
|
// @ApiOperation("下载被检设备导入文件模板")
|
||||||
public void downloadCNDevTemplate() {
|
// public void downloadCNDevTemplate() {
|
||||||
pqDevService.downloadCNDevTemplate();
|
// pqDevService.downloadCNDevTemplate();
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入灿能二楼设备
|
* 导入灿能二楼设备
|
||||||
*/
|
*/
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
|
// @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
|
||||||
@PostMapping(value = "/importCNDev")
|
// @PostMapping(value = "/importCNDev")
|
||||||
@ApiOperation("批量导入设备数据")
|
// @ApiOperation("批量导入设备数据")
|
||||||
@ApiImplicitParams({
|
// @ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "file", value = "被检设备数据文件", required = true),
|
// @ApiImplicitParam(name = "file", value = "被检设备数据文件", required = true),
|
||||||
@ApiImplicitParam(name = "patternId", value = "模式id", required = true)
|
// @ApiImplicitParam(name = "patternId", value = "模式id", required = true)
|
||||||
})
|
// })
|
||||||
public HttpResult<String> importCNDev(@RequestParam("file") MultipartFile file,@RequestParam("patternId") String patternId, HttpServletResponse response) {
|
// public HttpResult<String> importCNDev(@RequestParam("file") MultipartFile file,@RequestParam("patternId") String patternId, HttpServletResponse response) {
|
||||||
String methodDescribe = getMethodDescribe("importCNDev");
|
// String methodDescribe = getMethodDescribe("importCNDev");
|
||||||
LogUtil.njcnDebug(log, "{},上传文件为:{}", methodDescribe, file.getOriginalFilename());
|
// LogUtil.njcnDebug(log, "{},上传文件为:{}", methodDescribe, file.getOriginalFilename());
|
||||||
|
//
|
||||||
boolean fileType = FileUtil.judgeFileIsExcel(file.getOriginalFilename());
|
// boolean fileType = FileUtil.judgeFileIsExcel(file.getOriginalFilename());
|
||||||
if (!fileType) {
|
// if (!fileType) {
|
||||||
throw new BusinessException(CommonResponseEnum.FILE_XLSX_ERROR);
|
// throw new BusinessException(CommonResponseEnum.FILE_XLSX_ERROR);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
ImportParams params = new ImportParams();
|
// ImportParams params = new ImportParams();
|
||||||
params.setStartSheetIndex(0);
|
// params.setStartSheetIndex(0);
|
||||||
params.setSheetNum(1);
|
// params.setSheetNum(1);
|
||||||
params.setHeadRows(1);
|
// params.setHeadRows(1);
|
||||||
params.setNeedVerify(true);
|
// params.setNeedVerify(true);
|
||||||
|
//
|
||||||
List<CNDevExcel> cnDevExcelList;
|
// List<CNDevExcel> cnDevExcelList;
|
||||||
try {
|
// try {
|
||||||
ExcelImportResult<CNDevExcel> excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), CNDevExcel.class, params);
|
// ExcelImportResult<CNDevExcel> excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), CNDevExcel.class, params);
|
||||||
if (excelImportResult.isVerifyFail()) {
|
// if (excelImportResult.isVerifyFail()) {
|
||||||
// 此处前端要做特殊处理,具体可以参考技术监督的数据导入
|
// // 此处前端要做特殊处理,具体可以参考技术监督的数据导入
|
||||||
Workbook failWorkbook = excelImportResult.getFailWorkbook();
|
// Workbook failWorkbook = excelImportResult.getFailWorkbook();
|
||||||
PoiUtil.exportFileByWorkbook(failWorkbook, "非法被检设备数据.xlsx", response);
|
// PoiUtil.exportFileByWorkbook(failWorkbook, "非法被检设备数据.xlsx", response);
|
||||||
// throw new BusinessException(DevResponseEnum.IMPORT_DATA_FORMAT_FAIL);
|
//// throw new BusinessException(DevResponseEnum.IMPORT_DATA_FORMAT_FAIL);
|
||||||
return null;
|
// return null;
|
||||||
} else {
|
// } else {
|
||||||
cnDevExcelList = excelImportResult.getList();
|
// cnDevExcelList = excelImportResult.getList();
|
||||||
}
|
// }
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
throw new BusinessException(DevResponseEnum.IMPORT_DATA_FAIL);
|
// throw new BusinessException(DevResponseEnum.IMPORT_DATA_FAIL);
|
||||||
}
|
// }
|
||||||
if (ObjectUtil.isNotEmpty(cnDevExcelList)) {
|
// if (ObjectUtil.isNotEmpty(cnDevExcelList)) {
|
||||||
pqDevService.importCNDev(cnDevExcelList, patternId, null);
|
// pqDevService.importCNDev(cnDevExcelList, patternId, null);
|
||||||
}
|
// }
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
}
|
// }
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
@GetMapping("/listUnbound")
|
@GetMapping("/listUnbound")
|
||||||
@ApiOperation("获取指定模式下所有未绑定的设备")
|
@ApiOperation("获取指定模式下所有未绑定的设备")
|
||||||
@@ -324,19 +317,4 @@ public class PqDevController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// @OperateInfo(operateType = OperateType.UPDATE)
|
|
||||||
// @PostMapping("/bindDev")
|
|
||||||
// @ApiOperation("检测计划绑定设备")
|
|
||||||
// @ApiImplicitParam(name = "bindPlanParam", value = "绑定参数", required = true)
|
|
||||||
// public HttpResult<Object> bindDev(@RequestBody @Validated PqDevParam.BindPlanParam bindPlanParam) {
|
|
||||||
// String methodDescribe = getMethodDescribe("bindDev");
|
|
||||||
// LogUtil.njcnDebug(log, "{},绑定计划数据为:planId={}, pqDevIds={}", methodDescribe, bindPlanParam.getPlanId(), String.join(StrUtil.COMMA, bindPlanParam.getPqDevIds()));
|
|
||||||
// boolean result = pqDevService.bind(bindPlanParam.getPlanId(), bindPlanParam.getPqDevIds());
|
|
||||||
// if (result) {
|
|
||||||
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
|
||||||
// } else {
|
|
||||||
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public interface DevValidMessage {
|
|||||||
|
|
||||||
String CREATEDATETIME_NOT_NULL = "出厂日期不能为空,请检查producedDate参数";
|
String CREATEDATETIME_NOT_NULL = "出厂日期不能为空,请检查producedDate参数";
|
||||||
|
|
||||||
String CREATEDATETIME_FORMAT_ERROR = "出厂日期格式错误,请检查createDateTime参数";
|
String CREATEDATETIME_FORMAT_ERROR = "出厂日期格式错误,请检查createDate参数";
|
||||||
|
|
||||||
String FACTORYNO_NOT_BLANK = "出厂编号不能为空,请检查factoryNo参数";
|
String FACTORYNO_NOT_BLANK = "出厂编号不能为空,请检查factoryNo参数";
|
||||||
|
|
||||||
|
|||||||
@@ -39,16 +39,16 @@ public class CNDevExcel {
|
|||||||
@NotNull(message = DevValidMessage.ENCRYPTION_NOT_NULL)
|
@NotNull(message = DevValidMessage.ENCRYPTION_NOT_NULL)
|
||||||
private Integer encryptionFlag;
|
private Integer encryptionFlag;
|
||||||
|
|
||||||
@Excel(name = "识别码", width = 30, orderNum = "6")
|
@Excel(name = "识别码(当加密时必填)", width = 30, orderNum = "6")
|
||||||
private String series;
|
private String series;
|
||||||
|
|
||||||
@Excel(name = "秘钥", width = 30, orderNum = "7")
|
@Excel(name = "秘钥(当加密时必填)", width = 30, orderNum = "7")
|
||||||
private String devKey;
|
private String devKey;
|
||||||
|
|
||||||
@Excel(name = "是否支持系数校准*", width = 25, replace = {"否_0", "是_1"}, orderNum = "8")
|
@Excel(name = "是否支持系数校准*", width = 25, replace = {"否_0", "是_1"}, orderNum = "8")
|
||||||
private Integer factorFlag;
|
private Integer factorFlag;
|
||||||
|
|
||||||
@Excel(name = "IP地址*", width = 20, replace = {"否_0", "是_1"}, orderNum = "9")
|
@Excel(name = "IP地址*", width = 20, orderNum = "9")
|
||||||
@NotBlank(message = DevValidMessage.IP_NOT_BLANK)
|
@NotBlank(message = DevValidMessage.IP_NOT_BLANK)
|
||||||
@Pattern(regexp = PatternRegex.IP_REGEX, message = DevValidMessage.IP_FORMAT_ERROR)
|
@Pattern(regexp = PatternRegex.IP_REGEX, message = DevValidMessage.IP_FORMAT_ERROR)
|
||||||
private String ip;
|
private String ip;
|
||||||
|
|||||||
@@ -1,211 +0,0 @@
|
|||||||
package com.njcn.gather.device.pojo.vo;
|
|
||||||
|
|
||||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
|
||||||
import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
|
|
||||||
import com.njcn.common.pojo.constant.PatternRegex;
|
|
||||||
import com.njcn.gather.monitor.pojo.vo.PqMonitorExcel;
|
|
||||||
import com.njcn.gather.device.pojo.constant.DevValidMessage;
|
|
||||||
import com.njcn.web.pojo.annotation.DateTimeStrValid;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import org.hibernate.validator.constraints.Range;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import javax.validation.constraints.Pattern;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author caozehui
|
|
||||||
* @data 2024/11/7
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class PqDevExcel implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Excel(name = "名称", width = 20, needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.NAME_NOT_BLANK)
|
|
||||||
@Pattern(regexp = PatternRegex.DEV_NAME_REGEX, message = DevValidMessage.NAME_FORMAT_ERROR)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Excel(name = "设备类型", width = 20, orderNum = "2", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.DEV_TYPE_NOT_BLANK)
|
|
||||||
private String devType;
|
|
||||||
|
|
||||||
@Excel(name = "设备通道数", width = 20, orderNum = "3", needMerge = true)
|
|
||||||
@NotNull(message = DevValidMessage.DEV_CHNS_NOT_NULL)
|
|
||||||
private Integer devChns;
|
|
||||||
|
|
||||||
@Excel(name = "额定电压(V)", width = 15, orderNum = "4", needMerge = true)
|
|
||||||
@NotNull(message = DevValidMessage.DEV_VOLT_NOT_NULL)
|
|
||||||
private Float devVolt;
|
|
||||||
|
|
||||||
@Excel(name = "额定电流(A)", width = 15, orderNum = "5", needMerge = true)
|
|
||||||
@NotNull(message = DevValidMessage.DEV_CURR_NOT_NULL)
|
|
||||||
private Float devCurr;
|
|
||||||
|
|
||||||
@Excel(name = "设备厂家", width = 20, orderNum = "6", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.MANUFACTURER_NOT_BLANK)
|
|
||||||
private String manufacturer;
|
|
||||||
|
|
||||||
@Excel(name = "设备序列号", width = 40, orderNum = "8", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.FACTORYNO_NOT_BLANK)
|
|
||||||
private String createId;
|
|
||||||
|
|
||||||
@Excel(name = "固件版本", width = 15, orderNum = "9", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.FIRMWARE_NOT_BLANK)
|
|
||||||
private String hardwareVersion;
|
|
||||||
|
|
||||||
@Excel(name = "软件版本", width = 15, orderNum = "10", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.SOFTWARE_NOT_BLANK)
|
|
||||||
private String softwareVersion;
|
|
||||||
|
|
||||||
@Excel(name = "通讯协议", width = 15, orderNum = "11", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.PROTOCOL_NOT_BLANK)
|
|
||||||
private String protocol;
|
|
||||||
|
|
||||||
@Excel(name = "IP地址", width = 20, orderNum = "12", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.IP_NOT_BLANK)
|
|
||||||
@Pattern(regexp = PatternRegex.IP_REGEX, message = DevValidMessage.IP_FORMAT_ERROR)
|
|
||||||
private String ip;
|
|
||||||
|
|
||||||
@Excel(name = "端口号", orderNum = "13", needMerge = true)
|
|
||||||
@NotNull(message = DevValidMessage.PORT_NOT_NULL)
|
|
||||||
@Range(min = 1, max = 65535, message = DevValidMessage.PORT_RANGE_ERROR)
|
|
||||||
private Integer port;
|
|
||||||
|
|
||||||
@Excel(name = "是否为加密版本(否\\是)", width = 20, replace = {"否_0", "是_1"}, orderNum = "14", needMerge = true)
|
|
||||||
@NotNull(message = DevValidMessage.ENCRYPTION_NOT_NULL)
|
|
||||||
private Integer encryptionFlag;
|
|
||||||
|
|
||||||
@Excel(name = "识别码(当为加密版本时必填)", width = 30, orderNum = "15", needMerge = true)
|
|
||||||
private String series;
|
|
||||||
|
|
||||||
@Excel(name = "秘钥(当为加密版本时必填)", width = 30, orderNum = "16", needMerge = true)
|
|
||||||
private String devKey;
|
|
||||||
|
|
||||||
@Excel(name = "所属地市名称", width = 20, orderNum = "19", needMerge = true)
|
|
||||||
private String cityName;
|
|
||||||
|
|
||||||
@Excel(name = "所属供电公司名称", width = 20, orderNum = "20", needMerge = true)
|
|
||||||
private String gdName;
|
|
||||||
|
|
||||||
@Excel(name = "所属电站名称", width = 20, orderNum = "21", needMerge = true)
|
|
||||||
private String subName;
|
|
||||||
|
|
||||||
@Excel(name = "关键信息二维码", width = 20, orderNum = "30", needMerge = true)
|
|
||||||
private String qrCode;
|
|
||||||
|
|
||||||
@Excel(name = "检测次数", width = 15, orderNum = "31", needMerge = true)
|
|
||||||
@NotNull(message = DevValidMessage.RECHECK_NUM_NOT_NULL)
|
|
||||||
private Integer reCheckNum;
|
|
||||||
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public static class ExportData extends PqDevExcel {
|
|
||||||
|
|
||||||
@Excel(name = "设备模式", width = 20, orderNum = "1", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.PATTERN_NOT_BLANK)
|
|
||||||
private String pattern;
|
|
||||||
|
|
||||||
@Excel(name = "出厂日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd", orderNum = "7", needMerge = true)
|
|
||||||
@NotNull(message = DevValidMessage.CREATEDATETIME_NOT_NULL)
|
|
||||||
private LocalDate createDate;
|
|
||||||
|
|
||||||
@Excel(name = "是否支持系数校准(否\\是)", width = 15, replace = {"否_0", "是_1"}, orderNum = "22", needMerge = true)
|
|
||||||
private Integer factorFlag;
|
|
||||||
|
|
||||||
@Excel(name = "守时检测结果(不合格\\合格\\/)", replace = {"不合格_0", "合格_1", "/_2"}, width = 15, orderNum = "23", needMerge = true)
|
|
||||||
private Integer timeCheckResult;
|
|
||||||
|
|
||||||
@Excel(name = "系数校准结果(不合格\\合格\\/)", width = 15, replace = {"不合格_0", "合格_1", "/_2"}, orderNum = "24", needMerge = true)
|
|
||||||
private Integer factorCheckResult;
|
|
||||||
|
|
||||||
@Excel(name = "检测状态(未检\\检测中\\检测完成\\归档)", width = 15, replace = {"未检_0", "检测中_1", "检测完成_2", "归档_3"}, orderNum = "25", needMerge = true)
|
|
||||||
private Integer checkState;
|
|
||||||
|
|
||||||
@Excel(name = "检测结果(不符合\\符合\\未检)", width = 15, replace = {"不符合_0", "符合_1", "未检_2"}, orderNum = "26", needMerge = true)
|
|
||||||
private Integer checkResult;
|
|
||||||
|
|
||||||
@Excel(name = "报告状态(未生成\\已生成\\未检)", width = 15, replace = {"未生成_0", "已生成_1", "未检_2"}, orderNum = "27", needMerge = true)
|
|
||||||
private Integer reportState;
|
|
||||||
|
|
||||||
// @Excel(name = "归档状态(未归档\\归档)", width = 15, replace = {"未归档_0", "归档_1"}, orderNum = "28", needMerge = true)
|
|
||||||
// private Integer documentState;
|
|
||||||
|
|
||||||
@Excel(name = "报告路径", width = 20, orderNum = "29", needMerge = true)
|
|
||||||
private String reportPath;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 模拟式和比对式设备导出数据
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public static class SimulateOrDigitalExportData extends ExportData {
|
|
||||||
@Excel(name = "样品编号", width = 40, orderNum = "17", needMerge = true)
|
|
||||||
private String sampleId;
|
|
||||||
|
|
||||||
@Excel(name = "送样日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd", orderNum = "18", needMerge = true)
|
|
||||||
private LocalDate arrivedDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 比对式设备导出数据
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public static class ContrastExportData extends ExportData {
|
|
||||||
@ExcelCollection(name = "检测点台账", orderNum = "32")
|
|
||||||
List<PqMonitorExcel.ExportData> monitorList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 被检设备导入数据
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public static class ImportData extends PqDevExcel {
|
|
||||||
|
|
||||||
@Excel(name = "出厂日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd", orderNum = "7", needMerge = true)
|
|
||||||
@NotNull(message = DevValidMessage.CREATEDATETIME_NOT_NULL)
|
|
||||||
@DateTimeStrValid(message = DevValidMessage.CREATEDATETIME_FORMAT_ERROR)
|
|
||||||
private String createDate;
|
|
||||||
|
|
||||||
|
|
||||||
@Excel(name = "是否支持系数校准(否\\是)", width = 15, replace = {"否_0", "是_1"}, orderNum = "22", needMerge = true)
|
|
||||||
@NotBlank(message = DevValidMessage.FACTOR_FLAG_NOT_BLANK)
|
|
||||||
private String factorFlag;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 模拟式和比对式设备导入数据
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public static class SimulateOrDigitalImportData extends ImportData {
|
|
||||||
@Excel(name = "样品编号", width = 40, orderNum = "17", needMerge = true)
|
|
||||||
private String sampleId;
|
|
||||||
|
|
||||||
@Excel(name = "送样日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd", orderNum = "18", needMerge = true)
|
|
||||||
@DateTimeStrValid(message = DevValidMessage.ARRIVE_DATE_FORMAT_ERROR)
|
|
||||||
private String arrivedDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对比式设备导入数据
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public static class ContrastImportData extends ImportData {
|
|
||||||
@ExcelCollection(name = "检测点台账", orderNum = "32")
|
|
||||||
List<PqMonitorExcel.ImportData> monitorList;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
package com.njcn.gather.device.pojo.vo;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||||
|
import com.njcn.common.pojo.constant.PatternRegex;
|
||||||
|
import com.njcn.gather.device.pojo.constant.DevValidMessage;
|
||||||
|
import com.njcn.web.pojo.annotation.DateTimeStrValid;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Range;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import javax.validation.constraints.Pattern;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author caozehui
|
||||||
|
* @data 2024/11/7
|
||||||
|
* @description 省级平台设备Excel导入导出实体类
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ProvinceDevExcel implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Excel(name = "装置编号*", width = 20)
|
||||||
|
@NotBlank(message = DevValidMessage.FACTORYNO_NOT_BLANK)
|
||||||
|
private String createId;
|
||||||
|
|
||||||
|
@Excel(name = "设备名称*", width = 20, orderNum = "2")
|
||||||
|
@NotBlank(message = DevValidMessage.NAME_NOT_BLANK)
|
||||||
|
@Pattern(regexp = PatternRegex.DEV_NAME_REGEX, message = DevValidMessage.NAME_FORMAT_ERROR)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Excel(name = "设备类型*", width = 20, orderNum = "3")
|
||||||
|
@NotBlank(message = DevValidMessage.DEV_TYPE_NOT_BLANK)
|
||||||
|
private String devType;
|
||||||
|
|
||||||
|
// @Excel(name = "设备通道数", width = 20, orderNum = "4")
|
||||||
|
// @NotNull(message = DevValidMessage.DEV_CHNS_NOT_NULL)
|
||||||
|
// private Integer devChns;
|
||||||
|
//
|
||||||
|
// @Excel(name = "额定电压(V)", width = 15, orderNum = "5")
|
||||||
|
// @NotNull(message = DevValidMessage.DEV_VOLT_NOT_NULL)
|
||||||
|
// private Float devVolt;
|
||||||
|
//
|
||||||
|
// @Excel(name = "额定电流(A)", width = 15, orderNum = "6")
|
||||||
|
// @NotNull(message = DevValidMessage.DEV_CURR_NOT_NULL)
|
||||||
|
// private Float devCurr;
|
||||||
|
|
||||||
|
@Excel(name = "设备厂家*", width = 20, orderNum = "7")
|
||||||
|
@NotBlank(message = DevValidMessage.MANUFACTURER_NOT_BLANK)
|
||||||
|
private String manufacturer;
|
||||||
|
|
||||||
|
@Excel(name = "出厂日期*", width = 25, format = "yyyy-MM-dd", orderNum = "8")
|
||||||
|
@NotNull(message = DevValidMessage.CREATEDATETIME_NOT_NULL)
|
||||||
|
private LocalDate createDate;
|
||||||
|
|
||||||
|
@Excel(name = "固件版本", width = 15, orderNum = "9")
|
||||||
|
private String hardwareVersion;
|
||||||
|
|
||||||
|
@Excel(name = "软件版本", width = 15, orderNum = "10")
|
||||||
|
private String softwareVersion;
|
||||||
|
|
||||||
|
@Excel(name = "通讯协议*", width = 15, orderNum = "11")
|
||||||
|
@NotBlank(message = DevValidMessage.PROTOCOL_NOT_BLANK)
|
||||||
|
private String protocol;
|
||||||
|
|
||||||
|
@Excel(name = "IP地址*", width = 20, orderNum = "12")
|
||||||
|
@NotBlank(message = DevValidMessage.IP_NOT_BLANK)
|
||||||
|
@Pattern(regexp = PatternRegex.IP_REGEX, message = DevValidMessage.IP_FORMAT_ERROR)
|
||||||
|
private String ip;
|
||||||
|
|
||||||
|
@Excel(name = "端口号*", width = 15, orderNum = "13")
|
||||||
|
@NotNull(message = DevValidMessage.PORT_NOT_NULL)
|
||||||
|
@Range(min = 1, max = 65535, message = DevValidMessage.PORT_RANGE_ERROR)
|
||||||
|
private Integer port;
|
||||||
|
|
||||||
|
@Excel(name = "是否加密*", width = 20, replace = {"否_0", "是_1"}, orderNum = "14")
|
||||||
|
@NotNull(message = DevValidMessage.ENCRYPTION_NOT_NULL)
|
||||||
|
private Integer encryptionFlag;
|
||||||
|
|
||||||
|
@Excel(name = "识别码(当加密时必填)", width = 30, orderNum = "15")
|
||||||
|
private String series;
|
||||||
|
|
||||||
|
@Excel(name = "秘钥(当加密时必填)", width = 30, orderNum = "16")
|
||||||
|
private String devKey;
|
||||||
|
|
||||||
|
@Excel(name = "是否支持系数校准*", width = 25, replace = {"否_0", "是_1"}, orderNum = "17")
|
||||||
|
private Integer factorFlag;
|
||||||
|
|
||||||
|
// @Excel(name = "所属地市名称", width = 20, orderNum = "19")
|
||||||
|
// private String cityName;
|
||||||
|
//
|
||||||
|
// @Excel(name = "所属供电公司名称", width = 20, orderNum = "20")
|
||||||
|
// private String gdName;
|
||||||
|
//
|
||||||
|
// @Excel(name = "所属电站名称", width = 20, orderNum = "21")
|
||||||
|
// private String subName;
|
||||||
|
//
|
||||||
|
// @Excel(name = "关键信息二维码", width = 20, orderNum = "30")
|
||||||
|
// private String qrCode;
|
||||||
|
//
|
||||||
|
// @Excel(name = "检测次数", width = 15, orderNum = "31")
|
||||||
|
// @NotNull(message = DevValidMessage.RECHECK_NUM_NOT_NULL)
|
||||||
|
// private Integer reCheckNum;
|
||||||
|
|
||||||
|
|
||||||
|
// @Data
|
||||||
|
// @EqualsAndHashCode(callSuper = true)
|
||||||
|
// public static class ExportData extends PqDevExcel {
|
||||||
|
//
|
||||||
|
// @Excel(name = "设备模式", width = 20, orderNum = "1")
|
||||||
|
// @NotBlank(message = DevValidMessage.PATTERN_NOT_BLANK)
|
||||||
|
// private String pattern;
|
||||||
|
//
|
||||||
|
// @Excel(name = "出厂日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd", orderNum = "7")
|
||||||
|
// @NotNull(message = DevValidMessage.CREATEDATETIME_NOT_NULL)
|
||||||
|
// private LocalDate createDate;
|
||||||
|
//
|
||||||
|
// @Excel(name = "是否支持系数校准(否\\是)", width = 15, replace = {"否_0", "是_1"}, orderNum = "22")
|
||||||
|
// private Integer factorFlag;
|
||||||
|
//
|
||||||
|
// @Excel(name = "守时检测结果(不合格\\合格\\/)", replace = {"不合格_0", "合格_1", "/_2"}, width = 15, orderNum = "23")
|
||||||
|
// private Integer timeCheckResult;
|
||||||
|
//
|
||||||
|
// @Excel(name = "系数校准结果(不合格\\合格\\/)", width = 15, replace = {"不合格_0", "合格_1", "/_2"}, orderNum = "24")
|
||||||
|
// private Integer factorCheckResult;
|
||||||
|
//
|
||||||
|
// @Excel(name = "检测状态(未检\\检测中\\检测完成\\归档)", width = 15, replace = {"未检_0", "检测中_1", "检测完成_2", "归档_3"}, orderNum = "25")
|
||||||
|
// private Integer checkState;
|
||||||
|
//
|
||||||
|
// @Excel(name = "检测结果(不符合\\符合\\未检)", width = 15, replace = {"不符合_0", "符合_1", "未检_2"}, orderNum = "26")
|
||||||
|
// private Integer checkResult;
|
||||||
|
//
|
||||||
|
// @Excel(name = "报告状态(未生成\\已生成\\未检)", width = 15, replace = {"未生成_0", "已生成_1", "未检_2"}, orderNum = "27")
|
||||||
|
// private Integer reportState;
|
||||||
|
//
|
||||||
|
//// @Excel(name = "归档状态(未归档\\归档)", width = 15, replace = {"未归档_0", "归档_1"}, orderNum = "28")
|
||||||
|
//// private Integer documentState;
|
||||||
|
//
|
||||||
|
// @Excel(name = "报告路径", width = 20, orderNum = "29")
|
||||||
|
// private String reportPath;
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 模拟式和比对式设备导出数据
|
||||||
|
// */
|
||||||
|
// @Data
|
||||||
|
// @EqualsAndHashCode(callSuper = true)
|
||||||
|
// public static class SimulateOrDigitalExportData extends ExportData {
|
||||||
|
// @Excel(name = "样品编号", width = 40, orderNum = "17")
|
||||||
|
// private String sampleId;
|
||||||
|
//
|
||||||
|
// @Excel(name = "送样日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd", orderNum = "18")
|
||||||
|
// private LocalDate arrivedDate;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 比对式设备导出数据
|
||||||
|
// */
|
||||||
|
// @Data
|
||||||
|
// @EqualsAndHashCode(callSuper = true)
|
||||||
|
// public static class ContrastExportData extends ExportData {
|
||||||
|
// @ExcelCollection(name = "检测点台账", orderNum = "32")
|
||||||
|
// List<PqMonitorExcel.ExportData> monitorList;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 被检设备导入数据
|
||||||
|
// */
|
||||||
|
// @Data
|
||||||
|
// @EqualsAndHashCode(callSuper = true)
|
||||||
|
// public static class ImportData extends PqDevExcel {
|
||||||
|
//
|
||||||
|
// @Excel(name = "出厂日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd", orderNum = "7")
|
||||||
|
// @NotNull(message = DevValidMessage.CREATEDATETIME_NOT_NULL)
|
||||||
|
// @DateTimeStrValid(message = DevValidMessage.CREATEDATETIME_FORMAT_ERROR)
|
||||||
|
// private String createDate;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// @Excel(name = "是否支持系数校准(否\\是)", width = 15, replace = {"否_0", "是_1"}, orderNum = "22")
|
||||||
|
// @NotBlank(message = DevValidMessage.FACTOR_FLAG_NOT_BLANK)
|
||||||
|
// private String factorFlag;
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 模拟式和比对式设备导入数据
|
||||||
|
// */
|
||||||
|
// @Data
|
||||||
|
// @EqualsAndHashCode(callSuper = true)
|
||||||
|
// public static class SimulateOrDigitalImportData extends ImportData {
|
||||||
|
// @Excel(name = "样品编号", width = 40, orderNum = "17")
|
||||||
|
// private String sampleId;
|
||||||
|
//
|
||||||
|
// @Excel(name = "送样日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd", orderNum = "18")
|
||||||
|
// @DateTimeStrValid(message = DevValidMessage.ARRIVE_DATE_FORMAT_ERROR)
|
||||||
|
// private String arrivedDate;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 对比式设备导入数据
|
||||||
|
// */
|
||||||
|
// @Data
|
||||||
|
// @EqualsAndHashCode(callSuper = true)
|
||||||
|
// public static class ContrastImportData extends ImportData {
|
||||||
|
// @ExcelCollection(name = "检测点台账", orderNum = "32")
|
||||||
|
// List<PqMonitorExcel.ImportData> monitorList;
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,11 +6,13 @@ import com.njcn.gather.device.pojo.enums.TimeCheckResultEnum;
|
|||||||
import com.njcn.gather.device.pojo.param.PqDevParam;
|
import com.njcn.gather.device.pojo.param.PqDevParam;
|
||||||
import com.njcn.gather.device.pojo.po.PqDev;
|
import com.njcn.gather.device.pojo.po.PqDev;
|
||||||
import com.njcn.gather.device.pojo.vo.CNDevExcel;
|
import com.njcn.gather.device.pojo.vo.CNDevExcel;
|
||||||
import com.njcn.gather.device.pojo.vo.PqDevExcel;
|
|
||||||
import com.njcn.gather.device.pojo.vo.PqDevVO;
|
import com.njcn.gather.device.pojo.vo.PqDevVO;
|
||||||
import com.njcn.gather.device.pojo.vo.PreDetection;
|
import com.njcn.gather.device.pojo.vo.PreDetection;
|
||||||
|
import com.njcn.gather.device.pojo.vo.ProvinceDevExcel;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -67,7 +69,7 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
* @param queryParam 查询参数
|
* @param queryParam 查询参数
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<PqDevExcel.SimulateOrDigitalExportData> getSimulateOrDigitExportData(PqDevParam.QueryParam queryParam);
|
//List<PqDevExcel.SimulateOrDigitalExportData> getSimulateOrDigitExportData(PqDevParam.QueryParam queryParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取比对式设备导出时所需的数据
|
* 获取比对式设备导出时所需的数据
|
||||||
@@ -75,26 +77,21 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
* @param queryParam 查询参数
|
* @param queryParam 查询参数
|
||||||
* @return 比对式设备导出时所需的数据
|
* @return 比对式设备导出时所需的数据
|
||||||
*/
|
*/
|
||||||
List<PqDevExcel.ContrastExportData> getContrastExportData(PqDevParam.QueryParam queryParam);
|
//List<PqDevExcel.ContrastExportData> getContrastExportData(PqDevParam.QueryParam queryParam);
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载模板文件
|
|
||||||
*/
|
|
||||||
void downloadTemplate();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量导入被检设备信息
|
* 批量导入被检设备信息
|
||||||
*
|
*
|
||||||
* @param sgEventExcels 批量导入的数据
|
* @param sgEventExcels 批量导入的数据
|
||||||
*/
|
*/
|
||||||
void importContrastData(List<PqDevExcel.ContrastImportData> sgEventExcels);
|
//void importContrastData(List<PqDevExcel.ContrastImportData> sgEventExcels);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量导入被检设备信息
|
* 批量导入被检设备信息
|
||||||
*
|
*
|
||||||
* @param sgEventExcels 批量导入的数据
|
* @param sgEventExcels 批量导入的数据
|
||||||
*/
|
*/
|
||||||
void importSimulateAndDigitalData(List<PqDevExcel.SimulateOrDigitalImportData> sgEventExcels);
|
//void importSimulateAndDigitalData(List<PqDevExcel.SimulateOrDigitalImportData> sgEventExcels);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取所有未绑定的设备
|
* 获取所有未绑定的设备
|
||||||
@@ -121,14 +118,6 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
*/
|
*/
|
||||||
Integer bind(String planId, List<String> devIds);
|
Integer bind(String planId, List<String> devIds);
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取饼图数据
|
|
||||||
*
|
|
||||||
* @param planId 检测计划id
|
|
||||||
* @return 饼图数据
|
|
||||||
*/
|
|
||||||
//List<List<Map<String, Object>>> getPieData(String planId);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据id获取被检设备信息
|
* 根据id获取被检设备信息
|
||||||
*
|
*
|
||||||
@@ -137,25 +126,6 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
*/
|
*/
|
||||||
PqDevVO getPqDevById(String id);
|
PqDevVO getPqDevById(String id);
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取所有非未检测状态的设备
|
|
||||||
*
|
|
||||||
* @return 所有非未检测状态的设备列表
|
|
||||||
*/
|
|
||||||
List<PqDev> listUnchecked();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 可视化,各种id回显字典值,解码等操作
|
|
||||||
*
|
|
||||||
* @param sourceList
|
|
||||||
*/
|
|
||||||
void visualize(List<PqDev> sourceList);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 逆向可视化
|
|
||||||
*/
|
|
||||||
void reverseVisualize(List<PqDev> sourceList);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取装置信息和装置下监测点信息
|
* 获取装置信息和装置下监测点信息
|
||||||
*
|
*
|
||||||
@@ -174,7 +144,6 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
*/
|
*/
|
||||||
boolean documented(List<String> id);
|
boolean documented(List<String> id);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 正式监测完成,修改中断状态
|
* 正式监测完成,修改中断状态
|
||||||
*
|
*
|
||||||
@@ -189,27 +158,6 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
|
|
||||||
int countUnReportDev(String planId);
|
int countUnReportDev(String planId);
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出灿能二楼设备数据
|
|
||||||
*
|
|
||||||
* @param queryParam
|
|
||||||
*/
|
|
||||||
void exportCNDev(PqDevParam.QueryParam queryParam);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载灿能二楼设备模板文件
|
|
||||||
*/
|
|
||||||
void downloadCNDevTemplate();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入灿能二楼设备数据
|
|
||||||
*
|
|
||||||
* @param cnDevExcelList 灿能二楼设备数据列表
|
|
||||||
* @param patternId 模式Id
|
|
||||||
* @param planId 计划Id
|
|
||||||
*/
|
|
||||||
void importCNDev(List<CNDevExcel> cnDevExcelList, String patternId, String planId);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据计划id列表获取设备列表
|
* 根据计划id列表获取设备列表
|
||||||
*
|
*
|
||||||
@@ -218,6 +166,47 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
*/
|
*/
|
||||||
List<PqDev> listByPlanIds(List<String> planIds);
|
List<PqDev> listByPlanIds(List<String> planIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出设备数据
|
||||||
|
*
|
||||||
|
* @param queryParam
|
||||||
|
*/
|
||||||
|
void exportDev(PqDevParam.QueryParam queryParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载模板文件
|
||||||
|
*/
|
||||||
|
void downloadTemplate();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入设备数据
|
||||||
|
*
|
||||||
|
* @param file 上传的文件
|
||||||
|
* @param patternId 模式Id
|
||||||
|
* @param planId 计划Id
|
||||||
|
* @param response 响应
|
||||||
|
*/
|
||||||
|
void importDev(MultipartFile file, String patternId, String planId, HttpServletResponse response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入灿能二楼设备数据
|
||||||
|
*
|
||||||
|
* @param file 上传的文件
|
||||||
|
* @param patternId 模式Id
|
||||||
|
* @param planId 计划Id
|
||||||
|
* @param response 响应
|
||||||
|
*/
|
||||||
|
void importCNDev(MultipartFile file, String patternId, String planId, HttpServletResponse response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入灿能二楼设备数据
|
||||||
|
*
|
||||||
|
* @param cnDevExcelList
|
||||||
|
* @param patternId
|
||||||
|
* @param planId
|
||||||
|
*/
|
||||||
|
void importCNDev(List<CNDevExcel> cnDevExcelList, String patternId, String planId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 可视化-灿能二楼设备
|
* 可视化-灿能二楼设备
|
||||||
*
|
*
|
||||||
@@ -228,8 +217,42 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
/**
|
/**
|
||||||
* 逆向可视化-灿能二楼设备
|
* 逆向可视化-灿能二楼设备
|
||||||
*
|
*
|
||||||
* @param pqDevs 设备列表
|
* @param pqDevs 设备列表
|
||||||
* @param patternId 模式Id
|
* @param patternId 模式Id
|
||||||
*/
|
*/
|
||||||
void reverseVisualizeCNDev(List<PqDev> pqDevs, String patternId);
|
void reverseVisualizeCNDev(List<PqDev> pqDevs, String patternId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入省级平台设备数据
|
||||||
|
*
|
||||||
|
* @param file 上传的文件
|
||||||
|
* @param patternId 模式Id
|
||||||
|
* @param planId 计划Id
|
||||||
|
* @param response 响应
|
||||||
|
*/
|
||||||
|
void importProvinceDev(MultipartFile file, String patternId, String planId, HttpServletResponse response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入省级平台设备数据
|
||||||
|
*
|
||||||
|
* @param proviceDevExcelList
|
||||||
|
* @param patternId
|
||||||
|
* @param planId
|
||||||
|
*/
|
||||||
|
void importProvinceDev(List<ProvinceDevExcel> proviceDevExcelList, String patternId, String planId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可视化-省级平台设备
|
||||||
|
*
|
||||||
|
* @param pqDevs
|
||||||
|
*/
|
||||||
|
void visualizeProvinceDev(List<PqDev> pqDevs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 逆向可视化-省级平台设备
|
||||||
|
*
|
||||||
|
* @param pqDevs 设备列表
|
||||||
|
* @param patternId 模式Id
|
||||||
|
*/
|
||||||
|
void reverseVisualizeProvinceDev(List<PqDev> pqDevs, String patternId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package com.njcn.gather.device.service.impl;
|
package com.njcn.gather.device.service.impl;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
||||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
@@ -22,12 +25,11 @@ import com.njcn.gather.device.pojo.enums.*;
|
|||||||
import com.njcn.gather.device.pojo.param.PqDevParam;
|
import com.njcn.gather.device.pojo.param.PqDevParam;
|
||||||
import com.njcn.gather.device.pojo.po.PqDev;
|
import com.njcn.gather.device.pojo.po.PqDev;
|
||||||
import com.njcn.gather.device.pojo.vo.CNDevExcel;
|
import com.njcn.gather.device.pojo.vo.CNDevExcel;
|
||||||
import com.njcn.gather.device.pojo.vo.PqDevExcel;
|
|
||||||
import com.njcn.gather.device.pojo.vo.PqDevVO;
|
import com.njcn.gather.device.pojo.vo.PqDevVO;
|
||||||
import com.njcn.gather.device.pojo.vo.PreDetection;
|
import com.njcn.gather.device.pojo.vo.PreDetection;
|
||||||
|
import com.njcn.gather.device.pojo.vo.ProvinceDevExcel;
|
||||||
import com.njcn.gather.device.service.IPqDevService;
|
import com.njcn.gather.device.service.IPqDevService;
|
||||||
import com.njcn.gather.monitor.pojo.po.PqMonitor;
|
import com.njcn.gather.monitor.pojo.po.PqMonitor;
|
||||||
import com.njcn.gather.monitor.pojo.vo.PqMonitorExcel;
|
|
||||||
import com.njcn.gather.monitor.service.IPqMonitorService;
|
import com.njcn.gather.monitor.service.IPqMonitorService;
|
||||||
import com.njcn.gather.storage.service.DetectionDataDealService;
|
import com.njcn.gather.storage.service.DetectionDataDealService;
|
||||||
import com.njcn.gather.system.config.pojo.po.SysTestConfig;
|
import com.njcn.gather.system.config.pojo.po.SysTestConfig;
|
||||||
@@ -40,12 +42,16 @@ import com.njcn.gather.type.pojo.po.DevType;
|
|||||||
import com.njcn.gather.type.service.IDevTypeService;
|
import com.njcn.gather.type.service.IDevTypeService;
|
||||||
import com.njcn.web.factory.PageFactory;
|
import com.njcn.web.factory.PageFactory;
|
||||||
import com.njcn.web.utils.ExcelUtil;
|
import com.njcn.web.utils.ExcelUtil;
|
||||||
|
import com.njcn.web.utils.PoiUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -66,7 +72,6 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
private final ISysTestConfigService sysTestConfigService;
|
private final ISysTestConfigService sysTestConfigService;
|
||||||
private final IDictTypeService dictTypeService;
|
private final IDictTypeService dictTypeService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<PqDevVO> listPqDevs(PqDevParam.QueryParam queryParam) {
|
public Page<PqDevVO> listPqDevs(PqDevParam.QueryParam queryParam) {
|
||||||
Page<PqDev> page1 = this.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), this.getQueryWrapper(queryParam));
|
Page<PqDev> page1 = this.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), this.getQueryWrapper(queryParam));
|
||||||
@@ -203,89 +208,84 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
return this.lambdaUpdate().set(PqDev::getTimeCheckResult, result.getValue()).in(PqDev::getId, ids).update();
|
return this.lambdaUpdate().set(PqDev::getTimeCheckResult, result.getValue()).in(PqDev::getId, ids).update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public List<PqDevExcel.SimulateOrDigitalExportData> getSimulateOrDigitExportData(PqDevParam.QueryParam queryParam) {
|
// public List<PqDevExcel.SimulateOrDigitalExportData> getSimulateOrDigitExportData(PqDevParam.QueryParam queryParam) {
|
||||||
List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
// List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
||||||
if (ObjectUtil.isNotNull(pqDevs)) {
|
// if (ObjectUtil.isNotNull(pqDevs)) {
|
||||||
this.visualize(pqDevs);
|
// this.visualize(pqDevs);
|
||||||
List<PqDevExcel.SimulateOrDigitalExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.SimulateOrDigitalExportData.class);
|
// List<PqDevExcel.SimulateOrDigitalExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.SimulateOrDigitalExportData.class);
|
||||||
return pqDevExcels;
|
// return pqDevExcels;
|
||||||
} else {
|
// } else {
|
||||||
return Collections.emptyList();
|
// return Collections.emptyList();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public List<PqDevExcel.ContrastExportData> getContrastExportData(PqDevParam.QueryParam queryParam) {
|
// public List<PqDevExcel.ContrastExportData> getContrastExportData(PqDevParam.QueryParam queryParam) {
|
||||||
List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
// List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
||||||
if (ObjectUtil.isNotEmpty(pqDevs)) {
|
// if (ObjectUtil.isNotEmpty(pqDevs)) {
|
||||||
this.visualize(pqDevs);
|
// this.visualize(pqDevs);
|
||||||
List<PqDevExcel.ContrastExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.ContrastExportData.class);
|
// List<PqDevExcel.ContrastExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.ContrastExportData.class);
|
||||||
for (int i = 0; i < pqDevs.size(); i++) {
|
// for (int i = 0; i < pqDevs.size(); i++) {
|
||||||
List<PqMonitorExcel.ExportData> monitorExportList = BeanUtil.copyToList(pqMonitorService.listPqMonitorByDevId(pqDevs.get(i).getId()), PqMonitorExcel.ExportData.class);
|
// List<PqMonitorExcel.ExportData> monitorExportList = BeanUtil.copyToList(pqMonitorService.listPqMonitorByDevId(pqDevs.get(i).getId()), PqMonitorExcel.ExportData.class);
|
||||||
monitorExportList.forEach(monitor -> {
|
// monitorExportList.forEach(monitor -> {
|
||||||
monitor.setPtType(dictDataService.getDictDataById(monitor.getPtType()).getName());
|
// monitor.setPtType(dictDataService.getDictDataById(monitor.getPtType()).getName());
|
||||||
});
|
// });
|
||||||
pqDevExcels.get(i).setMonitorList(monitorExportList);
|
// pqDevExcels.get(i).setMonitorList(monitorExportList);
|
||||||
}
|
// }
|
||||||
return pqDevExcels;
|
// return pqDevExcels;
|
||||||
} else {
|
// } else {
|
||||||
return Collections.emptyList();
|
// return Collections.emptyList();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void downloadTemplate() {
|
// @Transactional(rollbackFor = {Exception.class})
|
||||||
ExcelUtil.exportExcel("被检设备模板.xlsx", PqDevExcel.ContrastImportData.class, Collections.emptyList());
|
// public void importContrastData(List<PqDevExcel.ContrastImportData> pqDevExcelList) {
|
||||||
}
|
// List<PqDev> devList = new ArrayList<>();
|
||||||
|
// List<PqMonitor> monitorList = new ArrayList<>();
|
||||||
@Override
|
// String patternId = dictDataService.getDictDataByName(PatternEnum.CONTRAST.getMsg()).getId();
|
||||||
@Transactional(rollbackFor = {Exception.class})
|
// pqDevExcelList.forEach(pqDevExcel -> {
|
||||||
public void importContrastData(List<PqDevExcel.ContrastImportData> pqDevExcelList) {
|
// PqDev pqDev = new PqDev();
|
||||||
List<PqDev> devList = new ArrayList<>();
|
// BeanUtil.copyProperties(pqDevExcel, pqDev);
|
||||||
List<PqMonitor> monitorList = new ArrayList<>();
|
// pqDev.setId(UUID.randomUUID().toString().replaceAll("-", ""));
|
||||||
String patternId = dictDataService.getDictDataByName(PatternEnum.CONTRAST.getMsg()).getId();
|
// pqDev.setPattern(patternId);
|
||||||
pqDevExcelList.forEach(pqDevExcel -> {
|
//// pqDev.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue());
|
||||||
PqDev pqDev = new PqDev();
|
//// pqDev.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue());
|
||||||
BeanUtil.copyProperties(pqDevExcel, pqDev);
|
//// pqDev.setCheckState(CheckStateEnum.UNCHECKED.getValue());
|
||||||
pqDev.setId(UUID.randomUUID().toString().replaceAll("-", ""));
|
//// pqDev.setReportState(DevReportStateEnum.UNCHECKED.getValue());
|
||||||
pqDev.setPattern(patternId);
|
//// pqDev.setDocumentState(DevDocumentStateEnum.UNDOCUMENTED.getValue());
|
||||||
// pqDev.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue());
|
//// pqDev.setCheckResult(CheckResultEnum.UNCHECKED.getValue());
|
||||||
// pqDev.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue());
|
// devList.add(pqDev);
|
||||||
// pqDev.setCheckState(CheckStateEnum.UNCHECKED.getValue());
|
//
|
||||||
// pqDev.setReportState(DevReportStateEnum.UNCHECKED.getValue());
|
// // 新增与被检设备绑定的监测点
|
||||||
// pqDev.setDocumentState(DevDocumentStateEnum.UNDOCUMENTED.getValue());
|
// List<PqMonitor> monitors = pqDevExcel.getMonitorList().stream()
|
||||||
// pqDev.setCheckResult(CheckResultEnum.UNCHECKED.getValue());
|
// .map(monitor -> {
|
||||||
devList.add(pqDev);
|
// PqMonitor monitorPo = new PqMonitor();
|
||||||
|
// BeanUtil.copyProperties(monitor, monitorPo);
|
||||||
// 新增与被检设备绑定的监测点
|
// monitorPo.setId(UUID.randomUUID().toString().replaceAll("-", ""));
|
||||||
List<PqMonitor> monitors = pqDevExcel.getMonitorList().stream()
|
// monitorPo.setDevId(pqDev.getId());
|
||||||
.map(monitor -> {
|
// monitorPo.setPtType(dictDataService.getDictDataByName(monitor.getPtType()).getId());
|
||||||
PqMonitor monitorPo = new PqMonitor();
|
// return monitorPo;
|
||||||
BeanUtil.copyProperties(monitor, monitorPo);
|
// }).collect(Collectors.toList());
|
||||||
monitorPo.setId(UUID.randomUUID().toString().replaceAll("-", ""));
|
// monitorList.addAll(monitors);
|
||||||
monitorPo.setDevId(pqDev.getId());
|
// });
|
||||||
monitorPo.setPtType(dictDataService.getDictDataByName(monitor.getPtType()).getId());
|
//
|
||||||
return monitorPo;
|
// //逆向可视化
|
||||||
}).collect(Collectors.toList());
|
// this.reverseVisualize(devList);
|
||||||
monitorList.addAll(monitors);
|
// this.saveBatch(devList);
|
||||||
});
|
//
|
||||||
|
// pqMonitorService.saveBatch(monitorList);
|
||||||
//逆向可视化
|
// }
|
||||||
this.reverseVisualize(devList);
|
//
|
||||||
this.saveBatch(devList);
|
// @Override
|
||||||
|
// @Transactional(rollbackFor = {Exception.class})
|
||||||
pqMonitorService.saveBatch(monitorList);
|
// public void importSimulateAndDigitalData(List<PqDevExcel.SimulateOrDigitalImportData> pqDevExcelList) {
|
||||||
}
|
// List<PqDev> pqDevList = BeanUtil.copyToList(pqDevExcelList, PqDev.class);
|
||||||
|
// //逆向可视化
|
||||||
@Override
|
// this.reverseVisualize(pqDevList);
|
||||||
@Transactional(rollbackFor = {Exception.class})
|
// this.saveBatch(pqDevList);
|
||||||
public void importSimulateAndDigitalData(List<PqDevExcel.SimulateOrDigitalImportData> pqDevExcelList) {
|
// }
|
||||||
List<PqDev> pqDevList = BeanUtil.copyToList(pqDevExcelList, PqDev.class);
|
|
||||||
//逆向可视化
|
|
||||||
this.reverseVisualize(pqDevList);
|
|
||||||
this.saveBatch(pqDevList);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> listUnbound(String pattern) {
|
public List<Map<String, Object>> listUnbound(String pattern) {
|
||||||
@@ -398,92 +398,6 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
return pqDevVO;
|
return pqDevVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<PqDev> listUnchecked() {
|
|
||||||
return this.lambdaQuery()
|
|
||||||
.eq(PqDev::getCheckState, CheckStateEnum.UNCHECKED.getValue())
|
|
||||||
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode())
|
|
||||||
.orderByAsc(PqDev::getCreateTime).list();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void visualize(List<PqDev> sourceList) {
|
|
||||||
sourceList.forEach(pqDev -> {
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getPattern())) {
|
|
||||||
DictData dictData = dictDataService.getDictDataById(pqDev.getPattern());
|
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
|
||||||
pqDev.setPattern(dictData.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getDevType())) {
|
|
||||||
DevType devType = devTypeService.getById(pqDev.getDevType());
|
|
||||||
if (ObjectUtil.isNotNull(devType)) {
|
|
||||||
pqDev.setDevType(devType.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getManufacturer())) {
|
|
||||||
DictData dictData = dictDataService.getDictDataById(pqDev.getManufacturer());
|
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
|
||||||
pqDev.setManufacturer(dictData.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getProtocol())) {
|
|
||||||
DictData dictData = dictDataService.getDictDataById(pqDev.getProtocol());
|
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
|
||||||
pqDev.setProtocol(dictData.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getSeries())) {
|
|
||||||
pqDev.setSeries(EncryptionUtil.decoderString(1, pqDev.getSeries()));
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getDevKey())) {
|
|
||||||
pqDev.setDevKey(EncryptionUtil.decoderString(1, pqDev.getDevKey()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void reverseVisualize(List<PqDev> sourceList) {
|
|
||||||
sourceList.forEach(pqDev -> {
|
|
||||||
// if (StrUtil.isNotBlank(pqDev.getPattern())) {
|
|
||||||
// DictData dictData = dictDataService.getDictDataByName(pqDev.getPattern());
|
|
||||||
// if (ObjectUtil.isNotNull(dictData)) {
|
|
||||||
// pqDev.setPattern(dictData.getId());
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getDevType())) {
|
|
||||||
DevType devType = devTypeService.getByName(pqDev.getDevType());
|
|
||||||
if (ObjectUtil.isNotNull(devType)) {
|
|
||||||
pqDev.setDevType(devType.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getManufacturer())) {
|
|
||||||
DictData dictData = dictDataService.getDictDataByName(pqDev.getManufacturer());
|
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
|
||||||
pqDev.setManufacturer(dictData.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getProtocol())) {
|
|
||||||
DictData dictData = dictDataService.getDictDataByName(pqDev.getProtocol());
|
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
|
||||||
pqDev.setProtocol(dictData.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getSeries())) {
|
|
||||||
pqDev.setSeries(EncryptionUtil.encodeString(1, pqDev.getSeries()));
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getDevKey())) {
|
|
||||||
pqDev.setDevKey(EncryptionUtil.encodeString(1, pqDev.getDevKey()));
|
|
||||||
}
|
|
||||||
pqDev.setState(DataStateEnum.ENABLE.getCode());
|
|
||||||
pqDev.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue());
|
|
||||||
pqDev.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue());
|
|
||||||
pqDev.setCheckState(CheckStateEnum.UNCHECKED.getValue());
|
|
||||||
pqDev.setReportState(DevReportStateEnum.UNCHECKED.getValue());
|
|
||||||
// pqDev.setDocumentState(DevDocumentStateEnum.UNDOCUMENTED.getValue());
|
|
||||||
pqDev.setCheckResult(CheckResultEnum.UNCHECKED.getValue());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取查询条件wrapper
|
* 获取查询条件wrapper
|
||||||
@@ -536,7 +450,7 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
// @Transactional(rollbackFor = {Exception.class})
|
@Transactional(rollbackFor = {Exception.class})
|
||||||
public boolean documented(List<String> ids) {
|
public boolean documented(List<String> ids) {
|
||||||
if (CollUtil.isNotEmpty(ids)) {
|
if (CollUtil.isNotEmpty(ids)) {
|
||||||
for (String id : ids) {
|
for (String id : ids) {
|
||||||
@@ -574,7 +488,6 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean updateResult(List<String> ids, List<String> valueType, String code) {
|
public boolean updateResult(List<String> ids, List<String> valueType, String code) {
|
||||||
if (CollUtil.isNotEmpty(ids)) {
|
if (CollUtil.isNotEmpty(ids)) {
|
||||||
@@ -664,178 +577,156 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
return this.count(queryWrapper);
|
return this.count(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void exportCNDev(PqDevParam.QueryParam queryParam) {
|
|
||||||
List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
|
||||||
List<CNDevExcel> pqDevExcels = null;
|
|
||||||
if (ObjectUtil.isNotEmpty(pqDevs)) {
|
|
||||||
this.visualizeCNDev(pqDevs);
|
|
||||||
pqDevExcels = BeanUtil.copyToList(pqDevs, CNDevExcel.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
ExcelUtil.exportExcelPullDown(new ExportParams(), "被检设备导出数据.xlsx", 1, this.getCNDevPullDownList(), CNDevExcel.class, ObjectUtil.isEmpty(pqDevExcels) ? new ArrayList<>() : pqDevExcels);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void downloadCNDevTemplate() {
|
|
||||||
ExcelUtil.exportExcelPullDown(new ExportParams(), "被检设备模板.xlsx", 1, this.getCNDevPullDownList(), CNDevExcel.class, new ArrayList<>());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void importCNDev(List<CNDevExcel> cnDevExcelList, String patternId,String planId) {
|
|
||||||
List<PqDev> oldDevList = BeanUtil.copyToList(cnDevExcelList, PqDev.class);
|
|
||||||
//逆向可视化
|
|
||||||
this.reverseVisualizeCNDev(oldDevList, patternId);
|
|
||||||
|
|
||||||
List<PqDev> newDevList = new ArrayList<>();
|
|
||||||
PqDevParam param = new PqDevParam.UpdateParam();
|
|
||||||
oldDevList.forEach(pqDev -> {
|
|
||||||
pqDev.setPlanId(planId);
|
|
||||||
if (pqDev.getEncryptionFlag() == 1) {
|
|
||||||
if (StrUtil.isNotBlank(pqDev.getSeries()) && StrUtil.isNotBlank(pqDev.getDevKey())) {
|
|
||||||
pqDev.setSeries(EncryptionUtil.encodeString(1, pqDev.getSeries()));
|
|
||||||
pqDev.setDevKey(EncryptionUtil.encodeString(1, pqDev.getDevKey()));
|
|
||||||
} else {
|
|
||||||
throw new BusinessException(DevResponseEnum.SERIES_AND_DEVKEY_NOT_BLANK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String name = pqDev.getName();
|
|
||||||
if (name.contains("-")) {
|
|
||||||
String[] split = name.split("-");
|
|
||||||
if (split.length == 2) {
|
|
||||||
long start = Long.parseLong(split[0]);
|
|
||||||
long end = Long.parseLong(split[1]);
|
|
||||||
// 避免起始大于结束
|
|
||||||
if (start > end) {
|
|
||||||
long temp = start;
|
|
||||||
start = end;
|
|
||||||
end = temp;
|
|
||||||
}
|
|
||||||
for (long i = start; i <= end; i++) {
|
|
||||||
PqDev dev = new PqDev();
|
|
||||||
BeanUtil.copyProperties(pqDev, dev);
|
|
||||||
dev.setName(String.valueOf(i));
|
|
||||||
dev.setCreateId(String.valueOf(i));
|
|
||||||
dev.setPlanId(planId);
|
|
||||||
|
|
||||||
param.setName(dev.getName());
|
|
||||||
param.setCreateId(dev.getName());
|
|
||||||
param.setDevType(dev.getDevType());
|
|
||||||
this.checkRepeat(param, false);
|
|
||||||
|
|
||||||
long count = newDevList.stream().filter(d -> d.getName().equals(dev.getName())).count();
|
|
||||||
if (count == 0) {
|
|
||||||
newDevList.add(dev);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new BusinessException(DevResponseEnum.IMPORT_DATA_FORMAT_FAIL);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
param.setName(pqDev.getName());
|
|
||||||
param.setCreateId(pqDev.getCreateId());
|
|
||||||
param.setDevType(pqDev.getDevType());
|
|
||||||
this.checkRepeat(param, false);
|
|
||||||
|
|
||||||
long count = newDevList.stream().filter(dev -> dev.getName().equals(pqDev.getName())).count();
|
|
||||||
if (count == 0) {
|
|
||||||
newDevList.add(pqDev);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
this.saveBatch(newDevList);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PqDev> listByPlanIds(List<String> planIds) {
|
public List<PqDev> listByPlanIds(List<String> planIds) {
|
||||||
return this.lambdaQuery().in(PqDev::getPlanId, planIds).eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).list();
|
return this.lambdaQuery().in(PqDev::getPlanId, planIds).eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).list();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visualizeCNDev(List<PqDev> pqDevs) {
|
@Override
|
||||||
pqDevs.forEach(pqDev -> {
|
public void exportDev(PqDevParam.QueryParam queryParam) {
|
||||||
pqDev.setPreinvestmentPlan(dictDataService.getDictDataById(pqDev.getPreinvestmentPlan()).getName());
|
String currrentScene = sysTestConfigService.getCurrrentScene();
|
||||||
pqDev.setDevType(devTypeService.getById(pqDev.getDevType()).getName());
|
switch (currrentScene) {
|
||||||
pqDev.setProtocol(dictDataService.getDictDataById(pqDev.getProtocol()).getName());
|
case "0":
|
||||||
});
|
this.exportProvinceDev(queryParam);
|
||||||
|
break;
|
||||||
|
case "1":
|
||||||
|
this.exportCNDev(queryParam);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reverseVisualizeCNDev(List<PqDev> pqDevs, String patternId) {
|
@Override
|
||||||
pqDevs.forEach(pqDev -> {
|
public void downloadTemplate() {
|
||||||
pqDev.setPreinvestmentPlan(dictDataService.getDictDataByName(pqDev.getPreinvestmentPlan()).getId());
|
String currrentScene = sysTestConfigService.getCurrrentScene();
|
||||||
DevType devType = devTypeService.getByName(pqDev.getDevType());
|
switch (currrentScene) {
|
||||||
pqDev.setDevType(devType.getId());
|
case "0":
|
||||||
// pqDev.setIcdId(devType.getIcd());
|
this.downloadProvinceDevTemplate();
|
||||||
// pqDev.setDevVolt(devType.getDevVolt());
|
break;
|
||||||
// pqDev.setDevCurr(devType.getDevCurr());
|
case "1":
|
||||||
// pqDev.setDevChns(devType.getDevChns());
|
this.downloadCNDevTemplate();
|
||||||
pqDev.setPattern(patternId);
|
break;
|
||||||
pqDev.setProtocol(dictDataService.getDictDataByName(pqDev.getProtocol()).getId());
|
default:
|
||||||
pqDev.setCreateDate(LocalDateTime.now().toLocalDate());
|
break;
|
||||||
pqDev.setCreateId(pqDev.getName());
|
}
|
||||||
pqDev.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue());
|
|
||||||
pqDev.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue());
|
|
||||||
pqDev.setCheckState(CheckStateEnum.UNCHECKED.getValue());
|
|
||||||
pqDev.setReportState(DevReportStateEnum.UNCHECKED.getValue());
|
|
||||||
pqDev.setCheckResult(CheckResultEnum.UNCHECKED.getValue());
|
|
||||||
pqDev.setState(DataStateEnum.ENABLE.getCode());
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 获取检测状态饼状图数据
|
public void importDev(MultipartFile file, String patternId, String planId, HttpServletResponse response) {
|
||||||
*
|
String currrentScene = sysTestConfigService.getCurrrentScene();
|
||||||
* @param map 检测状态分组map
|
switch (currrentScene) {
|
||||||
* @return 检测状态饼状图数据
|
case "0":
|
||||||
*/
|
this.importProvinceDev(file, patternId, planId, response);
|
||||||
// private List<Map<String, Object>> getCheckStatePieData(Map<Integer, Long> map) {
|
break;
|
||||||
// List<Map<String, Object>> result = new ArrayList<>();
|
case "1":
|
||||||
// for (CheckStateEnum e : CheckStateEnum.values()) {
|
this.importCNDev(file, patternId, planId, response);
|
||||||
// Map<String, Object> temp = new HashMap<>();
|
break;
|
||||||
// temp.put("name", e.getMsg());
|
default:
|
||||||
// temp.put("value", map.getOrDefault(e.getValue(), 0L));
|
break;
|
||||||
// result.add(temp);
|
}
|
||||||
// }
|
}
|
||||||
// return result;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 获取检测结果饼状图数据
|
@Transactional(rollbackFor = Exception.class)
|
||||||
*
|
public void importCNDev(MultipartFile file, String patternId, String planId, HttpServletResponse response) {
|
||||||
* @param map 检测结果分组map
|
ImportParams params = new ImportParams();
|
||||||
* @return 检测结果饼状图数据
|
params.setStartSheetIndex(0);
|
||||||
*/
|
params.setSheetNum(1);
|
||||||
// private List<Map<String, Object>> getCheckResultPieData(Map<Integer, Long> map) {
|
params.setHeadRows(1);
|
||||||
// List<Map<String, Object>> result = new ArrayList<>();
|
params.setNeedVerify(true);
|
||||||
// for (CheckResultEnum e : CheckResultEnum.values()) {
|
|
||||||
// Map<String, Object> temp = new HashMap<>();
|
|
||||||
// temp.put("name", e.getMsg());
|
|
||||||
// temp.put("value", map.getOrDefault(e.getValue(), 0L));
|
|
||||||
// result.add(temp);
|
|
||||||
// }
|
|
||||||
// return result;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
List<CNDevExcel> cnDevExcelList = null;
|
||||||
* 获取报告状态饼状图数据
|
try {
|
||||||
*
|
ExcelImportResult<CNDevExcel> excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), CNDevExcel.class, params);
|
||||||
* @param map 报告状态分组map
|
if (excelImportResult.isVerifyFail()) {
|
||||||
* @return 报告状态饼状图数据
|
// 此处前端要做特殊处理,具体可以参考技术监督的数据导入
|
||||||
*/
|
Workbook failWorkbook = excelImportResult.getFailWorkbook();
|
||||||
// private List<Map<String, Object>> getReportStatePieData(Map<Integer, Long> map) {
|
PoiUtil.exportFileByWorkbook(failWorkbook, "非法被检设备数据.xlsx", response);
|
||||||
// List<Map<String, Object>> result = new ArrayList<>();
|
} else {
|
||||||
// for (DevReportStateEnum e : DevReportStateEnum.values()) {
|
cnDevExcelList = excelImportResult.getList();
|
||||||
// Map<String, Object> temp = new HashMap<>();
|
}
|
||||||
// temp.put("name", e.getMsg());
|
} catch (Exception e) {
|
||||||
// temp.put("value", map.getOrDefault(e.getValue(), 0L));
|
throw new BusinessException(DevResponseEnum.IMPORT_DATA_FAIL);
|
||||||
// result.add(temp);
|
}
|
||||||
// }
|
this.importCNDev(cnDevExcelList, patternId, planId);
|
||||||
// return result;
|
}
|
||||||
// }
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void importCNDev(List<CNDevExcel> cnDevExcelList, String patternId, String planId) {
|
||||||
|
if (CollUtil.isNotEmpty(cnDevExcelList)) {
|
||||||
|
|
||||||
|
|
||||||
|
List<PqDev> oldDevList = BeanUtil.copyToList(cnDevExcelList, PqDev.class);
|
||||||
|
//逆向可视化
|
||||||
|
this.reverseVisualizeCNDev(oldDevList, patternId);
|
||||||
|
|
||||||
|
List<PqDev> newDevList = new ArrayList<>();
|
||||||
|
PqDevParam param = new PqDevParam.UpdateParam();
|
||||||
|
oldDevList.forEach(pqDev -> {
|
||||||
|
pqDev.setPlanId(planId);
|
||||||
|
if (pqDev.getEncryptionFlag() == 1) {
|
||||||
|
if (StrUtil.isNotBlank(pqDev.getSeries()) && StrUtil.isNotBlank(pqDev.getDevKey())) {
|
||||||
|
pqDev.setSeries(EncryptionUtil.encodeString(1, pqDev.getSeries()));
|
||||||
|
pqDev.setDevKey(EncryptionUtil.encodeString(1, pqDev.getDevKey()));
|
||||||
|
} else {
|
||||||
|
throw new BusinessException(DevResponseEnum.SERIES_AND_DEVKEY_NOT_BLANK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String name = pqDev.getName();
|
||||||
|
if (name.contains("-")) {
|
||||||
|
String[] split = name.split("-");
|
||||||
|
if (split.length == 2) {
|
||||||
|
long start = Long.parseLong(split[0]);
|
||||||
|
long end = Long.parseLong(split[1]);
|
||||||
|
// 避免起始大于结束
|
||||||
|
if (start > end) {
|
||||||
|
long temp = start;
|
||||||
|
start = end;
|
||||||
|
end = temp;
|
||||||
|
}
|
||||||
|
for (long i = start; i <= end; i++) {
|
||||||
|
PqDev dev = new PqDev();
|
||||||
|
BeanUtil.copyProperties(pqDev, dev);
|
||||||
|
dev.setName(String.valueOf(i));
|
||||||
|
dev.setCreateId(String.valueOf(i));
|
||||||
|
dev.setPlanId(planId);
|
||||||
|
dev.setManufacturer("8fa73802c9e1abab973adcbeb0d58567"); // 南京灿能字典项目对应的id
|
||||||
|
|
||||||
|
param.setName(dev.getName());
|
||||||
|
param.setCreateId(dev.getName());
|
||||||
|
param.setDevType(dev.getDevType());
|
||||||
|
this.checkRepeat(param, false);
|
||||||
|
|
||||||
|
long count = newDevList.stream().filter(d -> d.getName().equals(dev.getName())).count();
|
||||||
|
if (count == 0) {
|
||||||
|
newDevList.add(dev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new BusinessException(DevResponseEnum.IMPORT_DATA_FORMAT_FAIL);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
param.setName(pqDev.getName());
|
||||||
|
param.setCreateId(pqDev.getCreateId());
|
||||||
|
param.setDevType(pqDev.getDevType());
|
||||||
|
this.checkRepeat(param, false);
|
||||||
|
pqDev.setManufacturer("8fa73802c9e1abab973adcbeb0d58567"); // 南京灿能字典项目对应的id
|
||||||
|
|
||||||
|
long count = newDevList.stream().filter(dev -> dev.getName().equals(pqDev.getName())).count();
|
||||||
|
if (count == 0) {
|
||||||
|
newDevList.add(pqDev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.saveBatch(newDevList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查设备是否重复
|
* 检查设备是否重复
|
||||||
@@ -864,7 +755,34 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出灿能二楼设备数据
|
||||||
|
*
|
||||||
|
* @param queryParam
|
||||||
|
*/
|
||||||
|
private void exportCNDev(PqDevParam.QueryParam queryParam) {
|
||||||
|
List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
||||||
|
List<CNDevExcel> pqDevExcels = null;
|
||||||
|
if (ObjectUtil.isNotEmpty(pqDevs)) {
|
||||||
|
this.visualizeCNDev(pqDevs);
|
||||||
|
pqDevExcels = BeanUtil.copyToList(pqDevs, CNDevExcel.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
ExcelUtil.exportExcelPullDown(new ExportParams(), "被检设备导出数据.xlsx", 1, this.getCNDevPullDownList(), CNDevExcel.class, ObjectUtil.isEmpty(pqDevExcels) ? new ArrayList<>() : pqDevExcels);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载灿能二楼设备模板文件
|
||||||
|
*/
|
||||||
|
private void downloadCNDevTemplate() {
|
||||||
|
ExcelUtil.exportExcelPullDown(new ExportParams(), "被检设备模板.xlsx", 1, this.getCNDevPullDownList(), CNDevExcel.class, new ArrayList<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取灿能二楼设备导出、导出文件模板的下拉列表
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private List<PullDown> getCNDevPullDownList() {
|
private List<PullDown> getCNDevPullDownList() {
|
||||||
List<PullDown> pullDowns = new ArrayList<>();
|
List<PullDown> pullDowns = new ArrayList<>();
|
||||||
// 预投计划
|
// 预投计划
|
||||||
@@ -920,4 +838,246 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
|
|
||||||
return pullDowns;
|
return pullDowns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可视化灿能二楼设备数据
|
||||||
|
*
|
||||||
|
* @param pqDevs
|
||||||
|
*/
|
||||||
|
public void visualizeCNDev(List<PqDev> pqDevs) {
|
||||||
|
pqDevs.forEach(pqDev -> {
|
||||||
|
pqDev.setPreinvestmentPlan(dictDataService.getDictDataById(pqDev.getPreinvestmentPlan()).getName());
|
||||||
|
pqDev.setDevType(devTypeService.getById(pqDev.getDevType()).getName());
|
||||||
|
pqDev.setProtocol(dictDataService.getDictDataById(pqDev.getProtocol()).getName());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 逆向可视化灿能二楼设备数据
|
||||||
|
*
|
||||||
|
* @param pqDevs 设备列表
|
||||||
|
* @param patternId 模式Id
|
||||||
|
*/
|
||||||
|
public void reverseVisualizeCNDev(List<PqDev> pqDevs, String patternId) {
|
||||||
|
pqDevs.forEach(pqDev -> {
|
||||||
|
pqDev.setPreinvestmentPlan(dictDataService.getDictDataByName(pqDev.getPreinvestmentPlan()).getId());
|
||||||
|
DevType devType = devTypeService.getByName(pqDev.getDevType());
|
||||||
|
pqDev.setDevType(devType.getId());
|
||||||
|
pqDev.setPattern(patternId);
|
||||||
|
pqDev.setProtocol(dictDataService.getDictDataByName(pqDev.getProtocol()).getId());
|
||||||
|
pqDev.setCreateDate(LocalDateTime.now().toLocalDate());
|
||||||
|
pqDev.setCreateId(pqDev.getName());
|
||||||
|
pqDev.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue());
|
||||||
|
pqDev.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue());
|
||||||
|
pqDev.setCheckState(CheckStateEnum.UNCHECKED.getValue());
|
||||||
|
pqDev.setReportState(DevReportStateEnum.UNCHECKED.getValue());
|
||||||
|
pqDev.setCheckResult(CheckResultEnum.UNCHECKED.getValue());
|
||||||
|
pqDev.setState(DataStateEnum.ENABLE.getCode());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出省级平台设备数据
|
||||||
|
*
|
||||||
|
* @param queryParam
|
||||||
|
*/
|
||||||
|
private void exportProvinceDev(PqDevParam.QueryParam queryParam) {
|
||||||
|
List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
||||||
|
List<ProvinceDevExcel> pqDevExcels = null;
|
||||||
|
if (ObjectUtil.isNotEmpty(pqDevs)) {
|
||||||
|
this.visualizeProvinceDev(pqDevs);
|
||||||
|
pqDevExcels = BeanUtil.copyToList(pqDevs, ProvinceDevExcel.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
ExcelUtil.exportExcelPullDown(new ExportParams(), "被检设备导出数据.xlsx", 1, this.getProvinceDevPullDownList(), ProvinceDevExcel.class, ObjectUtil.isEmpty(pqDevExcels) ? new ArrayList<>() : pqDevExcels);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载省级平台设备模板文件
|
||||||
|
*/
|
||||||
|
private void downloadProvinceDevTemplate() {
|
||||||
|
ExcelUtil.exportExcelPullDown(new ExportParams(), "被检设备模板.xlsx", 1, this.getProvinceDevPullDownList(), ProvinceDevExcel.class, new ArrayList<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取省级平台设备导出、导出文件模板的下拉列表
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<PullDown> getProvinceDevPullDownList() {
|
||||||
|
List<PullDown> pullDowns = new ArrayList<>();
|
||||||
|
List<DictData> dictDataList = null;
|
||||||
|
PullDown pullDown = null;
|
||||||
|
|
||||||
|
// 设备类型
|
||||||
|
List<DevType> devTypeList = devTypeService.listAll();
|
||||||
|
pullDown = new PullDown();
|
||||||
|
pullDown.setFirstCol(2);
|
||||||
|
pullDown.setLastCol(2);
|
||||||
|
pullDown.setStrings(devTypeList.stream().map(DevType::getName).collect(Collectors.toList()));
|
||||||
|
pullDowns.add(pullDown);
|
||||||
|
|
||||||
|
// 设备厂家
|
||||||
|
DictType dictType = dictTypeService.getByCode("Dev_Manufacturers");
|
||||||
|
if (ObjectUtil.isNotNull(dictType)) {
|
||||||
|
dictDataList = dictDataService.getDictDataByTypeId(dictType.getId());
|
||||||
|
|
||||||
|
pullDown = new PullDown();
|
||||||
|
pullDown.setFirstCol(3);
|
||||||
|
pullDown.setLastCol(3);
|
||||||
|
pullDown.setStrings(dictDataList.stream().map(DictData::getName).collect(Collectors.toList()));
|
||||||
|
pullDowns.add(pullDown);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通讯协议
|
||||||
|
dictType = dictTypeService.getByCode("Protocol");
|
||||||
|
if (ObjectUtil.isNotNull(dictType)) {
|
||||||
|
dictDataList = dictDataService.getDictDataByTypeId(dictType.getId());
|
||||||
|
|
||||||
|
pullDown = new PullDown();
|
||||||
|
pullDown.setFirstCol(7);
|
||||||
|
pullDown.setLastCol(7);
|
||||||
|
pullDown.setStrings(dictDataList.stream().map(DictData::getName).collect(Collectors.toList()));
|
||||||
|
pullDowns.add(pullDown);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 是否加密
|
||||||
|
pullDown = new PullDown();
|
||||||
|
pullDown.setFirstCol(10);
|
||||||
|
pullDown.setLastCol(10);
|
||||||
|
pullDown.setStrings(Arrays.asList("是", "否"));
|
||||||
|
pullDowns.add(pullDown);
|
||||||
|
|
||||||
|
// 是否支持系数校准
|
||||||
|
pullDown = new PullDown();
|
||||||
|
pullDown.setFirstCol(13);
|
||||||
|
pullDown.setLastCol(13);
|
||||||
|
pullDown.setStrings(Arrays.asList("是", "否"));
|
||||||
|
pullDowns.add(pullDown);
|
||||||
|
|
||||||
|
return pullDowns;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void importProvinceDev(MultipartFile file, String patternId, String planId, HttpServletResponse response) {
|
||||||
|
ImportParams params = new ImportParams();
|
||||||
|
params.setStartSheetIndex(0);
|
||||||
|
params.setSheetNum(1);
|
||||||
|
params.setHeadRows(1);
|
||||||
|
params.setNeedVerify(true);
|
||||||
|
|
||||||
|
List<ProvinceDevExcel> cnDevExcelList = null;
|
||||||
|
try {
|
||||||
|
ExcelImportResult<ProvinceDevExcel> excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), ProvinceDevExcel.class, params);
|
||||||
|
if (excelImportResult.isVerifyFail()) {
|
||||||
|
// 此处前端要做特殊处理,具体可以参考技术监督的数据导入
|
||||||
|
Workbook failWorkbook = excelImportResult.getFailWorkbook();
|
||||||
|
PoiUtil.exportFileByWorkbook(failWorkbook, "非法被检设备数据.xlsx", response);
|
||||||
|
} else {
|
||||||
|
cnDevExcelList = excelImportResult.getList();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BusinessException(DevResponseEnum.IMPORT_DATA_FAIL);
|
||||||
|
}
|
||||||
|
this.importProvinceDev(cnDevExcelList, patternId, planId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void importProvinceDev(List<ProvinceDevExcel> proviceDevExcelList, String patternId, String planId) {
|
||||||
|
if (CollUtil.isNotEmpty(proviceDevExcelList)) {
|
||||||
|
|
||||||
|
List<PqDev> oldDevList = BeanUtil.copyToList(proviceDevExcelList, PqDev.class);
|
||||||
|
//逆向可视化
|
||||||
|
this.reverseVisualizeProvinceDev(oldDevList, patternId);
|
||||||
|
|
||||||
|
List<PqDev> newDevList = new ArrayList<>();
|
||||||
|
PqDevParam param = new PqDevParam.UpdateParam();
|
||||||
|
oldDevList.forEach(pqDev -> {
|
||||||
|
pqDev.setPlanId(planId);
|
||||||
|
if (pqDev.getEncryptionFlag() == 1) {
|
||||||
|
if (StrUtil.isNotBlank(pqDev.getSeries()) && StrUtil.isNotBlank(pqDev.getDevKey())) {
|
||||||
|
pqDev.setSeries(EncryptionUtil.encodeString(1, pqDev.getSeries()));
|
||||||
|
pqDev.setDevKey(EncryptionUtil.encodeString(1, pqDev.getDevKey()));
|
||||||
|
} else {
|
||||||
|
throw new BusinessException(DevResponseEnum.SERIES_AND_DEVKEY_NOT_BLANK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String name = pqDev.getName();
|
||||||
|
if (name.contains("-")) {
|
||||||
|
String[] split = name.split("-");
|
||||||
|
if (split.length == 2) {
|
||||||
|
long start = Long.parseLong(split[0]);
|
||||||
|
long end = Long.parseLong(split[1]);
|
||||||
|
// 避免起始大于结束
|
||||||
|
if (start > end) {
|
||||||
|
long temp = start;
|
||||||
|
start = end;
|
||||||
|
end = temp;
|
||||||
|
}
|
||||||
|
for (long i = start; i <= end; i++) {
|
||||||
|
PqDev dev = new PqDev();
|
||||||
|
BeanUtil.copyProperties(pqDev, dev);
|
||||||
|
dev.setName(String.valueOf(i));
|
||||||
|
// todo 这里建议和实际情况结合
|
||||||
|
dev.setCreateId(String.valueOf(i));
|
||||||
|
dev.setPlanId(planId);
|
||||||
|
|
||||||
|
param.setName(dev.getName());
|
||||||
|
//param.setCreateId(dev.getName());
|
||||||
|
param.setDevType(dev.getDevType());
|
||||||
|
//this.checkRepeat(param, false);
|
||||||
|
|
||||||
|
long count = newDevList.stream().filter(d -> d.getName().equals(dev.getName())).count();
|
||||||
|
if (count == 0) {
|
||||||
|
newDevList.add(dev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new BusinessException(DevResponseEnum.IMPORT_DATA_FORMAT_FAIL);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
param.setName(pqDev.getName());
|
||||||
|
param.setCreateId(pqDev.getCreateId());
|
||||||
|
param.setDevType(pqDev.getDevType());
|
||||||
|
this.checkRepeat(param, false);
|
||||||
|
|
||||||
|
long count = newDevList.stream().filter(dev -> dev.getName().equals(pqDev.getName())).count();
|
||||||
|
if (count == 0) {
|
||||||
|
newDevList.add(pqDev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.saveBatch(newDevList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visualizeProvinceDev(List<PqDev> pqDevs) {
|
||||||
|
pqDevs.forEach(pqDev -> {
|
||||||
|
pqDev.setDevType(devTypeService.getById(pqDev.getDevType()).getName());
|
||||||
|
pqDev.setManufacturer(dictDataService.getDictDataById(pqDev.getManufacturer()).getName());
|
||||||
|
pqDev.setProtocol(dictDataService.getDictDataById(pqDev.getProtocol()).getName());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reverseVisualizeProvinceDev(List<PqDev> pqDevs, String patternId) {
|
||||||
|
pqDevs.forEach(pqDev -> {
|
||||||
|
DevType devType = devTypeService.getByName(pqDev.getDevType());
|
||||||
|
pqDev.setDevType(devType.getId());
|
||||||
|
pqDev.setPattern(patternId);
|
||||||
|
pqDev.setManufacturer(dictDataService.getDictDataByName(pqDev.getManufacturer()).getId());
|
||||||
|
pqDev.setProtocol(dictDataService.getDictDataByName(pqDev.getProtocol()).getId());
|
||||||
|
pqDev.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue());
|
||||||
|
pqDev.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue());
|
||||||
|
pqDev.setCheckState(CheckStateEnum.UNCHECKED.getValue());
|
||||||
|
pqDev.setReportState(DevReportStateEnum.UNCHECKED.getValue());
|
||||||
|
pqDev.setCheckResult(CheckResultEnum.UNCHECKED.getValue());
|
||||||
|
pqDev.setState(DataStateEnum.ENABLE.getCode());
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,6 +83,19 @@ public class ResultController extends BaseController {
|
|||||||
resultService.exportRawData(queryParam);
|
resultService.exportRawData(queryParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPDATE)
|
||||||
|
@PostMapping("/reCalculate")
|
||||||
|
@ApiOperation("重新计算检测结果")
|
||||||
|
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
|
||||||
|
public HttpResult<Object> reCalculate(@RequestBody ResultParam.ChangeErrorSystemParam param) {
|
||||||
|
String methodDescribe = getMethodDescribe("reCalculate");
|
||||||
|
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, param);
|
||||||
|
|
||||||
|
resultService.reCalculate(param);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPDATE)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPDATE)
|
||||||
@PostMapping("/changeErrorSystem")
|
@PostMapping("/changeErrorSystem")
|
||||||
@ApiOperation("更换误差体系")
|
@ApiOperation("更换误差体系")
|
||||||
|
|||||||
@@ -59,4 +59,10 @@ public interface IResultService {
|
|||||||
* @param code
|
* @param code
|
||||||
*/
|
*/
|
||||||
void deleteTempTable(String code);
|
void deleteTempTable(String code);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重新计算
|
||||||
|
* @param param
|
||||||
|
*/
|
||||||
|
void reCalculate(ResultParam.ChangeErrorSystemParam param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.njcn.gather.result.service.impl;
|
|||||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||||
@@ -13,7 +14,6 @@ import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
|||||||
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
||||||
import com.njcn.gather.detection.pojo.po.DevData;
|
import com.njcn.gather.detection.pojo.po.DevData;
|
||||||
import com.njcn.gather.detection.service.impl.DetectionServiceImpl;
|
import com.njcn.gather.detection.service.impl.DetectionServiceImpl;
|
||||||
import com.njcn.gather.detection.util.socket.MsgUtil;
|
|
||||||
import com.njcn.gather.device.service.IPqDevService;
|
import com.njcn.gather.device.service.IPqDevService;
|
||||||
import com.njcn.gather.plan.pojo.po.AdPlan;
|
import com.njcn.gather.plan.pojo.po.AdPlan;
|
||||||
import com.njcn.gather.plan.service.IAdPlanService;
|
import com.njcn.gather.plan.service.IAdPlanService;
|
||||||
@@ -52,6 +52,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -862,15 +864,21 @@ public class ResultServiceImpl implements IResultService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void changeErrorSystem(ResultParam.ChangeErrorSystemParam param) {
|
public void changeErrorSystem(ResultParam.ChangeErrorSystemParam param) {
|
||||||
this.createTempResultTable(param.getCode() + "");
|
this.createTempResultTable(param.getCode() + "_temp");
|
||||||
this.insertTempResultTable(param.getPlanId(), param.getScriptId(), param.getCode() + "", param.getErrorSysId(), param.getDeviceId());
|
this.calculateResult(param.getPlanId(), param.getScriptId(), param.getCode() + "_temp", param.getErrorSysId(), param.getDeviceId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteTempTable(String code) {
|
public void deleteTempTable(String code) {
|
||||||
|
code = code + "_temp";
|
||||||
this.dropTempResultTable(code);
|
this.dropTempResultTable(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reCalculate(ResultParam.ChangeErrorSystemParam param) {
|
||||||
|
this.calculateResult(param.getPlanId(), param.getScriptId(), param.getCode(), param.getErrorSysId(), param.getDeviceId());
|
||||||
|
}
|
||||||
|
|
||||||
private Integer conform(Set<Integer> numbers) {
|
private Integer conform(Set<Integer> numbers) {
|
||||||
if (CollUtil.isNotEmpty(numbers)) {
|
if (CollUtil.isNotEmpty(numbers)) {
|
||||||
if (numbers.size() > 1) {
|
if (numbers.size() > 1) {
|
||||||
@@ -892,7 +900,6 @@ public class ResultServiceImpl implements IResultService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拷贝结果表
|
* 拷贝结果表
|
||||||
*
|
*
|
||||||
@@ -900,7 +907,8 @@ public class ResultServiceImpl implements IResultService {
|
|||||||
*/
|
*/
|
||||||
private void createTempResultTable(String code) {
|
private void createTempResultTable(String code) {
|
||||||
this.dropTempResultTable(code);
|
this.dropTempResultTable(code);
|
||||||
tableGenMapper.genAdNonHarmonicResultTable(code + "_temp");
|
String oldCode = code.replace("_temp", "");
|
||||||
|
tableGenMapper.genAdNonHarmonicResultTable(code);
|
||||||
StringBuilder A = new StringBuilder();
|
StringBuilder A = new StringBuilder();
|
||||||
StringBuilder B = new StringBuilder();
|
StringBuilder B = new StringBuilder();
|
||||||
StringBuilder C = new StringBuilder();
|
StringBuilder C = new StringBuilder();
|
||||||
@@ -915,7 +923,7 @@ public class ResultServiceImpl implements IResultService {
|
|||||||
C.append("C_Value_").append(i).append(" json NULL COMMENT '").append(i).append("次C相谐波',");
|
C.append("C_Value_").append(i).append(" json NULL COMMENT '").append(i).append("次C相谐波',");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String sql1 = "CREATE TABLE if not exists AD_Harmonic_Result_" + code + "_temp (\n" +
|
String sql1 = "CREATE TABLE if not exists AD_Harmonic_Result_" + code + "(\n" +
|
||||||
" Monitor_Id CHAR(60) NOT NULL COMMENT '监测点Id',\n" +
|
" Monitor_Id CHAR(60) NOT NULL COMMENT '监测点Id',\n" +
|
||||||
" Time_Id DATETIME NULL COMMENT '时间',\n" +
|
" Time_Id DATETIME NULL COMMENT '时间',\n" +
|
||||||
" Script_Id CHAR(32) NOT NULL COMMENT '检测脚本子表Id,字典表',\n" +
|
" Script_Id CHAR(32) NOT NULL COMMENT '检测脚本子表Id,字典表',\n" +
|
||||||
@@ -928,34 +936,34 @@ public class ResultServiceImpl implements IResultService {
|
|||||||
") COMMENT='监测数据表';";
|
") COMMENT='监测数据表';";
|
||||||
tableGenMapper.genAdHarmonicTable(sql1);
|
tableGenMapper.genAdHarmonicTable(sql1);
|
||||||
|
|
||||||
sql1 = "CREATE TABLE ad_non_harmonic_" + code + "_temp " + "LIKE ad_non_harmonic_" + code;
|
sql1 = "CREATE TABLE ad_non_harmonic_" + code + " LIKE ad_non_harmonic_" + oldCode;
|
||||||
tableGenMapper.genAdHarmonicTable(sql1);
|
tableGenMapper.genAdHarmonicTable(sql1);
|
||||||
sql1 = "INSERT INTO ad_non_harmonic_" + code + "_temp " + "SELECT * FROM ad_non_harmonic_" + code;
|
sql1 = "INSERT INTO ad_non_harmonic_" + code + " SELECT * FROM ad_non_harmonic_" + oldCode;
|
||||||
tableGenMapper.genAdHarmonicTable(sql1);
|
tableGenMapper.genAdHarmonicTable(sql1);
|
||||||
sql1 = "CREATE TABLE ad_harmonic_" + code + "_temp " + "LIKE ad_harmonic_" + code;
|
sql1 = "CREATE TABLE ad_harmonic_" + code + " LIKE ad_harmonic_" + oldCode;
|
||||||
tableGenMapper.genAdHarmonicTable(sql1);
|
tableGenMapper.genAdHarmonicTable(sql1);
|
||||||
sql1 = "INSERT INTO ad_harmonic_" + code + "_temp " + "SELECT * FROM ad_harmonic_" + code;
|
sql1 = "INSERT INTO ad_harmonic_" + code + " SELECT * FROM ad_harmonic_" + oldCode;
|
||||||
tableGenMapper.genAdHarmonicTable(sql1);
|
tableGenMapper.genAdHarmonicTable(sql1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dropTempResultTable(String code) {
|
private void dropTempResultTable(String code) {
|
||||||
tableGenMapper.genAdHarmonicTable("drop table if exists AD_Non_Harmonic_Result_" + code + "_temp,AD_Harmonic_Result_" + code + "_temp," + "ad_non_harmonic_" + code + "_temp," + "ad_harmonic_" + code + "_temp");
|
tableGenMapper.genAdHarmonicTable("drop table if exists AD_Non_Harmonic_Result_" + code + ",AD_Harmonic_Result_" + code + "," + "ad_non_harmonic_" + code + "," + "ad_harmonic_" + code);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改拷贝后的结果表(根据误差体系修改)
|
* 根据原始数据、误差体系id、计算检测结果
|
||||||
*
|
*
|
||||||
* @param planId
|
* @param planId
|
||||||
* @param code
|
* @param code
|
||||||
* @param errorSysId
|
* @param errorSysId
|
||||||
* @param devId
|
* @param devId
|
||||||
*/
|
*/
|
||||||
private void insertTempResultTable(String planId, String scriptId, String code, String errorSysId, String devId) {
|
private void calculateResult(String planId, String scriptId, String code, String errorSysId, String devId) {
|
||||||
|
String oldCode = code.replace("_temp", "");
|
||||||
PreDetectionParam param = new PreDetectionParam();
|
PreDetectionParam param = new PreDetectionParam();
|
||||||
param.setCode(code);
|
param.setCode(code);
|
||||||
param.setErrorSysId(errorSysId);
|
param.setErrorSysId(errorSysId);
|
||||||
param.setDevIds(Arrays.asList(devId));
|
param.setDevIds(Arrays.asList(devId));
|
||||||
param.setCode(code + "_temp");
|
|
||||||
|
|
||||||
Map<String, String> devIdMapComm = new HashMap<>();
|
Map<String, String> devIdMapComm = new HashMap<>();
|
||||||
// PqDev dev = pqDevService.getById(devId);
|
// PqDev dev = pqDevService.getById(devId);
|
||||||
@@ -969,10 +977,10 @@ public class ResultServiceImpl implements IResultService {
|
|||||||
dataRule = DictDataEnum.AT_WILL_VALUE;
|
dataRule = DictDataEnum.AT_WILL_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<AdNonHarmonicResult> allNonHarmonicRawData = adNonHarmonicService.listAll(code, devId);
|
List<AdNonHarmonicResult> allNonHarmonicRawData = adNonHarmonicService.listAll(oldCode, devId);
|
||||||
LinkedHashMap<Integer, List<AdNonHarmonicResult>> nonHarmonicMap = allNonHarmonicRawData.stream().sorted(Comparator.comparing(AdNonHarmonicResult::getSort))
|
LinkedHashMap<Integer, List<AdNonHarmonicResult>> nonHarmonicMap = allNonHarmonicRawData.stream().sorted(Comparator.comparing(AdNonHarmonicResult::getSort))
|
||||||
.collect(Collectors.groupingBy(AdNonHarmonicResult::getSort, LinkedHashMap::new, Collectors.toList()));
|
.collect(Collectors.groupingBy(AdNonHarmonicResult::getSort, LinkedHashMap::new, Collectors.toList()));
|
||||||
List<AdHarmonicResult> allHarmonicRawData = adHarmonicService.lisAll(code, devId);
|
List<AdHarmonicResult> allHarmonicRawData = adHarmonicService.lisAll(oldCode, devId);
|
||||||
LinkedHashMap<Integer, List<AdHarmonicResult>> harmonicMap = allHarmonicRawData.stream().sorted(Comparator.comparing(AdHarmonicResult::getSort))
|
LinkedHashMap<Integer, List<AdHarmonicResult>> harmonicMap = allHarmonicRawData.stream().sorted(Comparator.comparing(AdHarmonicResult::getSort))
|
||||||
.collect(Collectors.groupingBy(AdHarmonicResult::getSort, LinkedHashMap::new, Collectors.toList()));
|
.collect(Collectors.groupingBy(AdHarmonicResult::getSort, LinkedHashMap::new, Collectors.toList()));
|
||||||
|
|
||||||
@@ -992,74 +1000,125 @@ public class ResultServiceImpl implements IResultService {
|
|||||||
List<AdHarmonicResult> harmonicResults = harmonicMap.get(sourceIssue.getIndex());
|
List<AdHarmonicResult> harmonicResults = harmonicMap.get(sourceIssue.getIndex());
|
||||||
List<DevData> realDataXiList = new ArrayList<>();
|
List<DevData> realDataXiList = new ArrayList<>();
|
||||||
if (CollUtil.isNotEmpty(nonHarmonicResults)) {
|
if (CollUtil.isNotEmpty(nonHarmonicResults)) {
|
||||||
realDataXiList.addAll(MsgUtil.toList(nonHarmonicResults, null, true));
|
realDataXiList.addAll(this.toList(nonHarmonicResults, null, true));
|
||||||
}
|
}
|
||||||
if (CollUtil.isNotEmpty(harmonicResults)) {
|
if (CollUtil.isNotEmpty(harmonicResults)) {
|
||||||
DictTree dictTree = dictTreeService.getById(harmonicResults.get(0).getAdType());
|
DictTree dictTree = dictTreeService.getById(harmonicResults.get(0).getAdType());
|
||||||
if (ObjectUtil.isNotNull(dictTree)) {
|
if (ObjectUtil.isNotNull(dictTree)) {
|
||||||
if (DetectionCodeEnum.V2_50.getCode().equals(dictTree.getCode()) || DetectionCodeEnum.I2_50.getCode().equals(dictTree.getCode()) || DetectionCodeEnum.P2_50.getCode().equals(dictTree.getCode())) {
|
if (DetectionCodeEnum.V2_50.getCode().equals(dictTree.getCode()) || DetectionCodeEnum.I2_50.getCode().equals(dictTree.getCode()) || DetectionCodeEnum.P2_50.getCode().equals(dictTree.getCode())) {
|
||||||
realDataXiList.addAll(MsgUtil.toList(null, harmonicResults, true));
|
realDataXiList.addAll(this.toList(null, harmonicResults, true));
|
||||||
} else {
|
} else {
|
||||||
realDataXiList.addAll(MsgUtil.toList(null, harmonicResults, false));
|
realDataXiList.addAll(this.toList(null, harmonicResults, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < realDataXiList.size(); i++) {
|
|
||||||
DevData devData = realDataXiList.get(i);
|
|
||||||
List<DevData.SqlDataHarmDTO> sqlDataHarm = devData.getSqlDataHarm();
|
|
||||||
if (CollUtil.isNotEmpty(sqlDataHarm)) {
|
|
||||||
for (int j = 0; j < sqlDataHarm.size(); j++) {
|
|
||||||
DevData.SqlDataHarmDTO sqlDataDTO = sqlDataHarm.get(j);
|
|
||||||
String desc = sqlDataDTO.getDesc();
|
|
||||||
if (StrUtil.isNotBlank(desc)) {
|
|
||||||
DictTree dictTree = dictTreeService.getById(desc);
|
|
||||||
if (ObjectUtil.isNotNull(dictTree)) {
|
|
||||||
sqlDataDTO.setDesc(dictTree.getCode());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
List<DevData.SqlDataDTO> sqlData = devData.getSqlData();
|
|
||||||
if (CollUtil.isNotEmpty(sqlData)) {
|
|
||||||
for (int j = 0; j < sqlData.size(); j++) {
|
|
||||||
DevData.SqlDataDTO sqlDataDTO = sqlData.get(j);
|
|
||||||
String desc = sqlDataDTO.getDesc();
|
|
||||||
if (StrUtil.isNotBlank(desc)) {
|
|
||||||
DictTree dictTree = dictTreeService.getById(desc);
|
|
||||||
if (ObjectUtil.isNotNull(dictTree)) {
|
|
||||||
if (CollUtil.isNotEmpty(harmonicResults)) {
|
|
||||||
// if (dictTree.getCode().contains("V")) {
|
|
||||||
// sqlDataDTO.setDesc(DetectionCodeEnum.U1.getCode());
|
|
||||||
// }
|
|
||||||
// if (dictTree.getCode().contains("I")) {
|
|
||||||
// sqlDataDTO.setDesc(DetectionCodeEnum.I1.getCode());
|
|
||||||
// }
|
|
||||||
if (DetectionCodeEnum.V2_50.getCode().equals(dictTree.getCode())) {
|
|
||||||
sqlDataDTO.setDesc(DetectionCodeEnum.U1.getCode());
|
|
||||||
}
|
|
||||||
if (DetectionCodeEnum.I2_50.getCode().equals(dictTree.getCode())) {
|
|
||||||
sqlDataDTO.setDesc(DetectionCodeEnum.I1.getCode());
|
|
||||||
}
|
|
||||||
// if (DetectionCodeEnum.SV_1_49.getCode().equals(dictTree.getCode())) {
|
|
||||||
// devData.setSqlData(null);
|
|
||||||
// }
|
|
||||||
// if (DetectionCodeEnum.SI_1_49.getCode().equals(dictTree.getCode())) {
|
|
||||||
// devData.setSqlData(null);
|
|
||||||
// }
|
|
||||||
// if (DetectionCodeEnum.P2_50.getCode().equals(dictTree.getCode())) {
|
|
||||||
// devData.setSqlData(null);
|
|
||||||
// }
|
|
||||||
} else {
|
|
||||||
sqlDataDTO.setDesc(dictTree.getCode());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
detectionServiceImpl.processing(realDataXiList, param, devIdMapComm, sourceIssue, dataRule);
|
detectionServiceImpl.processing(realDataXiList, param, devIdMapComm, sourceIssue, dataRule);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<DevData> toList(List<AdNonHarmonicResult> nonHarm, List<AdHarmonicResult> harm, boolean containBaseHarm) {
|
||||||
|
List<DevData> info = new ArrayList<>();
|
||||||
|
// if (CollUtil.isNotEmpty(nonHarm)) {
|
||||||
|
if (CollUtil.isNotEmpty(nonHarm)) {
|
||||||
|
Map<String, List<AdNonHarmonicResult>> noHarmMap = nonHarm.stream()
|
||||||
|
.collect(Collectors.groupingBy(x -> x.getMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN)) + "_" + x.getSort()));
|
||||||
|
noHarmMap.forEach((key, value) -> {
|
||||||
|
String[] split = key.split("_");
|
||||||
|
DevData data = new DevData();
|
||||||
|
data.setTime(split[2]);
|
||||||
|
data.setId(split[0] + "_" + split[1]);
|
||||||
|
List<DevData.SqlDataDTO> sqlDataDTOS = new ArrayList<>();
|
||||||
|
DevData.SqlDataDTO sqlDataDTO;
|
||||||
|
for (AdNonHarmonicResult result : value) {
|
||||||
|
sqlDataDTO = new DevData.SqlDataDTO();
|
||||||
|
sqlDataDTO.setType(result.getDataType());
|
||||||
|
DictTree dictTree = dictTreeService.getById(result.getAdType());
|
||||||
|
sqlDataDTO.setDesc(dictTree.getCode());
|
||||||
|
DevData.SqlDataDTO.ListDTO listDTO = new DevData.SqlDataDTO.ListDTO();
|
||||||
|
listDTO.setA(StrUtil.isNotBlank(result.getAValue()) ? Double.valueOf(result.getAValue()) : null);
|
||||||
|
listDTO.setB(StrUtil.isNotBlank(result.getBValue()) ? Double.valueOf(result.getBValue()) : null);
|
||||||
|
listDTO.setC(StrUtil.isNotBlank(result.getCValue()) ? Double.valueOf(result.getCValue()) : null);
|
||||||
|
listDTO.setT(StrUtil.isNotBlank(result.getTValue()) ? Double.valueOf(result.getTValue()) : null);
|
||||||
|
sqlDataDTO.setList(listDTO);
|
||||||
|
sqlDataDTOS.add(sqlDataDTO);
|
||||||
|
}
|
||||||
|
data.setSqlData(sqlDataDTOS);
|
||||||
|
info.add(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (CollUtil.isNotEmpty(harm)) {
|
||||||
|
Map<String, List<AdHarmonicResult>> harmMap = harm.stream()
|
||||||
|
.collect(Collectors.groupingBy(x -> x.getMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN))));
|
||||||
|
harmMap.forEach((key, value) -> {
|
||||||
|
List<DevData> collect = info.stream().filter(x -> key.equals(x.getId() + "_" + x.getTime())).collect(Collectors.toList());
|
||||||
|
List<DevData.SqlDataDTO> sqlDataDTOS = new ArrayList<>();
|
||||||
|
DevData.SqlDataDTO sqlDataDTO;
|
||||||
|
List<DevData.SqlDataHarmDTO> sqlDataHarmDTOS = new ArrayList<>();
|
||||||
|
DevData.SqlDataHarmDTO dataHarmDTO;
|
||||||
|
for (AdHarmonicResult harmonicResult : value) {
|
||||||
|
DictTree dictTree = dictTreeService.getById(harmonicResult.getAdType());
|
||||||
|
if (containBaseHarm) {
|
||||||
|
sqlDataDTO = new DevData.SqlDataDTO();
|
||||||
|
sqlDataDTO.setType(harmonicResult.getDataType());
|
||||||
|
if (DetectionCodeEnum.V2_50.getCode().equals(dictTree.getCode())) {
|
||||||
|
sqlDataDTO.setDesc(DetectionCodeEnum.U1.getCode());
|
||||||
|
} else if (DetectionCodeEnum.I2_50.getCode().equals(dictTree.getCode())) {
|
||||||
|
sqlDataDTO.setDesc(DetectionCodeEnum.I1.getCode());
|
||||||
|
} else {
|
||||||
|
sqlDataDTO.setDesc(dictTree.getCode());
|
||||||
|
}
|
||||||
|
DevData.SqlDataDTO.ListDTO listDTO = new DevData.SqlDataDTO.ListDTO();
|
||||||
|
listDTO.setA(StrUtil.isNotBlank(harmonicResult.getAValue1()) ? Double.valueOf(harmonicResult.getAValue1()) : null);
|
||||||
|
listDTO.setB(StrUtil.isNotBlank(harmonicResult.getBValue1()) ? Double.valueOf(harmonicResult.getBValue1()) : null);
|
||||||
|
listDTO.setC(StrUtil.isNotBlank(harmonicResult.getCValue1()) ? Double.valueOf(harmonicResult.getCValue1()) : null);
|
||||||
|
sqlDataDTO.setList(listDTO);
|
||||||
|
sqlDataDTOS.add(sqlDataDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
dataHarmDTO = new DevData.SqlDataHarmDTO();
|
||||||
|
dataHarmDTO.setType(harmonicResult.getDataType());
|
||||||
|
dataHarmDTO.setDesc(dictTree.getCode());
|
||||||
|
dataHarmDTO.setNum(containBaseHarm ? 49 : 50);
|
||||||
|
DevData.SqlDataHarmDTO.ListDTO listHarmDTO = new DevData.SqlDataHarmDTO.ListDTO();
|
||||||
|
listHarmDTO.setA(reflectHarmonicValue("a", harmonicResult, containBaseHarm));
|
||||||
|
listHarmDTO.setB(reflectHarmonicValue("b", harmonicResult, containBaseHarm));
|
||||||
|
listHarmDTO.setC(reflectHarmonicValue("c", harmonicResult, containBaseHarm));
|
||||||
|
dataHarmDTO.setList(listHarmDTO);
|
||||||
|
sqlDataHarmDTOS.add(dataHarmDTO);
|
||||||
|
}
|
||||||
|
if (CollUtil.isNotEmpty(collect)) {
|
||||||
|
collect.get(0).setSqlDataHarm(sqlDataHarmDTOS);
|
||||||
|
} else {
|
||||||
|
String[] split = key.split("_");
|
||||||
|
DevData data = new DevData();
|
||||||
|
data.setTime(split[2]);
|
||||||
|
data.setId(split[0] + "_" + split[1]);
|
||||||
|
data.setSqlData(sqlDataDTOS);
|
||||||
|
data.setSqlDataHarm(sqlDataHarmDTOS);
|
||||||
|
info.add(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
return info;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> reflectHarmonicValue(String phase, AdHarmonicResult adHarmonicResult, boolean notContainBaseHarm) {
|
||||||
|
List<String> info = new ArrayList<>();
|
||||||
|
for (int i = notContainBaseHarm ? 2 : 1; i <= 50; i++) {
|
||||||
|
String fieldName = phase + "Value" + i;
|
||||||
|
try {
|
||||||
|
Field idField = AdHarmonicResult.class.getDeclaredField(fieldName);
|
||||||
|
idField.setAccessible(true);
|
||||||
|
String value = idField.get(adHarmonicResult) + "";
|
||||||
|
info.add(value);
|
||||||
|
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ import com.njcn.common.pojo.response.HttpResult;
|
|||||||
import com.njcn.common.utils.JwtUtil;
|
import com.njcn.common.utils.JwtUtil;
|
||||||
import com.njcn.common.utils.LogUtil;
|
import com.njcn.common.utils.LogUtil;
|
||||||
import com.njcn.gather.system.auth.pojo.Token;
|
import com.njcn.gather.system.auth.pojo.Token;
|
||||||
|
import com.njcn.gather.system.config.pojo.po.SysTestConfig;
|
||||||
|
import com.njcn.gather.system.config.service.ISysTestConfigService;
|
||||||
|
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||||
import com.njcn.gather.system.log.pojo.enums.LogOperationTypeEnum;
|
import com.njcn.gather.system.log.pojo.enums.LogOperationTypeEnum;
|
||||||
import com.njcn.gather.system.log.pojo.po.SysLogAudit;
|
import com.njcn.gather.system.log.pojo.po.SysLogAudit;
|
||||||
import com.njcn.gather.system.log.service.ISysLogAuditService;
|
import com.njcn.gather.system.log.service.ISysLogAuditService;
|
||||||
@@ -48,6 +51,7 @@ public class AuthController extends BaseController {
|
|||||||
|
|
||||||
private final ISysUserService sysUserService;
|
private final ISysUserService sysUserService;
|
||||||
private final ISysLogAuditService sysLogAuditService;
|
private final ISysLogAuditService sysLogAuditService;
|
||||||
|
private final ISysTestConfigService sysTestConfigService;
|
||||||
|
|
||||||
// @RequestMapping("/login")
|
// @RequestMapping("/login")
|
||||||
// public HttpResult<Token> login() {
|
// public HttpResult<Token> login() {
|
||||||
@@ -146,4 +150,14 @@ public class AuthController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
|
||||||
|
@ApiOperation("获取当前场景")
|
||||||
|
@GetMapping("/getCurrentScene")
|
||||||
|
public HttpResult<String> getCurrentScene() {
|
||||||
|
String methodDescribe = getMethodDescribe("getCurrentScene");
|
||||||
|
LogUtil.njcnDebug(log, "{},获取当前场景", methodDescribe);
|
||||||
|
String currrentScene= sysTestConfigService.getCurrrentScene();
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, currrentScene, methodDescribe);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,4 +35,6 @@ public interface ISysTestConfigService extends IService<SysTestConfig> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SysTestConfig getOneConfig();
|
SysTestConfig getOneConfig();
|
||||||
|
|
||||||
|
String getCurrrentScene();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.njcn.gather.system.config.service.impl;
|
package com.njcn.gather.system.config.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
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.github.yulichang.wrapper.MPJLambdaWrapper;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||||
@@ -9,6 +10,7 @@ import com.njcn.gather.system.config.pojo.param.SysTestConfigParam;
|
|||||||
import com.njcn.gather.system.config.pojo.po.SysTestConfig;
|
import com.njcn.gather.system.config.pojo.po.SysTestConfig;
|
||||||
import com.njcn.gather.system.config.service.ISysTestConfigService;
|
import com.njcn.gather.system.config.service.ISysTestConfigService;
|
||||||
import com.njcn.gather.system.dictionary.pojo.po.DictData;
|
import com.njcn.gather.system.dictionary.pojo.po.DictData;
|
||||||
|
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
@@ -24,6 +26,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class SysTestConfigServiceImpl extends ServiceImpl<SysTestConfigMapper, SysTestConfig> implements ISysTestConfigService {
|
public class SysTestConfigServiceImpl extends ServiceImpl<SysTestConfigMapper, SysTestConfig> implements ISysTestConfigService {
|
||||||
|
|
||||||
|
private final IDictDataService dictDataService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SysTestConfig getConfig() {
|
public SysTestConfig getConfig() {
|
||||||
return this.getOne(new QueryWrapper<SysTestConfig>().last("LIMIT 1"));
|
return this.getOne(new QueryWrapper<SysTestConfig>().last("LIMIT 1"));
|
||||||
@@ -55,4 +59,14 @@ public class SysTestConfigServiceImpl extends ServiceImpl<SysTestConfigMapper, S
|
|||||||
.eq(SysTestConfig::getState, DataStateEnum.ENABLE.getCode());
|
.eq(SysTestConfig::getState, DataStateEnum.ENABLE.getCode());
|
||||||
return this.getBaseMapper().selectJoinOne(SysTestConfig.class, queryWrapper);
|
return this.getBaseMapper().selectJoinOne(SysTestConfig.class, queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCurrrentScene() {
|
||||||
|
String scene = getOneConfig().getScene();
|
||||||
|
DictData dictData = dictDataService.getDictDataById(scene);
|
||||||
|
if(ObjectUtil.isNotNull(dictData)){
|
||||||
|
return dictData.getValue();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.njcn.gather.system.reg.pojo.enums;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author caozehui
|
||||||
|
* @data 2025-03-13
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public enum RegStatusEnum {
|
||||||
|
UNREGISTERED(0, "未激活"),
|
||||||
|
REGISTERED(1, "已激活"),
|
||||||
|
EXPIRED(2, "已过期");
|
||||||
|
|
||||||
|
private int code;
|
||||||
|
private String message;
|
||||||
|
RegStatusEnum(int code, String message) {
|
||||||
|
this.code = code;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,17 +12,37 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
public class SysRegResVO {
|
public class SysRegResVO {
|
||||||
/**
|
/**
|
||||||
* 注册码
|
* 注册码。如果未激活,则为null
|
||||||
*/
|
*/
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注册的模式
|
* 模拟式激活状态。0:未激活;1:已激活;2:已过期
|
||||||
*/
|
*/
|
||||||
private List<String> typeList;
|
private int simulateStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 到期时间
|
* 模拟式激活到期日期。如果未激活,则为null
|
||||||
*/
|
*/
|
||||||
private List<String> expireDateList;
|
private String simulateExpireDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数字式激活状态。0:未激活;1:已激活;2:已过期
|
||||||
|
*/
|
||||||
|
private int digitalStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数字式激活到期日期。如果未激活,则为null
|
||||||
|
*/
|
||||||
|
private String digitalExpireDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 比对式激活状态。0:未激活;1:已激活;2:已过期
|
||||||
|
*/
|
||||||
|
private int contrastStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 比对式激活到期日期。如果未激活,则为null
|
||||||
|
*/
|
||||||
|
private String contrastExpireDate;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,14 +8,13 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||||||
import com.njcn.common.pojo.enums.common.DataStateEnum;
|
import com.njcn.common.pojo.enums.common.DataStateEnum;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.common.utils.EncryptionUtil;
|
import com.njcn.common.utils.EncryptionUtil;
|
||||||
import com.njcn.common.utils.sm.Sm4Utils;
|
|
||||||
import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum;
|
import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum;
|
||||||
import com.njcn.gather.system.dictionary.pojo.po.DictData;
|
import com.njcn.gather.system.dictionary.pojo.po.DictData;
|
||||||
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||||
import com.njcn.gather.system.dictionary.service.IDictTypeService;
|
|
||||||
import com.njcn.gather.system.reg.mapper.SysRegResMapper;
|
import com.njcn.gather.system.reg.mapper.SysRegResMapper;
|
||||||
import com.njcn.gather.system.reg.pojo.dto.RegInfoData;
|
import com.njcn.gather.system.reg.pojo.dto.RegInfoData;
|
||||||
import com.njcn.gather.system.reg.pojo.enums.RegResponseEnum;
|
import com.njcn.gather.system.reg.pojo.enums.RegResponseEnum;
|
||||||
|
import com.njcn.gather.system.reg.pojo.enums.RegStatusEnum;
|
||||||
import com.njcn.gather.system.reg.pojo.param.SysRegResParam;
|
import com.njcn.gather.system.reg.pojo.param.SysRegResParam;
|
||||||
import com.njcn.gather.system.reg.pojo.po.SysRegRes;
|
import com.njcn.gather.system.reg.pojo.po.SysRegRes;
|
||||||
import com.njcn.gather.system.reg.pojo.vo.SysRegResVO;
|
import com.njcn.gather.system.reg.pojo.vo.SysRegResVO;
|
||||||
@@ -35,8 +34,12 @@ import java.security.PrivateKey;
|
|||||||
import java.security.PublicKey;
|
import java.security.PublicKey;
|
||||||
import java.security.spec.PKCS8EncodedKeySpec;
|
import java.security.spec.PKCS8EncodedKeySpec;
|
||||||
import java.security.spec.X509EncodedKeySpec;
|
import java.security.spec.X509EncodedKeySpec;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Base64;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author caozehui
|
* @author caozehui
|
||||||
@@ -97,23 +100,28 @@ public class SysRegResServiceImpl extends ServiceImpl<SysRegResMapper, SysRegRes
|
|||||||
if (!mac.equals(regInfoData.getMacAddress())) {
|
if (!mac.equals(regInfoData.getMacAddress())) {
|
||||||
throw new BusinessException(RegResponseEnum.MAC_ADDRESS_NOT_MATCH);
|
throw new BusinessException(RegResponseEnum.MAC_ADDRESS_NOT_MATCH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> expireDateList = regInfoData.getExpireDateList();
|
||||||
|
for (int i = 0; i < regInfoData.getTypeList().size(); i++) {
|
||||||
|
expireDateList.set(i, formatDate(expireDateList.get(i)));
|
||||||
|
}
|
||||||
// 比对到期日期
|
// 比对到期日期
|
||||||
String maxExpireDate = regInfoData.getExpireDateList().stream().max((a, b) -> a.compareTo(b)).get();
|
String maxExpireDate = expireDateList.stream().max((a, b) -> a.compareTo(b)).get();
|
||||||
if (LocalDate.parse(maxExpireDate).isBefore(LocalDate.now())) {
|
if (LocalDate.parse(maxExpireDate).isBefore(LocalDate.now())) {
|
||||||
throw new BusinessException(RegResponseEnum.REGISTRATION_CODE_EXPIRED);
|
throw new BusinessException(RegResponseEnum.REGISTRATION_CODE_EXPIRED);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < regInfoData.getTypeList().size(); i++) {
|
for (int i = 0; i < regInfoData.getTypeList().size(); i++) {
|
||||||
// 忽略过期的
|
// 忽略过期的
|
||||||
if(LocalDate.parse(regInfoData.getExpireDateList().get(i)).isBefore(LocalDate.now())){
|
// if (isExpire(expireDateList.get(i))) {
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
|
|
||||||
SysRegRes sysRegRes = new SysRegRes();
|
SysRegRes sysRegRes = new SysRegRes();
|
||||||
BeanUtil.copyProperties(sysRegResParam, sysRegRes);
|
BeanUtil.copyProperties(sysRegResParam, sysRegRes);
|
||||||
sysRegRes.setState(DataStateEnum.ENABLE.getCode());
|
sysRegRes.setState(DataStateEnum.ENABLE.getCode());
|
||||||
sysRegRes.setCode(sysRegResParam.getCode());
|
sysRegRes.setCode(sysRegResParam.getCode());
|
||||||
sysRegRes.setExpireDate(EncryptionUtil.encodeString(1,regInfoData.getExpireDateList().get(i)));
|
sysRegRes.setExpireDate(EncryptionUtil.encodeString(1, formatDate(regInfoData.getExpireDateList().get(i))));
|
||||||
|
|
||||||
DictData dictData = dictDataService.getDictDataByCode(regInfoData.getTypeList().get(i));
|
DictData dictData = dictDataService.getDictDataByCode(regInfoData.getTypeList().get(i));
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
if (ObjectUtil.isNotNull(dictData)) {
|
||||||
@@ -124,7 +132,7 @@ public class SysRegResServiceImpl extends ServiceImpl<SysRegResMapper, SysRegRes
|
|||||||
sysRegRes.setStatistics(5);
|
sysRegRes.setStatistics(5);
|
||||||
sysRegRes.setFlicker(1);
|
sysRegRes.setFlicker(1);
|
||||||
|
|
||||||
if(regInfoData.getTypeList().get(i).equals(DictDataEnum.CONTRAST.getCode())){
|
if (regInfoData.getTypeList().get(i).equals(DictDataEnum.CONTRAST.getCode())) {
|
||||||
sysRegRes.setWaveRecord(1);
|
sysRegRes.setWaveRecord(1);
|
||||||
sysRegRes.setRealTime(200);
|
sysRegRes.setRealTime(200);
|
||||||
sysRegRes.setStatistics(5);
|
sysRegRes.setStatistics(5);
|
||||||
@@ -155,31 +163,87 @@ public class SysRegResServiceImpl extends ServiceImpl<SysRegResMapper, SysRegRes
|
|||||||
public SysRegResVO listRegRes() {
|
public SysRegResVO listRegRes() {
|
||||||
// todo 需要切面检测是否到期,到期则状态设为0
|
// todo 需要切面检测是否到期,到期则状态设为0
|
||||||
SysRegResVO sysRegResVO = new SysRegResVO();
|
SysRegResVO sysRegResVO = new SysRegResVO();
|
||||||
List<String> typeList = new ArrayList<>();
|
|
||||||
List<String> expireDateList = new ArrayList<>();
|
|
||||||
List<SysRegRes> regResList = this.lambdaQuery().eq(SysRegRes::getState, DataStateEnum.ENABLE.getCode()).list();
|
List<SysRegRes> regResList = this.lambdaQuery().eq(SysRegRes::getState, DataStateEnum.ENABLE.getCode()).list();
|
||||||
if(ObjectUtil.isNotEmpty(regResList)){
|
if (ObjectUtil.isNotEmpty(regResList)) {
|
||||||
sysRegResVO.setCode(regResList.get(0).getCode());
|
sysRegResVO.setCode(regResList.get(0).getCode());
|
||||||
}
|
sysRegResVO.setSimulateStatus(RegStatusEnum.UNREGISTERED.getCode());
|
||||||
regResList.forEach(item -> {
|
sysRegResVO.setDigitalStatus(RegStatusEnum.UNREGISTERED.getCode());
|
||||||
DictData dictData = dictDataService.getDictDataById(item.getType());
|
sysRegResVO.setContrastStatus(RegStatusEnum.UNREGISTERED.getCode());
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
for (SysRegRes regRes : regResList) {
|
||||||
typeList.add(dictData.getCode());
|
DictData dictData = dictDataService.getDictDataById(regRes.getType());
|
||||||
|
String s = EncryptionUtil.decoderString(1, regRes.getExpireDate());
|
||||||
|
boolean expire = isExpire(s);
|
||||||
|
if (ObjectUtil.isNotNull(dictData)) {
|
||||||
|
if (dictData.getCode().equals(DictDataEnum.SIMULATE.getCode())) {
|
||||||
|
if (expire) {
|
||||||
|
sysRegResVO.setSimulateStatus(RegStatusEnum.EXPIRED.getCode());
|
||||||
|
} else {
|
||||||
|
sysRegResVO.setSimulateStatus(RegStatusEnum.REGISTERED.getCode());
|
||||||
|
}
|
||||||
|
sysRegResVO.setSimulateExpireDate(s);
|
||||||
|
}
|
||||||
|
if (dictData.getCode().equals(DictDataEnum.DIGITAL.getCode())) {
|
||||||
|
if (expire) {
|
||||||
|
sysRegResVO.setDigitalStatus(RegStatusEnum.EXPIRED.getCode());
|
||||||
|
} else {
|
||||||
|
sysRegResVO.setDigitalStatus(RegStatusEnum.REGISTERED.getCode());
|
||||||
|
}
|
||||||
|
sysRegResVO.setDigitalExpireDate(s);
|
||||||
|
}
|
||||||
|
if (dictData.getCode().equals(DictDataEnum.CONTRAST.getCode())) {
|
||||||
|
if (expire) {
|
||||||
|
sysRegResVO.setContrastStatus(RegStatusEnum.EXPIRED.getCode());
|
||||||
|
} else {
|
||||||
|
sysRegResVO.setContrastStatus(RegStatusEnum.REGISTERED.getCode());
|
||||||
|
}
|
||||||
|
sysRegResVO.setContrastExpireDate(s);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new BusinessException("字典数据缺失,请联系管理员!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
expireDateList.add(EncryptionUtil.decoderString(1, item.getExpireDate()));
|
}
|
||||||
});
|
|
||||||
sysRegResVO.setTypeList(typeList);
|
|
||||||
sysRegResVO.setExpireDateList(expireDateList);
|
|
||||||
return sysRegResVO;
|
return sysRegResVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 格式化日期 (将日期格式化为yyyy-MM-dd)
|
||||||
|
*
|
||||||
|
* @param date
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private String formatDate(String date) {
|
||||||
|
String[] split = date.split("-");
|
||||||
|
if (split[1].length() == 1) {
|
||||||
|
split[1] = "0" + split[1];
|
||||||
|
}
|
||||||
|
if (split[2].length() == 1) {
|
||||||
|
split[2] = "0" + split[2];
|
||||||
|
}
|
||||||
|
return split[0] + "-" + split[1] + "-" + split[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否到期
|
||||||
|
*
|
||||||
|
* @param expireDate 到期日期
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean isExpire(String expireDate) {
|
||||||
|
expireDate = formatDate(expireDate);
|
||||||
|
String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
||||||
|
if (today.compareTo(expireDate) >= 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用hutool工具获取本机mac地址
|
* 使用hutool工具获取本机mac地址
|
||||||
*
|
*
|
||||||
* @return mac地址
|
* @return mac地址
|
||||||
*/
|
*/
|
||||||
private static String getMAC() {
|
private String getMAC() {
|
||||||
InetAddress inetAddress = null;
|
InetAddress inetAddress = null;
|
||||||
try {
|
try {
|
||||||
inetAddress = InetAddress.getLocalHost();
|
inetAddress = InetAddress.getLocalHost();
|
||||||
@@ -196,7 +260,7 @@ public class SysRegResServiceImpl extends ServiceImpl<SysRegResMapper, SysRegRes
|
|||||||
* @return 密钥对象
|
* @return 密钥对象
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
private static Key parsePemKey(String pem) throws Exception {
|
private Key parsePemKey(String pem) throws Exception {
|
||||||
// 去掉 PEM 格式中的头部和尾部
|
// 去掉 PEM 格式中的头部和尾部
|
||||||
String cleanPem = pem
|
String cleanPem = pem
|
||||||
.replaceAll("-----BEGIN (.*?)-----", "")
|
.replaceAll("-----BEGIN (.*?)-----", "")
|
||||||
@@ -225,7 +289,7 @@ public class SysRegResServiceImpl extends ServiceImpl<SysRegResMapper, SysRegRes
|
|||||||
* @param encryptedCode 加密后的注册码
|
* @param encryptedCode 加密后的注册码
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static RegInfoData decodeRegistrationCode(String encryptedCode) {
|
private RegInfoData decodeRegistrationCode(String encryptedCode) {
|
||||||
try {
|
try {
|
||||||
byte[] encryptedData = Base64.getDecoder().decode(encryptedCode);
|
byte[] encryptedData = Base64.getDecoder().decode(encryptedCode);
|
||||||
Key privateKey = parsePemKey(fixedPrivateKeyStr);
|
Key privateKey = parsePemKey(fixedPrivateKeyStr);
|
||||||
|
|||||||
Reference in New Issue
Block a user