台账主接线图功能

This commit is contained in:
2023-06-16 13:29:13 +08:00
parent 29d09b0bee
commit 4af8ba5f42
7 changed files with 270 additions and 7 deletions

View File

@@ -87,4 +87,11 @@ public interface OssPath {
* 组态图元
*/
String ELEMENT = "element/";
/***
* 监测点一次接线图
*/
String WIRING_DIAGRAM = "wiringDiagram/";
}

View File

@@ -72,6 +72,10 @@ public enum DeviceResponseEnum {
INVALID_LEVEL("A2074","非法拓扑等级"),
LINE_EMPTY("A2075","监测点为空"),
LINE_WIRING_MORE("A2076","已超过监测点一次接线图最大数量"),
LINE_WIRING_DEL("A2078","当前监测点不存在一次接线图"),
LINE_WIRING_NO("A2079","未知主接线图"),
/*excel相关*/
Excel_ERROR("A2080","excel解析异常"),

View File

@@ -295,6 +295,8 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
this.removeByIds(monitorIds);
specialMonitorMapper.deleteBatchIds(monitorIds);
overlimitMapper.deleteBatchIds(monitorIds);
lineBakMapper.deleteBatchIds(monitorIds);
return true;
}

View File

@@ -0,0 +1,19 @@
package com.njcn.device.pq.pojo.vo;
import lombok.Data;
/**
* pqs
* 检测点主接线图
* @author cdf
* @date 2023/6/16
*/
@Data
public class LineWiringDiagramVO {
private String lineId;
private String wiringDiagramName;
private String url;
}

View File

@@ -26,6 +26,7 @@ import com.njcn.device.pq.pojo.po.Line;
import com.njcn.device.pq.pojo.po.LineDetail;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.pq.pojo.po.Voltage;
import com.njcn.device.pq.pojo.vo.LineWiringDiagramVO;
import com.njcn.device.pq.pojo.vo.TerminalBaseVO;
import com.njcn.device.pq.pojo.vo.TerminalVO;
import com.njcn.device.pq.service.TerminalBaseService;
@@ -34,10 +35,7 @@ import com.njcn.poi.util.PoiUtil;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.pojo.po.DictData;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
@@ -61,7 +59,7 @@ import java.util.stream.Stream;
* @date 2022/1/4
*/
@Slf4j
@Api(tags = "装置管理")
@Api(tags = "台账管理")
@RestController
@RequestMapping("/device")
@RequiredArgsConstructor
@@ -350,4 +348,68 @@ public class TerminalBaseController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, count, methodDescribe);
}
/**
* 监测点主接线图上传
* @author cdf
* @date 2023/6/15
*/
@ApiOperation("监测点主接线图上传")
@PostMapping(value = "wiringDiagramUpload")
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.UPLOAD)
public HttpResult<Boolean> wiringDiagramUpload(@ApiParam(value = "文件", required = true) @RequestPart("files") MultipartFile[] files,@RequestParam("lineId")String lineId) {
String methodDescribe = getMethodDescribe("wiringDiagramUpload");
terminalBaseService.wiringDiagramUpload(files,lineId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
/**
* 展示主接线图
* @author cdf
* @date 2023/6/16
*/
@ApiOperation("展示主接线图")
@PostMapping(value = "wiringDiagramShow")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
public HttpResult<List<LineWiringDiagramVO>> wiringDiagramShow(@RequestParam("lineId")String lineId) {
String methodDescribe = getMethodDescribe("wiringDiagramShow");
List<LineWiringDiagramVO> result = terminalBaseService.wiringDiagramShow(lineId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
/**
* 监测点主接线图变更
* @author cdf
* @date 2023/6/16
*/
@ApiOperation("主接线图变更")
@PostMapping(value = "wiringDiagramChange")
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.UPLOAD)
@ApiImplicitParams({
@ApiImplicitParam(name = "lineId", value = "监测点索引", required = true),
@ApiImplicitParam(name = "wiringDiagramName", value = "主接线图名称", required = true)
})
public HttpResult<Object> wiringDiagramChange(@ApiParam(value = "文件", required = true) @RequestPart("file") MultipartFile file,@RequestParam("lineId")String lineId,@RequestParam("wiringDiagramName")String wiringDiagramName) {
String methodDescribe = getMethodDescribe("wiringDiagramChange");
boolean result = terminalBaseService.wiringDiagramChange(file,lineId,wiringDiagramName);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
/**
* 监测点主接线图变更
* @author cdf
* @date 2023/6/16
*/
@ApiOperation("主接线图删除")
@PostMapping(value = "wiringDiagramDel")
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.DELETE)
@ApiImplicitParams({
@ApiImplicitParam(name = "lineId", value = "监测点索引", required = true),
@ApiImplicitParam(name = "wiringDiagramName", value = "主接线图名称", required = true)
})
public HttpResult<Object> wiringDiagramDel(@RequestParam("lineId")String lineId,@RequestParam("wiringDiagramName")String wiringDiagramName) {
String methodDescribe = getMethodDescribe("wiringDiagramDel");
boolean result = terminalBaseService.wiringDiagramDel(lineId,wiringDiagramName);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -9,8 +9,12 @@ import com.njcn.device.pq.pojo.param.AddTerminalParam;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.UpdateTerminalParam;
import com.njcn.device.pq.pojo.po.Line;
import com.njcn.device.pq.pojo.vo.LineWiringDiagramVO;
import com.njcn.device.pq.pojo.vo.TerminalBaseVO;
import com.njcn.device.pq.pojo.vo.TerminalVO;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
@@ -197,4 +201,33 @@ public interface TerminalBaseService {
Integer updatePqOverLimit();
/**
* 监测点主接线图上传
* @author cdf
* @date 2023/6/15
*/
Boolean wiringDiagramUpload(MultipartFile[] files,String lineId);
/**
* 监测点主接线图展示
* @author cdf
* @date 2023/6/15
*/
List<LineWiringDiagramVO> wiringDiagramShow(String lineId);
/**
* 监测点主接线图展示
* @author cdf
* @date 2023/6/15
*/
boolean wiringDiagramChange(MultipartFile file,String lineId,String wiringDiagramName);
/**
* 监测点主接线图删除
* @author cdf
* @date 2023/6/15
*/
boolean wiringDiagramDel(String lineId,String wiringDiagramName);
}

View File

@@ -6,6 +6,7 @@ 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.collection.CollectionUtil;
import cn.hutool.core.text.StrBuilder;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -35,6 +36,8 @@ import com.njcn.device.pq.pojo.po.*;
import com.njcn.device.pq.pojo.vo.*;
import com.njcn.device.pq.service.*;
import com.njcn.device.pq.utils.ExcelStyleUtil;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.poi.excel.ExcelUtil;
import com.njcn.poi.util.PoiUtil;
import com.njcn.system.api.AreaFeignClient;
@@ -102,6 +105,9 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
private final DeviceBakService deviceBakService;
private final FileStorageUtil fileStorageUtil;
/**
* 终端新增操作
*
@@ -1427,8 +1433,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
@Override
public List<Line> getSubstationByIds(List<String> substationIds,List<String> scale) {
return this.baseMapper.getSubStations(substationIds,scale);
public List<Line> getSubstationByIds(List<String> substationIds, List<String> scale) {
return this.baseMapper.getSubStations(substationIds, scale);
// .in(Line::getId, substationIds)
// .eq(Line::getLevel, 3)
// .in(CollUtil.isNotEmpty(scale),Line::getLevel)
@@ -1664,6 +1670,136 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
return count;
}
@Override
public Boolean wiringDiagramUpload(MultipartFile[] files, String lineId) {
LineDetail lineDetailValid = lineDetailMapper.selectById(lineId);
if (Objects.isNull(lineDetailValid)) {
throw new BusinessException(DeviceResponseEnum.LINE_NO);
}
String[] urls = new String[0];
if(StrUtil.isNotBlank(lineDetailValid.getWiringDiagram())){
urls = lineDetailValid.getWiringDiagram().split(StrUtil.COMMA);
}
if (urls.length + files.length > 2) {
throw new BusinessException(DeviceResponseEnum.LINE_WIRING_MORE);
}
List<String> list = new ArrayList<>(Arrays.asList(urls));
StrBuilder strBuilder = new StrBuilder();
Arrays.stream(files).map(file -> fileStorageUtil.uploadMultipart(file, OssPath.WIRING_DIAGRAM)).forEach(list::add);
for (int i = 0; i < list.size(); i++) {
if (i == list.size() - 1) {
strBuilder.append(list.get(i));
} else {
strBuilder.append(list.get(i)).append(StrUtil.COMMA);
}
}
LineDetail lineDetail = new LineDetail();
lineDetail.setWiringDiagram(strBuilder.toString());
lineDetail.setId(lineId);
lineDetailMapper.updateById(lineDetail);
return true;
}
@Override
public List<LineWiringDiagramVO> wiringDiagramShow(String lineId) {
List<LineWiringDiagramVO> result = new ArrayList<>();
LineDetail detail = lineDetailMapper.selectById(lineId);
if (Objects.isNull(detail)) {
throw new BusinessException(DeviceResponseEnum.LINE_NO);
}
if (StrUtil.isBlank(detail.getWiringDiagram())) {
return result;
}
String[] urlStr = detail.getWiringDiagram().split(StrUtil.COMMA);
for (String url : urlStr) {
LineWiringDiagramVO lineWiringDiagramVO = new LineWiringDiagramVO();
String realUrl = fileStorageUtil.getFileUrl(url);
lineWiringDiagramVO.setLineId(detail.getId());
lineWiringDiagramVO.setWiringDiagramName(url);
lineWiringDiagramVO.setUrl(realUrl);
result.add(lineWiringDiagramVO);
}
return result;
}
@Override
public boolean wiringDiagramChange(MultipartFile file, String lineId, String wiringDiagramName) {
LineDetail detail = lineDetailMapper.selectById(lineId);
if (Objects.isNull(detail)) {
throw new BusinessException(DeviceResponseEnum.LINE_NO);
}
if (StrUtil.isBlank(detail.getWiringDiagram())) {
throw new BusinessException(DeviceResponseEnum.LINE_WIRING_DEL);
}
if (!detail.getWiringDiagram().contains(wiringDiagramName)) {
throw new BusinessException(DeviceResponseEnum.LINE_WIRING_NO);
}
String[] urlArr = detail.getWiringDiagram().split(StrUtil.COMMA);
List<String> newUrlList = Arrays.stream(urlArr).filter(s -> !s.equalsIgnoreCase(wiringDiagramName)).collect(Collectors.toList());
if (newUrlList.size() > 1) {
throw new BusinessException(DeviceResponseEnum.LINE_WIRING_MORE);
}
fileStorageUtil.deleteFile(wiringDiagramName);
String url = fileStorageUtil.uploadMultipart(file, OssPath.WIRING_DIAGRAM);
newUrlList.add(url);
StrBuilder strBuilder = new StrBuilder();
for (int i = 0; i < newUrlList.size(); i++) {
if (i == newUrlList.size() - 1) {
strBuilder.append(newUrlList.get(i));
} else {
strBuilder.append(newUrlList.get(i)).append(StrUtil.COMMA);
}
}
LineDetail lineDetail = new LineDetail();
lineDetail.setId(detail.getId());
lineDetail.setWiringDiagram(strBuilder.toString());
lineDetailMapper.updateById(lineDetail);
return true;
}
@Override
public boolean wiringDiagramDel(String lineId, String wiringDiagramName) {
LineDetail detail = lineDetailMapper.selectById(lineId);
if (Objects.isNull(detail)) {
throw new BusinessException(DeviceResponseEnum.LINE_NO);
}
if (StrUtil.isBlank(detail.getWiringDiagram())) {
throw new BusinessException(DeviceResponseEnum.LINE_WIRING_DEL);
}
if (!detail.getWiringDiagram().contains(wiringDiagramName)) {
throw new BusinessException(DeviceResponseEnum.LINE_WIRING_NO);
}
fileStorageUtil.deleteFile(wiringDiagramName);
String[] urlArr = detail.getWiringDiagram().split(StrUtil.COMMA);
List<String> newUrlList = Arrays.stream(urlArr).filter(s -> !s.equalsIgnoreCase(wiringDiagramName)).collect(Collectors.toList());
StrBuilder strBuilder = new StrBuilder();
for (int i = 0; i < newUrlList.size(); i++) {
if (i == newUrlList.size() - 1) {
strBuilder.append(newUrlList.get(i));
} else {
strBuilder.append(newUrlList.get(i)).append(StrUtil.COMMA);
}
}
LineDetail lineDetail = new LineDetail();
lineDetail.setId(detail.getId());
lineDetail.setWiringDiagram(strBuilder.toString());
lineDetailMapper.updateById(lineDetail);
return true;
}
private String saveTerminalInfo(List<OracleTerminalExcel> oracleTerminalExcels, List<OverLimitExcel> overLimitExcels) {
List<OracleTerminalExcel.OracleTerminalExcelMsg> oracleTerminalExcelMsg = new ArrayList<>();
//任意集合数据为空,不处理