台账主接线图功能
This commit is contained in:
@@ -87,4 +87,11 @@ public interface OssPath {
|
|||||||
* 组态图元
|
* 组态图元
|
||||||
*/
|
*/
|
||||||
String ELEMENT = "element/";
|
String ELEMENT = "element/";
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 监测点一次接线图
|
||||||
|
*/
|
||||||
|
String WIRING_DIAGRAM = "wiringDiagram/";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,6 +72,10 @@ public enum DeviceResponseEnum {
|
|||||||
|
|
||||||
INVALID_LEVEL("A2074","非法拓扑等级"),
|
INVALID_LEVEL("A2074","非法拓扑等级"),
|
||||||
LINE_EMPTY("A2075","监测点为空"),
|
LINE_EMPTY("A2075","监测点为空"),
|
||||||
|
LINE_WIRING_MORE("A2076","已超过监测点一次接线图最大数量"),
|
||||||
|
LINE_WIRING_DEL("A2078","当前监测点不存在一次接线图"),
|
||||||
|
LINE_WIRING_NO("A2079","未知主接线图"),
|
||||||
|
|
||||||
|
|
||||||
/*excel相关*/
|
/*excel相关*/
|
||||||
Excel_ERROR("A2080","excel解析异常"),
|
Excel_ERROR("A2080","excel解析异常"),
|
||||||
|
|||||||
@@ -295,6 +295,8 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
|
|||||||
this.removeByIds(monitorIds);
|
this.removeByIds(monitorIds);
|
||||||
specialMonitorMapper.deleteBatchIds(monitorIds);
|
specialMonitorMapper.deleteBatchIds(monitorIds);
|
||||||
overlimitMapper.deleteBatchIds(monitorIds);
|
overlimitMapper.deleteBatchIds(monitorIds);
|
||||||
|
|
||||||
|
lineBakMapper.deleteBatchIds(monitorIds);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -26,6 +26,7 @@ import com.njcn.device.pq.pojo.po.Line;
|
|||||||
import com.njcn.device.pq.pojo.po.LineDetail;
|
import com.njcn.device.pq.pojo.po.LineDetail;
|
||||||
import com.njcn.device.biz.pojo.po.Overlimit;
|
import com.njcn.device.biz.pojo.po.Overlimit;
|
||||||
import com.njcn.device.pq.pojo.po.Voltage;
|
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.TerminalBaseVO;
|
||||||
import com.njcn.device.pq.pojo.vo.TerminalVO;
|
import com.njcn.device.pq.pojo.vo.TerminalVO;
|
||||||
import com.njcn.device.pq.service.TerminalBaseService;
|
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.api.DicDataFeignClient;
|
||||||
import com.njcn.system.pojo.po.DictData;
|
import com.njcn.system.pojo.po.DictData;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.*;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import io.swagger.annotations.ApiParam;
|
|
||||||
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.apache.poi.ss.usermodel.Workbook;
|
||||||
@@ -61,7 +59,7 @@ import java.util.stream.Stream;
|
|||||||
* @date 2022/1/4
|
* @date 2022/1/4
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Api(tags = "装置管理")
|
@Api(tags = "台账管理")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/device")
|
@RequestMapping("/device")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -350,4 +348,68 @@ public class TerminalBaseController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, count, methodDescribe);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.param.UpdateTerminalParam;
|
import com.njcn.device.pq.pojo.param.UpdateTerminalParam;
|
||||||
import com.njcn.device.pq.pojo.po.Line;
|
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.TerminalBaseVO;
|
||||||
import com.njcn.device.pq.pojo.vo.TerminalVO;
|
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 org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
@@ -197,4 +201,33 @@ public interface TerminalBaseService {
|
|||||||
|
|
||||||
|
|
||||||
Integer updatePqOverLimit();
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import cn.afterturn.easypoi.excel.entity.ExportParams;
|
|||||||
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||||
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.text.StrBuilder;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.pojo.vo.*;
|
||||||
import com.njcn.device.pq.service.*;
|
import com.njcn.device.pq.service.*;
|
||||||
import com.njcn.device.pq.utils.ExcelStyleUtil;
|
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.excel.ExcelUtil;
|
||||||
import com.njcn.poi.util.PoiUtil;
|
import com.njcn.poi.util.PoiUtil;
|
||||||
import com.njcn.system.api.AreaFeignClient;
|
import com.njcn.system.api.AreaFeignClient;
|
||||||
@@ -102,6 +105,9 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
|||||||
|
|
||||||
private final DeviceBakService deviceBakService;
|
private final DeviceBakService deviceBakService;
|
||||||
|
|
||||||
|
private final FileStorageUtil fileStorageUtil;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 终端新增操作
|
* 终端新增操作
|
||||||
*
|
*
|
||||||
@@ -1664,6 +1670,136 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
|||||||
return count;
|
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) {
|
private String saveTerminalInfo(List<OracleTerminalExcel> oracleTerminalExcels, List<OverLimitExcel> overLimitExcels) {
|
||||||
List<OracleTerminalExcel.OracleTerminalExcelMsg> oracleTerminalExcelMsg = new ArrayList<>();
|
List<OracleTerminalExcel.OracleTerminalExcelMsg> oracleTerminalExcelMsg = new ArrayList<>();
|
||||||
//任意集合数据为空,不处理
|
//任意集合数据为空,不处理
|
||||||
|
|||||||
Reference in New Issue
Block a user