From 4af8ba5f42fb8d3dcfb2659cfde74cfc81045358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E6=9C=A8c?= <857448963@qq.com> Date: Fri, 16 Jun 2023 13:29:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E4=B8=BB=E6=8E=A5=E7=BA=BF?= =?UTF-8?q?=E5=9B=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/njcn/oss/constant/OssPath.java | 7 + .../device/biz/enums/DeviceResponseEnum.java | 4 + .../majornetwork/impl/MonitorServiceImpl.java | 2 + .../pq/pojo/vo/LineWiringDiagramVO.java | 19 +++ .../pq/controller/TerminalBaseController.java | 72 ++++++++- .../pq/service/TerminalBaseService.java | 33 +++++ .../service/impl/TerminalBaseServiceImpl.java | 140 +++++++++++++++++- 7 files changed, 270 insertions(+), 7 deletions(-) create mode 100644 pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineWiringDiagramVO.java diff --git a/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java index 62a77bc4d..5c82243c3 100644 --- a/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java +++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java @@ -87,4 +87,11 @@ public interface OssPath { * 组态图元 */ String ELEMENT = "element/"; + + /*** + * 监测点一次接线图 + */ + String WIRING_DIAGRAM = "wiringDiagram/"; + + } diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/enums/DeviceResponseEnum.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/enums/DeviceResponseEnum.java index 3e56870bc..def80ed42 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/enums/DeviceResponseEnum.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/enums/DeviceResponseEnum.java @@ -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解析异常"), diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java index ef05eb5b4..498550888 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java @@ -295,6 +295,8 @@ public class MonitorServiceImpl extends ServiceImpl impl this.removeByIds(monitorIds); specialMonitorMapper.deleteBatchIds(monitorIds); overlimitMapper.deleteBatchIds(monitorIds); + + lineBakMapper.deleteBatchIds(monitorIds); return true; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineWiringDiagramVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineWiringDiagramVO.java new file mode 100644 index 000000000..33e6e886b --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineWiringDiagramVO.java @@ -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; +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/TerminalBaseController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/TerminalBaseController.java index dca14987a..873e69ca0 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/TerminalBaseController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/TerminalBaseController.java @@ -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 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> wiringDiagramShow(@RequestParam("lineId")String lineId) { + String methodDescribe = getMethodDescribe("wiringDiagramShow"); + List 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 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 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); + } + } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/TerminalBaseService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/TerminalBaseService.java index d6e445c37..b21fb1447 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/TerminalBaseService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/TerminalBaseService.java @@ -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 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); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java index 86aadfd85..ad8935c50 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java @@ -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 imple private final DeviceBakService deviceBakService; + private final FileStorageUtil fileStorageUtil; + + /** * 终端新增操作 * @@ -1427,8 +1433,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl imple } @Override - public List getSubstationByIds(List substationIds,List scale) { - return this.baseMapper.getSubStations(substationIds,scale); + public List getSubstationByIds(List substationIds, List 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 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 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 wiringDiagramShow(String lineId) { + List 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 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 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 oracleTerminalExcels, List overLimitExcels) { List oracleTerminalExcelMsg = new ArrayList<>(); //任意集合数据为空,不处理