feat(data): 新增文件路径查询版本信息功能并完善设备升级流程

- 在CsEdDataController中新增findByPath接口用于根据文件路径获取版本信息
- 在CsEdDataFeignClient中添加findByPath远程调用方法
- 为CsEdDataFeignClientFallbackFactory增加降级处理逻辑
- 扩展CsEdDataService接口和服务实现类,添加findByPath业务方法
- 在addEdData和auditEdData方法中增加版本冲突检查机制
- 实现uploadUpgradeFile功能支持设备升级文件上传
- 完善CsEquipmentDeliveryServiceImpl中的文件分片传输逻辑
- 修复CsEventUserPOServiceImpl中的空指针安全检查
- 优化CsLinePOServiceImpl中PT类型处理的空值判断
- 改进CsUpgradeLogsController中按设备ID查询的排序功能
- 补充CustomReportServiceImpl中接线方式的空值验证
- 在EquipmentDeliveryController中暴露uploadUpgradeFile控制器接口
- 增强WordExportModelController中电压等级数据的完整性校验
This commit is contained in:
xy
2026-07-21 15:00:54 +08:00
parent 08d83c8c1e
commit b7db768a46
13 changed files with 295 additions and 29 deletions

View File

@@ -1,20 +1,14 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.api.fallback.CsEdDataFeignClientFallbackFactory;
import com.njcn.csdevice.pojo.param.CsEdDataAddParm;
import com.njcn.csdevice.pojo.param.CsEdDataQueryParm;
import com.njcn.csdevice.pojo.po.CsEdDataPO;
import com.njcn.csdevice.pojo.vo.CsEdDataVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -44,4 +38,7 @@ public interface CsEdDataFeignClient {
@GetMapping("/findByCondition")
@ApiOperation("根据条件查询是否存在数据")
HttpResult<CsEdDataPO> findByCondition(@RequestBody CsEdDataQueryParm param);
@GetMapping("/findByPath")
HttpResult<CsEdDataPO> findByPath(@RequestParam("filePath") String filePath);
}

View File

@@ -59,6 +59,12 @@ public class CsEdDataFeignClientFallbackFactory implements FallbackFactory<CsEdD
log.error("{}异常,降级处理,异常为:{}","根据条件查询是否存在数据",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<CsEdDataPO> findByPath(String filePath) {
log.error("{}异常,降级处理,异常为:{}","根据文件路径获取版本信息",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -65,7 +65,10 @@ public class CsUpgradeLogsController extends BaseController {
@ApiImplicitParam(name = "devId", value = "装置Id", required = true)
public HttpResult<List<CsUpgradeLogs>> getByDevId(@RequestParam("devId") String devId) {
String methodDescribe = getMethodDescribe("getByDevId");
List<CsUpgradeLogs> result = csUpgradeLogsService.lambdaQuery().eq(CsUpgradeLogs::getDevId, devId).list();
List<CsUpgradeLogs> result = csUpgradeLogsService.lambdaQuery()
.eq(CsUpgradeLogs::getDevId, devId)
.orderByDesc(CsUpgradeLogs::getCreateTime)
.list();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -418,7 +418,6 @@ public class EquipmentDeliveryController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/version/page")
@ApiOperation("查询设备版本信息")
@@ -430,4 +429,20 @@ public class EquipmentDeliveryController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/uploadUpgradeFile")
@ApiOperation("上传升级文件至装置")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "版本id", required = true),
@ApiImplicitParam(name = "nDid", value = "网络设备id", required = true)
})
@ApiImplicitParam(name = "id", value = "版本id", required = true)
public HttpResult<String> uploadUpgradeFile(@RequestParam("id") String id, @RequestParam("nDid") String nDid) {
String methodDescribe = getMethodDescribe("uploadUpgradeFile");
csEquipmentDeliveryService.uploadUpgradeFile(id,nDid);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -110,4 +110,14 @@ public class CsEdDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/findByPath")
@ApiOperation("根据文件路径获取版本信息")
@ApiImplicitParam(name = "filePath", value = "filePath", required = true)
public HttpResult<CsEdDataPO> findByPath(@RequestParam("filePath") String filePath){
String methodDescribe = getMethodDescribe("findByPath");
CsEdDataPO po = csEdDataService.findByPath(filePath);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe);
}
}

View File

@@ -65,5 +65,7 @@ public interface CsEdDataService extends IService<CsEdDataPO> {
CsEdDataPO findByCondition(CsEdDataQueryParm param);
void addEdDataFirst(CsEdDataAddParm param);
CsEdDataPO findByPath(String filePath);
}

View File

@@ -194,4 +194,11 @@ public interface CsEquipmentDeliveryService extends IService<CsEquipmentDelivery
List<CsEquipmentDeliveryPO> getRunPortableDev(String userId);
IPage<DevVersionVO> versionPage(CsEquipmentDeliveryQueryParm baseParam);
/**
* 1.根据id获取系统中当前的版本信息
* 2.根据版本信息获取文件,上传给设备
* @param id
*/
void uploadUpgradeFile(String id, String nDid);
}

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.mapper.CsEdDataMapper;
import com.njcn.csdevice.pojo.param.CsEdDataAddParm;
import com.njcn.csdevice.pojo.param.CsEdDataAuditParm;
@@ -42,6 +43,17 @@ public class CsEdDataServiceImpl extends ServiceImpl<CsEdDataMapper, CsEdDataPO>
@Override
@Transactional(rollbackFor = {Exception.class})
public boolean addEdData(CsEdDataAddParm csEdDataAddParm) {
LambdaQueryWrapper<CsEdDataPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(CsEdDataPO::getDevType, csEdDataAddParm.getDevType())
.eq(CsEdDataPO::getVersionNo, csEdDataAddParm.getVersionNo())
.eq(CsEdDataPO::getVersionAgreement, csEdDataAddParm.getVersionAgreement())
.eq(CsEdDataPO::getVersionDate, csEdDataAddParm.getVersionDate())
.eq(CsEdDataPO::getCrc, csEdDataAddParm.getCrc())
.eq(CsEdDataPO::getStatus, 1);
CsEdDataPO po = this.baseMapper.selectOne(lambdaQueryWrapper);
if (!Objects.isNull(po)) {
throw new BusinessException("该版本已存在!");
}
CsEdDataPO csEdDataPO = new CsEdDataPO();
BeanUtils.copyProperties(csEdDataAddParm, csEdDataPO);
String remoteDir = StrUtil.SLASH + OssPath.EDDATA + csEdDataAddParm.getDevTypeName() + StrUtil.SLASH + csEdDataAddParm.getVersionNo() + StrUtil.SLASH;
@@ -58,14 +70,25 @@ public class CsEdDataServiceImpl extends ServiceImpl<CsEdDataMapper, CsEdDataPO>
@Override
@Transactional(rollbackFor = {Exception.class})
public Boolean auditEdData(CsEdDataAuditParm csEdDataAuditParm) {
LambdaQueryWrapper<CsEdDataPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(CsEdDataPO::getDevType, csEdDataAuditParm.getDevType())
.eq(CsEdDataPO::getVersionNo, csEdDataAuditParm.getVersionNo())
.eq(CsEdDataPO::getVersionAgreement, csEdDataAuditParm.getVersionAgreement())
.eq(CsEdDataPO::getVersionDate, csEdDataAuditParm.getVersionDate())
.eq(CsEdDataPO::getCrc, csEdDataAuditParm.getCrc())
.ne(CsEdDataPO::getId, csEdDataAuditParm.getId())
.eq(CsEdDataPO::getStatus, 1);
CsEdDataPO po = this.baseMapper.selectOne(lambdaQueryWrapper);
if (!Objects.isNull(po)) {
throw new BusinessException("修改后的数据与现有版本冲突,修改失败!");
}
CsEdDataPO csEdDataPO = new CsEdDataPO();
BeanUtils.copyProperties(csEdDataAuditParm, csEdDataPO);
if (!Objects.isNull(csEdDataAuditParm.getFile())) {
String filePath = fileStorageUtil.uploadMultipart(csEdDataAuditParm.getFile(), StrUtil.SLASH + OssPath.EDDATA + csEdDataAuditParm.getDevTypeName() + StrUtil.SLASH + csEdDataAuditParm.getVersionNo() + StrUtil.SLASH, true);
csEdDataPO.setFilePath(filePath);
}
boolean b = this.updateById(csEdDataPO);
return b;
return this.updateById(csEdDataPO);
}
@Override
@@ -119,5 +142,13 @@ public class CsEdDataServiceImpl extends ServiceImpl<CsEdDataMapper, CsEdDataPO>
.toLocalDateTime());
this.save(csEdDataPO);
}
@Override
public CsEdDataPO findByPath(String filePath) {
LambdaQueryWrapper<CsEdDataPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(CsEdDataPO::getFilePath, filePath)
.eq(CsEdDataPO::getStatus, 1);
return this.getOne(lambdaQueryWrapper);
}
}

View File

@@ -16,6 +16,7 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -23,7 +24,15 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
import com.njcn.access.api.AskDeviceDataFeignClient;
import com.njcn.access.api.CsTopicFeignClient;
import com.njcn.access.enums.AccessEnum;
import com.njcn.access.enums.AccessResponseEnum;
import com.njcn.access.enums.TypeEnum;
import com.njcn.access.pojo.dto.ReqAndResDto;
import com.njcn.access.pojo.dto.UpgradeDevDto;
import com.njcn.access.pojo.dto.file.FileRedisDto;
import com.njcn.access.utils.MqttUtil;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.api.CsLedgerFeignClient;
@@ -48,7 +57,9 @@ import com.njcn.csharmonic.param.CsEventUserQueryParam;
import com.njcn.csharmonic.pojo.po.CsEventPO;
import com.njcn.device.biz.mapper.OverLimitWlMapper;
import com.njcn.mq.message.CloudTopicMessage;
import com.njcn.mq.message.LogMessage;
import com.njcn.mq.template.CloudTopicMessageTemplate;
import com.njcn.mq.template.LogMessageTemplate;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.redis.pojo.enums.AppRedisKey;
@@ -73,6 +84,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StreamUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
@@ -122,8 +134,6 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
private final CsTerminalLogsMapper csTerminalLogsMapper;
private final ICsCommunicateService csCommunicateService;
private final ICsUserPinsService csUserPinsService;
private final CsEngineeringService csEngineeringService;
private final AppProjectService appProjectService;
private final CsEdDataService csEdDataService;
private final ICsSoftInfoService csSoftInfoService;
private final EventUserFeignClient eventUserFeignClient;
@@ -134,6 +144,9 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
private final ICsDeviceRegistryService csDeviceRegistryService;
private final StringRedisTemplate stringRedisTemplate;
private final CloudTopicMessageTemplate cloudTopicMessageTemplate;
private final CsTopicFeignClient csTopicFeignClient;
private final MqttPublisher publisher;
private final LogMessageTemplate logMessageTemplate;
@Override
public void refreshDeviceDataCache() {
@@ -1405,6 +1418,178 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
return resultPage;
}
@Override
public void uploadUpgradeFile(String id, String nDid) {
CsEdDataPO po = csEdDataService.getById(id);
if (Objects.isNull(po)) {
throw new BusinessException("系统中未找到对应的版本信息");
}
//判断是否正在上传
Object object = redisUtil.getObjectByKey("uploading:" + nDid);
if (Objects.nonNull(object)) {
throw new BusinessException(AlgorithmResponseEnum.FILE_UPLOADING);
}
Object object2 = redisUtil.getObjectByKey("fileDowning:" + nDid);
if (Objects.nonNull(object2)) {
throw new BusinessException(AlgorithmResponseEnum.FILE_BUSY);
}
try {
//根据路径获取文件
String path = po.getFilePath();
InputStream inputStream = fileStorageUtil.getFileStream(path);
byte[] bytes = StreamUtils.copyToByteArray(inputStream);
if (bytes.length == 0) {
throw new BusinessException("文件流转成数组,数据为空");
}
int length = bytes.length;
String version = csTopicFeignClient.find(nDid).getData();
if (StrUtil.isNotBlank(version) || Objects.isNull(version)) {
version = "V1";
}
int cap = 50 * 1024;
//需要分片处理 一帧按50k大小传递
if (length > cap){
//需要循环的次数
int times = bytes.length / cap + 1;
for (int i = 1; i <= times; i++) {
//发送数据给前端
String json = "{fileName:"+po.getFilePath()+",allStep:"+times+",nowStep:"+i+"}";
publisher.send("/Web/Progress/" + id, new Gson().toJson(json), 1, false);
LogMessage logDto = new LogMessage();
byte[] lsBytes;
if (length > 50*1024) {
lsBytes = Arrays.copyOfRange(bytes, (i - 1) * cap, i * cap);
ReqAndResDto.Req req = getPojo(i,path,bytes.length,lsBytes,(i-1)*cap);
publisher.send("/Pfm/DevFileCmd/" + version + "/" + id, new Gson().toJson(req), 1, false);
logDto.setOperate(id + "设备上送文件,这是第" + i + "");
logDto.setResult(1);
length = length - cap;
//判断是否重发
sendNextStep(logDto,path,bytes.length,lsBytes,(i-1)*cap,version,id,i,false);
FileRedisDto fileRedisDto = (FileRedisDto) redisUtil.getObjectByKey(AppRedisKey.UPLOAD.concat(id).concat(String.valueOf(i)));
//重发之后判断继续循环还是跳出循环
if (!Objects.isNull(fileRedisDto) && !Objects.equals(fileRedisDto.getCode(),200)) {
redisUtil.delete("uploading:" + nDid);
break;
}
} else {
lsBytes = Arrays.copyOfRange(bytes, (i - 1) * cap, bytes.length);
ReqAndResDto.Req req = getPojo(i,path,bytes.length,lsBytes,(i-1)*cap);
publisher.send("/Pfm/DevFileCmd/" + version + "/" + id, new Gson().toJson(req), 1, false);
logDto.setOperate(id + "设备上送文件,这是最后一帧,为第" + i + "");
logDto.setResult(1);
//判断是否重发
sendNextStep(logDto,path,bytes.length,lsBytes,(i-1)*cap,version,id,i,true);
}
logMessageTemplate.sendMember(logDto);
}
} else {
String json = "{fileName:"+path+",allStep:\""+1+"\",nowStep:"+1+"}";
publisher.send("/Web/Progress", new Gson().toJson(json), 1, false);
ReqAndResDto.Req req = getPojo(1,path,length,bytes,0);
publisher.send("/Pfm/DevFileCmd/" + version + "/" + id, new Gson().toJson(req), 1, false);
LogMessage logDto = new LogMessage();
logDto.setOperate(id + "系统上送文件,当前文件只有1帧");
logDto.setResult(1);
logMessageTemplate.sendMember(logDto);
//判断是否重发
sendNextStep(logDto,path,length,bytes,0,version,id,1,false);
}
} catch (IOException e) {
redisUtil.delete("uploading:" + id);
redisUtil.delete("fileDowning:" + id);
LogMessage logDto = new LogMessage();
logDto.setResult(0);
logDto.setOperate("系统上传升级文件,获取文件流");
logDto.setFailReason(e.getMessage());
logMessageTemplate.sendMember(logDto);
throw new BusinessException("获取文件流失败");
} catch (Exception e) {
redisUtil.delete("uploading:" + id);
redisUtil.delete("fileDowning:" + id);
LogMessage logDto = new LogMessage();
logDto.setResult(0);
logDto.setOperate("系统上传升级文件");
logDto.setFailReason(e.getMessage());
logMessageTemplate.sendMember(logDto);
throw new BusinessException(AccessResponseEnum.UPLOAD_ERROR);
}
}
/**
* 上送文件至装置
*/
public ReqAndResDto.Req getPojo(Integer mid, String fileName, Integer allLength, byte[] bytes, Integer offset) {
//组装报文
ReqAndResDto.Req reqAndResParam = new ReqAndResDto.Req();
reqAndResParam.setMid(mid);
reqAndResParam.setDid(0);
reqAndResParam.setPri(AccessEnum.FIRST_CHANNEL.getCode());
reqAndResParam.setType(Integer.parseInt(TypeEnum.TYPE_32.getCode()));
reqAndResParam.setExpire(-1);
UpgradeDevDto upgradeDevDto = new UpgradeDevDto();
int cmpAlg;
String ext = fileName.substring(fileName.lastIndexOf('.') + 1);
if (Objects.equals(ext.toLowerCase(), "zip")) {
cmpAlg = 1;
} else if (Objects.equals(ext.toLowerCase(), "tar")) {
cmpAlg = 2;
} else {
cmpAlg = 0;
}
upgradeDevDto.setCmpAlg(cmpAlg);
upgradeDevDto.setName(fileName);
upgradeDevDto.setFileSize(allLength);
upgradeDevDto.setOffset(offset);
upgradeDevDto.setLen(bytes.length);
upgradeDevDto.setData(Base64.getEncoder().encodeToString(bytes));
reqAndResParam.setMsg(upgradeDevDto);
return reqAndResParam;
}
/**
* 根据装置响应来判断发送的内容
*/
public void sendNextStep(LogMessage logDto, String path, int length, byte[] bytes, Integer offset, String version, String id, int mid, boolean result) {
try {
for (int i = 0; i < 30; i++) {
if (result) {
Thread.sleep(10000);
} else {
Thread.sleep(1000);
}
FileRedisDto fileRedisDto = (FileRedisDto) redisUtil.getObjectByKey(AppRedisKey.UPLOAD.concat(id).concat(String.valueOf(mid)));
if (Objects.isNull(fileRedisDto)) {
FileRedisDto fileRedis = new FileRedisDto();
fileRedis.setCode(400);
redisUtil.saveByKeyWithExpire(AppRedisKey.UPLOAD.concat(id).concat(String.valueOf(mid)),fileRedis,10L);
} else {
if (Objects.equals(fileRedisDto.getCode(),200)) {
break;
} else {
FileRedisDto fileRedis = new FileRedisDto();
fileRedis.setCode(400);
redisUtil.saveByKeyWithExpire(AppRedisKey.UPLOAD.concat(id).concat(String.valueOf(mid)),fileRedis,10L);
ReqAndResDto.Req req = getPojo(mid,path,length,bytes,offset);
publisher.send("/Pfm/DevFileCmd/" + version + "/" + id, new Gson().toJson(req), 1, false);
logDto.setOperate(id + "系统上送文件,装置响应失败,重新发送,这是第" + (i+1) + "");
logDto.setResult(1);
logMessageTemplate.sendMember(logDto);
}
}
}
} catch (InterruptedException e) {
assert logDto != null;
logDto.setResult(0);
logDto.setOperate("平台重新上送文件");
logDto.setFailReason(e.getMessage());
logMessageTemplate.sendMember(logDto);
throw new BusinessException(AccessResponseEnum.RELOAD_UPLOAD_ERROR);
}
}
@Override
public List<CsEquipmentDeliveryPO> getRunPortableDev(String userId) {
List<CsEquipmentDeliveryPO> result = new ArrayList<>();

View File

@@ -504,7 +504,11 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
}
lineDetailDataVO.setLineName(csLinePO.getName());
lineDetailDataVO.setLineId(csLinePO.getLineId());
lineDetailDataVO.setPtType(PubUtils.ptType(csLinePO.getConType()));
if (Objects.isNull(csLinePO.getConType())) {
lineDetailDataVO.setPtType(null);
} else {
lineDetailDataVO.setPtType(PubUtils.ptType(csLinePO.getConType()));
}
lineDetailDataVO.setPt(csLinePO.getPtRatio() + "/" + (Objects.isNull(csLinePO.getPt2Ratio())?1.0:csLinePO.getPt2Ratio()));
lineDetailDataVO.setCt(csLinePO.getCtRatio() + "/" + (Objects.isNull(csLinePO.getCt2Ratio())?1.0:csLinePO.getCt2Ratio()));
lineDetailDataVO.setDealCapacity(Objects.isNull(csLinePO.getProtocolCapacity())?0.0f:csLinePO.getProtocolCapacity().floatValue());

View File

@@ -2,6 +2,8 @@ package com.njcn.csharmonic.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
import com.njcn.device.biz.pojo.po.Overlimit;
@@ -10,7 +12,6 @@ import com.njcn.harmonic.common.pojo.dto.DeviceUnitCommDTO;
import com.njcn.harmonic.common.pojo.dto.HarmLineDetailDataCommDTO;
import com.njcn.harmonic.common.pojo.dto.OverLimitInfoCommDTO;
import com.njcn.harmonic.common.service.MonitorHarmonicReportService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -21,7 +22,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -79,6 +80,9 @@ public class WordExportModelController extends BaseController {
harmLineDetailDataCommDTO = BeanUtil.copyProperties(lineDto, HarmLineDetailDataCommDTO.class);
List<Overlimit> overLimitList = csLineFeignClient.getOverLimitData(Stream.of(lineIndex).collect(Collectors.toList())).getData();
if (CollUtil.isEmpty(overLimitList)) {
throw new BusinessException("监测点缺失电压等级数据,限值缺失,无法生成报告");
}
overLimit = overLimitList.get(0);
overLimitInfoCommDTO = BeanUtil.copyProperties(overLimit, OverLimitInfoCommDTO.class);

View File

@@ -500,7 +500,7 @@ public class CsEventUserPOServiceImpl extends ServiceImpl<CsEventUserPOMapper, C
if (ObjectUtil.isNotNull(temp.getLineId())) {
if (!Objects.isNull(dto)) {
temp.setLineVoltage(dto.getVolGrade());
if (dto.getClDid() == 0) {
if (!Objects.isNull(dto.getClDid()) && dto.getClDid() == 0) {
temp.setModuleNo("模块" + temp.getClDid());
}
}

View File

@@ -2220,21 +2220,23 @@ public class CustomReportServiceImpl implements CustomReportService {
//根据监测点获取接线方式
CsLinePO po = csLineFeignClient.getById(lineId).getData();
//根据接线方式获取模板id
if (Objects.isNull(po.getConType())) {
throw new BusinessException("监测点缺失接线方式,无法匹配模板");
}
int conType = po.getConType();
DictData dicData;
dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR.getCode()).getData();
// //角型
// if (conType == 1) {
// dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR_TRIANGLE.getCode()).getData();
// }
// //v型
// else if (conType == 2){
// dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.OPEN_DELTA.getCode()).getData();
// }
// //星型 或 其他
// else {
// dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR.getCode()).getData();
// }
//角型
if (conType == 1) {
dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR_TRIANGLE.getCode()).getData();
}
//v型
else if (conType == 2){
dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.OPEN_DELTA.getCode()).getData();
}
//星型 或 其他
else {
dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR.getCode()).getData();
}
String tempId;
Optional<ReportTemplateVO> vo = result.stream().filter(item -> Objects.equals(dicData.getId(),item.getWiringMethod())).findFirst();
if (vo.isPresent()) {