台账主接线图功能
This commit is contained in:
@@ -87,4 +87,11 @@ public interface OssPath {
|
||||
* 组态图元
|
||||
*/
|
||||
String ELEMENT = "element/";
|
||||
|
||||
/***
|
||||
* 监测点一次接线图
|
||||
*/
|
||||
String WIRING_DIAGRAM = "wiringDiagram/";
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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解析异常"),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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.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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
/**
|
||||
* 终端新增操作
|
||||
*
|
||||
@@ -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<>();
|
||||
//任意集合数据为空,不处理
|
||||
|
||||
Reference in New Issue
Block a user