pmsBUG提交
This commit is contained in:
@@ -1,13 +1,18 @@
|
||||
package com.njcn.process.service;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.minioss.bo.MinIoUploadResDTO;
|
||||
import com.njcn.process.pojo.param.TerminalParam;
|
||||
import com.njcn.process.pojo.po.PmsTerminalDetection;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.process.pojo.vo.TerminalVO;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -33,9 +38,9 @@ public interface PmsTerminalDetectionService extends IService<PmsTerminalDetecti
|
||||
* 导出模板
|
||||
* @author wr
|
||||
* @date 2023-02-27 16:14
|
||||
* @param response
|
||||
* @return InputStreamResource
|
||||
*/
|
||||
void exportTemplate(HttpServletResponse response);
|
||||
InputStreamResource exportTemplate() throws IOException;
|
||||
|
||||
/***
|
||||
* 终端检测监督单条新增
|
||||
@@ -44,7 +49,7 @@ public interface PmsTerminalDetectionService extends IService<PmsTerminalDetecti
|
||||
* @param param
|
||||
* @return Boolean
|
||||
*/
|
||||
Boolean insertTerminal(TerminalParam param);
|
||||
Boolean insertTerminal(TerminalParam.TerminalInsertParam param);
|
||||
/***
|
||||
* 终端检测监督批量新增
|
||||
* @author wr
|
||||
@@ -71,25 +76,35 @@ public interface PmsTerminalDetectionService extends IService<PmsTerminalDetecti
|
||||
* @param ids
|
||||
* @return Boolean
|
||||
*/
|
||||
Boolean dekTerminal(List<String> ids);
|
||||
Boolean delTerminal(List<String> ids);
|
||||
|
||||
/***
|
||||
* 批量导入检测报告
|
||||
* @author wr
|
||||
* @date 2023-02-28 9:55
|
||||
* @param files
|
||||
* @param type
|
||||
* @param response
|
||||
*/
|
||||
void importReport(MultipartFile[] files, HttpServletResponse response);
|
||||
void importReport(MultipartFile[] files,Integer type, HttpServletResponse response);
|
||||
|
||||
/***
|
||||
* 检测报告下载
|
||||
* @author wr
|
||||
* @date 2023-03-15 10:47
|
||||
* @param param
|
||||
* @return MinIoUploadResDTO
|
||||
*/
|
||||
InputStreamResource reportDownload(TerminalParam.DownloadParam param) throws IOException;
|
||||
|
||||
/***
|
||||
* 终端入网检测台账统计
|
||||
* @author wr
|
||||
* @date 2023-02-28 11:03
|
||||
* @param param
|
||||
* @return List<TerminalStatistics>
|
||||
* @return TerminalVO.TerminalStatistics
|
||||
*/
|
||||
List<TerminalVO.TerminalStatistics> getStatistics(TerminalParam param);
|
||||
TerminalVO.TerminalStatistics getStatistics(TerminalParam param);
|
||||
|
||||
/***
|
||||
* 周期检测统计
|
||||
@@ -98,5 +113,14 @@ public interface PmsTerminalDetectionService extends IService<PmsTerminalDetecti
|
||||
* @param param
|
||||
* @return List<TerminalStatistics>
|
||||
*/
|
||||
List<TerminalVO.TerminalStatistics> getCycleStatistics(TerminalParam.TerminalCycleParam param);
|
||||
TerminalVO.TerminalStatistics getCycleStatistics(TerminalParam param);
|
||||
|
||||
/***
|
||||
* 文件上传
|
||||
* @author wr
|
||||
* @date 2023-03-17 11:11
|
||||
* @param file
|
||||
* @return String
|
||||
*/
|
||||
String url(MultipartFile file);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.process.service;
|
||||
|
||||
import com.njcn.process.pojo.po.ThsDeptAlarm;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-03-10
|
||||
*/
|
||||
public interface ThsDeptAlarmService extends IService<ThsDeptAlarm> {
|
||||
|
||||
}
|
||||
@@ -1,18 +1,16 @@
|
||||
package com.njcn.process.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO;
|
||||
import com.njcn.device.pms.pojo.param.PmsMonitorInfoParam;
|
||||
import com.njcn.process.pojo.param.StrategyParam;
|
||||
import com.njcn.process.pojo.po.ThsDeptAlarm;
|
||||
import com.njcn.process.pojo.po.ThsWarnStrategy;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
@@ -83,7 +81,7 @@ public interface ThsWarnStrategyService extends IService<ThsWarnStrategy> {
|
||||
* @param monitorTag
|
||||
* @return List<PmsMonitorInfoDTO>
|
||||
*/
|
||||
List<StrategyParam.MonitorTree> getMonitor(String monitorTag,String orgId);
|
||||
List<StrategyParam.MonitorTree> getMonitor(String monitorTag, String orgId);
|
||||
|
||||
|
||||
/***
|
||||
@@ -93,7 +91,7 @@ public interface ThsWarnStrategyService extends IService<ThsWarnStrategy> {
|
||||
* @param param
|
||||
* @return Boolean
|
||||
*/
|
||||
Boolean bindMonitor(StrategyParam.BindMonitorParam param);
|
||||
Boolean bindMonitor(List<ThsDeptAlarm> param);
|
||||
|
||||
|
||||
/***
|
||||
|
||||
@@ -7,13 +7,17 @@ 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.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.common.pojo.constant.PatternRegex;
|
||||
import com.njcn.common.pojo.enums.common.DataStateEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.device.pms.enums.PmsDeviceResponseEnum;
|
||||
import com.njcn.oss.constant.OssPath;
|
||||
import com.njcn.oss.enums.OssResponseEnum;
|
||||
import com.njcn.oss.utils.FileStorageUtil;
|
||||
import com.njcn.poi.excel.ExcelUtil;
|
||||
import com.njcn.poi.util.PoiUtil;
|
||||
@@ -25,19 +29,30 @@ import com.njcn.process.pojo.vo.TerminalVO;
|
||||
import com.njcn.process.service.PmsTerminalDetectionService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.process.utils.ExcelStyleUtil;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.dto.DeptDTO;
|
||||
import com.njcn.user.pojo.po.Dept;
|
||||
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -54,46 +69,78 @@ public class PmsTerminalDetectionServiceImpl extends ServiceImpl<PmsTerminalDete
|
||||
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final FileStorageUtil fileStorageUtil;
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
@Override
|
||||
public Page<TerminalVO> terminalPage(TerminalParam.TerminalPageParam param) {
|
||||
List<DeptDTO> data = deptFeignClient.getDepSonDetailByDeptId(param.getId()).getData();
|
||||
List<String> deptCodes = data.stream().map(DeptDTO::getCode).collect(Collectors.toList());
|
||||
List<Dept> data = deptFeignClient.getDirectSonSelf(param.getId()).getData();
|
||||
List<String> deptCodes = data.stream().map(Dept::getCode).collect(Collectors.toList());
|
||||
Page<PmsTerminalDetection> pageList = this.page(new Page<>(param.getPageNum(), param.getPageSize())
|
||||
, new LambdaQueryWrapper<PmsTerminalDetection>()
|
||||
.eq(CollectionUtil.isNotEmpty(deptCodes), PmsTerminalDetection::getOrgName, deptCodes)
|
||||
.in(CollectionUtil.isNotEmpty(deptCodes), PmsTerminalDetection::getOrgNo, deptCodes)
|
||||
.eq(PmsTerminalDetection::getStatus, DataStateEnum.ENABLE.getCode())
|
||||
.eq(param.getTestResults() != null, PmsTerminalDetection::getTestResults, param.getTestResults())
|
||||
|
||||
.in(CollectionUtil.isNotEmpty(param.getManufacture()), PmsTerminalDetection::getManufacture, param.getManufacture())
|
||||
.like(StrUtil.isNotBlank(param.getName()), PmsTerminalDetection::getName, param.getName())
|
||||
.le(param.getType() != 0, PmsTerminalDetection::getNextInspectionTime, LocalDate.now())
|
||||
.ge(StrUtil.isNotBlank(param.getStartTime()), PmsTerminalDetection::getInspectionTime, param.getStartTime())
|
||||
.le(StrUtil.isNotBlank(param.getEndTime()), PmsTerminalDetection::getInspectionTime, param.getEndTime())
|
||||
|
||||
.le(param.getType() != 0, PmsTerminalDetection::getNextInspectionTime, LocalDate.now())
|
||||
);
|
||||
List<TerminalVO> rMpWpPowerDetailVOS2 = BeanUtil.copyToList(pageList.getRecords(), TerminalVO.class);
|
||||
|
||||
Page<TerminalVO> page = BeanUtil.copyProperties(pageList, Page.class);
|
||||
page.setRecords(rMpWpPowerDetailVOS2);
|
||||
return null;
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportTemplate(HttpServletResponse response) {
|
||||
public InputStreamResource exportTemplate() throws IOException {
|
||||
ExportParams exportParams = new ExportParams("批量导入模板(请严格按照模板标准填入数据)", "终端入网检测录入信息");
|
||||
exportParams.setStyle(ExcelStyleUtil.class);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, TerminalExcel.class, new ArrayList<TerminalExcel>());
|
||||
PoiUtil.exportFileByWorkbook(workbook, "终端入网检测录入模板.xlsx", response);
|
||||
List<DictData> businessList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_MANUFACTURER.getCode()).getData();
|
||||
ExcelUtil.selectList(workbook, 3, 3, businessList.stream().map(DictData::getName).collect(Collectors.toList()).toArray(new String[]{}));
|
||||
//临时缓冲区
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
//创建临时文件
|
||||
workbook.write(out);
|
||||
byte [] bookByteAry = out.toByteArray();
|
||||
InputStream in = new ByteArrayInputStream(bookByteAry);
|
||||
InputStreamResource inputStreamResource = new InputStreamResource(in);
|
||||
return inputStreamResource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean insertTerminal(TerminalParam param) {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertTerminal(TerminalParam.TerminalInsertParam param) {
|
||||
Dept data = deptFeignClient.getDeptById(param.getOrgNo()).getData();
|
||||
if (ObjectUtil.isNull(data)) {
|
||||
throw new BusinessException(CommonResponseEnum.NO_DATA, "部门不存在");
|
||||
}
|
||||
int count = this.count(new LambdaQueryWrapper<PmsTerminalDetection>()
|
||||
.eq(PmsTerminalDetection::getId, param.getId())
|
||||
.or(wrapper ->
|
||||
wrapper.eq(PmsTerminalDetection::getName, param.getName())
|
||||
)
|
||||
);
|
||||
if (count>0) {
|
||||
throw new BusinessException(PmsDeviceResponseEnum.MODEL_NAME_REPEAT,"或终端编号已存在");
|
||||
}
|
||||
PmsTerminalDetection detection = BeanUtil.copyProperties(param, PmsTerminalDetection.class);
|
||||
|
||||
detection.setOriginalName(detection.getId()+"-原始数据报告.docx");
|
||||
detection.setOrgNo(data.getCode());
|
||||
detection.setOrgName(data.getName());
|
||||
detection.setTestResults(0);
|
||||
detection.setStatus(1);
|
||||
return this.save(detection);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchTerminal(MultipartFile file, HttpServletResponse response) {
|
||||
|
||||
ImportParams params = new ImportParams();
|
||||
params.setHeadRows(1);
|
||||
params.setTitleRows(1);
|
||||
@@ -115,85 +162,179 @@ public class PmsTerminalDetectionServiceImpl extends ServiceImpl<PmsTerminalDete
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateTerminal(TerminalParam.TerminalUpdateParam param) {
|
||||
long count = this.count(new LambdaQueryWrapper<PmsTerminalDetection>()
|
||||
PmsTerminalDetection one = this.getOne(new LambdaQueryWrapper<PmsTerminalDetection>()
|
||||
.ne(PmsTerminalDetection::getId, param.getId())
|
||||
.and(wrapper ->
|
||||
wrapper.eq(PmsTerminalDetection::getName, param.getName())
|
||||
)
|
||||
|
||||
);
|
||||
if (count > 0) {
|
||||
if (ObjectUtil.isNotNull(one)) {
|
||||
throw new BusinessException(PmsDeviceResponseEnum.MODEL_NAME_REPEAT);
|
||||
}
|
||||
PmsTerminalDetection detection = BeanUtil.copyProperties(param, PmsTerminalDetection.class);
|
||||
return this.updateById(detection);
|
||||
boolean b = this.updateById(detection);
|
||||
if(b){
|
||||
PmsTerminalDetection cc = this.getOne(new LambdaQueryWrapper<PmsTerminalDetection>()
|
||||
.eq(PmsTerminalDetection::getId, param.getId())
|
||||
);
|
||||
if(StrUtil.isNotBlank(cc.getOriginalReport())){
|
||||
if(!cc.getOriginalReport().equals(param.getOriginalReport())){
|
||||
fileStorageUtil.deleteFile(cc.getOriginalReport());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean dekTerminal(List<String> ids) {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean delTerminal(List<String> ids) {
|
||||
return this.removeByIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void importReport(MultipartFile[] files, HttpServletResponse response) {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void importReport(MultipartFile[] files, Integer type, HttpServletResponse response) {
|
||||
PmsTerminalDetection detection;
|
||||
List<PmsTerminalDetection> data = new ArrayList<>();
|
||||
//传入的文件格式(终端编号-检测报告.docx);
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
detection = new PmsTerminalDetection();
|
||||
//文件上传的地址
|
||||
String url = fileStorageUtil.uploadMultipart(files[i], OssPath.ALGORITHM);
|
||||
//上传的文件名称
|
||||
String originalFilename = files[i].getOriginalFilename();
|
||||
String[] split = originalFilename.split("-");
|
||||
if (split.length > 0) {
|
||||
if (split[1].substring(0, split[1].indexOf(".")).equals("检测报告")) {
|
||||
//todo 文件名称
|
||||
detection.setInspectionReport(url);
|
||||
detection.setId(split[0]);
|
||||
data.add(detection);
|
||||
if (StrUtil.isNotBlank(originalFilename)) {
|
||||
//获取编号
|
||||
String terminalIds = originalFilename.substring(0, originalFilename.indexOf("-"));
|
||||
//判断数据是否存在
|
||||
int count = this.count(new LambdaQueryWrapper<PmsTerminalDetection>()
|
||||
.eq(PmsTerminalDetection::getId, terminalIds));
|
||||
if (count == 0) {
|
||||
continue;
|
||||
}
|
||||
if (split[1].substring(0, split[1].indexOf(".")).equals("原始数据报告")) {
|
||||
//todo 文件名称
|
||||
detection.setOriginalReport(url);
|
||||
detection.setId(split[0]);
|
||||
data.add(detection);
|
||||
String fileName = originalFilename.substring(originalFilename.indexOf("-") + 1);
|
||||
if (type == 0) {
|
||||
//传入的文件格式(终端编号-原始数据报告.docx);
|
||||
if (fileName.substring(0, fileName.indexOf(".")).equals("原始数据报告")) {
|
||||
//文件上传的地址
|
||||
String path = fileStorageUtil.uploadMultipart(files[i], OssPath.TEST_REPORT);
|
||||
detection.setOriginalReport(path);
|
||||
detection.setOriginalName(originalFilename);
|
||||
detection.setTestResults(1);
|
||||
detection.setId(terminalIds);
|
||||
data.add(detection);
|
||||
}
|
||||
} else {
|
||||
//传入的文件格式(终端编号-检测报告(2023-03-01).docx);
|
||||
if (fileName.substring(0, fileName.indexOf("(")).equals("检测报告")) {
|
||||
String nextInspectionTime = fileName.substring(fileName.indexOf("(") + 1, fileName.indexOf(")"));
|
||||
boolean matches = Pattern.matches(PatternRegex.TIME_FORMAT, nextInspectionTime);
|
||||
if (matches) {
|
||||
//文件上传的地址
|
||||
String path = fileStorageUtil.uploadMultipart(files[i], OssPath.TEST_REPORT);
|
||||
detection.setInspectionReport(path);
|
||||
detection.setNextInspectionTime(LocalDate.parse(nextInspectionTime));
|
||||
detection.setInspectionName(originalFilename);
|
||||
detection.setId(terminalIds);
|
||||
data.add(detection);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(data)) {
|
||||
Map<String, PmsTerminalDetection> terminalMap = data.stream().collect(Collectors.toMap(PmsTerminalDetection::getId, Function.identity(), (key1, key2) -> {
|
||||
//检测报告告为空
|
||||
if (key1.getInspectionReport() == null) {
|
||||
key1.setInspectionReport(key2.getInspectionReport());
|
||||
// Map<String, PmsTerminalDetection> terminalMap = data.stream().collect(Collectors.toMap(PmsTerminalDetection::getId, Function.identity(), (key1, key2) -> {
|
||||
// //检测报告告为空
|
||||
// if (key1.getInspectionReport() == null) {
|
||||
// key1.setInspectionReport(key2.getInspectionReport());
|
||||
// key1.setInspectionName(key2.getInspectionName());
|
||||
// }
|
||||
// //原始数据报告为空
|
||||
// if (key1.getOriginalReport() == null) {
|
||||
// key1.setOriginalReport(key2.getOriginalReport());
|
||||
// key1.setOriginalName(key2.getOriginalName());
|
||||
// }
|
||||
// return key1;
|
||||
// }));
|
||||
// List<PmsTerminalDetection> updateTerminal = new ArrayList<>(terminalMap.values());
|
||||
|
||||
//todo 批量删除功能是否需要
|
||||
List<String> delIds = data.stream().map(PmsTerminalDetection::getId).collect(Collectors.toList());
|
||||
List<PmsTerminalDetection> terminals = this.listByIds(delIds);
|
||||
List<String> remove = new ArrayList<>();
|
||||
for (PmsTerminalDetection terminal : terminals) {
|
||||
//用于区分是0:原始数据报告,还是1:检测报告
|
||||
if (type == 0) {
|
||||
if(StrUtil.isNotBlank(terminal.getOriginalReport())){
|
||||
remove.add(terminal.getOriginalReport());
|
||||
}
|
||||
} else {
|
||||
if(StrUtil.isNotBlank(terminal.getInspectionReport())){
|
||||
remove.add(terminal.getInspectionReport());
|
||||
}
|
||||
}
|
||||
//原始数据报告为空
|
||||
if (key1.getOriginalReport() == null) {
|
||||
key1.setOriginalReport(key2.getOriginalReport());
|
||||
}
|
||||
return key1;
|
||||
}));
|
||||
List<PmsTerminalDetection> updateTerminal = new ArrayList<>(terminalMap.values());
|
||||
this.updateBatchById(updateTerminal);
|
||||
}
|
||||
for (String s : remove) {
|
||||
fileStorageUtil.deleteFile(s);
|
||||
}
|
||||
this.updateBatchById(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TerminalVO.TerminalStatistics> getStatistics(TerminalParam param) {
|
||||
List<DeptDTO> deptDTOS = deptFeignClient.getDepSonDetailByDeptId(param.getId()).getData();
|
||||
List<String> ids = deptDTOS.stream().map(DeptDTO::getCode).collect(Collectors.toList());
|
||||
List<TerminalVO.TerminalStatistics> list = this.baseMapper.selectStatistics(param, ids);
|
||||
return getStatisticsList(deptDTOS, list);
|
||||
public InputStreamResource reportDownload(TerminalParam.DownloadParam param) throws IOException {
|
||||
PmsTerminalDetection terminal = this.getById(param.getId());
|
||||
if (ObjectUtil.isNull(terminal)) {
|
||||
if (StringUtils.isEmpty(terminal)) {
|
||||
throw new BusinessException(CommonResponseEnum.NO_DATA, "暂无该终端信息");
|
||||
}
|
||||
}
|
||||
if (param.getType().equals(1)) {
|
||||
if (StrUtil.isBlank(terminal.getInspectionReport())) {
|
||||
throw new BusinessException(OssResponseEnum.DOWNLOAD_FILE_ERROR, "下载检测报告文件URL不存在,请检查数据");
|
||||
}
|
||||
String fileUrl = fileStorageUtil.getFileUrl(terminal.getInspectionReport());
|
||||
URL url = new URL(fileUrl);
|
||||
return new InputStreamResource(url.openStream());
|
||||
}
|
||||
if (StrUtil.isBlank(terminal.getOriginalReport())) {
|
||||
throw new BusinessException(OssResponseEnum.DOWNLOAD_FILE_ERROR, "下载原始数据报告文件URL不存在,请检查数据");
|
||||
}
|
||||
String fileUrl = fileStorageUtil.getFileUrl(terminal.getOriginalReport());
|
||||
URL url = new URL(fileUrl);
|
||||
return new InputStreamResource(url.openStream());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TerminalVO.TerminalStatistics> getCycleStatistics(TerminalParam.TerminalCycleParam param) {
|
||||
List<DeptDTO> deptDTOS = deptFeignClient.getDepSonDetailByDeptId(param.getId()).getData();
|
||||
List<String> ids = deptDTOS.stream().map(DeptDTO::getCode).collect(Collectors.toList());
|
||||
List<TerminalVO.TerminalStatistics> list = this.baseMapper.selectCycleStatistics(param, ids);
|
||||
return getStatisticsList(deptDTOS, list);
|
||||
public TerminalVO.TerminalStatistics getStatistics(TerminalParam param) {
|
||||
TerminalVO.TerminalStatistics statistics=new TerminalVO.TerminalStatistics();
|
||||
List<Dept> deptDTOS = deptFeignClient.getDirectSonSelf(param.getId()).getData();
|
||||
List<String> ids = deptDTOS.stream().map(Dept::getCode).collect(Collectors.toList());
|
||||
List<TerminalVO.OrgStatistics> list = this.baseMapper.selectStatistics(param, ids);
|
||||
statistics.setOrgStatistics(getStatisticsList(deptDTOS, list));
|
||||
statistics.setDateStatistics(this.baseMapper.selectDateStatistics(param, ids));
|
||||
return statistics;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TerminalVO.TerminalStatistics getCycleStatistics(TerminalParam param) {
|
||||
TerminalVO.TerminalStatistics statistics=new TerminalVO.TerminalStatistics();
|
||||
List<Dept> deptDTOS = deptFeignClient.getDirectSonSelf(param.getId()).getData();
|
||||
List<String> ids = deptDTOS.stream().map(Dept::getCode).collect(Collectors.toList());
|
||||
List<TerminalVO.OrgStatistics> list = this.baseMapper.selectCycleStatistics(param, ids);
|
||||
statistics.setOrgStatistics(getStatisticsList(deptDTOS, list));
|
||||
statistics.setDateStatistics(this.baseMapper.selectResultsCycleStatistics(param, ids));
|
||||
return statistics;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String url(MultipartFile file) {
|
||||
return fileStorageUtil.uploadMultipart(file, OssPath.TEST_REPORT);
|
||||
}
|
||||
|
||||
/***
|
||||
@@ -204,22 +345,22 @@ public class PmsTerminalDetectionServiceImpl extends ServiceImpl<PmsTerminalDete
|
||||
* @param list
|
||||
* @return List<TerminalStatistics>
|
||||
*/
|
||||
private List<TerminalVO.TerminalStatistics> getStatisticsList(List<DeptDTO> deptDTOS, List<TerminalVO.TerminalStatistics> list) {
|
||||
Map<String, String> deptMap = deptDTOS.stream().collect(Collectors.toMap(DeptDTO::getCode, DeptDTO::getName));
|
||||
for (TerminalVO.TerminalStatistics t : list) {
|
||||
private List<TerminalVO.OrgStatistics> getStatisticsList(List<Dept> deptDTOS, List<TerminalVO.OrgStatistics> list) {
|
||||
Map<String, String> deptMap = deptDTOS.stream().collect(Collectors.toMap(Dept::getCode, Dept::getName));
|
||||
for (TerminalVO.OrgStatistics t : list) {
|
||||
if (deptMap.containsKey(t.getOrgNo())) {
|
||||
t.setOrgName(deptMap.get(t.getOrgNo()));
|
||||
}
|
||||
}
|
||||
Map<String, TerminalVO.TerminalStatistics> listMap = list.stream().collect(
|
||||
Collectors.toMap(TerminalVO.TerminalStatistics::getOrgNo, Function.identity()));
|
||||
Map<String, TerminalVO.OrgStatistics> listMap = list.stream().collect(
|
||||
Collectors.toMap(TerminalVO.OrgStatistics::getOrgNo, Function.identity()));
|
||||
|
||||
List<DeptDTO> notDeptDTOS = deptDTOS.stream().filter(r -> !listMap.containsKey(r.getCode()))
|
||||
List<Dept> notDeptDTOS = deptDTOS.stream().filter(r -> !listMap.containsKey(r.getCode()))
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(notDeptDTOS)) {
|
||||
TerminalVO.TerminalStatistics notTerminal;
|
||||
for (DeptDTO notDeptDTO : notDeptDTOS) {
|
||||
notTerminal = new TerminalVO.TerminalStatistics();
|
||||
TerminalVO.OrgStatistics notTerminal;
|
||||
for (Dept notDeptDTO : notDeptDTOS) {
|
||||
notTerminal = new TerminalVO.OrgStatistics();
|
||||
notTerminal.setOrgNo(notDeptDTO.getCode());
|
||||
notTerminal.setOrgName(notDeptDTO.getName());
|
||||
notTerminal.setCount(0);
|
||||
@@ -230,12 +371,15 @@ public class PmsTerminalDetectionServiceImpl extends ServiceImpl<PmsTerminalDete
|
||||
}
|
||||
|
||||
/***
|
||||
* 批量导入t终端入网检测信息
|
||||
* 批量导入终端入网检测信息
|
||||
* @author wr
|
||||
* @date 2023-02-28 14:05
|
||||
* @param terminalList
|
||||
*/
|
||||
private void saveTerminalBase(List<TerminalExcel> terminalList) {
|
||||
List<DictData> manufacturerList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_MANUFACTURER.getCode()).getData();
|
||||
//厂商信息
|
||||
Map<String, String> manufacturerMap = manufacturerList.stream().collect(Collectors.toMap(DictData::getName, DictData::getId));
|
||||
List<PvTerminalTreeVO> data = deptFeignClient.allDeptList().getData();
|
||||
List<PmsTerminalDetection> list = this.list(new LambdaQueryWrapper<PmsTerminalDetection>()
|
||||
.eq(PmsTerminalDetection::getStatus, DataStateEnum.ENABLE.getCode()));
|
||||
@@ -265,6 +409,13 @@ public class PmsTerminalDetectionServiceImpl extends ServiceImpl<PmsTerminalDete
|
||||
addMsg(terminalExcelMsg, terminalExcel, msg, "当前部门机构模糊匹配出现多个部门,请详细编写部门机构");
|
||||
continue;
|
||||
}
|
||||
if(!manufacturerMap.containsKey(terminalExcel.getManufacture())){
|
||||
addMsg(terminalExcelMsg, terminalExcel, msg, "当前生产厂商名称不存在,请检查生产厂商名称");
|
||||
continue;
|
||||
}else{
|
||||
terminalExcel.setManufacture( manufacturerMap.get(terminalExcel.getManufacture()));
|
||||
|
||||
}
|
||||
detection = BeanUtil.copyProperties(terminalExcel, PmsTerminalDetection.class);
|
||||
detection.setOrgNo(deptList.get(0).getCode());
|
||||
detection.setOrgName(deptList.get(0).getName());
|
||||
@@ -296,4 +447,5 @@ public class PmsTerminalDetectionServiceImpl extends ServiceImpl<PmsTerminalDete
|
||||
msg.setMsg(content);
|
||||
terminalExcelMsg.add(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.process.service.impl;
|
||||
|
||||
import com.njcn.process.pojo.po.ThsDeptAlarm;
|
||||
import com.njcn.process.mapper.ThsDeptAlarmMapper;
|
||||
import com.njcn.process.service.ThsDeptAlarmService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2023-03-10
|
||||
*/
|
||||
@Service
|
||||
public class ThsDeptAlarmServiceImpl extends ServiceImpl<ThsDeptAlarmMapper, ThsDeptAlarm> implements ThsDeptAlarmService {
|
||||
|
||||
}
|
||||
@@ -8,13 +8,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.device.pms.api.MonitorClient;
|
||||
import com.njcn.device.pms.pojo.dto.PmsMonitorDTO;
|
||||
import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO;
|
||||
import com.njcn.device.pms.pojo.param.PmsMonitorInfoParam;
|
||||
import com.njcn.device.pms.pojo.param.PmsMonitorParam;
|
||||
import com.njcn.process.pojo.param.StrategyParam;
|
||||
import com.njcn.process.pojo.po.ThsDeptAlarm;
|
||||
import com.njcn.process.pojo.po.ThsWarnStrategy;
|
||||
import com.njcn.process.mapper.ThsWarnStrategyMapper;
|
||||
import com.njcn.process.pojo.po.ThsWarnStrategyAss;
|
||||
import com.njcn.process.service.ThsDeptAlarmService;
|
||||
import com.njcn.process.service.ThsWarnStrategyService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
@@ -29,7 +29,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
@@ -42,10 +42,11 @@ public class ThsWarnStrategyServiceImpl extends ServiceImpl<ThsWarnStrategyMappe
|
||||
private final ThsWarnStrategyAssServiceImpl thsWarnStrategyAssService;
|
||||
private final MonitorClient monitorClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final ThsDeptAlarmService thsDeptAlarmService;
|
||||
|
||||
@Override
|
||||
public Page<ThsWarnStrategy> strategyPage(StrategyParam.StrategyPageParam param) {
|
||||
return this.page(new Page<>(param.getPageNum(), param.getPageSize())
|
||||
return this.page(new Page<>(param.getPageNum(), param.getPageSize())
|
||||
, new LambdaQueryWrapper<ThsWarnStrategy>()
|
||||
.like(StrUtil.isNotBlank(param.getName()), ThsWarnStrategy::getName, param.getName())
|
||||
.le(param.getType() != 0, ThsWarnStrategy::getType, param.getType())
|
||||
@@ -63,9 +64,9 @@ public class ThsWarnStrategyServiceImpl extends ServiceImpl<ThsWarnStrategyMappe
|
||||
|
||||
@Override
|
||||
public Boolean bindStrategy(StrategyParam.BindParam param) {
|
||||
List<ThsWarnStrategyAss> assList=new ArrayList<>();
|
||||
List<ThsWarnStrategyAss> assList = new ArrayList<>();
|
||||
//监测点标签绑定
|
||||
ThsWarnStrategyAss ass=new ThsWarnStrategyAss();
|
||||
ThsWarnStrategyAss ass = new ThsWarnStrategyAss();
|
||||
ass.setWarnId(param.getId());
|
||||
ass.setAssId(param.getMonitorTag());
|
||||
ass.setType(0);
|
||||
@@ -73,14 +74,14 @@ public class ThsWarnStrategyServiceImpl extends ServiceImpl<ThsWarnStrategyMappe
|
||||
//指标类型绑定
|
||||
ThsWarnStrategyAss assType;
|
||||
for (String indicatorType : param.getIndicatorTypes()) {
|
||||
assType=new ThsWarnStrategyAss();
|
||||
assType = new ThsWarnStrategyAss();
|
||||
assType.setWarnId(param.getId());
|
||||
assType.setAssId(indicatorType);
|
||||
assType.setType(1);
|
||||
assList.add(assType);
|
||||
}
|
||||
thsWarnStrategyAssService.saveBatch(assList);
|
||||
ThsWarnStrategy warnStrategy=new ThsWarnStrategy();
|
||||
ThsWarnStrategy warnStrategy = new ThsWarnStrategy();
|
||||
warnStrategy.setId(param.getId());
|
||||
warnStrategy.setOperation(param.getOperation());
|
||||
return this.updateById(warnStrategy);
|
||||
@@ -107,8 +108,8 @@ public class ThsWarnStrategyServiceImpl extends ServiceImpl<ThsWarnStrategyMappe
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StrategyParam.MonitorTree> getMonitor(String monitorTag,String orgId) {
|
||||
PmsMonitorParam param = new PmsMonitorParam();
|
||||
public List<StrategyParam.MonitorTree> getMonitor(String monitorTag, String orgId) {
|
||||
PmsMonitorParam param = new PmsMonitorParam();
|
||||
param.setMonitorTags(Arrays.asList(monitorTag));
|
||||
List<PmsMonitorDTO> data = monitorClient.getMonitorInfoListByCond(param).getData();
|
||||
//获取部门结构
|
||||
@@ -116,18 +117,19 @@ public class ThsWarnStrategyServiceImpl extends ServiceImpl<ThsWarnStrategyMappe
|
||||
|
||||
List<DeptDTO> deptDTOS = deptInfos.stream().filter(org -> org.getId().equals(orgId)).collect(Collectors.toList());
|
||||
|
||||
List<StrategyParam.MonitorTree> monitorTrees =new ArrayList<>();
|
||||
StrategyParam.MonitorTree tree=new StrategyParam.MonitorTree();
|
||||
List<StrategyParam.MonitorTree> monitorTrees = new ArrayList<>();
|
||||
StrategyParam.MonitorTree tree = new StrategyParam.MonitorTree();
|
||||
tree.setId(deptDTOS.get(0).getId());
|
||||
tree.setName(deptDTOS.get(0).getName());
|
||||
tree.setChildPower(getPowers(deptDTOS.get(0).getCode(),data));
|
||||
tree.setChildren( recursionSelectList(orgId, deptInfos,data));
|
||||
tree.setChildPower(getPowers(deptDTOS.get(0).getCode(), data));
|
||||
tree.setChildren(recursionSelectList(orgId, deptInfos, data));
|
||||
monitorTrees.add(tree);
|
||||
return monitorTrees;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归生成监测点树
|
||||
*
|
||||
* @param orgId
|
||||
* @param deptInfos
|
||||
* @param data
|
||||
@@ -141,8 +143,8 @@ public class ThsWarnStrategyServiceImpl extends ServiceImpl<ThsWarnStrategyMappe
|
||||
StrategyParam.MonitorTree tree = new StrategyParam.MonitorTree();
|
||||
tree.setId(customer.getId());
|
||||
tree.setName(customer.getName());
|
||||
tree.setChildPower(getPowers(customer.getCode(),data));
|
||||
List<StrategyParam.MonitorTree> children = recursionSelectList(customer.getId(), deptInfos,data);
|
||||
tree.setChildPower(getPowers(customer.getCode(), data));
|
||||
List<StrategyParam.MonitorTree> children = recursionSelectList(customer.getId(), deptInfos, data);
|
||||
tree.setChildren(children);
|
||||
menuSelectList.add(tree);
|
||||
}));
|
||||
@@ -157,41 +159,42 @@ public class ThsWarnStrategyServiceImpl extends ServiceImpl<ThsWarnStrategyMappe
|
||||
* @param data
|
||||
* @return List<Power>
|
||||
*/
|
||||
private static List<StrategyParam.Power> getPowers(String orgCode, List<PmsMonitorDTO> data){
|
||||
private static List<StrategyParam.Power> getPowers(String orgCode, List<PmsMonitorDTO> data) {
|
||||
//变电站信息初始化
|
||||
List<StrategyParam.Power> powers=new ArrayList<>();
|
||||
List<StrategyParam.Power> powers = new ArrayList<>();
|
||||
//获取监测点信息
|
||||
List<PmsMonitorDTO> monitorDTOS = data.stream().filter(dept -> dept.getOrgId().equals(orgCode)).collect(Collectors.toList());
|
||||
Map<String, List<PmsMonitorDTO>> collect = monitorDTOS.stream().collect(
|
||||
Collectors.groupingBy(c-> c.getPowerrId()+ "_" + c.getPowerrName()));
|
||||
Collectors.groupingBy(c -> c.getPowerrId() + "_" + c.getPowerrName()));
|
||||
//获取变电站和监测点信息
|
||||
collect.forEach((key,value)->{
|
||||
String[] split = key.split("_");
|
||||
StrategyParam.Power power=new StrategyParam.Power();
|
||||
power.setId(split[0]);
|
||||
power.setName(split[1]);
|
||||
//监测点信息
|
||||
List<StrategyParam.Power> monitors=new ArrayList();
|
||||
for (PmsMonitorDTO dto : value) {
|
||||
StrategyParam.Power childMonitor=new StrategyParam.Power();
|
||||
childMonitor.setId(dto.getId());
|
||||
childMonitor.setName(dto.getName());
|
||||
monitors.add(childMonitor);
|
||||
}
|
||||
power.setChildMonitor(monitors);
|
||||
powers.add(power);
|
||||
collect.forEach((key, value) -> {
|
||||
String[] split = key.split("_");
|
||||
StrategyParam.Power power = new StrategyParam.Power();
|
||||
power.setId(split[0]);
|
||||
power.setName(split[1]);
|
||||
//监测点信息
|
||||
List<StrategyParam.Power> monitors = new ArrayList();
|
||||
for (PmsMonitorDTO dto : value) {
|
||||
StrategyParam.Power childMonitor = new StrategyParam.Power();
|
||||
childMonitor.setId(dto.getId());
|
||||
childMonitor.setName(dto.getName());
|
||||
monitors.add(childMonitor);
|
||||
}
|
||||
power.setChildMonitor(monitors);
|
||||
powers.add(power);
|
||||
});
|
||||
return powers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean bindMonitor(StrategyParam.BindMonitorParam param) {
|
||||
return null;
|
||||
public Boolean bindMonitor(List<ThsDeptAlarm> param) {
|
||||
return thsDeptAlarmService.saveBatch(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean delStrategy(List<String> ids) {
|
||||
Assert.isTrue(CollectionUtil.isNotEmpty(ids) , "id为空,不能删除");
|
||||
Assert.isTrue(CollectionUtil.isNotEmpty(ids), "id为空,不能删除");
|
||||
thsWarnStrategyAssService.removeByIds(ids);
|
||||
return this.removeByIds(ids);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user