43 Commits

Author SHA1 Message Date
xy
349ee472d9 代码优化 2026-02-11 15:52:40 +08:00
xy
844f30965e 新增设备运行趋势功能 2026-02-11 11:20:47 +08:00
xy
6e0a36fd80 指标越限概率分布功能优化 2026-02-09 11:25:52 +08:00
xy
bd1fb82532 功能优化 2026-02-06 09:55:14 +08:00
xy
3727b5777e 1.新增工程项目管理接口
2.调整报表数据不对的问题
2026-01-30 15:21:07 +08:00
xy
c3cb9a5f85 报告兼容 2026-01-28 13:26:32 +08:00
xy
05ef7028c4 报表添加接线方式、一二次值判断 2026-01-28 08:44:45 +08:00
xy
736b0a6e60 调整overLimitMapper使用公共文件 2026-01-19 14:01:29 +08:00
cdf
cc63cead04 暂降监测点报告抽取公共方法 2026-01-19 11:29:53 +08:00
cdf
30bc3c7448 暂降监测点报告抽取公共方法 2026-01-17 20:26:28 +08:00
cdf
51a16c5701 监测点报告抽取公共方法 2026-01-17 13:40:29 +08:00
xy
4497699178 1.监测点运行状态数据调整;
2.暂态事件同步
2026-01-16 14:57:44 +08:00
xy
0ac51648f4 bug修复 2026-01-15 14:17:24 +08:00
xy
fb515cca9b bug修复 2026-01-15 13:32:29 +08:00
xy
14d77725aa 微调 2026-01-14 20:32:34 +08:00
xy
ee87ffb0d4 微调 2026-01-12 09:36:47 +08:00
xy
5ff8c946aa 组态新增压缩包文件上传下载功能 2026-01-09 16:57:22 +08:00
xy
cccc73f211 前置日志优化 2026-01-08 20:16:45 +08:00
xy
4882151ccd 台账添加监测位置 2026-01-07 20:53:24 +08:00
xy
b774b7ce91 基于云平台功能调整 2026-01-07 19:20:11 +08:00
xy
6b0feb1320 修改实时数据不显示问题 2025-12-26 11:25:51 +08:00
cdf
e92326c55d 报告bug解决 2025-12-26 10:19:45 +08:00
xy
7abbfd500b 微调 2025-12-25 20:45:47 +08:00
xy
77360ef468 Merge remote-tracking branch 'origin/master' 2025-12-25 20:29:52 +08:00
b38d3bad1b 组态添加全局的概念 2025-12-25 20:09:33 +08:00
cdf
27aebf2ca4 报告bug解决 2025-12-25 17:19:32 +08:00
cdf
9981b04ed6 APF治理效果bug 2025-12-24 14:29:05 +08:00
f8c9828369 1.微调 2025-12-23 17:11:55 +08:00
cdf
0d652b9f4d 报告调整 2025-12-23 17:09:22 +08:00
3ea67da152 Merge remote-tracking branch 'origin/master' 2025-12-23 14:42:38 +08:00
c7dce89d36 组态添加全局的概念 2025-12-23 14:42:32 +08:00
cdf
e7dbee2df5 微调 2025-12-23 13:49:10 +08:00
29168bbd9f 1.对象树接口 2025-12-23 13:41:55 +08:00
xy
56d88939c4 去除打印日志 2025-12-23 10:25:13 +08:00
bc6f3dca80 组态添加全局的概念 2025-12-23 08:49:46 +08:00
xy
2957188466 组态相关功能提交 2025-12-23 03:22:52 +08:00
cdf
2894a4780b 稳态报表功能适配台账 2025-12-22 19:56:21 +08:00
240ec304b0 1.报表bug修改 2025-12-22 14:52:20 +08:00
ae09cc1996 提交一次接线图实时调试 2025-12-19 16:13:49 +08:00
efdb1781da 提交一次接线图实时调试 2025-12-19 09:56:53 +08:00
贾同学
46aef0d97f feat(report): 按创建时间倒序排列报表模板 2025-12-09 11:06:36 +08:00
贾同学
5539c8fed5 Merge remote-tracking branch 'origin/master' 2025-12-09 09:00:34 +08:00
贾同学
10d93c260c fix(service): 修复测点限值信息缺失的处理逻辑 2025-12-09 09:00:13 +08:00
174 changed files with 9711 additions and 7868 deletions

View File

@@ -4,18 +4,14 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.njcn.cloud.enums.app.UserCodeEnum; import com.njcn.cloud.enums.app.UserCodeEnum;
import com.njcn.cloud.pojo.vo.AdminStatistic.Integrity; import com.njcn.cloud.pojo.vo.AdminStatistic.Integrity;
import com.njcn.cloud.pojo.vo.AdminStatistic.StaticInfo;
import com.njcn.cloud.service.AdminStatistic.DataIntegrityService; import com.njcn.cloud.service.AdminStatistic.DataIntegrityService;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.api.LineIntegrityClient; import com.njcn.device.pq.api.LineIntegrityClient;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam; import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD; import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.pojo.vo.DevDetail;
import com.njcn.device.pq.pojo.vo.LineDeviceStateVO; import com.njcn.device.pq.pojo.vo.LineDeviceStateVO;
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
import com.njcn.user.api.UserFeignClient; import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User; import com.njcn.user.pojo.po.User;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -10,12 +10,14 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.pojo.param.OnlineRateParam; import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.vo.DevDetail; import com.njcn.device.pq.pojo.vo.DevDetail;
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO; import com.njcn.device.pq.pojo.vo.RStatOnlineRateVO;
import com.njcn.user.api.UserFeignClient; import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User; import com.njcn.user.pojo.po.User;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -54,7 +56,7 @@ public class StaticServiceImpl implements StaticService {
//获取终端信息 //获取终端信息
List<DevDetail> devDetails = generalDeviceInfoClient.getDevInfoByIds(new ArrayList<>()).getData(); List<DevDetail> devDetails = generalDeviceInfoClient.getDevInfoByIds(new ArrayList<>()).getData();
//获取终端在线率 //获取终端在线率
List<RStatOnlinerateVO> onlineRates = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData(); List<RStatOnlineRateVO> onlineRates = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData();
//异常终端数据 //异常终端数据
long count = devDetails.stream().filter(x -> 0==x.getComFlag()).count(); long count = devDetails.stream().filter(x -> 0==x.getComFlag()).count();
StaticInfo info=new StaticInfo(); StaticInfo info=new StaticInfo();
@@ -63,14 +65,14 @@ public class StaticServiceImpl implements StaticService {
info.setOnlineRatez(data); info.setOnlineRatez(data);
info.setComError(count); info.setComError(count);
List<StaticInfo.DevStatic> list=new ArrayList<>(); List<StaticInfo.DevStatic> list=new ArrayList<>();
Map<String, Float> onlineRateMap = onlineRates.stream().collect(Collectors.toMap(RStatOnlinerateVO::getDevIndex, RStatOnlinerateVO::getOnlineRate)); Map<String, BigDecimal> onlineRateMap = onlineRates.stream().collect(Collectors.toMap(RStatOnlineRateVO::getDevIndex, RStatOnlineRateVO::getOnlineRate));
StaticInfo.DevStatic devStatic; StaticInfo.DevStatic devStatic;
for (DevDetail devDetail : devDetails) { for (DevDetail devDetail : devDetails) {
devStatic=new StaticInfo.DevStatic(); devStatic=new StaticInfo.DevStatic();
devStatic.setDevIndex(devDetail.getDevIndex()); devStatic.setDevIndex(devDetail.getDevIndex());
devStatic.setDevName(devDetail.getDevName()); devStatic.setDevName(devDetail.getDevName());
devStatic.setIp(devDetail.getIp()); devStatic.setIp(devDetail.getIp());
devStatic.setOnlineRate(onlineRateMap.get(devDetail.getDevIndex())); devStatic.setOnlineRate(onlineRateMap.get(devDetail.getDevIndex()).setScale(3, RoundingMode.HALF_UP).floatValue());
devStatic.setGdName(devDetail.getGdName()); devStatic.setGdName(devDetail.getGdName());
devStatic.setSubName(devDetail.getBdzName()); devStatic.setSubName(devDetail.getBdzName());
devStatic.setTimeId(devDetail.getTimeID()); devStatic.setTimeId(devDetail.getTimeID());
@@ -80,4 +82,4 @@ public class StaticServiceImpl implements StaticService {
return info; return info;
} }
} }

View File

@@ -1,11 +1,7 @@
package com.njcn.csdevice.api; package com.njcn.csdevice.api;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo; 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.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.api.fallback.CsLineClientFallbackFactory; import com.njcn.csdevice.api.fallback.CsLineClientFallbackFactory;
import com.njcn.csdevice.pojo.param.CsLineParam; import com.njcn.csdevice.pojo.param.CsLineParam;
import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.po.CsLinePO;
@@ -14,11 +10,13 @@ import com.njcn.device.biz.pojo.po.Overlimit;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated; 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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author xy * @author xy
@@ -38,6 +36,10 @@ public interface CsLineFeignClient {
@PostMapping("/findByNdid") @PostMapping("/findByNdid")
HttpResult<List<CsLinePO>> findByNdid(@RequestParam("id") String id); HttpResult<List<CsLinePO>> findByNdid(@RequestParam("id") String id);
@GetMapping("/getCustomDetailByLineId")
HttpResult<Map<String,String>> getCustomDetailByLineId(@RequestParam("id") String id);
@PostMapping("/getPositionById") @PostMapping("/getPositionById")
HttpResult<String> getPositionById(@RequestParam("id") String id); HttpResult<String> getPositionById(@RequestParam("id") String id);
@@ -75,4 +77,7 @@ public interface CsLineFeignClient {
@PostMapping("/getLineDetailData") @PostMapping("/getLineDetailData")
HttpResult<LineDetailDataVO> getLineDetailData(@RequestParam("id") String id); HttpResult<LineDetailDataVO> getLineDetailData(@RequestParam("id") String id);
@GetMapping("/getSimpleLine")
HttpResult<List<CsLinePO>> getSimpleLine();
} }

View File

@@ -3,7 +3,7 @@ package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.CsOverLimitFallbackFactory; import com.njcn.csdevice.api.fallback.CsOverLimitFallbackFactory;
import com.njcn.csdevice.pojo.po.Overlimit; import com.njcn.device.biz.pojo.po.Overlimit;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;

View File

@@ -1,22 +1,14 @@
package com.njcn.csdevice.api; package com.njcn.csdevice.api;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo; 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.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.api.fallback.EquipmentFeignClientFallbackFactory; import com.njcn.csdevice.api.fallback.EquipmentFeignClientFallbackFactory;
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO; import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO; import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List; import java.util.List;
@@ -72,5 +64,5 @@ public interface EquipmentFeignClient {
HttpResult<Boolean> updateCldDevStatus(@RequestParam("nodeId") String nodeId, @RequestParam("processNo") Integer processNo); HttpResult<Boolean> updateCldDevStatus(@RequestParam("nodeId") String nodeId, @RequestParam("processNo") Integer processNo);
@PostMapping("/flipCldDevStatus") @PostMapping("/flipCldDevStatus")
HttpResult<Boolean> flipCldDevStatus(@RequestParam("devId") String devId, @RequestParam("status") Integer status); HttpResult<Boolean> flipCldDevStatus(@RequestParam("date") String date, @RequestParam("devId") String devId, @RequestParam("status") Integer status);
} }

View File

@@ -3,11 +3,12 @@ package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.IntegrityClientFallbackFactory; import com.njcn.csdevice.api.fallback.IntegrityClientFallbackFactory;
import com.njcn.csdevice.param.IcdBzParam;
import com.njcn.csdevice.pojo.po.RStatIntegrityD; import com.njcn.csdevice.pojo.po.RStatIntegrityD;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List; import java.util.List;
@@ -18,6 +19,6 @@ import java.util.List;
public interface IntegrityFeignClient { public interface IntegrityFeignClient {
@PostMapping("/list") @PostMapping("/list")
HttpResult<List<RStatIntegrityD>> list(@Validated @RequestParam("list") List<String> list, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime); HttpResult<List<RStatIntegrityD>> list(@RequestBody @Validated IcdBzParam param);
} }

View File

@@ -3,11 +3,12 @@ package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.onlineRateClientFallbackFactory; import com.njcn.csdevice.api.fallback.onlineRateClientFallbackFactory;
import com.njcn.csdevice.param.IcdBzParam;
import com.njcn.csdevice.pojo.po.RStatOnlineRateD; import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List; import java.util.List;
@@ -18,6 +19,6 @@ import java.util.List;
public interface OnlineRateFeignClient { public interface OnlineRateFeignClient {
@PostMapping("/list") @PostMapping("/list")
HttpResult<List<RStatOnlineRateD>> list(@Validated @RequestParam("list") List<String> list, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime); HttpResult<List<RStatOnlineRateD>> list(@RequestBody @Validated IcdBzParam param);
} }

View File

@@ -14,6 +14,7 @@ import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author xy * @author xy
@@ -54,6 +55,12 @@ public class CsLineClientFallbackFactory implements FallbackFactory<CsLineFeignC
throw new BusinessException(finalExceptionEnum); throw new BusinessException(finalExceptionEnum);
} }
@Override
public HttpResult<Map<String,String>> getCustomDetailByLineId(@RequestParam("id") String id) {
log.error("{}异常,降级处理,异常为:{}","根据id查询监测点",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override @Override
public HttpResult<String> getPositionById(String id) { public HttpResult<String> getPositionById(String id) {
log.error("{}异常,降级处理,异常为:{}","通过id查询监测点位置",cause.toString()); log.error("{}异常,降级处理,异常为:{}","通过id查询监测点位置",cause.toString());
@@ -124,6 +131,12 @@ public class CsLineClientFallbackFactory implements FallbackFactory<CsLineFeignC
log.error("{}异常,降级处理,异常为:{}","查询监测点详情异常",cause.toString()); log.error("{}异常,降级处理,异常为:{}","查询监测点详情异常",cause.toString());
throw new BusinessException(finalExceptionEnum); throw new BusinessException(finalExceptionEnum);
} }
@Override
public HttpResult<List<CsLinePO>> getSimpleLine() {
log.error("{}异常,降级处理,异常为:{}","查询登录用户拥有的监测点台账",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
}; };
} }
} }

View File

@@ -4,7 +4,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.CsOverLimitClient; import com.njcn.csdevice.api.CsOverLimitClient;
import com.njcn.csdevice.pojo.po.Overlimit; import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.biz.utils.DeviceEnumUtil; import com.njcn.device.biz.utils.DeviceEnumUtil;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -97,7 +97,7 @@ public class EquipmentFeignClientFallbackFactory implements FallbackFactory<Equi
} }
@Override @Override
public HttpResult<Boolean> flipCldDevStatus(String devId, Integer status) { public HttpResult<Boolean> flipCldDevStatus(String date, String devId, Integer status) {
log.error("{}异常,降级处理,异常为:{}","云前置设备状态翻转",cause.toString()); log.error("{}异常,降级处理,异常为:{}","云前置设备状态翻转",cause.toString());
throw new BusinessException(finalExceptionEnum); throw new BusinessException(finalExceptionEnum);
} }

View File

@@ -4,6 +4,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.IntegrityFeignClient; import com.njcn.csdevice.api.IntegrityFeignClient;
import com.njcn.csdevice.param.IcdBzParam;
import com.njcn.csdevice.pojo.po.RStatIntegrityD; import com.njcn.csdevice.pojo.po.RStatIntegrityD;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -26,9 +27,8 @@ public class IntegrityClientFallbackFactory implements FallbackFactory<Integrity
} }
Enum<?> finalExceptionEnum = exceptionEnum; Enum<?> finalExceptionEnum = exceptionEnum;
return new IntegrityFeignClient() { return new IntegrityFeignClient() {
@Override @Override
public HttpResult<List<RStatIntegrityD>> list(List<String> list, String startTime, String endTime) { public HttpResult<List<RStatIntegrityD>> list(IcdBzParam param) {
log.error("{}异常,降级处理,异常为:{}","查询数据异常",cause.toString()); log.error("{}异常,降级处理,异常为:{}","查询数据异常",cause.toString());
throw new BusinessException(finalExceptionEnum); throw new BusinessException(finalExceptionEnum);
} }

View File

@@ -4,6 +4,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.OnlineRateFeignClient; import com.njcn.csdevice.api.OnlineRateFeignClient;
import com.njcn.csdevice.param.IcdBzParam;
import com.njcn.csdevice.pojo.po.RStatOnlineRateD; import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -28,7 +29,7 @@ public class onlineRateClientFallbackFactory implements FallbackFactory<OnlineRa
return new OnlineRateFeignClient() { return new OnlineRateFeignClient() {
@Override @Override
public HttpResult<List<RStatOnlineRateD>> list(List<String> list, String startTime, String endTime) { public HttpResult<List<RStatOnlineRateD>> list(IcdBzParam param) {
log.error("{}异常,降级处理,异常为:{}","查询数据异常",cause.toString()); log.error("{}异常,降级处理,异常为:{}","查询数据异常",cause.toString());
throw new BusinessException(finalExceptionEnum); throw new BusinessException(finalExceptionEnum);
} }

View File

@@ -58,7 +58,7 @@ public interface DataParam {
String GOVERNANCE_SYSTEM = "治理系统"; String GOVERNANCE_SYSTEM = "治理系统";
String cldDev = "在线设备"; String cldDev = "监测设备";
String EvtParamPhase = "Evt_Param_Phase"; String EvtParamPhase = "Evt_Param_Phase";

View File

@@ -55,4 +55,7 @@ public class AppProjectAddParm {
@ApiModelProperty(value="拓扑图模版id集合") @ApiModelProperty(value="拓扑图模版id集合")
private List<String> topoIds; private List<String> topoIds;
@ApiModelProperty(value="排序")
private Integer sort;
} }

View File

@@ -44,4 +44,7 @@ public class AppProjectAuditParm {
private List<String> topoIds; private List<String> topoIds;
private List<String> newTopoIds; private List<String> newTopoIds;
@ApiModelProperty(value="排序")
private Integer sort;
} }

View File

@@ -53,6 +53,10 @@ public class CsEngineeringAddParm {
@ApiModelProperty(value = "描述") @ApiModelProperty(value = "描述")
private String description; private String description;
/**
* 描述
*/
@ApiModelProperty(value = "排序")
private Integer sort;
} }

View File

@@ -54,6 +54,7 @@ public class CsEngineeringAuditParm {
@ApiModelProperty(value="0删除 1正常") @ApiModelProperty(value="0删除 1正常")
private String status; private String status;
@ApiModelProperty(value="排序")
private Integer sort;
} }

View File

@@ -97,4 +97,7 @@ public class CsEquipmentDeliveryAddParm implements Serializable {
@ApiModelProperty(value="项目id") @ApiModelProperty(value="项目id")
private String projectId; private String projectId;
@ApiModelProperty(value="日志等级(NORMAL、DEBUG、WARN、ERROR)")
private String devLogLevel;
} }

View File

@@ -101,4 +101,7 @@ public class CsEquipmentDeliveryAuditParm {
@ApiModelProperty(value="前置机进程号") @ApiModelProperty(value="前置机进程号")
private Integer nodeProcess; private Integer nodeProcess;
@ApiModelProperty(value="日志等级(NORMAL、DEBUG、WARN、ERROR)")
private String devLogLevel;
} }

View File

@@ -56,6 +56,8 @@ public class CsLedgerParam extends BaseEntity {
@NotBlank(message = "台账表Id不能为空") @NotBlank(message = "台账表Id不能为空")
@Pattern(regexp = PatternRegex.SYSTEM_ID, message = ValidMessage.ID_FORMAT_ERROR) @Pattern(regexp = PatternRegex.SYSTEM_ID, message = ValidMessage.ID_FORMAT_ERROR)
private String id; private String id;
private String pids;
} }

View File

@@ -140,6 +140,19 @@ public class CsLineParam extends BaseEntity {
*/ */
private String monitorUser; private String monitorUser;
/**
* 监测位置
*/
private String position;
/**
* 日志等级(NORMAL、DEBUG、WARN、ERROR)
*/
private String lineLogLevel;
/**
* 是否是主要监测点(0: 不是 1:是)
*/
private Integer isImportant;
} }

View File

@@ -23,31 +23,31 @@ public class DeviceExcelTemplete implements Serializable {
/** /**
* 装置名称 * 装置名称
*/ */
@Excel(name = "装置名称", width = 15) @Excel(name = "设备名称", width = 15)
private String name; private String name;
/** /**
* 网关识别码 * 网关识别码
*/ */
@Excel(name = "关识别码", width = 15) @Excel(name = "络设备ID", width = 15)
private String ndid; private String ndid;
/** /**
* 装置类型(直连设备、网关设备、装置) * 装置类型(直连设备、网关设备、装置)
*/ */
@Excel(name = "装置类型(直连设备,网关设备)", width = 30) @Excel(name = "设备类型(直连设备,网关设备、便携式设备", width = 30)
private String devType; private String devType;
/** /**
* 装置型号pqs588、pqs680... * 装置型号pqs588、pqs680...
*/ */
@Excel(name = "装置型号", width = 15) @Excel(name = "设备型号", width = 15)
private String devModel; private String devModel;
/** /**
* 装置接入方式mqtt、cloud * 装置接入方式mqtt、cloud
*/ */
@Excel(name = "装置接入方式mqtt、cloud", width = 25) @Excel(name = "通讯协议MQTT、CLD", width = 25)
private String devAccessMethod; private String devAccessMethod;
/** /**

View File

@@ -57,5 +57,8 @@ public class AppProjectPO extends BaseEntity {
@TableField(value = "description") @TableField(value = "description")
private String description; private String description;
@TableField(value = "sort")
private Integer sort;
} }

View File

@@ -64,5 +64,10 @@ public class CsEngineeringPO extends BaseEntity {
@TableField(value = "status") @TableField(value = "status")
private String status; private String status;
/**
* 排序
*/
@TableField(value = "sort")
private Integer sort;
} }

View File

@@ -130,4 +130,10 @@ public class CsEquipmentDeliveryPO extends BaseEntity {
@TableField(value = "node_process") @TableField(value = "node_process")
private Integer nodeProcess; private Integer nodeProcess;
/**
* 日志等级(NORMAL、DEBUG、WARN、ERROR)
*/
@TableField(value = "dev_log_level")
private String devLogLevel;
} }

View File

@@ -165,4 +165,16 @@ public class CsLinePO extends BaseEntity {
*/ */
@TableField(value = "report_file_path") @TableField(value = "report_file_path")
private String reportFilePath; private String reportFilePath;
/**
* 日志等级(NORMAL、DEBUG、WARN、ERROR)
*/
@TableField(value = "line_log_level")
private String lineLogLevel;
/**
* 是否是主要监测点(0: 不是 1:是)
*/
@TableField(value = "is_important")
private Integer isImportant;
} }

View File

@@ -6,7 +6,9 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
//台账信息 /**
* @author xy
*/ //台账信息
@Data @Data
public class DeviceInfo implements Serializable { public class DeviceInfo implements Serializable {
@@ -31,6 +33,9 @@ public class DeviceInfo implements Serializable {
@ApiModelProperty("对时启动标志") @ApiModelProperty("对时启动标志")
private boolean rightTime; private boolean rightTime;
@ApiModelProperty("终端日志等级")
private String devLogLevel;
@ApiModelProperty("监测点集合") @ApiModelProperty("监测点集合")
private List<MonitorInfo> monitorData; private List<MonitorInfo> monitorData;
@@ -70,6 +75,9 @@ public class DeviceInfo implements Serializable {
@ApiModelProperty("ct2") @ApiModelProperty("ct2")
private Double ct2; private Double ct2;
@ApiModelProperty("监测点日志等级")
private String lineLogLevel;
} }
} }

View File

@@ -0,0 +1,68 @@
package com.njcn.csdevice.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author xy
* 日志信息
*/
@Data
public class EngineeringProjectRelationVo implements Serializable {
//工程信息
@ApiModelProperty("工程id")
private String engineeringId;
@ApiModelProperty("工程名称")
private String engineeringName;
@ApiModelProperty("省ID")
private String provinceId;
@ApiModelProperty("市ID")
private String cityId;
@ApiModelProperty("区域名称")
private String engineeringAreaName;
@ApiModelProperty("工程备注")
private String engineeringRemark;
@ApiModelProperty("工程排序")
private Integer engineeringSort;
@ApiModelProperty("项目信息")
private List<ProjectInfo> projectInfoList;
//项目信息
@Data
public static class ProjectInfo implements Serializable {
@ApiModelProperty("项目id")
private String projectId;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("项目地址")
private String projectArea;
@ApiModelProperty("项目备注")
private String projectRemark;
@ApiModelProperty("项目排序")
private Integer projectSort;
@ApiModelProperty("拓扑图id")
private String topologyInfoId;
@ApiModelProperty("拓扑图信息")
private String topologyInfo;
}
}

View File

@@ -132,4 +132,7 @@ public class LineDetailDataVO {
@ApiModelProperty(name = "对象类型大类") @ApiModelProperty(name = "对象类型大类")
private String bigObjType; private String bigObjType;
@ApiModelProperty(name = "监测点数据类型 一次值:Primary 二次值:Secondary")
private String dataLevel;
} }

View File

@@ -1,383 +1,383 @@
package com.njcn.csdevice.utils; //package com.njcn.csdevice.utils;
//
import com.njcn.csdevice.pojo.po.Overlimit; //import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.device.biz.enums.RunFlagEnum; //import com.njcn.device.biz.enums.RunFlagEnum;
import com.njcn.system.enums.DicDataEnum; //import com.njcn.system.enums.DicDataEnum;
//
import java.math.BigDecimal; //import java.math.BigDecimal;
import java.math.RoundingMode; //import java.math.RoundingMode;
import java.util.Objects; //import java.util.Objects;
//
//
/** ///**
* pqs // * pqs
* 限值计算工具类 // * 限值计算工具类
* // *
* @author cdf // * @author cdf
* @date 2023/5/15 // * @date 2023/5/15
*/ // */
public class COverlimitUtil { //public class COverlimitUtil {
//
//
/** // /**
* 谐波电流系数 // * 谐波电流系数
*/ // */
private static final double[][] ARR = { // private static final double[][] ARR = {
{78, 62, 39, 62, 26, 44, 19, 21, 16, 28, 13, 24, 11, 12, 9.7, 18, 8.6, 16, 7.8, 8.9, 7.1, 14, 6.5, 12, 6.0, 6.9, 5.6, 11, 5.2, 10, 4.9, 5.6, 4.6, 8.9, 4.3, 8.4, 4.1, 4.8, 3.9, 7.6, 3.7, 7.2, 3.5, 4.1, 3.4, 6.6, 3.3, 6.3, 3.1}, // {78, 62, 39, 62, 26, 44, 19, 21, 16, 28, 13, 24, 11, 12, 9.7, 18, 8.6, 16, 7.8, 8.9, 7.1, 14, 6.5, 12, 6.0, 6.9, 5.6, 11, 5.2, 10, 4.9, 5.6, 4.6, 8.9, 4.3, 8.4, 4.1, 4.8, 3.9, 7.6, 3.7, 7.2, 3.5, 4.1, 3.4, 6.6, 3.3, 6.3, 3.1},
{43, 34, 21, 34, 14, 24, 11, 11, 8.5, 16, 7.1, 13, 6.1, 6.8, 5.3, 10, 4.7, 9, 4.3, 4.9, 3.9, 7.4, 3.6, 6.8, 3.3, 3.8, 3.1, 5.9, 2.9, 5.5, 2.7, 3.1, 2.5, 4.9, 2.4, 4.6, 2.3, 2.6, 2.2, 4.1, 2.0, 4.0, 2.0, 2.3, 1.9, 3.6, 1.8, 3.5, 1.7}, // {43, 34, 21, 34, 14, 24, 11, 11, 8.5, 16, 7.1, 13, 6.1, 6.8, 5.3, 10, 4.7, 9, 4.3, 4.9, 3.9, 7.4, 3.6, 6.8, 3.3, 3.8, 3.1, 5.9, 2.9, 5.5, 2.7, 3.1, 2.5, 4.9, 2.4, 4.6, 2.3, 2.6, 2.2, 4.1, 2.0, 4.0, 2.0, 2.3, 1.9, 3.6, 1.8, 3.5, 1.7},
{26, 20, 13, 20, 8.5, 15, 6.4, 6.8, 5.1, 9.3, 4.3, 7.9, 3.7, 4.1, 3.2, 6, 2.8, 5.4, 2.6, 2.9, 2.3, 4.5, 2.1, 4.1, 2.0, 2.2, 1.9, 3.4, 1.7, 3.2, 1.6, 1.8, 1.5, 2.9, 1.4, 2.7, 1.4, 1.5, 1.3, 2.4, 1.2, 2.3, 1.2, 1.3, 1.1, 2.1, 1.1, 2.0, 1.0}, // {26, 20, 13, 20, 8.5, 15, 6.4, 6.8, 5.1, 9.3, 4.3, 7.9, 3.7, 4.1, 3.2, 6, 2.8, 5.4, 2.6, 2.9, 2.3, 4.5, 2.1, 4.1, 2.0, 2.2, 1.9, 3.4, 1.7, 3.2, 1.6, 1.8, 1.5, 2.9, 1.4, 2.7, 1.4, 1.5, 1.3, 2.4, 1.2, 2.3, 1.2, 1.3, 1.1, 2.1, 1.1, 2.0, 1.0},
{15, 12, 7.7, 12, 5.1, 8.8, 3.8, 4.1, 3.1, 5.6, 2.6, 4.7, 2.2, 2.5, 1.9, 3.6, 1.7, 3.2, 1.5, 1.8, 1.4, 2.7, 1.3, 2.5, 1.2, 1.3, 1.1, 2.1, 1.0, 1.9, 0.9, 1.1, 0.9, 1.7, 0.8, 1.6, 0.8, 0.9, 0.8, 1.5, 0.7, 1.4, 0.7, 0.8, 0.7, 1.3, 0.6, 1.2, 0.6}, // {15, 12, 7.7, 12, 5.1, 8.8, 3.8, 4.1, 3.1, 5.6, 2.6, 4.7, 2.2, 2.5, 1.9, 3.6, 1.7, 3.2, 1.5, 1.8, 1.4, 2.7, 1.3, 2.5, 1.2, 1.3, 1.1, 2.1, 1.0, 1.9, 0.9, 1.1, 0.9, 1.7, 0.8, 1.6, 0.8, 0.9, 0.8, 1.5, 0.7, 1.4, 0.7, 0.8, 0.7, 1.3, 0.6, 1.2, 0.6},
{16, 13, 8.1, 13, 5.4, 9.3, 4.1, 4.3, 3.3, 5.9, 2.7, 5, 2.3, 2.6, 2, 3.8, 1.8, 3.4, 1.6, 1.9, 1.5, 2.8, 1.4, 2.6, 1.2, 1.4, 1.1, 2.2, 1.1, 2.1, 1.0, 1.2, 0.9, 1.9, 0.9, 1.8, 0.8, 1.0, 0.8, 1.6, 0.8, 1.5, 0.7, 0.9, 0.7, 1.4, 0.7, 1.3, 0.6}, // {16, 13, 8.1, 13, 5.4, 9.3, 4.1, 4.3, 3.3, 5.9, 2.7, 5, 2.3, 2.6, 2, 3.8, 1.8, 3.4, 1.6, 1.9, 1.5, 2.8, 1.4, 2.6, 1.2, 1.4, 1.1, 2.2, 1.1, 2.1, 1.0, 1.2, 0.9, 1.9, 0.9, 1.8, 0.8, 1.0, 0.8, 1.6, 0.8, 1.5, 0.7, 0.9, 0.7, 1.4, 0.7, 1.3, 0.6},
{12, 9.6, 6, 9.6, 4, 6.8, 3, 3.2, 2.4, 4.3, 2, 3.7, 1.7, 1.9, 1.5, 2.8, 1.3, 2.5, 1.2, 1.4, 1.1, 2.1, 1, 1.9, 0.9, 1.1, 0.9, 1.7, 0.8, 1.5, 0.8, 0.9, 0.7, 1.4, 0.7, 1.3, 0.6, 0.7, 0.6, 1.2, 0.6, 1.1, 0.5, 0.6, 0.5, 1.0, 0.5, 1.0, 0.5} // {12, 9.6, 6, 9.6, 4, 6.8, 3, 3.2, 2.4, 4.3, 2, 3.7, 1.7, 1.9, 1.5, 2.8, 1.3, 2.5, 1.2, 1.4, 1.1, 2.1, 1, 1.9, 0.9, 1.1, 0.9, 1.7, 0.8, 1.5, 0.8, 0.9, 0.7, 1.4, 0.7, 1.3, 0.6, 0.7, 0.6, 1.2, 0.6, 1.1, 0.5, 0.6, 0.5, 1.0, 0.5, 1.0, 0.5}
}; // };
//
//
/** // /**
* 计算监测点限值 // * 计算监测点限值
* @param voltageLevel 电压等级10kV = 10 220kV = 220 // * @param voltageLevel 电压等级10kV = 10 220kV = 220
* @param protocolCapacity 协议容量 // * @param protocolCapacity 协议容量
* @param devCapacity 设备容量 // * @param devCapacity 设备容量
* @param shortCapacity 短路容量 // * @param shortCapacity 短路容量
* @param powerFlag 0.用户侧 1.电网侧 // * @param powerFlag 0.用户侧 1.电网侧
* @param lineType 0.主网 1.配网 需要注意配网目前没有四种容量,谐波电流幅值限值,负序电流限值无法计算默认-3.14159 // * @param lineType 0.主网 1.配网 需要注意配网目前没有四种容量,谐波电流幅值限值,负序电流限值无法计算默认-3.14159
*/ // */
public static Overlimit globalAssemble(Float voltageLevel, Float protocolCapacity, Float devCapacity, // public static Overlimit globalAssemble(Float voltageLevel, Float protocolCapacity, Float devCapacity,
Float shortCapacity, Integer powerFlag, Integer lineType) { // Float shortCapacity, Integer powerFlag, Integer lineType) {
Overlimit overlimit = new Overlimit(); // Overlimit overlimit = new Overlimit();
voltageDeviation(overlimit,voltageLevel); // voltageDeviation(overlimit,voltageLevel);
frequency(overlimit); // frequency(overlimit);
voltageFluctuation(overlimit,voltageLevel); // voltageFluctuation(overlimit,voltageLevel);
voltageFlicker(overlimit,voltageLevel); // voltageFlicker(overlimit,voltageLevel);
totalHarmonicDistortion(overlimit,voltageLevel); // totalHarmonicDistortion(overlimit,voltageLevel);
uHarm(overlimit,voltageLevel); // uHarm(overlimit,voltageLevel);
threeVoltageUnbalance(overlimit); // threeVoltageUnbalance(overlimit);
interharmonicCurrent(overlimit,voltageLevel); // interharmonicCurrent(overlimit,voltageLevel);
//
if(Objects.equals(lineType, RunFlagEnum.PW_FLAG.getStatus())) { // if(Objects.equals(lineType, RunFlagEnum.PW_FLAG.getStatus())) {
//配网 // //配网
Float[] iHarmTem = new Float[49]; // Float[] iHarmTem = new Float[49];
for (int i = 0; i <= 48; i++) { // for (int i = 0; i <= 48; i++) {
//
iHarmTem[i] = -3.14159f; // iHarmTem[i] = -3.14159f;
} // }
overlimit.buildIHarm(iHarmTem); // overlimit.buildIHarm(iHarmTem);
overlimit.setINeg(-3.14159f); // overlimit.setINeg(-3.14159f);
}else { // }else {
//主网 // //主网
iHarm(overlimit, voltageLevel, protocolCapacity, devCapacity, shortCapacity); // iHarm(overlimit, voltageLevel, protocolCapacity, devCapacity, shortCapacity);
negativeSequenceCurrent(overlimit, voltageLevel, shortCapacity); // negativeSequenceCurrent(overlimit, voltageLevel, shortCapacity);
} // }
return overlimit; // return overlimit;
} // }
//
//
/** // /**
* 电压偏差限值 // * 电压偏差限值
* // *
*/ // */
public static void voltageDeviation(Overlimit overlimit,Float voltageLevel) { // public static void voltageDeviation(Overlimit overlimit,Float voltageLevel) {
float voltageDev = 3.14159f,uvoltageDev = 3.14159f; // float voltageDev = 3.14159f,uvoltageDev = 3.14159f;
if(voltageLevel <= Float.parseFloat(DicDataEnum.V220.getCode())){ // if(voltageLevel <= Float.parseFloat(DicDataEnum.V220.getCode())){
voltageDev = 7.0f; // voltageDev = 7.0f;
uvoltageDev=-10.0f; // uvoltageDev=-10.0f;
}else if(voltageLevel>Float.parseFloat(DicDataEnum.V220.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV20.getCode())){ // }else if(voltageLevel>Float.parseFloat(DicDataEnum.V220.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV20.getCode())){
voltageDev = 7.0f; // voltageDev = 7.0f;
uvoltageDev=-7.0f; // uvoltageDev=-7.0f;
}else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV20.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV35.getCode())){ // }else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV20.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV35.getCode())){
voltageDev = 7.0f; // voltageDev = 7.0f;
uvoltageDev=-7.0f; // uvoltageDev=-7.0f;
}else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV35.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV66.getCode())){ // }else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV35.getCode())&&voltageLevel<Float.parseFloat(DicDataEnum.KV66.getCode())){
voltageDev = 10.0f; // voltageDev = 10.0f;
uvoltageDev=-10.0f; // uvoltageDev=-10.0f;
}else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV66.getCode())&&voltageLevel<=Float.parseFloat(DicDataEnum.KV110.getCode())){ // }else if(voltageLevel>=Float.parseFloat(DicDataEnum.KV66.getCode())&&voltageLevel<=Float.parseFloat(DicDataEnum.KV110.getCode())){
voltageDev = 7.0f; // voltageDev = 7.0f;
uvoltageDev=-3.0f; // uvoltageDev=-3.0f;
}else if(voltageLevel>Float.parseFloat(DicDataEnum.KV110.getCode())){ // }else if(voltageLevel>Float.parseFloat(DicDataEnum.KV110.getCode())){
voltageDev = 10.0f; // voltageDev = 10.0f;
uvoltageDev=-10.0f; // uvoltageDev=-10.0f;
} // }
overlimit.setVoltageDev(voltageDev); // overlimit.setVoltageDev(voltageDev);
overlimit.setUvoltageDev(uvoltageDev); // overlimit.setUvoltageDev(uvoltageDev);
} // }
//
//
/** // /**
* 频率偏差 // * 频率偏差
* 默认限值±0.2Hz(即:-0.2 Hz≤限值≤0.2 Hz // * 默认限值±0.2Hz(即:-0.2 Hz≤限值≤0.2 Hz
*/ // */
public static void frequency(Overlimit overlimit) { // public static void frequency(Overlimit overlimit) {
overlimit.setFreqDev(0.2f); // overlimit.setFreqDev(0.2f);
} // }
//
//
/** // /**
* 电压波动 // * 电压波动
* 对LV、MV0≤限值≤3%对HV0≤限值≤2.5%。 // * 对LV、MV0≤限值≤3%对HV0≤限值≤2.5%。
* LV、MV、HV的定义 // * LV、MV、HV的定义
* 低压LV UN≤1kV // * 低压LV UN≤1kV
* 中压MV 1kVUN≤35kV // * 中压MV 1kVUN≤35kV
* 高压HV 35kVUN≤220kV // * 高压HV 35kVUN≤220kV
* 超高压EHV220kVUN参照HV执行 // * 超高压EHV220kVUN参照HV执行
*/ // */
public static void voltageFluctuation(Overlimit overlimit, Float voltageLevel) { // public static void voltageFluctuation(Overlimit overlimit, Float voltageLevel) {
if (voltageLevel < Float.parseFloat(DicDataEnum.KV35.getCode())) { // if (voltageLevel < Float.parseFloat(DicDataEnum.KV35.getCode())) {
overlimit.setVoltageFluctuation(3.0f); // overlimit.setVoltageFluctuation(3.0f);
} else { // } else {
overlimit.setVoltageFluctuation(2.5f); // overlimit.setVoltageFluctuation(2.5f);
} // }
} // }
//
//
//
/** // /**
* 电压闪变 // * 电压闪变
* ≤110kV 1 // * ≤110kV 1
* 110kV 0.8 // * 110kV 0.8
*/ // */
public static void voltageFlicker(Overlimit overlimit, Float voltageLevel) { // public static void voltageFlicker(Overlimit overlimit, Float voltageLevel) {
if (voltageLevel <= Float.parseFloat(DicDataEnum.KV110.getCode())) { // if (voltageLevel <= Float.parseFloat(DicDataEnum.KV110.getCode())) {
overlimit.setFlicker(1.0f); // overlimit.setFlicker(1.0f);
} else { // } else {
overlimit.setFlicker(0.8f); // overlimit.setFlicker(0.8f);
} // }
} // }
//
//
/** // /**
* 总谐波电压畸变率 // * 总谐波电压畸变率
* // *
* // *
*/ // */
public static void totalHarmonicDistortion(Overlimit overlimit, Float voltageLevel) { // public static void totalHarmonicDistortion(Overlimit overlimit, Float voltageLevel) {
float result = 3.14159f; // float result = 3.14159f;
if (voltageLevel < Float.parseFloat(DicDataEnum.KV6.getCode())) { // if (voltageLevel < Float.parseFloat(DicDataEnum.KV6.getCode())) {
result = 5.0f; // result = 5.0f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV6.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV20.getCode())){ // } else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV6.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV20.getCode())){
result = 4.0f; // result = 4.0f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV35.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV66.getCode())){ // } else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV35.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV66.getCode())){
result = 3.0f; // result = 3.0f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV110.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV1000.getCode())){ // } else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV110.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV1000.getCode())){
result = 2.0f; // result = 2.0f;
} // }
overlimit.setUaberrance(result); // overlimit.setUaberrance(result);
} // }
//
//
//
/** // /**
* 谐波电压含有率 // * 谐波电压含有率
*/ // */
public static void uHarm(Overlimit overlimit, Float voltageLevel) { // public static void uHarm(Overlimit overlimit, Float voltageLevel) {
float resultOdd = 3.14159f,resultEven = 3.14159f; // float resultOdd = 3.14159f,resultEven = 3.14159f;
if (voltageLevel < Float.parseFloat(DicDataEnum.KV6.getCode())) { // if (voltageLevel < Float.parseFloat(DicDataEnum.KV6.getCode())) {
resultOdd = 4.0f; // resultOdd = 4.0f;
resultEven = 2.0f; // resultEven = 2.0f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV6.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV20.getCode())){ // } else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV6.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV20.getCode())){
resultOdd = 3.2f; // resultOdd = 3.2f;
resultEven = 1.6f; // resultEven = 1.6f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV35.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV66.getCode())){ // } else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV35.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV66.getCode())){
resultOdd = 2.4f; // resultOdd = 2.4f;
resultEven = 1.2f; // resultEven = 1.2f;
} else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV110.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV1000.getCode())){ // } else if(voltageLevel >= Float.parseFloat(DicDataEnum.KV110.getCode()) && voltageLevel <= Float.parseFloat(DicDataEnum.KV1000.getCode())){
resultOdd = 1.6f; // resultOdd = 1.6f;
resultEven = 0.8f; // resultEven = 0.8f;
} // }
overlimit.buildUharm(resultEven,resultOdd); // overlimit.buildUharm(resultEven,resultOdd);
} // }
//
//
/** // /**
* 负序电压不平衡(三相电压不平衡度) // * 负序电压不平衡(三相电压不平衡度)
* // *
*/ // */
public static void threeVoltageUnbalance(Overlimit overlimit) { // public static void threeVoltageUnbalance(Overlimit overlimit) {
overlimit.setUbalance(2.0f); // overlimit.setUbalance(2.0f);
overlimit.setShortUbalance(4.0f); // overlimit.setShortUbalance(4.0f);
} // }
//
//
/*---------------------------------谐波电流限值start-----------------------------------*/ // /*---------------------------------谐波电流限值start-----------------------------------*/
//
/** // /**
* 谐波电流限值 // * 谐波电流限值
*/ // */
public static void iHarm(Overlimit overlimit, Float voltageLevel,Float protocolCapacity,Float devCapacity,Float shortCapacity) { // public static void iHarm(Overlimit overlimit, Float voltageLevel,Float protocolCapacity,Float devCapacity,Float shortCapacity) {
float calCap = shortCapacity/getDlCapByVoltageLevel(voltageLevel); // float calCap = shortCapacity/getDlCapByVoltageLevel(voltageLevel);
//24谐波电流幅值 // //24谐波电流幅值
Float[] iHarmTem = new Float[49]; // Float[] iHarmTem = new Float[49];
for (int i = 0; i <= 48; i++) { // for (int i = 0; i <= 48; i++) {
float inHarm = iHarmCalculate(i+2,voltageLevel,protocolCapacity,devCapacity,calCap); // float inHarm = iHarmCalculate(i+2,voltageLevel,protocolCapacity,devCapacity,calCap);
iHarmTem[i] = inHarm; // iHarmTem[i] = inHarm;
} // }
overlimit.buildIHarm(iHarmTem); // overlimit.buildIHarm(iHarmTem);
} // }
/** // /**
* @Description: iHarmCalculate // * @Description: iHarmCalculate
* @Param: protocolCapacity 协议容量 devCapacity设备容量 calCap 短路容量 // * @Param: protocolCapacity 协议容量 devCapacity设备容量 calCap 短路容量
* @return: float // * @return: float
* @Author: clam // * @Author: clam
* @Date: 2024/2/4 // * @Date: 2024/2/4
*/ // */
private static float iHarmCalculate(int nHarm, Float voltageLevel,float protocolCapacity, float devCapacity,float calCap) { // private static float iHarmCalculate(int nHarm, Float voltageLevel,float protocolCapacity, float devCapacity,float calCap) {
double tag = calCap*getHarmTag(nHarm,voltageLevel); // double tag = calCap*getHarmTag(nHarm,voltageLevel);
Double limit = getHarmonicLimit(nHarm,tag,new BigDecimal(String.valueOf(devCapacity)).doubleValue(),new BigDecimal(String.valueOf(protocolCapacity)).doubleValue()); // Double limit = getHarmonicLimit(nHarm,tag,new BigDecimal(String.valueOf(devCapacity)).doubleValue(),new BigDecimal(String.valueOf(protocolCapacity)).doubleValue());
BigDecimal bigDecimal = BigDecimal.valueOf(limit).setScale(4,RoundingMode.HALF_UP); // BigDecimal bigDecimal = BigDecimal.valueOf(limit).setScale(4,RoundingMode.HALF_UP);
return bigDecimal.floatValue(); // return bigDecimal.floatValue();
} // }
//
//
/** // /**
* 电流谐波限值 // * 电流谐波限值
*/ // */
private static Double getHarmTag(Integer iCount, Float voltageLevel) { // private static Double getHarmTag(Integer iCount, Float voltageLevel) {
int x, y; // int x, y;
if (voltageLevel < DicDataEnum.KV6.getValue()) { // if (voltageLevel < DicDataEnum.KV6.getValue()) {
x = 0; // x = 0;
} else if (voltageLevel<DicDataEnum.KV10.getValue()) { // } else if (voltageLevel<DicDataEnum.KV10.getValue()) {
x = 1; // x = 1;
} else if (voltageLevel<DicDataEnum.KV35.getValue()) { // } else if (voltageLevel<DicDataEnum.KV35.getValue()) {
x = 2; // x = 2;
} else if (voltageLevel<DicDataEnum.KV66.getValue()) { // } else if (voltageLevel<DicDataEnum.KV66.getValue()) {
x = 3; // x = 3;
} else if (voltageLevel<DicDataEnum.KV110.getValue()) { // } else if (voltageLevel<DicDataEnum.KV110.getValue()) {
x = 4; // x = 4;
} else { // } else {
x = 5; // x = 5;
} // }
y = iCount - 2; // y = iCount - 2;
return ARR[x][y]; // return ARR[x][y];
} // }
//
/** // /**
* 相位叠加系数的取值 // * 相位叠加系数的取值
*/ // */
public static Double getHarmonicLimit(Integer times, double iTag, double supply, double user) { // public static Double getHarmonicLimit(Integer times, double iTag, double supply, double user) {
if (supply == 0) { // if (supply == 0) {
return 0.0; // return 0.0;
} // }
double coefficient = 2.0; // double coefficient = 2.0;
if (times == 3) { // if (times == 3) {
coefficient = 1.1; // coefficient = 1.1;
} else if (times == 5) { // } else if (times == 5) {
coefficient = 1.2; // coefficient = 1.2;
} else if (times == 7) { // } else if (times == 7) {
coefficient = 1.4; // coefficient = 1.4;
} else if (times == 11) { // } else if (times == 11) {
coefficient = 1.8; // coefficient = 1.8;
} else if (times == 13) { // } else if (times == 13) {
coefficient = 1.9; // coefficient = 1.9;
} // }
BigDecimal bd = new BigDecimal(iTag * Math.pow((user / supply), (1 / coefficient))); // BigDecimal bd = new BigDecimal(iTag * Math.pow((user / supply), (1 / coefficient)));
bd = bd.setScale(6, RoundingMode.HALF_UP); // bd = bd.setScale(6, RoundingMode.HALF_UP);
return Double.parseDouble(bd.toString()); // return Double.parseDouble(bd.toString());
} // }
//
/** // /**
* 根据电压等级获取基准短路容量 // * 根据电压等级获取基准短路容量
*/ // */
public static float getDlCapByVoltageLevel(Float voltageLevel){ // public static float getDlCapByVoltageLevel(Float voltageLevel){
float capValue; // float capValue;
if(voltageLevel< DicDataEnum.KV06.getValue()){ // if(voltageLevel< DicDataEnum.KV06.getValue()){
capValue = 10; // capValue = 10;
}else if(voltageLevel<DicDataEnum.KV20.getValue()){ // }else if(voltageLevel<DicDataEnum.KV20.getValue()){
capValue = 100; // capValue = 100;
}else if(voltageLevel<DicDataEnum.KV35.getValue()){ // }else if(voltageLevel<DicDataEnum.KV35.getValue()){
capValue = 200; // capValue = 200;
}else if(voltageLevel<DicDataEnum.KV66.getValue()){ // }else if(voltageLevel<DicDataEnum.KV66.getValue()){
capValue = 250; // capValue = 250;
}else if(voltageLevel<DicDataEnum.KV110.getValue()){ // }else if(voltageLevel<DicDataEnum.KV110.getValue()){
capValue = 500; // capValue = 500;
}else if(voltageLevel<DicDataEnum.KV220.getValue()){ // }else if(voltageLevel<DicDataEnum.KV220.getValue()){
capValue = 750; // capValue = 750;
}else if(voltageLevel<DicDataEnum.KV330.getValue()){ // }else if(voltageLevel<DicDataEnum.KV330.getValue()){
capValue = 2000; // capValue = 2000;
}else if(voltageLevel<DicDataEnum.KV500.getValue()){ // }else if(voltageLevel<DicDataEnum.KV500.getValue()){
capValue = 3000; // capValue = 3000;
}else if(voltageLevel<DicDataEnum.KV750.getValue()){ // }else if(voltageLevel<DicDataEnum.KV750.getValue()){
capValue = 4500; // capValue = 4500;
}else if(voltageLevel<DicDataEnum.KV1000.getValue()){ // }else if(voltageLevel<DicDataEnum.KV1000.getValue()){
capValue = 7000; // capValue = 7000;
}else { // }else {
capValue = 9000; // capValue = 9000;
} // }
return capValue; // return capValue;
} // }
//
//
/*---------------------------------谐波电流限值end-----------------------------------*/ // /*---------------------------------谐波电流限值end-----------------------------------*/
//
//
/** // /**
* 间谐波电压含有率 // * 间谐波电压含有率
*/ // */
//
public static void interharmonicCurrent(Overlimit overlimit,Float voltageLevel){ // public static void interharmonicCurrent(Overlimit overlimit,Float voltageLevel){
float aValue,bValue; // float aValue,bValue;
if(voltageLevel <= DicDataEnum.KV1.getValue()){ // if(voltageLevel <= DicDataEnum.KV1.getValue()){
aValue = 0.2f;bValue = 0.5f; // aValue = 0.2f;bValue = 0.5f;
}else { // }else {
aValue = 0.16f;bValue = 0.4f; // aValue = 0.16f;bValue = 0.4f;
} // }
overlimit.setInuharm1(aValue); // overlimit.setInuharm1(aValue);
overlimit.setInuharm2(aValue); // overlimit.setInuharm2(aValue);
//
overlimit.setInuharm3(bValue); // overlimit.setInuharm3(bValue);
overlimit.setInuharm4(bValue); // overlimit.setInuharm4(bValue);
overlimit.setInuharm5(bValue); // overlimit.setInuharm5(bValue);
overlimit.setInuharm6(bValue); // overlimit.setInuharm6(bValue);
overlimit.setInuharm7(bValue); // overlimit.setInuharm7(bValue);
overlimit.setInuharm8(bValue); // overlimit.setInuharm8(bValue);
overlimit.setInuharm9(bValue); // overlimit.setInuharm9(bValue);
overlimit.setInuharm10(bValue); // overlimit.setInuharm10(bValue);
overlimit.setInuharm11(bValue); // overlimit.setInuharm11(bValue);
overlimit.setInuharm12(bValue); // overlimit.setInuharm12(bValue);
overlimit.setInuharm13(bValue); // overlimit.setInuharm13(bValue);
overlimit.setInuharm14(bValue); // overlimit.setInuharm14(bValue);
overlimit.setInuharm15(bValue); // overlimit.setInuharm15(bValue);
overlimit.setInuharm16(bValue); // overlimit.setInuharm16(bValue);
} // }
//
//
/** // /**
* 负序电流限值 // * 负序电流限值
*/ // */
public static void negativeSequenceCurrent(Overlimit overlimit,Float voltageLevel,Float shortCapacity){ // public static void negativeSequenceCurrent(Overlimit overlimit,Float voltageLevel,Float shortCapacity){
double v = (0.013*shortCapacity*1000)/(getUl(voltageLevel)*Math.sqrt(3)); // double v = (0.013*shortCapacity*1000)/(getUl(voltageLevel)*Math.sqrt(3));
overlimit.setINeg((float) v); // overlimit.setINeg((float) v);
} // }
//
/** // /**
* 获取额定线电压 // * 获取额定线电压
*/ // */
private static float getUl(Float voltageLevel){ // private static float getUl(Float voltageLevel){
float value; // float value;
if(voltageLevel<DicDataEnum.KV6.getValue()){ // if(voltageLevel<DicDataEnum.KV6.getValue()){
value = 0.4f; // value = 0.4f;
}else if(voltageLevel<DicDataEnum.KV10.getValue()){ // }else if(voltageLevel<DicDataEnum.KV10.getValue()){
value = 6.3f; // value = 6.3f;
}else if(voltageLevel<DicDataEnum.KV20.getValue()){ // }else if(voltageLevel<DicDataEnum.KV20.getValue()){
value = 10.5f; // value = 10.5f;
}else if(voltageLevel<DicDataEnum.KV35.getValue()){ // }else if(voltageLevel<DicDataEnum.KV35.getValue()){
value = 21.0f; // value = 21.0f;
}else if(voltageLevel<DicDataEnum.KV66.getValue()){ // }else if(voltageLevel<DicDataEnum.KV66.getValue()){
value = 36.5f; // value = 36.5f;
}else if(voltageLevel<DicDataEnum.KV110.getValue()){ // }else if(voltageLevel<DicDataEnum.KV110.getValue()){
value = 69.0f; // value = 69.0f;
}else if(voltageLevel<DicDataEnum.KV220.getValue()){ // }else if(voltageLevel<DicDataEnum.KV220.getValue()){
value = 115.5f; // value = 115.5f;
}else if(voltageLevel<DicDataEnum.KV330.getValue()){ // }else if(voltageLevel<DicDataEnum.KV330.getValue()){
value = 230.0f; // value = 230.0f;
}else { // }else {
value = 345.0f; // value = 345.0f;
} // }
return value; // return value;
} // }
//
//
public static void main(String[] args) { // public static void main(String[] args) {
System.out.println("sss"); // System.out.println("sss");
float aa = iHarmCalculate(9,500f,10,10,0.002222222222f); // float aa = iHarmCalculate(9,500f,10,10,0.002222222222f);
//
System.out.println(aa); // System.out.println(aa);
} // }
} //}

View File

@@ -6,9 +6,9 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.csdevice.pojo.vo.LineOverLimitVO; import com.njcn.csdevice.pojo.vo.LineOverLimitVO;
import com.njcn.csdevice.service.IOverLimitService; import com.njcn.csdevice.service.IOverLimitService;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.param.IcdBzParam;
import com.njcn.csdevice.pojo.po.RStatIntegrityD; import com.njcn.csdevice.pojo.po.RStatIntegrityD;
import com.njcn.csdevice.service.IRStatIntegrityDService; import com.njcn.csdevice.service.IRStatIntegrityDService;
import com.njcn.csharmonic.pojo.param.StatisticsDataParam; import com.njcn.csharmonic.pojo.param.StatisticsDataParam;
@@ -50,9 +51,9 @@ public class RStatIntegrityDController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/list") @PostMapping("/list")
@ApiOperation("获取数据") @ApiOperation("获取数据")
public HttpResult<List<RStatIntegrityD>> list(@Validated @RequestParam("list") List<String> list, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime){ public HttpResult<List<RStatIntegrityD>> list(@RequestBody @Validated IcdBzParam param){
String methodDescribe = getMethodDescribe("list"); String methodDescribe = getMethodDescribe("list");
List<RStatIntegrityD> result = irStatIntegrityDService.getData(list,startTime,endTime); List<RStatIntegrityD> result = irStatIntegrityDService.getData(param.getLineList(),param.getStartTime(),param.getEndTime());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
} }

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.param.IcdBzParam;
import com.njcn.csdevice.pojo.po.RStatOnlineRateD; import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
import com.njcn.csdevice.service.IRStatOnlineRateDService; import com.njcn.csdevice.service.IRStatOnlineRateDService;
import com.njcn.csharmonic.pojo.param.StatisticsDataParam; import com.njcn.csharmonic.pojo.param.StatisticsDataParam;
@@ -16,7 +17,10 @@ import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@@ -50,9 +54,9 @@ public class RStatOnlineRateDController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/list") @PostMapping("/list")
@ApiOperation("获取数据") @ApiOperation("获取数据")
public HttpResult<List<RStatOnlineRateD>> list(@Validated @RequestParam("list") List<String> list, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime){ public HttpResult<List<RStatOnlineRateD>> list(@RequestBody @Validated IcdBzParam param){
String methodDescribe = getMethodDescribe("list"); String methodDescribe = getMethodDescribe("list");
List<RStatOnlineRateD> result = rStatOnlineRateDService.getData(list,startTime,endTime); List<RStatOnlineRateD> result = rStatOnlineRateDService.getData(param.getLineList(),param.getStartTime(),param.getEndTime());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
} }

View File

@@ -395,13 +395,14 @@ public class EquipmentDeliveryController extends BaseController {
@PostMapping("/flipCldDevStatus") @PostMapping("/flipCldDevStatus")
@ApiOperation("云前置设备状态翻转") @ApiOperation("云前置设备状态翻转")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "devId", value = "设备id", required = true), @ApiImplicitParam(name = "date", value = "时间", required = true),
@ApiImplicitParam(name = "status", value = "状态", required = true) @ApiImplicitParam(name = "devId", value = "设备id", required = true),
@ApiImplicitParam(name = "status", value = "状态", required = true)
}) })
@ApiIgnore @ApiIgnore
public HttpResult<Boolean> flipCldDevStatus(@RequestParam("devId") String devId, @RequestParam("status") Integer status){ public HttpResult<Boolean> flipCldDevStatus(@RequestParam("date") String date, @RequestParam("devId") String devId, @RequestParam("status") Integer status){
String methodDescribe = getMethodDescribe("flipCldDevStatus"); String methodDescribe = getMethodDescribe("flipCldDevStatus");
csEquipmentDeliveryService.flipCldDevStatus(devId,status); csEquipmentDeliveryService.flipCldDevStatus(date,devId,status);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }

View File

@@ -67,7 +67,7 @@ public class IcdController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/bzFileByEventId") @PostMapping("/bzFileByEventId")
@ApiOperation("指定事件补召波形") @ApiOperation("指定事件补召波形指令下发")
@ApiImplicitParam(name = "eventId", value = "事件id", required = true) @ApiImplicitParam(name = "eventId", value = "事件id", required = true)
public HttpResult<String> bzFileByEventId(@RequestParam String eventId){ public HttpResult<String> bzFileByEventId(@RequestParam String eventId){
String methodDescribe = getMethodDescribe("bzFileByEventId"); String methodDescribe = getMethodDescribe("bzFileByEventId");
@@ -77,7 +77,7 @@ public class IcdController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/bzEvent") @PostMapping("/bzEvent")
@ApiOperation("补召事件") @ApiOperation("补召事件指令下发")
@ApiImplicitParam(name = "param", value = "参数", required = true) @ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<String> bzEvent(@RequestBody @Validated IcdBzParam param){ public HttpResult<String> bzEvent(@RequestBody @Validated IcdBzParam param){
String methodDescribe = getMethodDescribe("bzEvent"); String methodDescribe = getMethodDescribe("bzEvent");
@@ -87,7 +87,7 @@ public class IcdController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/bzFile") @PostMapping("/bzFile")
@ApiOperation("补召波形") @ApiOperation("补召波形指令下发")
@ApiImplicitParam(name = "param", value = "参数", required = true) @ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<String> bzFile(@RequestBody @Validated IcdBzParam param){ public HttpResult<String> bzFile(@RequestBody @Validated IcdBzParam param){
String methodDescribe = getMethodDescribe("bzFile"); String methodDescribe = getMethodDescribe("bzFile");

View File

@@ -12,6 +12,7 @@ import com.njcn.csdevice.mapper.PqsDeviceUnitMapper;
import com.njcn.csdevice.pojo.po.CsDeviceUserPO; import com.njcn.csdevice.pojo.po.CsDeviceUserPO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.service.CsCommTerminalService;
import com.njcn.csdevice.service.CsDeviceUserPOService; import com.njcn.csdevice.service.CsDeviceUserPOService;
import com.njcn.csdevice.service.CsEquipmentDeliveryService; import com.njcn.csdevice.service.CsEquipmentDeliveryService;
import com.njcn.csdevice.service.CsLinePOService; import com.njcn.csdevice.service.CsLinePOService;
@@ -47,13 +48,8 @@ import java.util.stream.Collectors;
@Api(tags = "通用台账查询") @Api(tags = "通用台账查询")
public class CsCommTerminalController extends BaseController { public class CsCommTerminalController extends BaseController {
private final PqsDeviceUnitMapper pqsDeviceUnitMapper;
private final CsDeviceUserPOService csDeviceUserPOService; private final CsCommTerminalService commTerminalService;
private final CsLinePOService csLinePOService;
private final UserFeignClient userFeignClient;
private final CsEquipmentDeliveryService csEquipmentDeliveryService;
/** /**
* 根据用户获取设备信息 * 根据用户获取设备信息
@@ -64,7 +60,7 @@ public class CsCommTerminalController extends BaseController {
@ApiImplicitParam(name = "userId", value = "用户id", required = true) @ApiImplicitParam(name = "userId", value = "用户id", required = true)
public HttpResult<List<String>> getDevIdsByUser(@RequestParam("userId") String userId) { public HttpResult<List<String>> getDevIdsByUser(@RequestParam("userId") String userId) {
String methodDescribe = getMethodDescribe("getDevIdsByUser"); String methodDescribe = getMethodDescribe("getDevIdsByUser");
List<String> devIds = commGetDevIds(userId); List<String> devIds = commTerminalService.commGetDevIds(userId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, devIds, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, devIds, methodDescribe);
} }
@@ -77,19 +73,8 @@ public class CsCommTerminalController extends BaseController {
@ApiImplicitParam(name = "userId", value = "用户id", required = true) @ApiImplicitParam(name = "userId", value = "用户id", required = true)
public HttpResult<List<String>> getLineIdsByUser(@RequestParam("userId") String userId) { public HttpResult<List<String>> getLineIdsByUser(@RequestParam("userId") String userId) {
String methodDescribe = getMethodDescribe("getLineIdsByUser"); String methodDescribe = getMethodDescribe("getLineIdsByUser");
List<String> devIds = commGetDevIds(userId); List<String> lineIds = commTerminalService.getLineIdsByUser(userId);
if(CollUtil.isNotEmpty(devIds)){ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, lineIds, methodDescribe);
List<CsLinePO> poList = csLinePOService.lambdaQuery().select(CsLinePO::getLineId).in(CsLinePO::getDeviceId,devIds)
.eq(CsLinePO::getStatus,DataStateEnum.ENABLE.getCode()).list();
if(CollUtil.isEmpty(poList)){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, Collections.emptyList(), methodDescribe);
}else {
List<String> result = poList.stream().map(CsLinePO::getLineId).distinct().collect(Collectors.toList());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, Collections.emptyList(), methodDescribe);
}
} }
@@ -101,37 +86,12 @@ public class CsCommTerminalController extends BaseController {
@ApiOperation("根据登录用户id获取电能质量用户id集合") @ApiOperation("根据登录用户id获取电能质量用户id集合")
@ApiImplicitParam(name = "userId", value = "用户id", required = true) @ApiImplicitParam(name = "userId", value = "用户id", required = true)
public HttpResult<List<String>> getPqUserIdsByUser(@RequestParam("userId") String userId) { public HttpResult<List<String>> getPqUserIdsByUser(@RequestParam("userId") String userId) {
String methodDescribe = getMethodDescribe("getPqUserIdsByUser"); String methodDescribe = getMethodDescribe("getLineIdsByUser");
List<String> lineIds = commTerminalService.getPqUserIdsByUser(userId);
List<String> devIds = commGetDevIds(userId); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, lineIds, methodDescribe);
if(CollUtil.isNotEmpty(devIds)){
List<CsLinePO> poList = csLinePOService.lambdaQuery().select(CsLinePO::getLineId,CsLinePO::getMonitorUser).in(CsLinePO::getDeviceId,devIds)
.eq(CsLinePO::getStatus,DataStateEnum.ENABLE.getCode()).list();
if(CollUtil.isEmpty(poList)){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, Collections.emptyList(), methodDescribe);
}else {
List<String> result = poList.stream().map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, Collections.emptyList(), methodDescribe);
}
} }
private List<String> commGetDevIds(String userId){
UserVO userVO = userFeignClient.getUserById(userId).getData();
List<String> devIds;
if(userVO.getType().equals(UserType.SUPER_ADMINISTRATOR ) || userVO.getType().equals(UserType.ADMINISTRATOR )){
devIds = csEquipmentDeliveryService.getAll().stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
}else {
List<CsDeviceUserPO> devList = csDeviceUserPOService.lambdaQuery().select(CsDeviceUserPO::getDeviceId)
.and(w->w.eq(CsDeviceUserPO::getPrimaryUserId,userId).or().eq(CsDeviceUserPO::getSubUserId,userId))
.eq(CsDeviceUserPO::getStatus, DataStateEnum.ENABLE.getCode()).list();
devIds = devList.stream().map(CsDeviceUserPO::getDeviceId).distinct().collect(Collectors.toList());
}
return devIds;
}
/** /**
* 通过监测点获取监测点数据单位 * 通过监测点获取监测点数据单位
@@ -144,11 +104,7 @@ public class CsCommTerminalController extends BaseController {
@ApiImplicitParam(name = "lineId", value = "实体", required = true) @ApiImplicitParam(name = "lineId", value = "实体", required = true)
public HttpResult<PqsDeviceUnit> lineUnitDetail(@RequestParam("lineId") String lineId) { public HttpResult<PqsDeviceUnit> lineUnitDetail(@RequestParam("lineId") String lineId) {
String methodDescribe = getMethodDescribe("lineUnitDetail"); String methodDescribe = getMethodDescribe("lineUnitDetail");
PqsDeviceUnit pqsDeviceUnit = commTerminalService.lineUnitDetail(lineId);
PqsDeviceUnit pqsDeviceUnit = pqsDeviceUnitMapper.selectById(lineId);
if(Objects.isNull(pqsDeviceUnit)){
pqsDeviceUnit = new PqsDeviceUnit();
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqsDeviceUnit, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqsDeviceUnit, methodDescribe);
} }

View File

@@ -78,6 +78,16 @@ public class CsLedgerController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/objTree")
@ApiOperation("三层对象用户树")
public HttpResult<List<CsLedgerVO>> objTree(){
String methodDescribe = getMethodDescribe("getProjectTree");
List<CsLedgerVO> list = csLedgerService.objTree();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/add") @PostMapping("/add")
@ApiOperation("新增台账信息") @ApiOperation("新增台账信息")

View File

@@ -1,6 +1,5 @@
package com.njcn.csdevice.controller.line; package com.njcn.csdevice.controller.line;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.annotation.OperateInfo;
@@ -8,14 +7,14 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.mapper.OverlimitMapper;
import com.njcn.csdevice.pojo.param.CsLineParam; import com.njcn.csdevice.pojo.param.CsLineParam;
import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.pojo.vo.LineDetailDataVO; import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO; import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO;
import com.njcn.csdevice.service.CsLinePOService; import com.njcn.csdevice.service.CsLinePOService;
import com.njcn.csdevice.utils.COverlimitUtil; import com.njcn.device.biz.mapper.OverLimitWlMapper;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.biz.utils.COverlimitUtil;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;
import com.njcn.web.pojo.param.BaseParam; import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.*; import io.swagger.annotations.*;
@@ -28,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Description: * Description:
@@ -44,7 +44,7 @@ import java.util.List;
public class CslineController extends BaseController { public class CslineController extends BaseController {
private final CsLinePOService csLinePOService; private final CsLinePOService csLinePOService;
private final OverlimitMapper overlimitMapper; private final OverLimitWlMapper overLimitWlMapper;
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryLineById") @PostMapping("/queryLineById")
@@ -87,8 +87,8 @@ public class CslineController extends BaseController {
for(CsLinePO csLinePO: list){ for(CsLinePO csLinePO: list){
Overlimit overlimit = COverlimitUtil.globalAssemble(csLinePO.getVolGrade().floatValue(),10f,10f,10f,0,1); Overlimit overlimit = COverlimitUtil.globalAssemble(csLinePO.getVolGrade().floatValue(),10f,10f,10f,0,1);
overlimit.setId(csLinePO.getLineId()); overlimit.setId(csLinePO.getLineId());
overlimitMapper.deleteById(csLinePO.getLineId()); overLimitWlMapper.deleteById(csLinePO.getLineId());
overlimitMapper.insert(overlimit); overLimitWlMapper.insert(overlimit);
} }
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -104,6 +104,17 @@ public class CslineController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, lineList, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, lineList, methodDescribe);
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getCustomDetailByLineId")
@ApiOperation("根据id查询监测点")
public HttpResult<Map<String,String>> getCustomDetailByLineId(@RequestParam String id){
String methodDescribe = getMethodDescribe("getCustomDetailByLineId");
Map<String,String> map = csLinePOService.getCustomDetailByLineId(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, map, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/updateLine") @PostMapping("/updateLine")
@ApiOperation("修改监测点信息") @ApiOperation("修改监测点信息")
@@ -144,7 +155,17 @@ public class CslineController extends BaseController {
@ApiImplicitParam(name = "ids", value = "监测点id集合", required = true) @ApiImplicitParam(name = "ids", value = "监测点id集合", required = true)
public HttpResult<List<Overlimit>> getOverLimitData(@RequestBody List<String> ids) { public HttpResult<List<Overlimit>> getOverLimitData(@RequestBody List<String> ids) {
String methodDescribe = getMethodDescribe("getOverLimitDataByIds"); String methodDescribe = getMethodDescribe("getOverLimitDataByIds");
List<Overlimit> result = overlimitMapper.selectBatchIds(ids); List<Overlimit> result = overLimitWlMapper.selectBatchIds(ids);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getOverLimitData")
@ApiOperation("根据监测点id获取国标限值")
@ApiImplicitParam(name = "id", value = "监测点id", required = true)
public HttpResult<Overlimit> getOverLimitData(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getOverLimitData");
Overlimit result = overLimitWlMapper.selectById(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
} }
@@ -176,10 +197,10 @@ public class CslineController extends BaseController {
String methodDescribe = getMethodDescribe("addCldLine"); String methodDescribe = getMethodDescribe("addCldLine");
csLinePOService.addCldLine(param); csLinePOService.addCldLine(param);
//新增监测点限值 //新增监测点限值
Overlimit overlimit = COverlimitUtil.globalAssemble(param.getVolGrade().floatValue(),10f,10f,10f,0,1); Overlimit overlimit = COverlimitUtil.globalAssemble(param.getVolGrade().floatValue(),param.getProtocolCapacity().floatValue(),param.getDevCapacity().floatValue(),param.getShortCircuitCapacity().floatValue(),0,0);
overlimit.setId(param.getLineId()); overlimit.setId(param.getLineId());
overlimitMapper.deleteById(param.getLineId()); overLimitWlMapper.deleteById(param.getLineId());
overlimitMapper.insert(overlimit); overLimitWlMapper.insert(overlimit);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -191,10 +212,10 @@ public class CslineController extends BaseController {
String methodDescribe = getMethodDescribe("updateCldLine"); String methodDescribe = getMethodDescribe("updateCldLine");
csLinePOService.updateCldLine(param); csLinePOService.updateCldLine(param);
//修改监测点限值 //修改监测点限值
Overlimit overlimit = COverlimitUtil.globalAssemble(param.getVolGrade().floatValue(),10f,10f,10f,0,1); Overlimit overlimit = COverlimitUtil.globalAssemble(param.getVolGrade().floatValue(),param.getProtocolCapacity().floatValue(),param.getDevCapacity().floatValue(),param.getShortCircuitCapacity().floatValue(),0,0);
overlimit.setId(param.getLineId()); overlimit.setId(param.getLineId());
overlimitMapper.deleteById(param.getLineId()); overLimitWlMapper.deleteById(param.getLineId());
overlimitMapper.insert(overlimit); overLimitWlMapper.insert(overlimit);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -205,6 +226,7 @@ public class CslineController extends BaseController {
public HttpResult<List<CsLinePO>> delCldLine(@RequestParam("id") String id) { public HttpResult<List<CsLinePO>> delCldLine(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("delCldLine"); String methodDescribe = getMethodDescribe("delCldLine");
csLinePOService.deleteCldLine(id); csLinePOService.deleteCldLine(id);
overLimitWlMapper.deleteById(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -258,10 +280,7 @@ public class CslineController extends BaseController {
@ApiImplicitParam(name = "param", value = "param", required = true) @ApiImplicitParam(name = "param", value = "param", required = true)
public HttpResult<List<CsLinePO>> list(@RequestBody CsLinePO param) { public HttpResult<List<CsLinePO>> list(@RequestBody CsLinePO param) {
String methodDescribe = getMethodDescribe("list"); String methodDescribe = getMethodDescribe("list");
List<CsLinePO> list = csLinePOService.list(new LambdaQueryWrapper<CsLinePO>() List<CsLinePO> list = csLinePOService.getLineList(param);
.eq(CsLinePO::getStatus, 1)
.eq(StrUtil.isNotBlank(param.getPosition()), CsLinePO::getPosition, param.getPosition())
.orderByAsc(CsLinePO::getName));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
} }
@@ -280,7 +299,7 @@ public class CslineController extends BaseController {
@ApiOperation("获取敏感负荷用户监测点列表") @ApiOperation("获取敏感负荷用户监测点列表")
@ApiImplicitParam(name = "param", value = "查询参数", required = true) @ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<Page<PqSensitiveUserLineVO>> getSensitiveUserLineList(@RequestBody BaseParam param) { public HttpResult<Page<PqSensitiveUserLineVO>> getSensitiveUserLineList(@RequestBody BaseParam param) {
String methodDescribe = getMethodDescribe("getList"); String methodDescribe = getMethodDescribe("getSensitiveUserLineList");
Page<PqSensitiveUserLineVO> page = csLinePOService.getSensitiveUserLineList(param); Page<PqSensitiveUserLineVO> page = csLinePOService.getSensitiveUserLineList(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
} }

View File

@@ -11,8 +11,6 @@ import com.njcn.csdevice.pojo.param.CsEngineeringAuditParm;
import com.njcn.csdevice.pojo.param.CsEngineeringQueryPageParm; import com.njcn.csdevice.pojo.param.CsEngineeringQueryPageParm;
import com.njcn.csdevice.pojo.param.CsEngineeringQueryParm; import com.njcn.csdevice.pojo.param.CsEngineeringQueryParm;
import com.njcn.csdevice.pojo.po.CsEngineeringPO; import com.njcn.csdevice.pojo.po.CsEngineeringPO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.pojo.vo.CsEngineeringVO; import com.njcn.csdevice.pojo.vo.CsEngineeringVO;
import com.njcn.csdevice.service.CsEngineeringService; import com.njcn.csdevice.service.CsEngineeringService;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;

View File

@@ -0,0 +1,100 @@
package com.njcn.csdevice.controller.project;
import com.njcn.common.pojo.annotation.OperateInfo;
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.pojo.param.AppProjectAddParm;
import com.njcn.csdevice.pojo.param.AppProjectAuditParm;
import com.njcn.csdevice.pojo.param.CsEngineeringAddParm;
import com.njcn.csdevice.pojo.param.CsEngineeringAuditParm;
import com.njcn.csdevice.pojo.vo.EngineeringProjectRelationVo;
import com.njcn.csdevice.service.IEngineeringProjectService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author xy
* @date 2026/1/29
*/
@Slf4j
@RestController
@RequestMapping("/engineeringProjectRelation")
@Api(tags = " 工程信息管理(不分权限)")
@AllArgsConstructor
public class EngineeringProjectController extends BaseController {
private final IEngineeringProjectService csEngineeringService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/addEngineering")
@ApiOperation("新增工程信息")
public HttpResult<Boolean> addEngineering(@Validated @RequestBody CsEngineeringAddParm csEngineeringAddParm){
String methodDescribe = getMethodDescribe("addEngineering");
boolean result = csEngineeringService.addEngineering(csEngineeringAddParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/updateEngineering")
@ApiOperation("修改工程信息")
public HttpResult<Boolean> updateEngineering(@Validated @RequestBody CsEngineeringAuditParm csEngineeringAuditParm){
String methodDescribe = getMethodDescribe("updateEngineering");
boolean result = csEngineeringService.updateEngineering(csEngineeringAuditParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/deleteEngineering")
@ApiOperation("删除工程信息")
public HttpResult<Boolean> deleteEngineering(@RequestParam("id") String id){
String methodDescribe = getMethodDescribe("deleteEngineering");
boolean result = csEngineeringService.deleteEngineering(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/addProject")
@ApiOperation("新增项目信息")
public HttpResult<Boolean> addProject(@Validated @RequestBody AppProjectAddParm param){
String methodDescribe = getMethodDescribe("addProject");
boolean result = csEngineeringService.addProject(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/updateProject")
@ApiOperation("修改项目信息")
public HttpResult<Boolean> updateProject(@Validated @RequestBody AppProjectAuditParm param){
String methodDescribe = getMethodDescribe("updateProject");
boolean result = csEngineeringService.updateProject(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/deleteProject")
@ApiOperation("删除项目信息")
public HttpResult<Boolean> deleteProject(@RequestParam("id") String id){
String methodDescribe = getMethodDescribe("deleteProject");
boolean result = csEngineeringService.deleteProject(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/list")
@ApiOperation("查询工程信息列表")
public HttpResult<List<EngineeringProjectRelationVo>> getList(){
String methodDescribe = getMethodDescribe("getList");
List<EngineeringProjectRelationVo> result = csEngineeringService.getList();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -5,6 +5,7 @@ import com.njcn.csdevice.pojo.po.CsLinePO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* *
@@ -17,4 +18,7 @@ import java.util.List;
public interface CsLinePOMapper extends BaseMapper<CsLinePO> { public interface CsLinePOMapper extends BaseMapper<CsLinePO> {
List<CsLinePO> findByNdid(@Param("id") String id); List<CsLinePO> findByNdid(@Param("id") String id);
Map<String,String> getCustomDetailByLineId(@Param("lineId")String lineId);
} }

View File

@@ -1,22 +0,0 @@
package com.njcn.csdevice.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.csdevice.pojo.po.Overlimit;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author cdf
* @since 2022-01-04
*/
@DS("sjzx")
@Mapper
public interface OverlimitMapper extends BaseMapper<Overlimit> {
}

View File

@@ -19,7 +19,7 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
line_id, dev_id, `name`, `position`, vol_grade, pt_ratio, ct_ratio, `status`, create_by, line_id, dev_id, `name`, `position`, vol_grade, pt_ratio, ct_ratio, `status`, create_by,
create_time, update_by, update_time create_time, update_by, update_time
</sql> </sql>
@@ -33,4 +33,24 @@
where where
t0.ndid = #{id} t0.ndid = #{id}
</select> </select>
</mapper>
<select id="getCustomDetailByLineId" resultType="map">
SELECT
line.line_id as lineId,
line.name as lineName,
concat(round(line.pt_ratio,0), ':', round(IFNULL(line.pt2_ratio, 1), 0)) as pt,
concat(round(line.ct_ratio,0), ':', round(IFNULL(line.ct2_ratio, 1), 0)) as ct,
line.dev_capacity as Dev_Capacity,
line.short_circuit_capacity as Short_Capacity,
line.basic_capacity as Standard_Capacity,
line.protocol_capacity as Deal_Capacity,
line.vol_grade AS voltageLevel,
dataSet.data_level AS level
FROM
cs_line line
left JOIN cs_data_set dataSet on line.data_set_id = dataSet.id
WHERE
line.line_id = #{lineId}
</select>
</mapper>

View File

@@ -55,4 +55,11 @@ public interface AppProjectService extends IService<AppProjectPO> {
* @return * @return
*/ */
List<AppProjectPO> getProjectByEngineering(List<String> list); List<AppProjectPO> getProjectByEngineering(List<String> list);
AppProjectPO add(AppProjectAddParm param);
AppProjectPO updateData(AppProjectAuditParm param);
boolean delete(String id);
} }

View File

@@ -56,4 +56,6 @@ public interface AppTopologyDiagramService extends IService<AppTopologyDiagramPO
IPage<AppTopologyDiagramVO> queryTopologyDiagramPage(AppTopologyDiagramQueryPageParm appTopologyDiagramQueryPageParm); IPage<AppTopologyDiagramVO> queryTopologyDiagramPage(AppTopologyDiagramQueryPageParm appTopologyDiagramQueryPageParm);
Boolean checkCanDelete(String id); Boolean checkCanDelete(String id);
AppTopologyDiagramPO getByProjectId(String projectId);
} }

View File

@@ -0,0 +1,25 @@
package com.njcn.csdevice.service;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.pojo.po.PqsDeviceUnit;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
public interface CsCommTerminalService {
List<String> getLineIdsByUser(String userId);
List<String> getPqUserIdsByUser(String userId);
PqsDeviceUnit lineUnitDetail(String lineId);
List<String> commGetDevIds(String userId);
}

View File

@@ -59,4 +59,11 @@ public interface CsEngineeringService extends IService<CsEngineeringPO>{
CsEngineeringPO queryEngineeringById(String id); CsEngineeringPO queryEngineeringById(String id);
List<CsEngineeringPO> getUnlinkedEngineering(String userId); List<CsEngineeringPO> getUnlinkedEngineering(String userId);
CsEngineeringPO add(CsEngineeringAddParm csEngineeringAddParm);
CsEngineeringPO updateData(CsEngineeringAuditParm csEngineeringAuditParm);
boolean deleteData(String id);
} }

View File

@@ -179,10 +179,11 @@ public interface CsEquipmentDeliveryService extends IService<CsEquipmentDelivery
/** /**
* 根据设备id和状态来修改设备运行状态同时修改设备下的监测点的状态 * 根据设备id和状态来修改设备运行状态同时修改设备下的监测点的状态
* @param date
* @param devId * @param devId
* @param status * @param status
*/ */
void flipCldDevStatus(String devId, Integer status); void flipCldDevStatus(String date, String devId, Integer status);
/** /**
* 根据项目id获取设备列表 * 根据项目id获取设备列表

View File

@@ -10,6 +10,7 @@ import com.njcn.web.pojo.param.BaseParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* *
@@ -39,6 +40,9 @@ public interface CsLinePOService extends IService<CsLinePO>{
*/ */
List<CsLinePO> findByNdid(String id); List<CsLinePO> findByNdid(String id);
Map<String,String> getCustomDetailByLineId(String lineId);
/** /**
* 更新监测点信息 * 更新监测点信息
* @param csLineParam * @param csLineParam
@@ -91,4 +95,6 @@ public interface CsLinePOService extends IService<CsLinePO>{
* @return 结果 * @return 结果
*/ */
LineDetailDataVO getLineDetailData(String id); LineDetailDataVO getLineDetailData(String id);
List<CsLinePO> getLineList(CsLinePO param);
} }

View File

@@ -32,7 +32,7 @@ public interface ICsLedgerService extends IService<CsLedger> {
List<CsLedgerVO> getLineTree(); List<CsLedgerVO> getLineTree();
/** /**
* 终端三层树 * 终端三层树
* @return * @return
*/ */
List<CsLedgerVO> getDeviceTree(); List<CsLedgerVO> getDeviceTree();
@@ -77,6 +77,9 @@ public interface ICsLedgerService extends IService<CsLedger> {
List<CsLedgerVO> getztProjectTree(); List<CsLedgerVO> getztProjectTree();
List<CsLedgerVO> objTree();
/** /**
* 根据设备集合获取项目和工程 * 根据设备集合获取项目和工程
* @param id * @param id

View File

@@ -0,0 +1,35 @@
package com.njcn.csdevice.service;
import com.njcn.csdevice.pojo.param.AppProjectAddParm;
import com.njcn.csdevice.pojo.param.AppProjectAuditParm;
import com.njcn.csdevice.pojo.param.CsEngineeringAddParm;
import com.njcn.csdevice.pojo.param.CsEngineeringAuditParm;
import com.njcn.csdevice.pojo.vo.EngineeringProjectRelationVo;
import java.util.List;
/**
* <p>
* 组和指标关系表 服务类
* </p>
*
* @author xuyang
* @since 2023-06-19
*/
public interface IEngineeringProjectService {
boolean addEngineering(CsEngineeringAddParm csEngineeringAddParm);
boolean updateEngineering(CsEngineeringAuditParm csEngineeringAuditParm);
boolean deleteEngineering(String id);
boolean addProject(AppProjectAddParm param);
boolean updateProject(AppProjectAuditParm param);
boolean deleteProject(String id);
List<EngineeringProjectRelationVo> getList();
}

View File

@@ -2,8 +2,8 @@ package com.njcn.csdevice.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.csdevice.pojo.vo.LineOverLimitVO; import com.njcn.csdevice.pojo.vo.LineOverLimitVO;
import com.njcn.device.biz.pojo.po.Overlimit;
/** /**
* <p> * <p>

View File

@@ -1,9 +1,9 @@
package com.njcn.csdevice.service.impl; package com.njcn.csdevice.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.stream.CollectorUtil;
import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -17,7 +17,6 @@ import com.njcn.csdevice.pojo.param.*;
import com.njcn.csdevice.pojo.po.*; import com.njcn.csdevice.pojo.po.*;
import com.njcn.csdevice.pojo.vo.AppProjectVO; import com.njcn.csdevice.pojo.vo.AppProjectVO;
import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO; import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO;
import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO;
import com.njcn.csdevice.service.AppProjectService; import com.njcn.csdevice.service.AppProjectService;
import com.njcn.csdevice.service.AppTopologyDiagramService; import com.njcn.csdevice.service.AppTopologyDiagramService;
import com.njcn.csdevice.service.CsLineTopologyTemplateService; import com.njcn.csdevice.service.CsLineTopologyTemplateService;
@@ -367,4 +366,42 @@ class AppProjectServiceImpl extends ServiceImpl<AppProjectMapper, AppProjectPO>
} }
return result; return result;
} }
@Override
public AppProjectPO add(AppProjectAddParm param) {
AppProjectPO po = new AppProjectPO ( );
List<AppProjectPO> list = this.lambdaQuery().eq(AppProjectPO::getName, param.getName()).eq(AppProjectPO::getStatus, "1").list();
if(!list.isEmpty()){
throw new BusinessException("新增失败,项目名重复");
}
BeanUtils.copyProperties (param, po);
po.setStatus ("1");
this.save(po);
return po;
}
@Override
public AppProjectPO updateData(AppProjectAuditParm param) {
List<AppProjectPO> list = this.lambdaQuery()
.eq(AppProjectPO::getName, param.getName())
.eq(AppProjectPO::getStatus, "1")
.ne(AppProjectPO::getId, param.getId())
.list();
if(!list.isEmpty()){
throw new BusinessException("修改失败,项目名重复");
}
AppProjectPO po = new AppProjectPO ();
BeanUtils.copyProperties (param, po);
this.updateById(po);
return po;
}
@Override
public boolean delete(String id) {
LambdaUpdateWrapper<AppProjectPO> queryWrapper = new LambdaUpdateWrapper<>();
queryWrapper.eq(AppProjectPO::getId,id).set(AppProjectPO::getStatus,"0");
return this.update(queryWrapper);
}
} }

View File

@@ -1,6 +1,6 @@
package com.njcn.csdevice.service.impl; package com.njcn.csdevice.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.Query; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -10,15 +10,18 @@ import com.google.common.base.Objects;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.constant.DataParam; import com.njcn.csdevice.constant.DataParam;
import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.csdevice.enums.AlgorithmResponseEnum;
import com.njcn.csdevice.mapper.*; import com.njcn.csdevice.mapper.AppLineTopologyDiagramMapper;
import com.njcn.csdevice.mapper.AppProjectMapper;
import com.njcn.csdevice.mapper.AppTopologyDiagramMapper;
import com.njcn.csdevice.pojo.param.AppTopologyDiagramAddParm; import com.njcn.csdevice.pojo.param.AppTopologyDiagramAddParm;
import com.njcn.csdevice.pojo.param.AppTopologyDiagramAuditParm; import com.njcn.csdevice.pojo.param.AppTopologyDiagramAuditParm;
import com.njcn.csdevice.pojo.param.AppTopologyDiagramQueryPageParm; import com.njcn.csdevice.pojo.param.AppTopologyDiagramQueryPageParm;
import com.njcn.csdevice.pojo.param.AppTopologyDiagramQueryParm; import com.njcn.csdevice.pojo.param.AppTopologyDiagramQueryParm;
import com.njcn.csdevice.pojo.po.*; import com.njcn.csdevice.pojo.po.AppLineTopologyDiagramPO;
import com.njcn.csdevice.pojo.po.AppProjectPO;
import com.njcn.csdevice.pojo.po.AppTopologyDiagramPO;
import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO; import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO;
import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO; import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO;
import com.njcn.csdevice.service.AppLineTopologyDiagramService;
import com.njcn.csdevice.service.AppTopologyDiagramService; import com.njcn.csdevice.service.AppTopologyDiagramService;
import com.njcn.csdevice.service.CsLineTopologyTemplateService; import com.njcn.csdevice.service.CsLineTopologyTemplateService;
import com.njcn.oss.constant.OssPath; import com.njcn.oss.constant.OssPath;
@@ -178,4 +181,11 @@ public class AppTopologyDiagramServiceImpl extends ServiceImpl<AppTopologyDiagra
} }
return true; return true;
} }
@Override
public AppTopologyDiagramPO getByProjectId(String projectId) {
LambdaQueryWrapper<AppTopologyDiagramPO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AppTopologyDiagramPO::getProjectId,projectId).eq(AppTopologyDiagramPO::getStatus,"1");
return this.getOne(queryWrapper);
}
} }

View File

@@ -0,0 +1,102 @@
package com.njcn.csdevice.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.csdevice.mapper.CsLinePOMapper;
import com.njcn.csdevice.mapper.PqsDeviceUnitMapper;
import com.njcn.csdevice.pojo.po.CsDeviceUserPO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.service.CsCommTerminalService;
import com.njcn.csdevice.service.CsDeviceUserPOService;
import com.njcn.csdevice.service.CsEquipmentDeliveryService;
import com.njcn.device.biz.pojo.po.PqsDeviceUnit;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.constant.UserType;
import com.njcn.user.pojo.vo.UserVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Author: cdf
* @CreateTime: 2025-12-23
* @Description:
*/
@Service
@RequiredArgsConstructor
public class CsCommTerminalServiceImpl implements CsCommTerminalService {
private final PqsDeviceUnitMapper pqsDeviceUnitMapper;
private final CsDeviceUserPOService csDeviceUserPOService;
private final CsLinePOMapper csLinePOMapper;
private final UserFeignClient userFeignClient;
private final CsEquipmentDeliveryService csEquipmentDeliveryService;
@Override
public List<String> getLineIdsByUser(String userId) {
List<String> result = new ArrayList<>();
List<String> devIds = commGetDevIds(userId);
if (CollUtil.isEmpty(devIds)) {
return result;
}
LambdaQueryWrapper<CsLinePO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(CsLinePO::getLineId).in(CsLinePO::getDeviceId, devIds)
.eq(CsLinePO::getStatus, DataStateEnum.ENABLE.getCode());
List<CsLinePO> poList = csLinePOMapper.selectList(lambdaQueryWrapper);
if (CollUtil.isNotEmpty(poList)) {
result = poList.stream().map(CsLinePO::getLineId).distinct().collect(Collectors.toList());
}
return result;
}
@Override
public List<String> getPqUserIdsByUser(String userId) {
List<String> result = new ArrayList<>();
List<String> devIds = commGetDevIds(userId);
if (CollUtil.isEmpty(devIds)) {
return result;
}
LambdaQueryWrapper<CsLinePO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(CsLinePO::getLineId, CsLinePO::getMonitorUser).in(CsLinePO::getDeviceId, devIds)
.eq(CsLinePO::getStatus, DataStateEnum.ENABLE.getCode());
List<CsLinePO> poList =csLinePOMapper.selectList(lambdaQueryWrapper);
if (CollUtil.isNotEmpty(poList)) {
result = poList.stream().map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList());
}
return result;
}
@Override
public PqsDeviceUnit lineUnitDetail(String lineId) {
PqsDeviceUnit pqsDeviceUnit = pqsDeviceUnitMapper.selectById(lineId);
if(Objects.isNull(pqsDeviceUnit)){
pqsDeviceUnit = new PqsDeviceUnit();
}
return pqsDeviceUnit;
}
@Override
public List<String> commGetDevIds(String userId) {
UserVO userVO = userFeignClient.getUserById(userId).getData();
List<String> devIds;
if (userVO.getType().equals(UserType.SUPER_ADMINISTRATOR) || userVO.getType().equals(UserType.ADMINISTRATOR)) {
devIds = csEquipmentDeliveryService.getAll().stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
} else {
List<CsDeviceUserPO> devList = csDeviceUserPOService.lambdaQuery().select(CsDeviceUserPO::getDeviceId)
.and(w -> w.eq(CsDeviceUserPO::getPrimaryUserId, userId).or().eq(CsDeviceUserPO::getSubUserId, userId))
.eq(CsDeviceUserPO::getStatus, DataStateEnum.ENABLE.getCode()).list();
devIds = devList.stream().map(CsDeviceUserPO::getDeviceId).distinct().collect(Collectors.toList());
}
return devIds;
}
}

View File

@@ -22,7 +22,7 @@ import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* *
* Description: * Description:
* Date: 2023/9/27 10:29【需求编号】 * Date: 2023/9/27 10:29【需求编号】
* *
@@ -50,12 +50,12 @@ public class CsDevCapacityPOServiceImpl extends ServiceImpl<CsDevCapacityPOMappe
public Double getDevCapacity(String id) { public Double getDevCapacity(String id) {
List<CsLinePO> csLinePOS = csLinePOService.queryByDevId(id); List<CsLinePO> csLinePOS = csLinePOService.queryByDevId(id);
String areaId = dicDataFeignClient.getDicDataByCode(DicDataEnum.OUTPUT_SIDE.getCode()).getData().getId(); //String areaId = dicDataFeignClient.getDicDataByCode(DicDataEnum.OUTPUT_SIDE.getCode()).getData().getId();
Optional.ofNullable(csLinePOS).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR)); //Optional.ofNullable(csLinePOS).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<CsLinePO> collect1 = csLinePOS.stream().filter(temp -> Objects.equals(areaId, temp.getPosition())).collect(Collectors.toList()); //List<CsLinePO> collect1 = csLinePOS.stream().filter(temp -> Objects.equals(areaId, temp.getPosition())).collect(Collectors.toList());
/*治理侧监测点*/ /*治理侧监测点*/
CsLinePO csLinePO = collect1.get(0); CsLinePO csLinePO = csLinePOS.get(0);
CsDevCapacityPO one = this.lambdaQuery().eq(CsDevCapacityPO::getLineId, csLinePO.getLineId()).eq(CsDevCapacityPO::getCldid, 0).one(); CsDevCapacityPO one = this.lambdaQuery().eq(CsDevCapacityPO::getLineId, csLinePO.getLineId()).eq(CsDevCapacityPO::getCldid, 0).one();
// Optional.ofNullable(one).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.DATA_MISSING)); // Optional.ofNullable(one).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.DATA_MISSING));
if(Objects.isNull(one)){ if(Objects.isNull(one)){

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -259,6 +260,43 @@ public class CsEngineeringServiceImpl extends ServiceImpl<CsEngineeringMapper, C
return result; return result;
} }
@Override
public CsEngineeringPO add(CsEngineeringAddParm csEngineeringAddParm) {
List<CsEngineeringPO> list = this.lambdaQuery().eq(CsEngineeringPO::getName, csEngineeringAddParm.getName()).eq(CsEngineeringPO::getStatus, "1").list();
if(!list.isEmpty()){
throw new BusinessException("新增失败,工程名重复");
}
//新增工程
CsEngineeringPO po = new CsEngineeringPO ();
BeanUtils.copyProperties (csEngineeringAddParm, po);
po.setStatus ("1");
this.save(po);
return po;
}
@Override
public CsEngineeringPO updateData(CsEngineeringAuditParm csEngineeringAuditParm) {
List<CsEngineeringPO> list = this.lambdaQuery()
.eq(CsEngineeringPO::getName, csEngineeringAuditParm.getName())
.eq(CsEngineeringPO::getStatus, "1")
.ne(CsEngineeringPO::getId, csEngineeringAuditParm.getId())
.list();
if(!list.isEmpty()){
throw new BusinessException("修改失败,工程名重复");
}
CsEngineeringPO po = new CsEngineeringPO();
BeanUtils.copyProperties(csEngineeringAuditParm, po);
this.updateById(po);
return po;
}
@Override
public boolean deleteData(String id) {
LambdaUpdateWrapper<CsEngineeringPO> queryWrapper = new LambdaUpdateWrapper<>();
queryWrapper.eq(CsEngineeringPO::getId,id).set(CsEngineeringPO::getStatus,"0");
return this.update(queryWrapper);
}
public String getAreaById(String id){ public String getAreaById(String id){

View File

@@ -7,6 +7,7 @@ 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.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.text.StrPool; import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
@@ -29,6 +30,7 @@ import com.njcn.csdevice.mapper.CsEquipmentDeliveryMapper;
import com.njcn.csdevice.mapper.CsLedgerMapper; import com.njcn.csdevice.mapper.CsLedgerMapper;
import com.njcn.csdevice.mapper.CsSoftInfoMapper; import com.njcn.csdevice.mapper.CsSoftInfoMapper;
import com.njcn.csdevice.mapper.CsTerminalLogsMapper; import com.njcn.csdevice.mapper.CsTerminalLogsMapper;
import com.njcn.csdevice.pojo.dto.PqsCommunicateDto;
import com.njcn.csdevice.pojo.param.*; import com.njcn.csdevice.pojo.param.*;
import com.njcn.csdevice.pojo.po.*; import com.njcn.csdevice.pojo.po.*;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO; import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
@@ -67,6 +69,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -103,7 +106,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
private final CsDevModelService csDevModelService; private final CsDevModelService csDevModelService;
private final CsLedgerMapper csLedgerMapper; private final CsLedgerMapper csLedgerMapper;
private final CsTerminalLogsMapper csTerminalLogsMapper; private final CsTerminalLogsMapper csTerminalLogsMapper;
private final ICsCommunicateService csCommunicateService;
@Override @Override
public void refreshDeviceDataCache() { public void refreshDeviceDataCache() {
@@ -117,8 +120,12 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public CsEquipmentDeliveryPO save(CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm) { public CsEquipmentDeliveryPO save(CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm) {
boolean result; boolean result;
CsEquipmentDeliveryPO one = this.lambdaQuery().eq(CsEquipmentDeliveryPO::getName, csEquipmentDeliveryAddParm.getName()).ne(CsEquipmentDeliveryPO::getRunStatus, 0).one(); List<CsEquipmentDeliveryPO> one = this.lambdaQuery()
if(Objects.nonNull (one)){ .eq(CsEquipmentDeliveryPO::getName, csEquipmentDeliveryAddParm.getName())
.ne(CsEquipmentDeliveryPO::getRunStatus, 0)
.eq(CsEquipmentDeliveryPO::getDevAccessMethod, "MQTT")
.list();
if(CollUtil.isNotEmpty(one)){
throw new BusinessException ("设备名称不能重复"); throw new BusinessException ("设备名称不能重复");
} }
StringUtil.containsSpecialCharacters(csEquipmentDeliveryAddParm.getNdid()); StringUtil.containsSpecialCharacters(csEquipmentDeliveryAddParm.getNdid());
@@ -259,12 +266,14 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
CsEquipmentDeliveryPO csEquipmentDeliveryPo = new CsEquipmentDeliveryPO(); CsEquipmentDeliveryPO csEquipmentDeliveryPo = new CsEquipmentDeliveryPO();
BeanUtils.copyProperties (csEquipmentDeliveryAuditParm, csEquipmentDeliveryPo); BeanUtils.copyProperties (csEquipmentDeliveryAuditParm, csEquipmentDeliveryPo);
result = this.updateById(csEquipmentDeliveryPo); result = this.updateById(csEquipmentDeliveryPo);
//修改台账树中的设备名称 //如果是已经接入的设备需要修改台账树中的设备名称
CsLedger csLedger = csLedgerService.findDataById(csEquipmentDeliveryAuditParm.getId()); CsLedger csLedger = csLedgerService.findDataById(csEquipmentDeliveryAuditParm.getId());
CsLedgerParam.Update csLedgerParam = new CsLedgerParam.Update(); if (ObjectUtil.isNotNull(csLedger)) {
BeanUtils.copyProperties (csLedger, csLedgerParam); CsLedgerParam.Update csLedgerParam = new CsLedgerParam.Update();
csLedgerParam.setName(csEquipmentDeliveryAuditParm.getName()); BeanUtils.copyProperties (csLedger, csLedgerParam);
csLedgerService.updateLedgerTree(csLedgerParam); csLedgerParam.setName(csEquipmentDeliveryAuditParm.getName());
csLedgerService.updateLedgerTree(csLedgerParam);
}
if (result) { if (result) {
refreshDeviceDataCache(); refreshDeviceDataCache();
if (!Objects.equals(po.getUsageStatus(),csEquipmentDeliveryAuditParm.getUsageStatus())) { if (!Objects.equals(po.getUsageStatus(),csEquipmentDeliveryAuditParm.getUsageStatus())) {
@@ -431,12 +440,14 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
addDataSet(dataSetList, item, "实时数据", "realtimedata"); addDataSet(dataSetList, item, "实时数据", "realtimedata");
addDataSet(dataSetList, item, "暂态事件", "event"); addDataSet(dataSetList, item, "暂态事件", "event");
} }
addDataSet(dataSetList, item, "运行趋势", "devRunTrend");
deviceManagerVo.setDataLevel(item.getDataLevel()); deviceManagerVo.setDataLevel(item.getDataLevel());
} }
deviceManagerVo.setDataSetList(dataSetList); deviceManagerVo.setDataSetList(dataSetList);
List<CsLinePO> csLinePOS = csLinePOService.findByNdid(csEquipmentDeliveryPo.getNdid()); List<CsLinePO> csLinePOS = csLinePOService.findByNdid(csEquipmentDeliveryPo.getNdid());
if(!csLinePOS.isEmpty() && csLinePOS.get(0)!=null){ if(!csLinePOS.isEmpty()){
deviceManagerVo.setTime(csLinePOService.findByNdid(csEquipmentDeliveryPo.getNdid()).get(0).getCreateTime()); Optional<CsLinePO> earliest = csLinePOS.stream().min(Comparator.comparing(CsLinePO::getCreateTime));
deviceManagerVo.setTime(earliest.map(CsLinePO::getCreateTime).orElse(null));
} }
} }
} }
@@ -932,17 +943,17 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
List<CsEquipmentDeliveryPO> devList = this.list(lambdaQueryWrapper); List<CsEquipmentDeliveryPO> devList = this.list(lambdaQueryWrapper);
if (CollectionUtil.isNotEmpty(devList)) { if (CollectionUtil.isNotEmpty(devList)) {
//修改设备运行状态 //修改设备运行状态
devList.forEach(item->{item.setRunStatus(1);}); devList.forEach(item->{
item.setRunStatus(1);
insertPqsCommunicateRecord(LocalDateTime.now().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)), item.getNdid(), 0);
});
this.updateBatchById(devList); this.updateBatchById(devList);
//修改监测点运行状态
List<String> devIdList = devList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
List<CsLinePO> lineList = csLinePOService.getLinesByDevList(devIdList);
csLinePOService.updateCldLineStatus(lineList,2);
} }
} }
@Override @Override
public void flipCldDevStatus(String devId, Integer status) { @Transactional(rollbackFor = Exception.class)
public void flipCldDevStatus(String time, String devId, Integer status) {
LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getId,devId) lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getId,devId)
.eq(CsEquipmentDeliveryPO::getUsageStatus,1) .eq(CsEquipmentDeliveryPO::getUsageStatus,1)
@@ -951,12 +962,22 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
if (ObjectUtil.isNotNull(po)) { if (ObjectUtil.isNotNull(po)) {
po.setRunStatus(status); po.setRunStatus(status);
this.updateById(po); this.updateById(po);
//修改监测点运行状态 //修改设备的运行状态则录入influxdb表数据
List<CsLinePO> lineList = csLinePOService.getLinesByDevList(Collections.singletonList(po.getId())); int communicateType = status == 2 ? 1 : 0;
csLinePOService.updateCldLineStatus(lineList,status==1?2:0); insertPqsCommunicateRecord(time, po.getNdid(), communicateType);
} }
} }
// 时序数据库写入数据
private void insertPqsCommunicateRecord(String time, String devId, Integer status) {
PqsCommunicateDto pqsCommunicateDto = new PqsCommunicateDto();
pqsCommunicateDto.setTime(time);
pqsCommunicateDto.setDevId(devId);
pqsCommunicateDto.setType(status);
pqsCommunicateDto.setDescription(status == 0 ? "通讯中断" : "通讯正常");
csCommunicateService.insertion(pqsCommunicateDto);
}
@Override @Override
public List<CsEquipmentDeliveryPO> getDevListByProjectId(String projectId) { public List<CsEquipmentDeliveryPO> getDevListByProjectId(String projectId) {
QueryWrapper<CsLedger> csLedgerQueryWrapper = new QueryWrapper(); QueryWrapper<CsLedger> csLedgerQueryWrapper = new QueryWrapper();
@@ -990,17 +1011,33 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
public List<CsEquipmentDeliveryPO> getRunPortableDev(String userId) { public List<CsEquipmentDeliveryPO> getRunPortableDev(String userId) {
List<CsEquipmentDeliveryPO> result = new ArrayList<>(); List<CsEquipmentDeliveryPO> result = new ArrayList<>();
DictTreeVO vo = dictTreeFeignClient.queryByCode(DicDataEnum.PORTABLE.getCode()).getData(); DictTreeVO vo = dictTreeFeignClient.queryByCode(DicDataEnum.PORTABLE.getCode()).getData();
if (ObjectUtil.isNotNull(vo)) { if (ObjectUtil.isNull(vo)) {
LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>(); throw new BusinessException("便携式设备类型字典缺失");
lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getDevType,vo.getId()) }
.ne(CsEquipmentDeliveryPO::getRunStatus,0) LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
.eq(CsEquipmentDeliveryPO::getUsageStatus,1); lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getDevType,vo.getId())
//获取用户已经绑定的便携式设备 .ne(CsEquipmentDeliveryPO::getRunStatus,0)
List<String> devList = csDeviceUserPOService.findDevByUserId(userId); .eq(CsEquipmentDeliveryPO::getUsageStatus,1);
if (CollectionUtil.isNotEmpty(devList)) { //获取用户已经绑定的便携式设备
lambdaQueryWrapper.notIn(CsEquipmentDeliveryPO::getId,devList); List<String> devList = csDeviceUserPOService.findDevByUserId(userId);
if (CollectionUtil.isNotEmpty(devList)) {
lambdaQueryWrapper.notIn(CsEquipmentDeliveryPO::getId,devList);
}
result = this.list(lambdaQueryWrapper);
if (CollectionUtil.isNotEmpty(result)) {
//获取已经接入过系统的设备,未接入的不给分配
LambdaQueryWrapper<CsLedger> queryWrapper = new LambdaQueryWrapper<>();
List<String> ids = result.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
queryWrapper.in(CsLedger::getId,ids);
List<CsLedger> list = csLedgerService.list(queryWrapper);
if (CollectionUtil.isNotEmpty(list)) {
Set<String> idSet = list.stream()
.map(CsLedger::getId)
.collect(Collectors.toSet());
return result.stream()
.filter(data -> idSet.contains(data.getId()))
.collect(Collectors.toList());
} }
result = this.list(lambdaQueryWrapper);
} }
return result; return result;
} }

View File

@@ -7,6 +7,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONConfig;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -19,7 +20,10 @@ import com.njcn.csdevice.api.EquipmentFeignClient;
import com.njcn.csdevice.constant.DataParam; import com.njcn.csdevice.constant.DataParam;
import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.csdevice.enums.AlgorithmResponseEnum;
import com.njcn.csdevice.enums.LineBaseEnum; import com.njcn.csdevice.enums.LineBaseEnum;
import com.njcn.csdevice.mapper.*; import com.njcn.csdevice.mapper.CsDataArrayMapper;
import com.njcn.csdevice.mapper.CsDataSetMapper;
import com.njcn.csdevice.mapper.CsGroArrMapper;
import com.njcn.csdevice.mapper.CsGroupMapper;
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO; import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
import com.njcn.csdevice.pojo.param.EnergyBaseParam; import com.njcn.csdevice.pojo.param.EnergyBaseParam;
import com.njcn.csdevice.pojo.po.*; import com.njcn.csdevice.pojo.po.*;
@@ -37,6 +41,8 @@ import com.njcn.csharmonic.constant.HarmonicConstant;
import com.njcn.csharmonic.param.*; import com.njcn.csharmonic.param.*;
import com.njcn.csharmonic.pojo.vo.ThdDataTdVO; import com.njcn.csharmonic.pojo.vo.ThdDataTdVO;
import com.njcn.csharmonic.pojo.vo.ThdDataVO; import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import com.njcn.device.biz.mapper.OverLimitWlMapper;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.influx.pojo.bo.CommonQueryParam; import com.njcn.influx.pojo.bo.CommonQueryParam;
import com.njcn.influx.pojo.dto.EventDataSetDTO; import com.njcn.influx.pojo.dto.EventDataSetDTO;
import com.njcn.influx.pojo.dto.StatisticalDataDTO; import com.njcn.influx.pojo.dto.StatisticalDataDTO;
@@ -59,6 +65,11 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
@@ -90,12 +101,14 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
private final EvtDataService evtDataService; private final EvtDataService evtDataService;
private final DecimalFormat df = new DecimalFormat("#0.00"); private final DecimalFormat df = new DecimalFormat("#0.00");
private final EleEvtFeignClient eleEvtFeignClient; private final EleEvtFeignClient eleEvtFeignClient;
private final OverlimitMapper overlimitMapper; private final OverLimitWlMapper overLimitWlMapper;
private final CsDataSetMapper csDataSetMapper; private final CsDataSetMapper csDataSetMapper;
private final EventFeignClient eventFeignClient; private final EventFeignClient eventFeignClient;
private final InfluxDbParamUtil influxDbParamUtil; private final InfluxDbParamUtil influxDbParamUtil;
private final DictTreeFeignClient dictTreeFeignClient; private final DictTreeFeignClient dictTreeFeignClient;
private final DicDataFeignClient dicDataFeignClient; private final DicDataFeignClient dicDataFeignClient;
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final ZoneId DEFAULT_ZONE = ZoneId.systemDefault();
private final String GRID_SIDE_DICT_CODE = "Grid_Side"; private final String GRID_SIDE_DICT_CODE = "Grid_Side";
private final String LOAD_SIDE_DICT_CODE = "Load_Side"; private final String LOAD_SIDE_DICT_CODE = "Load_Side";
@@ -296,9 +309,9 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
//传1 则是趋势数据tab页面 //传1 则是趋势数据tab页面
if("1".equals(type)){ if("1".equals(type)){
formatQueryParamList(commonStatisticalQueryParam); formatQueryParamList(commonStatisticalQueryParam);
List<ThdDataVO> result = new ArrayList(); List<ThdDataVO> result = new ArrayList<>();
List<CsEquipmentDeliveryDTO> data1 = equipmentFeignClient.queryDeviceById(Stream.of(commonStatisticalQueryParam.getDevId()).collect(Collectors.toList())).getData(); List<CsEquipmentDeliveryDTO> data1 = equipmentFeignClient.queryDeviceById(Stream.of(commonStatisticalQueryParam.getDevId()).collect(Collectors.toList())).getData();
List<CsLinePO> finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(commonStatisticalQueryParam.getLineId())).getData(); List<CsLinePO> finalCsLinePOList = csLineFeignClient.queryLineById(Collections.singletonList(commonStatisticalQueryParam.getLineId())).getData();
CsDataSet csDataSet = csDataSetMapper.selectOne(new LambdaQueryWrapper<CsDataSet>().eq(CsDataSet::getId,finalCsLinePOList.get(0).getDataSetId())); CsDataSet csDataSet = csDataSetMapper.selectOne(new LambdaQueryWrapper<CsDataSet>().eq(CsDataSet::getId,finalCsLinePOList.get(0).getDataSetId()));
if(Objects.isNull(csDataSet) || StrUtil.isBlank(csDataSet.getDataLevel())){ if(Objects.isNull(csDataSet) || StrUtil.isBlank(csDataSet.getDataLevel())){
throw new BusinessException("当前测点数据集主要信息缺失,请联系管理员排查(测点表里面数据集id缺失)"); throw new BusinessException("当前测点数据集主要信息缺失,请联系管理员排查(测点表里面数据集id缺失)");
@@ -438,6 +451,21 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
vo.setAnotherName(epdPqd.getShowName()); vo.setAnotherName(epdPqd.getShowName());
return vo; return vo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
//长时闪变
if (Objects.equals(epdPqd.getOtherName(), "plt")) {
List<Instant> timeInstants = getTimeInstants(commonStatisticalQueryParam.getStartTime(), commonStatisticalQueryParam.getEndTime(), 2, ChronoUnit.HOURS, DEFAULT_ZONE);
collect1 = collect1.stream()
.filter(vo -> timeInstants.contains(vo.getTime()))
.collect(Collectors.toList());
}
//短时闪变 || 电压波动
else if (Objects.equals(epdPqd.getOtherName(), "pst") || Objects.equals(epdPqd.getOtherName(), "fluc")) {
List<Instant> timeInstants = getTimeInstants(commonStatisticalQueryParam.getStartTime(), commonStatisticalQueryParam.getEndTime(), 10, ChronoUnit.MINUTES, DEFAULT_ZONE);
collect1 = collect1.stream()
.filter(vo -> timeInstants.contains(vo.getTime()))
.collect(Collectors.toList());
}
result.addAll(collect1); result.addAll(collect1);
}); });
} }
@@ -555,6 +583,20 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
return null; return null;
} }
public static List<Instant> getTimeInstants(String startDateStr, String endDateStr, long interval, ChronoUnit unit, ZoneId zone) {
List<Instant> instants = new ArrayList<>();
LocalDate startDate = LocalDate.parse(startDateStr, DATE_FORMATTER);
LocalDate endDate = LocalDate.parse(endDateStr, DATE_FORMATTER);
// 转换为指定时区的 ZonedDateTime
ZonedDateTime current = startDate.atStartOfDay(zone);
ZonedDateTime endDateTime = endDate.atTime(23, 59, 59).atZone(zone);
while (!current.isAfter(endDateTime)) {
instants.add(current.toInstant());
current = current.plus(interval, unit);
}
return instants;
}
private void formatQueryParamList(CommonStatisticalQueryParam commonStatisticalQueryParam){ private void formatQueryParamList(CommonStatisticalQueryParam commonStatisticalQueryParam){
List<CommonStatisticalQueryParam> list = new ArrayList<>(); List<CommonStatisticalQueryParam> list = new ArrayList<>();
if(commonStatisticalQueryParam.getList() != null && commonStatisticalQueryParam.getList().size() > 0){ if(commonStatisticalQueryParam.getList() != null && commonStatisticalQueryParam.getList().size() > 0){
@@ -579,7 +621,7 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
@Override @Override
public List<ThdDataTdVO> getDeviceTrendData(String devId, String lineId,String groupId) { public List<ThdDataTdVO> getDeviceTrendData(String devId, String lineId,String groupId) {
List<ThdDataTdVO> data = new ArrayList(); List<ThdDataTdVO> data = new ArrayList();
List<Overlimit> overlimits = overlimitMapper.selectBatchIds(Arrays.asList(lineId)); List<Overlimit> overlimits = overLimitWlMapper.selectBatchIds(Arrays.asList(lineId));
List<CsLinePO> finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(lineId)).getData(); List<CsLinePO> finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(lineId)).getData();
List<CsEquipmentDeliveryDTO> data1 = equipmentFeignClient.queryDeviceById(Stream.of(devId).collect(Collectors.toList())).getData(); List<CsEquipmentDeliveryDTO> data1 = equipmentFeignClient.queryDeviceById(Stream.of(devId).collect(Collectors.toList())).getData();
//便携式设备-稳态指标-实时数据-指标 //便携式设备-稳态指标-实时数据-指标
@@ -793,7 +835,7 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
List<ThdDataVO> result = new ArrayList<>(); List<ThdDataVO> result = new ArrayList<>();
CsLinePO finalCsLinePO = csLineFeignClient.getById(trendDataQueryParam.getLineId()).getData(); CsLinePO finalCsLinePO = csLineFeignClient.getById(trendDataQueryParam.getLineId()).getData();
CsDataSet csDataSet = csDataSetMapper.selectOne(new LambdaQueryWrapper<CsDataSet>().eq(CsDataSet::getId,finalCsLinePO.getDataSetId())); CsDataSet csDataSet = csDataSetMapper.selectOne(new LambdaQueryWrapper<CsDataSet>().eq(CsDataSet::getId,finalCsLinePO.getDataSetId()));
if(Objects.isNull(csDataSet) || StrUtil.isBlank(csDataSet.getDataLevel())){ if(Objects.isNull(csDataSet) || StrUtil.isBlank(csDataSet.getDataLevel())) {
throw new BusinessException("当前测点数据集主要信息缺失,请联系管理员排查(测点表里面数据集id缺失)"); throw new BusinessException("当前测点数据集主要信息缺失,请联系管理员排查(测点表里面数据集id缺失)");
} }
Double ct = finalCsLinePO.getCtRatio(); Double ct = finalCsLinePO.getCtRatio();
@@ -928,6 +970,21 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
vo.setAnotherName(epdPqd.getShowName()); vo.setAnotherName(epdPqd.getShowName());
return vo; return vo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
//长时闪变
if (Objects.equals(epdPqd.getOtherName(), "plt")) {
List<Instant> timeInstants = getTimeInstants(trendDataQueryParam.getSearchBeginTime(), trendDataQueryParam.getSearchEndTime(), 2, ChronoUnit.HOURS, DEFAULT_ZONE);
collect1 = collect1.stream()
.filter(vo -> timeInstants.contains(vo.getTime()))
.collect(Collectors.toList());
}
//短时闪变 || 电压波动
else if (Objects.equals(epdPqd.getOtherName(), "pst") || Objects.equals(epdPqd.getOtherName(), "fluc")) {
List<Instant> timeInstants = getTimeInstants(trendDataQueryParam.getSearchBeginTime(), trendDataQueryParam.getSearchEndTime(), 10, ChronoUnit.MINUTES, DEFAULT_ZONE);
collect1 = collect1.stream()
.filter(vo -> timeInstants.contains(vo.getTime()))
.collect(Collectors.toList());
}
result.addAll(collect1); result.addAll(collect1);
} }
} }
@@ -941,13 +998,16 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
CsLinePO finalCsLinePO = csLineFeignClient.getById(fittingDataQueryParam.getLineId()).getData(); CsLinePO finalCsLinePO = csLineFeignClient.getById(fittingDataQueryParam.getLineId()).getData();
CsDataSet csDataSet = csDataSetMapper.selectOne(new LambdaQueryWrapper<CsDataSet>().eq(CsDataSet::getId,finalCsLinePO.getDataSetId())); CsDataSet csDataSet = csDataSetMapper.selectOne(new LambdaQueryWrapper<CsDataSet>().eq(CsDataSet::getId,finalCsLinePO.getDataSetId()));
if(Objects.isNull(csDataSet) || StrUtil.isBlank(csDataSet.getDataLevel())){ if(Objects.isNull(csDataSet) || StrUtil.isBlank(csDataSet.getDataLevel())){
throw new BusinessException("当前测点数据集主要信息缺失,请联系管理员排查(测点表里面数据集id缺失)"); throw new BusinessException("当前测点数据集主要信息缺失请联系管理员排查(测点表里面数据集id缺失)");
} }
Double ct = finalCsLinePO.getCtRatio(); Double ct = finalCsLinePO.getCtRatio();
Double pt = finalCsLinePO.getPtRatio(); Double pt = finalCsLinePO.getPtRatio();
// String position = finalCsLinePO.getPosition(); // String position = finalCsLinePO.getPosition();
Overlimit overlimit = overlimitMapper.selectById(finalCsLinePO.getLineId()); Overlimit overlimit = overLimitWlMapper.selectById(finalCsLinePO.getLineId());
JSONObject entries = JSONUtil.parseObj(overlimit); if (Objects.isNull(overlimit)) {
throw new BusinessException("当前测点限值信息缺失,请联系管理员排查");
}
JSONObject entries = JSONUtil.parseObj(overlimit, new JSONConfig().setIgnoreNullValue(false));
if(CollectionUtil.isNotEmpty(fittingDataQueryParam.getList())) { if(CollectionUtil.isNotEmpty(fittingDataQueryParam.getList())) {
for (FittingDataQueryParam param : fittingDataQueryParam.getList()) { for (FittingDataQueryParam param : fittingDataQueryParam.getList()) {
String dictCode = dictTreeFeignClient.queryById(param.getStatisticalId()).getData().getCode(); String dictCode = dictTreeFeignClient.queryById(param.getStatisticalId()).getData().getCode();
@@ -1122,7 +1182,7 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
} else { } else {
result.addAll(dataList); result.addAll(dataList);
} }
} }
} }
return result; return result;
@@ -1131,6 +1191,9 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
@Override @Override
public Map<String, List<ThdDataVO>> sensitiveUserTrendData(SensitiveUserTrendDataQueryParam param) { public Map<String, List<ThdDataVO>> sensitiveUserTrendData(SensitiveUserTrendDataQueryParam param) {
Map<String, List<ThdDataVO>> result = new HashMap<>(); Map<String, List<ThdDataVO>> result = new HashMap<>();
if (Objects.isNull(param.getSensitiveUserId())) {
return result;
}
result.put("before", new ArrayList<>()); result.put("before", new ArrayList<>());
result.put("after", new ArrayList<>()); result.put("after", new ArrayList<>());
String sensitiveUserId = param.getSensitiveUserId(); String sensitiveUserId = param.getSensitiveUserId();
@@ -1150,7 +1213,9 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
List<SensitiveUserTrendDataQueryParam> paramList = param.getList(); List<SensitiveUserTrendDataQueryParam> paramList = param.getList();
List<TrendDataQueryParam> indexList = paramList.stream().map(item -> { List<TrendDataQueryParam> indexList = paramList.stream().map(item -> {
TrendDataQueryParam queryParam = new TrendDataQueryParam(); TrendDataQueryParam queryParam = new TrendDataQueryParam();
queryParam.setFrequency(item.getFrequency()); if (ObjectUtil.isNotNull(param.getHarmonicCount())) {
queryParam.setFrequency(String.valueOf(param.getHarmonicCount()));
}
queryParam.setStatisticalId(item.getStatisticalId()); queryParam.setStatisticalId(item.getStatisticalId());
return queryParam; return queryParam;
}).collect(Collectors.toList()); }).collect(Collectors.toList());

View File

@@ -4,12 +4,14 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.csdevice.constant.DataParam; import com.njcn.csdevice.constant.DataParam;
import com.njcn.csdevice.controller.project.EngineeringController;
import com.njcn.csdevice.enums.LineBaseEnum; import com.njcn.csdevice.enums.LineBaseEnum;
import com.njcn.csdevice.mapper.*; import com.njcn.csdevice.mapper.*;
import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.pojo.dto.DevDetailDTO;
@@ -18,13 +20,18 @@ import com.njcn.csdevice.pojo.param.CsLedgerParam;
import com.njcn.csdevice.pojo.po.*; import com.njcn.csdevice.pojo.po.*;
import com.njcn.csdevice.pojo.vo.CsLedgerVO; import com.njcn.csdevice.pojo.vo.CsLedgerVO;
import com.njcn.csdevice.service.*; import com.njcn.csdevice.service.*;
import com.njcn.csharmonic.api.PqSensitiveUserFeignClient;
import com.njcn.csharmonic.pojo.po.PqSensitiveUser;
import com.njcn.redis.utils.RedisUtil; import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.api.AreaFeignClient; import com.njcn.system.api.AreaFeignClient;
import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.api.DictTreeFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.po.Area; import com.njcn.system.pojo.po.Area;
import com.njcn.system.pojo.vo.DictTreeVO; import com.njcn.system.pojo.vo.DictTreeVO;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.enums.AppRoleEnum; import com.njcn.user.enums.AppRoleEnum;
import com.njcn.user.pojo.constant.UserType;
import com.njcn.user.pojo.vo.UserVO;
import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.RequestUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@@ -57,8 +64,10 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper; private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper;
private final ICsDataSetService csDataSetService; private final ICsDataSetService csDataSetService;
private final DictTreeFeignClient dictTreeFeignClient; private final DictTreeFeignClient dictTreeFeignClient;
private final EngineeringController engineeringController;
private final CsDeviceUserPOMapper csDeviceUserPOMapper; private final CsDeviceUserPOMapper csDeviceUserPOMapper;
private final PqSensitiveUserFeignClient pqSensitiveUserFeignClient;
private final UserFeignClient userFeignClient;
@Override @Override
public List<CsLedgerVO> getLedgerTree() { public List<CsLedgerVO> getLedgerTree() {
@@ -104,7 +113,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
.forEach(zhiLianDevice::add) .forEach(zhiLianDevice::add)
); );
} }
engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList()); engineeringList = allList.stream().filter(item -> roleengineer.contains(item.getId())).collect(Collectors.toList());
List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
Map<String, CsEquipmentDeliveryPO> poMap = allList.stream() Map<String, CsEquipmentDeliveryPO> poMap = allList.stream()
@@ -148,14 +157,14 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
.peek( .peek(
item -> { item -> {
item.setType("line"); item.setType("line");
String index = item.getId().substring(item.getId().length()-1); String index = item.getId().substring(item.getId().length() - 1);
if (Objects.equals(index,"0")) { if (Objects.equals(index, "0")) {
item.setLineType(0); item.setLineType(0);
} else { } else {
item.setLineType(1); item.setLineType(1);
} }
LambdaQueryWrapper<CsLinePO> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CsLinePO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CsLinePO::getLineId,item.getId()).eq(CsLinePO::getStatus,1); queryWrapper.eq(CsLinePO::getLineId, item.getId()).eq(CsLinePO::getStatus, 1);
CsLinePO po = csLinePOService.getOne(queryWrapper); CsLinePO po = csLinePOService.getOne(queryWrapper);
item.setConType(po.getConType()); item.setConType(po.getConType());
} }
@@ -201,16 +210,16 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
List<CsLedgerVO> ledger; List<CsLedgerVO> ledger;
String role = RequestUtil.getUserRole(); String role = RequestUtil.getUserRole();
List<String> roles = JSONArray.parseArray(role, String.class); List<String> roles = JSONArray.parseArray(role, String.class);
if(roles.contains(AppRoleEnum.ROOT.getCode()) || roles.contains(AppRoleEnum.OPERATION_MANAGER.getCode())){ if(roles.contains(AppRoleEnum.ROOT.getCode()) || roles.contains(AppRoleEnum.OPERATION_MANAGER.getCode()) || roles.contains(AppRoleEnum.REGULAR_USER.getCode())){
ledger = allList.stream() ledger = allList.stream()
.filter(item -> Objects.equals(item.getLevel(), 2) && Objects.equals(item.getPid(), "0")) .filter(item -> Objects.equals(item.getLevel(), 2) && Objects.equals(item.getPid(), "0"))
.collect(Collectors.toList()); .collect(Collectors.toList());
} else { } else {
LambdaQueryWrapper<CsDeviceUserPO> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CsDeviceUserPO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CsDeviceUserPO::getPrimaryUserId,RequestUtil.getUserIndex()); queryWrapper.eq(CsDeviceUserPO::getPrimaryUserId, RequestUtil.getUserIndex());
List<CsDeviceUserPO> list1 = csDeviceUserPOMapper.selectList(queryWrapper); List<CsDeviceUserPO> list1 = csDeviceUserPOMapper.selectList(queryWrapper);
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();
if (CollectionUtil.isNotEmpty(list1)){ if (CollectionUtil.isNotEmpty(list1)) {
result = list1.stream().map(CsDeviceUserPO::getDeviceId).collect(Collectors.toList()); result = list1.stream().map(CsDeviceUserPO::getDeviceId).collect(Collectors.toList());
} }
//针对未启用的装置判断 //针对未启用的装置判断
@@ -269,6 +278,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
} }
return tree; return tree;
} }
//剔除未接入的设备(根据status判断不太稳,所有这里直接判断该设备有没有对应的模板指标) //剔除未接入的设备(根据status判断不太稳,所有这里直接判断该设备有没有对应的模板指标)
private void checkDevSetData(List<CsLedgerVO> ledgerVOS) { private void checkDevSetData(List<CsLedgerVO> ledgerVOS) {
Iterator<CsLedgerVO> iterator = ledgerVOS.iterator(); Iterator<CsLedgerVO> iterator = ledgerVOS.iterator();
@@ -328,7 +338,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
); );
} }
engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList()); engineeringList = allList.stream().filter(item -> roleengineer.contains(item.getId())).collect(Collectors.toList());
List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
Map<String, CsEquipmentDeliveryPO> poMap = allList.stream() Map<String, CsEquipmentDeliveryPO> poMap = allList.stream()
@@ -404,16 +414,16 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
List<CsLedgerVO> ledger; List<CsLedgerVO> ledger;
String role = RequestUtil.getUserRole(); String role = RequestUtil.getUserRole();
List<String> roles = JSONArray.parseArray(role, String.class); List<String> roles = JSONArray.parseArray(role, String.class);
if(roles.contains(AppRoleEnum.ROOT.getCode()) || roles.contains(AppRoleEnum.OPERATION_MANAGER.getCode())){ if(roles.contains(AppRoleEnum.ROOT.getCode()) || roles.contains(AppRoleEnum.OPERATION_MANAGER.getCode()) || roles.contains(AppRoleEnum.REGULAR_USER.getCode())){
ledger = allList.stream() ledger = allList.stream()
.filter(item -> Objects.equals(item.getLevel(), 2) && Objects.equals(item.getPid(), "0")) .filter(item -> Objects.equals(item.getLevel(), 2) && Objects.equals(item.getPid(), "0"))
.collect(Collectors.toList()); .collect(Collectors.toList());
} else { } else {
LambdaQueryWrapper<CsDeviceUserPO> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CsDeviceUserPO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CsDeviceUserPO::getPrimaryUserId,RequestUtil.getUserIndex()); queryWrapper.eq(CsDeviceUserPO::getPrimaryUserId, RequestUtil.getUserIndex());
List<CsDeviceUserPO> list1 = csDeviceUserPOMapper.selectList(queryWrapper); List<CsDeviceUserPO> list1 = csDeviceUserPOMapper.selectList(queryWrapper);
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();
if (CollectionUtil.isNotEmpty(list1)){ if (CollectionUtil.isNotEmpty(list1)) {
result = list1.stream().map(CsDeviceUserPO::getDeviceId).collect(Collectors.toList()); result = list1.stream().map(CsDeviceUserPO::getDeviceId).collect(Collectors.toList());
} }
//针对未启用的装置判断 //针对未启用的装置判断
@@ -475,11 +485,11 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
@Override @Override
public CsLedger addLedgerTree(CsLedgerParam csLedgerParam) { public CsLedger addLedgerTree(CsLedgerParam csLedgerParam) {
CsLedger fatherCsLedger = this.lambdaQuery().eq(CsLedger::getId,csLedgerParam.getPid()).one(); CsLedger fatherCsLedger = this.lambdaQuery().eq(CsLedger::getId, csLedgerParam.getPid()).one();
CsLedger csLedger = new CsLedger(); CsLedger csLedger = new CsLedger();
BeanUtils.copyProperties(csLedgerParam,csLedger); BeanUtils.copyProperties(csLedgerParam, csLedger);
csLedger.setState(1); csLedger.setState(1);
if (Objects.equals(csLedgerParam.getPid(),"9999999")){ if (Objects.equals(csLedgerParam.getPid(), "9999999")) {
csLedger.setPid("0"); csLedger.setPid("0");
csLedger.setPids("0"); csLedger.setPids("0");
} else { } else {
@@ -491,7 +501,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
@Override @Override
public void deleteLedgerTree(String id) { public void deleteLedgerTree(String id) {
CsLedger csLedger = this.lambdaQuery().eq(CsLedger::getId,id).one(); CsLedger csLedger = this.lambdaQuery().eq(CsLedger::getId, id).one();
csLedger.setState(0); csLedger.setState(0);
this.updateById(csLedger); this.updateById(csLedger);
} }
@@ -506,8 +516,8 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
@Override @Override
public String findDevByLineId(String lineId) { public String findDevByLineId(String lineId) {
String deviceId = null; String deviceId = null;
CsLedger csLedger = this.lambdaQuery().eq(CsLedger::getId,lineId).eq(CsLedger::getState,1).one(); CsLedger csLedger = this.lambdaQuery().eq(CsLedger::getId, lineId).eq(CsLedger::getState, 1).one();
if (!Objects.isNull(csLedger)){ if (!Objects.isNull(csLedger)) {
deviceId = csLedger.getPid(); deviceId = csLedger.getPid();
} }
return deviceId; return deviceId;
@@ -515,7 +525,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
@Override @Override
public CsLedger findDataById(String id) { public CsLedger findDataById(String id) {
return this.lambdaQuery().eq(CsLedger::getId,id).eq(CsLedger::getState,1).one(); return this.lambdaQuery().eq(CsLedger::getId, id).eq(CsLedger::getState, 1).one();
} }
@Override @Override
@@ -523,12 +533,12 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
List<CsLedgerVO> engineeringList = new ArrayList<>(); List<CsLedgerVO> engineeringList = new ArrayList<>();
List<CsLedgerVO> allList = this.baseMapper.getAll(); List<CsLedgerVO> allList = this.baseMapper.getAll();
List<String> roleengineer = roleEngineerDevService.getRoleengineer(); List<String> roleengineer = roleEngineerDevService.getRoleengineer();
engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList()); engineeringList = allList.stream().filter(item -> roleengineer.contains(item.getId())).collect(Collectors.toList());
List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
QueryWrapper<AppTopologyDiagramPO> queryWrapper = new QueryWrapper<>(); QueryWrapper<AppTopologyDiagramPO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status","1"); queryWrapper.eq("status", "1");
List<AppTopologyDiagramPO> appTopologyDiagramPOS = appTopologyDiagramMapper.selectList(queryWrapper); List<AppTopologyDiagramPO> appTopologyDiagramPOS = appTopologyDiagramMapper.selectList(queryWrapper);
projectList.forEach(temp->{ projectList.forEach(temp -> {
AppProjectPO appProjectPO = appProjectMapper.selectById(temp.getId()); AppProjectPO appProjectPO = appProjectMapper.selectById(temp.getId());
temp.setArea(appProjectPO.getArea()); temp.setArea(appProjectPO.getArea());
temp.setRemark(appProjectPO.getDescription()); temp.setRemark(appProjectPO.getDescription());
@@ -544,13 +554,13 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
temp.setChildren(collect); temp.setChildren(collect);
}); });
engineeringList.forEach(eng -> { engineeringList.forEach(eng -> {
CsEngineeringPO csEngineeringPO = csEngineeringMapper.selectById(eng.getId()); CsEngineeringPO csEngineeringPO = csEngineeringMapper.selectById(eng.getId());
eng.setArea(this.getAreaById(csEngineeringPO.getProvince())+this.getAreaById(csEngineeringPO.getCity())); eng.setArea(this.getAreaById(csEngineeringPO.getProvince()) + this.getAreaById(csEngineeringPO.getCity()));
eng.setProvinceId(csEngineeringPO.getProvince()); eng.setProvinceId(csEngineeringPO.getProvince());
eng.setCityId(csEngineeringPO.getCity()); eng.setCityId(csEngineeringPO.getCity());
eng.setRemark(csEngineeringPO.getDescription()); eng.setRemark(csEngineeringPO.getDescription());
eng.setChildren(getChildren(eng, projectList)); eng.setChildren(getChildren(eng, projectList));
} }
); );
return engineeringList; return engineeringList;
@@ -566,28 +576,30 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
DevDetailDTO device = new DevDetailDTO(); DevDetailDTO device = new DevDetailDTO();
CsLedger dev = this.findDataById(devId); CsLedger dev = this.findDataById(devId);
//如果是便携式设备pid为0,项目,工程都设置为/ //如果是便携式设备pid为0,项目,工程都设置为/
if(Objects.equals(dev.getPid(),"0")){ if (Objects.equals(dev.getPid(), "0")) {
device.setEquipmentName(dev.getName()); device.setEquipmentName(dev.getName());
device.setEquipmentId(devId); device.setEquipmentId(devId);
device.setProjectId("/"); device.setProjectId("/");
device.setProjectName("/"); device.setProjectName("/");
device.setEngineeringid("/"); device.setEngineeringid("/");
device.setEngineeringName("/"); device.setEngineeringName("/");
}else { } else {
device.setEquipmentName(dev.getName()); device.setEquipmentName(dev.getName());
device.setEquipmentId(devId); device.setEquipmentId(devId);
CsLedger project = this.findDataById(dev.getPid()); CsLedger project = this.findDataById(dev.getPid());
device.setProjectId(project.getId()); if (ObjectUtil.isNotNull(project)) {
device.setProjectName(project.getName()); device.setProjectId(project.getId());
CsLedger engineer = this.findDataById(project.getPid()); device.setProjectName(project.getName());
device.setEngineeringid(engineer.getId());
device.setEngineeringName(engineer.getName()); CsLedger engineer = this.findDataById(project.getPid());
if (ObjectUtil.isNotNull(engineer)) {
device.setEngineeringid(engineer.getId());
device.setEngineeringName(engineer.getName());
}
}
} }
return device; return device;
} }
@Override @Override
public List<CsLedgerVO> getztProjectTree() { public List<CsLedgerVO> getztProjectTree() {
List<CsLedgerVO> engineeringList; List<CsLedgerVO> engineeringList;
@@ -595,93 +607,361 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
/*获取用户工程,设备信息过滤*/ /*获取用户工程,设备信息过滤*/
List<String> roleengineer = roleEngineerDevService.getRoleengineer(); List<String> roleengineer = roleEngineerDevService.getRoleengineer();
List<String> device = roleEngineerDevService.getDevice(); List<String> device = roleEngineerDevService.getDevice();
engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList());
List<String> zhiLianDevice = new ArrayList<>();
List<String> cldDevice = new ArrayList<>();
if (CollectionUtil.isNotEmpty(device)) {
List<CsEquipmentDeliveryPO> csEquipmentDeliveryPOS = csEquipmentDeliveryMapper.selectBatchIds(device);
DictTreeVO vo1 = dictTreeFeignClient.queryByCode(DicDataEnum.DEV_CLD.getCode()).getData();
Optional.ofNullable(vo1)
.map(DictTreeVO::getId)
.ifPresent(id -> csEquipmentDeliveryPOS.stream()
.filter(item -> Objects.equals(item.getDevType(), id))
.map(CsEquipmentDeliveryPO::getId)
.forEach(cldDevice::add)
);
DictTreeVO vo2 = dictTreeFeignClient.queryByCode(DicDataEnum.CONNECT_DEV.getCode()).getData();
Optional.ofNullable(vo2)
.map(DictTreeVO::getId)
.ifPresent(id -> csEquipmentDeliveryPOS.stream()
.filter(item -> Objects.equals(item.getDevType(), id))
.map(CsEquipmentDeliveryPO::getId)
.forEach(zhiLianDevice::add)
);
}
engineeringList = allList.stream().filter(item -> roleengineer.contains(item.getId())).collect(Collectors.toList());
List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
List<CsLedgerVO> deviceList = allList.stream().filter(item -> device.contains(item.getId()) && !Objects.equals(item.getPid(),"0")). Map<String, CsEquipmentDeliveryPO> poMap = allList.stream()
peek( .filter(item -> device.contains(item.getId()) && !Objects.equals(item.getPid(), "0"))
temp->{ .map(CsLedgerVO::getId)
CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectById(temp.getId()); .distinct()
temp.setComFlag(po.getRunStatus()); .collect(Collectors.toMap(
temp.setNDId(po.getNdid()); Function.identity(),
temp.setType("device"); csEquipmentDeliveryMapper::selectById
} ));
).
sorted(Comparator.comparing(CsLedgerVO::getSort))
.collect(Collectors.toList());
checkDevSetData(deviceList);
projectList.forEach(pro -> pro.setChildren(getChildren(pro, deviceList)));
engineeringList.forEach(eng -> eng.setChildren(getChildren(eng, projectList)));
//获取便携式项目数 //获取治理设备
List<CsLedgerVO> deviceList = allList.stream()
.filter(item -> zhiLianDevice.contains(item.getId()) && !Objects.equals(item.getPid(), "0"))
.peek(item -> {
CsEquipmentDeliveryPO po = poMap.get(item.getId());
item.setComFlag(po.getRunStatus());
item.setNDId(po.getNdid());
item.setType("device");
item.setProcess(po.getProcess());
})
.filter(item -> Objects.equals(poMap.get(item.getId()).getUsageStatus(), 1))
.sorted(Comparator.comparing(CsLedgerVO::getSort))
.collect(Collectors.toList());
List<CsLedgerVO> engineeringList1 = new ArrayList<>();
List<CsLedgerVO> projectList1 = new ArrayList<>();
checkDevSetData(deviceList);
List<String> dev = deviceList.stream().map(CsLedgerVO::getId).collect(Collectors.toList());
List<CsLedgerVO> ledger1 = getProAndEngineer(dev);
if (CollectionUtil.isNotEmpty(ledger1)) {
engineeringList1 = ledger1.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
projectList1 = ledger1.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
projectList1.forEach(pro -> pro.setChildren(getChildren(pro, deviceList)));
List<CsLedgerVO> finalProjectList = projectList1;
engineeringList1.forEach(eng -> eng.setChildren(getChildren(eng, finalProjectList)));
}
//获取云前置设备
List<CsLedgerVO> cldDevList = allList.stream()
.filter(item -> cldDevice.contains(item.getId()) && !Objects.equals(item.getPid(), "0"))
.peek(item -> {
CsEquipmentDeliveryPO po = poMap.get(item.getId());
item.setComFlag(po.getRunStatus());
item.setNDId(po.getNdid());
item.setType("device");
item.setProcess(po.getProcess());
})
.filter(item -> Objects.equals(poMap.get(item.getId()).getUsageStatus(), 1))
.sorted(Comparator.comparing(CsLedgerVO::getSort))
.collect(Collectors.toList());
checkDevSetData(cldDevList);
List<CsLedgerVO> engineeringList2 = new ArrayList<>();
List<CsLedgerVO> projectList2 = new ArrayList<>();
List<String> dev2 = cldDevList.stream().map(CsLedgerVO::getId).collect(Collectors.toList());
List<CsLedgerVO> ledger2 = getProAndEngineer(dev2);
if (CollectionUtil.isNotEmpty(ledger2)) {
engineeringList2 = ledger2.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
projectList2 = ledger2.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
projectList2.forEach(pro -> pro.setChildren(getChildren(pro, cldDevList)));
List<CsLedgerVO> finalProjectList = projectList2;
engineeringList2.forEach(eng -> eng.setChildren(getChildren(eng, finalProjectList)));
}
//获取便携式设备树
CsLedgerVO portable = new CsLedgerVO(); CsLedgerVO portable = new CsLedgerVO();
portable.setLevel(0); portable.setLevel(0);
portable.setName(DataParam.PORTABLE_SYSTEM); portable.setName(DataParam.portableDev);
portable.setPid("0"); portable.setPid("0");
portable.setId(IdUtil.simpleUUID()); portable.setId(IdUtil.simpleUUID());
CsLedgerVO project = new CsLedgerVO(); List<CsLedgerVO> ledger;
project.setLevel(1); String role = RequestUtil.getUserRole();
project.setName(DataParam.WIRELESS_PROJECT); List<String> roles = JSONArray.parseArray(role, String.class);
project.setPid("0"); if(roles.contains(AppRoleEnum.ROOT.getCode()) || roles.contains(AppRoleEnum.OPERATION_MANAGER.getCode()) || roles.contains(AppRoleEnum.REGULAR_USER.getCode())){
project.setId(DataParam.WIRELESS_PROJECT_ID); ledger = allList.stream()
.filter(item -> Objects.equals(item.getLevel(), 2) && Objects.equals(item.getPid(), "0"))
List<CsLedgerVO> portables = allList.stream().filter(item->Objects.equals(item.getLevel(),2) && Objects.equals(item.getPid(),"0")).collect(Collectors.toList()); .collect(Collectors.toList());
checkDevSetData(portables); } else {
for(CsLedgerVO c : portables){ LambdaQueryWrapper<CsDeviceUserPO> queryWrapper = new LambdaQueryWrapper<>();
c.setPid(project.getId()); queryWrapper.eq(CsDeviceUserPO::getPrimaryUserId, RequestUtil.getUserIndex());
CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectById(c.getId()); List<CsDeviceUserPO> list1 = csDeviceUserPOMapper.selectList(queryWrapper);
c.setComFlag(po.getRunStatus()); List<String> result = new ArrayList<>();
c.setNDId(po.getNdid()); if (CollectionUtil.isNotEmpty(list1)) {
c.setType("device"); result = list1.stream().map(CsDeviceUserPO::getDeviceId).collect(Collectors.toList());
}
//针对未启用的装置判断
List<String> finalResult = result;
ledger = allList.stream()
.filter(item -> Objects.equals(item.getLevel(), 2) && Objects.equals(item.getPid(), "0") && finalResult.contains(item.getId()))
.collect(Collectors.toList());
} }
project.setChildren(portables);
List<CsLedgerVO> wxProjectList = new ArrayList<>();
wxProjectList.add(project);
portable.setChildren(wxProjectList);
Map<String, CsEquipmentDeliveryPO> poMap2 = ledger.stream()
.collect(Collectors.toMap(
CsLedgerVO::getId,
csEquipmentDeliveryMapper::selectById,
(existing, replacement) -> existing
));
List<CsLedgerVO> portables = ledger.stream()
.peek(c -> {
CsEquipmentDeliveryPO po = poMap2.get(c.getId());
c.setPid(portable.getId());
c.setComFlag(po.getRunStatus());
c.setNDId(po.getNdid());
c.setType("device");
c.setName(po.getName());
c.setSort(po.getSort());
})
.filter(c -> poMap2.get(c.getId()).getUsageStatus() == 1)
.collect(Collectors.toList());
portables = portables.stream().sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
portable.setChildren(portables);
CsLedgerVO government = new CsLedgerVO(); CsLedgerVO government = new CsLedgerVO();
government.setLevel(0); government.setLevel(0);
government.setName(DataParam.GOVERNANCE_SYSTEM); government.setName(DataParam.governmentDev);
government.setPid("0"); government.setPid("0");
government.setId(IdUtil.simpleUUID()); government.setId(IdUtil.simpleUUID());
government.setChildren(engineeringList); government.setChildren(engineeringList1);
List<CsLedgerVO> tree = new ArrayList<>();
//获取云前置设备树
CsLedgerVO cld = new CsLedgerVO();
cld.setLevel(0);
cld.setName(DataParam.cldDev);
cld.setPid("0");
cld.setId(IdUtil.simpleUUID());
cld.setChildren(engineeringList2);
List<CsLedgerVO> tree = new ArrayList<>();
if (CollUtil.isNotEmpty(portables)) { if (CollUtil.isNotEmpty(portables)) {
tree.add(portable); CsLedgerVO vo1 = new CsLedgerVO();
vo1.setLevel(0);
vo1.setName(DataParam.PORTABLE_SYSTEM);
vo1.setPid("0");
vo1.setId(IdUtil.simpleUUID());
CsLedgerVO vo2 = new CsLedgerVO();
vo2.setLevel(1);
vo2.setName(DataParam.WIRELESS_PROJECT);
vo2.setPid("0");
vo2.setId(DataParam.WIRELESS_PROJECT_ID);
vo2.setChildren(portables);
vo1.setChildren(Collections.singletonList(vo2));
tree.add(vo1);
} }
if (CollUtil.isNotEmpty(deviceList)) { if (CollUtil.isNotEmpty(deviceList)) {
tree.add(government); tree.add(government);
} }
if (CollUtil.isNotEmpty(cldDevList)) {
tree.add(cld);
}
return tree; return tree;
} }
// @Override
// public List<CsLedgerVO> getztProjectTree() {
// List<CsLedgerVO> engineeringList;
// List<CsLedgerVO> allList = this.baseMapper.getAll();
// /*获取用户工程,设备信息过滤*/
// List<String> roleengineer = roleEngineerDevService.getRoleengineer();
// List<String> device = roleEngineerDevService.getDevice();
// engineeringList = allList.stream().filter(item -> roleengineer.contains(item.getId())).collect(Collectors.toList());
// List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
//
// List<CsLedgerVO> deviceList = allList.stream().filter(item -> device.contains(item.getId()) && !Objects.equals(item.getPid(), "0")).
// peek(
// temp -> {
// CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectById(temp.getId());
// temp.setComFlag(po.getRunStatus());
// temp.setNDId(po.getNdid());
// temp.setType("device");
// }
// ).
// sorted(Comparator.comparing(CsLedgerVO::getSort))
// .collect(Collectors.toList());
// checkDevSetData(deviceList);
// projectList.forEach(pro -> pro.setChildren(getChildren(pro, deviceList)));
// engineeringList.forEach(eng -> eng.setChildren(getChildren(eng, projectList)));
//
// //获取便携式项目数
// CsLedgerVO portable = new CsLedgerVO();
// portable.setLevel(0);
// portable.setName(DataParam.PORTABLE_SYSTEM);
// portable.setPid("0");
// portable.setId(IdUtil.simpleUUID());
//
// CsLedgerVO project = new CsLedgerVO();
// project.setLevel(1);
// project.setName(DataParam.WIRELESS_PROJECT);
// project.setPid("0");
// project.setId(DataParam.WIRELESS_PROJECT_ID);
//
// List<CsLedgerVO> portables = allList.stream().filter(item -> Objects.equals(item.getLevel(), 2) && Objects.equals(item.getPid(), "0")).collect(Collectors.toList());
// checkDevSetData(portables);
// for (CsLedgerVO c : portables) {
// c.setPid(project.getId());
// CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectById(c.getId());
// c.setComFlag(po.getRunStatus());
// c.setNDId(po.getNdid());
// c.setType("device");
// }
// project.setChildren(portables);
//
// List<CsLedgerVO> wxProjectList = new ArrayList<>();
// wxProjectList.add(project);
//
// portable.setChildren(wxProjectList);
//
//
// CsLedgerVO government = new CsLedgerVO();
// government.setLevel(0);
// government.setName(DataParam.GOVERNANCE_SYSTEM);
// government.setPid("0");
// government.setId(IdUtil.simpleUUID());
// government.setChildren(engineeringList);
// List<CsLedgerVO> tree = new ArrayList<>();
//
// if (CollUtil.isNotEmpty(portables)) {
// tree.add(portable);
// }
// if (CollUtil.isNotEmpty(deviceList)) {
// tree.add(government);
// }
//
// return tree;
// }
@Override
public List<CsLedgerVO> objTree() {
List<CsLedgerVO> result = new ArrayList<>();
String userId = RequestUtil.getUserIndex();
UserVO userVO = userFeignClient.getUserById(userId).getData();
List<String> devIds;
if (userVO.getType().equals(UserType.SUPER_ADMINISTRATOR) || userVO.getType().equals(UserType.ADMINISTRATOR)) {
devIds = csEquipmentDeliveryMapper.selectList(null).stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
} else {
LambdaQueryWrapper<CsDeviceUserPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(CsDeviceUserPO::getDeviceId)
.and(w -> w.eq(CsDeviceUserPO::getPrimaryUserId, userId).or().eq(CsDeviceUserPO::getSubUserId, userId))
.eq(CsDeviceUserPO::getStatus, DataStateEnum.ENABLE.getCode());
List<CsDeviceUserPO> devList = csDeviceUserPOMapper.selectList(lambdaQueryWrapper);
devIds = devList.stream().map(CsDeviceUserPO::getDeviceId).distinct().collect(Collectors.toList());
}
if (CollUtil.isEmpty(devIds)) {
return result;
}
List<CsLinePO> poList = csLinePOService.lambdaQuery().in(CsLinePO::getDeviceId, devIds)
.eq(CsLinePO::getStatus, DataStateEnum.ENABLE.getCode()).ne(CsLinePO::getMonitorUser,"").isNotNull(CsLinePO::getMonitorUser).list();
if (CollUtil.isEmpty(poList)) {
return result;
}
List<String> objIds = poList.stream().map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList());
List<String> lineIds = poList.stream().map(CsLinePO::getLineId).distinct().collect(Collectors.toList());
List<PqSensitiveUser> pqSensitiveUserList = pqSensitiveUserFeignClient.getListByIds(objIds).getData();
if (CollUtil.isEmpty(pqSensitiveUserList)) {
return result;
}
Map<String,String> objMap = pqSensitiveUserList.stream().collect(Collectors.toMap(PqSensitiveUser::getId, PqSensitiveUser::getName));
List<CsLedger> csLineList = this.baseMapper.selectList(new LambdaQueryWrapper<CsLedger>().in(CsLedger::getId, lineIds));
Map<String,List<String>> lineMap = csLineList.stream().collect(Collectors.groupingBy(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.PROJECT_LEVEL.getCode()+1],Collectors.mapping(CsLedger::getId,Collectors.toList())));
List<String> projectIds = csLineList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.PROJECT_LEVEL.getCode()+1]).distinct().collect(Collectors.toList());
List<CsLedger> projectList = this.baseMapper.selectList(new LambdaQueryWrapper<CsLedger>().in(CsLedger::getId, projectIds));
List<CsLedgerVO> realProjectList = new ArrayList<>();
projectList.forEach(pro->{
CsLedgerVO csLedgerVO = new CsLedgerVO();
csLedgerVO.setId(pro.getId());
csLedgerVO.setPid(pro.getPid());
csLedgerVO.setLevel(pro.getLevel());
csLedgerVO.setName(pro.getName());
List<CsLedgerVO> temObjList = new ArrayList<>();
if(lineMap.containsKey(pro.getId())){
List<String> ids = lineMap.get(pro.getId());
List<String> objTemIds = poList.stream().filter(it->ids.contains(it.getLineId())).map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(objTemIds)){
objTemIds.forEach(it->{
CsLedgerVO inner = new CsLedgerVO();
inner.setName(objMap.getOrDefault(it,"未知异常用户"));
inner.setId(it);
inner.setLevel(2);
temObjList.add(inner);
});
}
}
csLedgerVO.setChildren(temObjList);
realProjectList.add(csLedgerVO);
});
List<String> gcIds = projectList.stream().map(CsLedger::getPid).collect(Collectors.toList());
List<CsLedger> gcList = this.baseMapper.selectList(new LambdaQueryWrapper<CsLedger>().in(CsLedger::getId, gcIds));
List<CsLedgerVO> realGcList = new ArrayList<>();
gcList.forEach(gc->{
CsLedgerVO csLedgerVO = new CsLedgerVO();
csLedgerVO.setId(gc.getId());
csLedgerVO.setPid(gc.getPid());
csLedgerVO.setLevel(gc.getLevel());
csLedgerVO.setName(gc.getName());
List<CsLedgerVO> proList = realProjectList.stream().filter(it->gc.getId().equals(it.getPid())).collect(Collectors.toList());
csLedgerVO.setChildren(proList);
realGcList.add(csLedgerVO);
});
return realGcList;
}
@Override @Override
public List<CsLedgerVO> getProAndEngineer(List<String> id) { public List<CsLedgerVO> getProAndEngineer(List<String> id) {
List<CsLedgerVO> result = new ArrayList<>(); List<CsLedgerVO> result = new ArrayList<>();
List<CsLedgerVO> allList = this.baseMapper.getAll(); List<CsLedgerVO> allList = this.baseMapper.getAll();
Set<String> idSet = new HashSet<>(id); Set<String> idSet = new HashSet<>(id);
if (CollectionUtil.isNotEmpty(id)) { if (CollectionUtil.isNotEmpty(id)) {
id.forEach(item->{ id.forEach(item -> {
allList.forEach(item2->{ allList.forEach(item2 -> {
if (Objects.equals(item2.getId(),item)) { if (Objects.equals(item2.getId(), item)) {
idSet.addAll(Arrays.asList(item2.getPids().split( ","))); idSet.addAll(Arrays.asList(item2.getPids().split(",")));
} }
}); });
}); });
} }
if (CollectionUtil.isNotEmpty(idSet)) { if (CollectionUtil.isNotEmpty(idSet)) {
idSet.forEach(item->{ idSet.forEach(item -> {
allList.forEach(item2->{ allList.forEach(item2 -> {
if (Objects.equals(item2.getId(),item)) { if (Objects.equals(item2.getId(), item)) {
result.add(item2); result.add(item2);
} }
}); });
@@ -718,7 +998,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
DictTreeVO vo1 = dictTreeFeignClient.queryByCode(DicDataEnum.DEV_CLD.getCode()).getData(); DictTreeVO vo1 = dictTreeFeignClient.queryByCode(DicDataEnum.DEV_CLD.getCode()).getData();
//list1是 cld设备 //list1是 cld设备
devs.forEach(item->{ devs.forEach(item -> {
if (item.getDevType().equals(vo1.getId())) { if (item.getDevType().equals(vo1.getId())) {
list1.add(item.getId()); list1.add(item.getId());
} }
@@ -759,19 +1039,19 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
if (CollectionUtil.isNotEmpty(deviceTree)) { if (CollectionUtil.isNotEmpty(deviceTree)) {
List<CsLedgerVO> finalLineTree = lineTree; List<CsLedgerVO> finalLineTree = lineTree;
deviceTree.forEach(item->{ deviceTree.forEach(item -> {
item.setChildren(getChildren(item, finalLineTree)); item.setChildren(getChildren(item, finalLineTree));
}); });
} }
if (CollectionUtil.isNotEmpty(projectTree)) { if (CollectionUtil.isNotEmpty(projectTree)) {
List<CsLedgerVO> finalDeviceTree = deviceTree; List<CsLedgerVO> finalDeviceTree = deviceTree;
projectTree.forEach(item->{ projectTree.forEach(item -> {
item.setChildren(getChildren(item, finalDeviceTree)); item.setChildren(getChildren(item, finalDeviceTree));
}); });
} }
if (CollectionUtil.isNotEmpty(engineerTree)) { if (CollectionUtil.isNotEmpty(engineerTree)) {
List<CsLedgerVO> finalProjectTree = projectTree; List<CsLedgerVO> finalProjectTree = projectTree;
engineerTree.forEach(item->{ engineerTree.forEach(item -> {
item.setChildren(getChildren(item, finalProjectTree)); item.setChildren(getChildren(item, finalProjectTree));
}); });
} }
@@ -791,9 +1071,9 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
List<DevDetailDTO> details = new ArrayList<>(); List<DevDetailDTO> details = new ArrayList<>();
List<CsLedger> ledgers = this.listByIds(list); List<CsLedger> ledgers = this.listByIds(list);
Set<String> enginingeringIds = new HashSet<>(); Set<String> enginingeringIds = new HashSet<>();
ledgers.forEach(item->{ ledgers.forEach(item -> {
DevDetailDTO device = new DevDetailDTO(); DevDetailDTO device = new DevDetailDTO();
if(Objects.equals(item.getPid(),"0")){ if (Objects.equals(item.getPid(), "0")) {
device.setEquipmentName(item.getName()); device.setEquipmentName(item.getName());
device.setEquipmentId(item.getId()); device.setEquipmentId(item.getId());
device.setProjectId("/"); device.setProjectId("/");
@@ -807,7 +1087,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
}); });
if (CollectionUtil.isNotEmpty(enginingeringIds)) { if (CollectionUtil.isNotEmpty(enginingeringIds)) {
List<CsLedger> engineer = this.listByIds(enginingeringIds); List<CsLedger> engineer = this.listByIds(enginingeringIds);
engineer.forEach(item->{ engineer.forEach(item -> {
DevDetailDTO detail = new DevDetailDTO(); DevDetailDTO detail = new DevDetailDTO();
detail.setEngineeringid(item.getId()); detail.setEngineeringid(item.getId());
detail.setEngineeringName(item.getName()); detail.setEngineeringName(item.getName());
@@ -828,7 +1108,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
LambdaQueryWrapper<CsLedger> queryWrapper2 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CsLedger> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.in(CsLedger::getPid, projectIds); queryWrapper2.in(CsLedger::getPid, projectIds);
List<CsLedger> dev = this.list(queryWrapper2); List<CsLedger> dev = this.list(queryWrapper2);
dev.forEach(item->{ dev.forEach(item -> {
DevDetailDTO detail = new DevDetailDTO(); DevDetailDTO detail = new DevDetailDTO();
detail.setEquipmentName(item.getName()); detail.setEquipmentName(item.getName());
detail.setEquipmentId(item.getId()); detail.setEquipmentId(item.getId());
@@ -840,7 +1120,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
@Override @Override
public List<DevDetailDTO> getEngineeringHaveDevs(List<String> list) { public List<DevDetailDTO> getEngineeringHaveDevs(List<String> list) {
List<DevDetailDTO> result = new ArrayList<>(); List<DevDetailDTO> result = new ArrayList<>();
list.forEach(item->{ list.forEach(item -> {
LambdaQueryWrapper<CsLedger> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CsLedger> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CsLedger::getPid, item); queryWrapper.eq(CsLedger::getPid, item);
List<CsLedger> project = this.list(queryWrapper); List<CsLedger> project = this.list(queryWrapper);
@@ -873,12 +1153,12 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
return children; return children;
} }
public String getAreaById(String id){ public String getAreaById(String id) {
String areaName =redisUtil.getStringByKey (id); String areaName = redisUtil.getStringByKey(id);
areaName = Optional.ofNullable (areaName).orElseGet (() ->{ areaName = Optional.ofNullable(areaName).orElseGet(() -> {
Area data = areaFeignClient.selectIdArea (id).getData ( ); Area data = areaFeignClient.selectIdArea(id).getData();
redisUtil.saveByKey (id,data.getName ()); redisUtil.saveByKey(id, data.getName());
return data.getName (); return data.getName();
}); });
return areaName; return areaName;
} }

View File

@@ -11,10 +11,10 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.access.api.CsLineLatestDataFeignClient; import com.njcn.access.api.CsLineLatestDataFeignClient;
import com.njcn.access.pojo.po.CsLineLatestData;
import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.PubUtils; import com.njcn.common.utils.PubUtils;
import com.njcn.csdevice.enums.LineBaseEnum;
import com.njcn.csdevice.mapper.*; import com.njcn.csdevice.mapper.*;
import com.njcn.csdevice.pojo.param.CsLineParam; import com.njcn.csdevice.pojo.param.CsLineParam;
import com.njcn.csdevice.pojo.po.*; import com.njcn.csdevice.pojo.po.*;
@@ -28,13 +28,13 @@ import com.njcn.csharmonic.pojo.po.PqSensitiveUser;
import com.njcn.oss.constant.OssPath; import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil; import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.api.DictTreeFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.po.DictData; import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.UserFeignClient; import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.constant.UserType; import com.njcn.user.pojo.constant.UserType;
import com.njcn.user.pojo.vo.UserVO; import com.njcn.user.pojo.vo.UserVO;
import com.njcn.web.pojo.param.BaseParam; import com.njcn.web.pojo.param.BaseParam;
import com.njcn.web.pojo.vo.LineDataVO;
import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.RequestUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@@ -43,7 +43,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -71,7 +70,7 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
private final UserFeignClient userFeignClient; private final UserFeignClient userFeignClient;
private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper; private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper;
private final CsDeviceUserPOMapper csDeviceUserPOMapper; private final CsDeviceUserPOMapper csDeviceUserPOMapper;
private final DictTreeFeignClient dictTreeFeignClient;
@Override @Override
@@ -103,6 +102,10 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
return this.baseMapper.findByNdid(id); return this.baseMapper.findByNdid(id);
} }
public Map<String,String> getCustomDetailByLineId(String lineId){
return this.baseMapper.getCustomDetailByLineId(lineId);
}
@Override @Override
public void updateLine(CsLineParam csLineParam) { public void updateLine(CsLineParam csLineParam) {
LambdaUpdateWrapper<CsLinePO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<CsLinePO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
@@ -139,7 +142,7 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
//1.新增监测点信息 //1.新增监测点信息
BeanUtils.copyProperties(param,po); BeanUtils.copyProperties(param,po);
po.setStatus(1); po.setStatus(1);
po.setRunStatus(2); po.setRunStatus(param.getRunStatus());
po.setLineId(param.getDevMac().replace(":","") + param.getLineNo()); po.setLineId(param.getDevMac().replace(":","") + param.getLineNo());
//模板id //模板id
CsDevModelPO po1 = csDevModelService.getCldModel(); CsDevModelPO po1 = csDevModelService.getCldModel();
@@ -153,8 +156,8 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
po.setClDid(list.get(0).getClDev()); po.setClDid(list.get(0).getClDev());
} }
//监测位置 //监测位置
DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.GRID_SIDE.getCode()).getData(); //DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.GRID_SIDE.getCode()).getData();
po.setPosition(data.getId()); po.setPosition(param.getPosition());
this.save(po); this.save(po);
//2.新增台账树信息 //2.新增台账树信息
@@ -202,7 +205,10 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
.set(CsLinePO::getMonitorObj,param.getMonitorObj()) .set(CsLinePO::getMonitorObj,param.getMonitorObj())
.set(CsLinePO::getMonitorObj,param.getMonitorObj()) .set(CsLinePO::getMonitorObj,param.getMonitorObj())
.set(CsLinePO::getGovern,param.getGovern()) .set(CsLinePO::getGovern,param.getGovern())
.set(CsLinePO::getMonitorUser,param.getMonitorUser()); .set(CsLinePO::getPosition,param.getPosition())
.set(CsLinePO::getMonitorUser,param.getMonitorUser())
.set(CsLinePO::getLineLogLevel,param.getLineLogLevel())
.set(CsLinePO::getIsImportant,param.getIsImportant());
this.update(lambdaUpdateWrapper); this.update(lambdaUpdateWrapper);
//修改台账树中监测点的名称 //修改台账树中监测点的名称
@@ -268,7 +274,7 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
public List<CsLinePO> getSimpleLine() { public List<CsLinePO> getSimpleLine() {
List<String> devIds = commGetDevIds(RequestUtil.getUserIndex()); List<String> devIds = commGetDevIds(RequestUtil.getUserIndex());
if(CollUtil.isNotEmpty(devIds)){ if(CollUtil.isNotEmpty(devIds)){
List<CsLinePO> poList = this.lambdaQuery().select(CsLinePO::getLineId,CsLinePO::getName).in(CsLinePO::getDeviceId,devIds) List<CsLinePO> poList = this.lambdaQuery().in(CsLinePO::getDeviceId,devIds)
.eq(CsLinePO::getStatus, DataStateEnum.ENABLE.getCode()).list(); .eq(CsLinePO::getStatus, DataStateEnum.ENABLE.getCode()).list();
return poList; return poList;
}else { }else {
@@ -280,8 +286,8 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
UserVO userVO = userFeignClient.getUserById(userId).getData(); UserVO userVO = userFeignClient.getUserById(userId).getData();
List<String> devIds; List<String> devIds;
if(userVO.getType().equals(UserType.SUPER_ADMINISTRATOR ) || userVO.getType().equals(UserType.ADMINISTRATOR )){ if(userVO.getType().equals(UserType.SUPER_ADMINISTRATOR ) || userVO.getType().equals(UserType.ADMINISTRATOR )){
devIds = csEquipmentDeliveryMapper.selectList(new LambdaQueryWrapper<CsEquipmentDeliveryPO>().eq(CsEquipmentDeliveryPO::getStatus,DataStateEnum.ENABLE)).stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList()); devIds = csEquipmentDeliveryMapper.selectList(new LambdaQueryWrapper<CsEquipmentDeliveryPO>().ne(CsEquipmentDeliveryPO::getRunStatus,DataStateEnum.DELETED.getCode())).stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
}else { } else {
LambdaQueryWrapper<CsDeviceUserPO> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CsDeviceUserPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(CsDeviceUserPO::getDeviceId) lambdaQueryWrapper.select(CsDeviceUserPO::getDeviceId)
.and(w->w.eq(CsDeviceUserPO::getPrimaryUserId,userId).or().eq(CsDeviceUserPO::getSubUserId,userId)) .and(w->w.eq(CsDeviceUserPO::getPrimaryUserId,userId).or().eq(CsDeviceUserPO::getSubUserId,userId))
@@ -306,24 +312,37 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
result.setCurrent(param.getPageNum()); result.setCurrent(param.getPageNum());
result.setSize(param.getPageSize()); result.setSize(param.getPageSize());
// 查询登录用户拥有的监测点台账
Page<CsLinePO> linePage = this.page(new Page<>(param.getPageNum(), param.getPageSize()), List<CsLinePO> poList = getSimpleLine();
new LambdaQueryWrapper<CsLinePO>() // 构建基础查询条件
.eq(CsLinePO::getStatus, 1) LambdaQueryWrapper<CsLinePO> lambdaQueryWrapper = new LambdaQueryWrapper<CsLinePO>()
// 关联敏感用户 .eq(CsLinePO::getStatus, 1)
.isNotNull(CsLinePO::getMonitorUser) // 关联敏感用户
.orderByAsc(CsLinePO::getMonitorUser) //.isNotNull(CsLinePO::getMonitorUser)
); .orderByAsc(CsLinePO::getMonitorUser);
// 只有当lineList不为空时才添加in条件
if (CollUtil.isNotEmpty(poList)) {
List<String> lineList = poList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
lambdaQueryWrapper.in(CsLinePO::getLineId, lineList);
}
if (ObjectUtil.isNotNull(param.getSearchValue())) {
lambdaQueryWrapper.and(par -> par.like(CsLinePO::getName, param.getSearchValue()));
}
Page<CsLinePO> linePage = this.page(new Page<>(param.getPageNum(), param.getPageSize()), lambdaQueryWrapper);
BeanUtil.copyProperties(linePage, result); BeanUtil.copyProperties(linePage, result);
List<CsLinePO> records = linePage.getRecords(); List<CsLinePO> records = linePage.getRecords();
if (CollUtil.isEmpty(records)) { if (CollUtil.isEmpty(records)) {
return result; return result;
} }
List<PqSensitiveUserLineVO> list = new ArrayList<>(); List<PqSensitiveUserLineVO> list = new ArrayList<>();
List<String> sensitiveUserIds = list.stream().map(PqSensitiveUserLineVO::getSensitiveUser).distinct().collect(Collectors.toList()); List<String> sensitiveUserIds = list.stream().map(PqSensitiveUserLineVO::getSensitiveUser).distinct().collect(Collectors.toList());
Map<String, String> sensitiveUserNameMap = pqSensitiveUserFeignClient.getListByIds(sensitiveUserIds).getData() Map<String, String> sensitiveUserNameMap = new HashMap<>();
.stream().collect(Collectors.toMap(PqSensitiveUser::getId, PqSensitiveUser::getName)); List<PqSensitiveUser> pqSensitiveUserList = pqSensitiveUserFeignClient.getListByIds(sensitiveUserIds).getData();
if (CollUtil.isNotEmpty(pqSensitiveUserList)) {
sensitiveUserNameMap = pqSensitiveUserList.stream().collect(Collectors.toMap(PqSensitiveUser::getId, PqSensitiveUser::getName));
}
PqSensitiveUserLineVO sensitiveUserLineVO; PqSensitiveUserLineVO sensitiveUserLineVO;
for (CsLinePO record : records) { for (CsLinePO record : records) {
sensitiveUserLineVO = new PqSensitiveUserLineVO(); sensitiveUserLineVO = new PqSensitiveUserLineVO();
@@ -342,26 +361,34 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
} }
} }
// 监测类型 // 监测类型
sensitiveUserLineVO.setPosition(record.getPosition()); if (ObjectUtil.isNotNull(record.getPosition())) {
DictData positionDictData = dicDataFeignClient.getDicDataById(record.getPosition()).getData(); sensitiveUserLineVO.setPosition(record.getPosition());
if (positionDictData != null) { DictData positionDictData = dicDataFeignClient.getDicDataById(record.getPosition()).getData();
sensitiveUserLineVO.setPosition(positionDictData.getName()); if (positionDictData != null) {
sensitiveUserLineVO.setPosition(positionDictData.getName());
}
} }
// 电压等级 // 电压等级
sensitiveUserLineVO.setVolGrade(record.getVolGrade()); if (ObjectUtil.isNotNull(record.getVolGrade())) {
sensitiveUserLineVO.setVolGrade(record.getVolGrade());
}
// 运行状态 // 运行状态
sensitiveUserLineVO.setRunStatus(getRunStatusDescription(record.getRunStatus())); if (ObjectUtil.isNotNull(record.getRunStatus())) {
//获取设备状态
int devRunStatus = csEquipmentDeliveryMapper.selectById(record.getDeviceId()).getRunStatus();
sensitiveUserLineVO.setRunStatus(getRunStatusDescription(devRunStatus));
}
// 报告文件 // 报告文件
sensitiveUserLineVO.setReportFilePath(record.getReportFilePath()); sensitiveUserLineVO.setReportFilePath(record.getReportFilePath());
// 最新数据时间 // 最新数据时间
List<CsLineLatestData> lineLatestDataList = csLineLatestDataFeignClient.listData().getData(); // List<CsLineLatestData> lineLatestDataList = csLineLatestDataFeignClient.listData().getData();
if (CollUtil.isNotEmpty(lineLatestDataList)) { // if (CollUtil.isNotEmpty(lineLatestDataList)) {
sensitiveUserLineVO.setLatestTime(lineLatestDataList.stream() // sensitiveUserLineVO.setLatestTime(lineLatestDataList.stream()
.filter(item -> item.getLineId().equals(record.getLineId())) // .filter(item -> item.getLineId().equals(record.getLineId()))
.map(CsLineLatestData::getTimeId) // .map(CsLineLatestData::getTimeId)
.max(LocalDateTime::compareTo) // .max(LocalDateTime::compareTo)
.orElse(null)); // .orElse(null));
} // }
list.add(sensitiveUserLineVO); list.add(sensitiveUserLineVO);
} }
result.setRecords(list); result.setRecords(list);
@@ -370,7 +397,7 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
@Override @Override
public boolean uploadReport(MultipartFile file, String lineId) { public boolean uploadReport(MultipartFile file, String lineId) {
String filePath = fileStorageUtil.uploadMultipart(file, OssPath.GOVERN_HARMONIC_FILE); String filePath = fileStorageUtil.uploadMultipart(file, OssPath.GOVERN_HARMONIC_FILE, true);
return this.update(new LambdaUpdateWrapper<CsLinePO>().eq(CsLinePO::getLineId, lineId).set(CsLinePO::getReportFilePath, filePath)); return this.update(new LambdaUpdateWrapper<CsLinePO>().eq(CsLinePO::getLineId, lineId).set(CsLinePO::getReportFilePath, filePath));
} }
@@ -393,9 +420,22 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
return new LineDetailDataVO(); return new LineDetailDataVO();
} else { } else {
CsLinePO csLinePO = this.baseMapper.selectOne(new LambdaQueryWrapper<CsLinePO>().eq(CsLinePO::getLineId,id)); CsLinePO csLinePO = this.baseMapper.selectOne(new LambdaQueryWrapper<CsLinePO>().eq(CsLinePO::getLineId,id));
//获取设备信息
CsEquipmentDeliveryPO csEquipmentDelivery = csEquipmentDeliveryMapper.selectById(csLinePO.getDeviceId());
String code = dictTreeFeignClient.queryById(csEquipmentDelivery.getDevType()).getData().getCode();
CsLedger csLedger = csLedgerMapper.selectById(csLinePO.getLineId());
LineDetailDataVO lineDetailDataVO = new LineDetailDataVO(); LineDetailDataVO lineDetailDataVO = new LineDetailDataVO();
//lineDetailDataVO.setScale(dicDataFeignClient.getDicDataById(voltageMapper.selectById(voId).getScale()).getData().getName()); lineDetailDataVO.setScale(csLinePO.getVolGrade()+"kV");
if (Objects.equals(DicDataEnum.PORTABLE.getCode(),code)) {
lineDetailDataVO.setAreaName("便携式工程");
lineDetailDataVO.setBdName("便携式项目");
} else {
lineDetailDataVO.setAreaName(csLedgerMapper.selectById(csLedger.getPids().split(StrUtil.COMMA)[LineBaseEnum.ENGINEERING_LEVEL.getCode()+1]).getName());
lineDetailDataVO.setBdName(csLedgerMapper.selectById(csLedger.getPids().split(StrUtil.COMMA)[LineBaseEnum.PROJECT_LEVEL.getCode()+1]).getName());
}
lineDetailDataVO.setLineName(csLinePO.getName());
//Device device = deviceMapper.selectById(devId); //Device device = deviceMapper.selectById(devId);
//lineDetailDataVO.setComFlag(PubUtils.comFlag(device.getComFlag())); //lineDetailDataVO.setComFlag(PubUtils.comFlag(device.getComFlag()));
//lineDetailDataVO.setRunFlag(PubUtils.lineRunFlag(lineDetail.getRunFlag())); //lineDetailDataVO.setRunFlag(PubUtils.lineRunFlag(lineDetail.getRunFlag()));
@@ -407,33 +447,54 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
lineDetailDataVO.setObjName(csLinePO.getMonitorUser()); lineDetailDataVO.setObjName(csLinePO.getMonitorUser());
lineDetailDataVO.setLineId(csLinePO.getLineId()); lineDetailDataVO.setLineId(csLinePO.getLineId());
lineDetailDataVO.setPtType(PubUtils.ptType(csLinePO.getConType())); lineDetailDataVO.setPtType(PubUtils.ptType(csLinePO.getConType()));
//lineDetailDataVO.setPt(lineDetail.getPt1() + "/" + lineDetail.getPt2()); lineDetailDataVO.setPt(csLinePO.getPtRatio() + "/" + (Objects.isNull(csLinePO.getPt2Ratio())?1.0:csLinePO.getPt2Ratio()));
//lineDetailDataVO.setCt(lineDetail.getCt1() + "/" + lineDetail.getCt2()); lineDetailDataVO.setCt(csLinePO.getCtRatio() + "/" + (Objects.isNull(csLinePO.getCt2Ratio())?1.0:csLinePO.getCt2Ratio()));
lineDetailDataVO.setDealCapacity(csLinePO.getProtocolCapacity().floatValue()); lineDetailDataVO.setDealCapacity(Objects.isNull(csLinePO.getProtocolCapacity())?0.0f:csLinePO.getProtocolCapacity().floatValue());
lineDetailDataVO.setDevCapacity(csLinePO.getDevCapacity().floatValue()); lineDetailDataVO.setDevCapacity(Objects.isNull(csLinePO.getDevCapacity())?0.0f:csLinePO.getDevCapacity().floatValue());
lineDetailDataVO.setShortCapacity(csLinePO.getShortCircuitCapacity().floatValue()); lineDetailDataVO.setShortCapacity(Objects.isNull(csLinePO.getShortCircuitCapacity())?0.0f:csLinePO.getShortCircuitCapacity().floatValue());
lineDetailDataVO.setStandardCapacity(csLinePO.getBasicCapacity().floatValue()); lineDetailDataVO.setStandardCapacity(Objects.isNull(csLinePO.getBasicCapacity())?0.0f:csLinePO.getBasicCapacity().floatValue());
lineDetailDataVO.setTimeInterval(csLinePO.getLineInterval()); lineDetailDataVO.setTimeInterval(csLinePO.getLineInterval());
//获取监测点数据类型
CsDataSet dataSet = csDataSetService.getById(csLinePO.getDataSetId());
if (ObjectUtil.isNotNull(dataSet)) {
lineDetailDataVO.setDataLevel(dataSet.getDataLevel());
}
return lineDetailDataVO; return lineDetailDataVO;
} }
}
@Override
public List<CsLinePO> getLineList(CsLinePO param) {
List<String> keywordsLineIds = new ArrayList<>();
List<CsLinePO> poList = getSimpleLine();
if (CollUtil.isNotEmpty(poList)) {
keywordsLineIds = poList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
}
List<CsLinePO> result = this.list(new LambdaQueryWrapper<CsLinePO>()
.eq(CsLinePO::getStatus, 1)
.eq(StrUtil.isNotBlank(param.getPosition()), CsLinePO::getPosition, param.getPosition())
.in(CsLinePO::getLineId, keywordsLineIds)
.orderByAsc(CsLinePO::getName));
//根据监测点id查询设备信息
if (CollectionUtil.isNotEmpty(result)) {
//获取设备信息集合
List<String> devList = result.stream().map(CsLinePO::getDeviceId).collect(Collectors.toList());
List<CsEquipmentDeliveryPO> equipmentDeliveryList = csEquipmentDeliveryMapper.selectBatchIds(devList);
Map<String,Integer> runStatusMap = equipmentDeliveryList.stream().collect(Collectors.toMap(CsEquipmentDeliveryPO::getId,CsEquipmentDeliveryPO::getRunStatus));
result.forEach(item->{
item.setRunStatus(runStatusMap.get(item.getDeviceId()));
});
}
return result;
} }
private String getRunStatusDescription(Integer runStatus) { private String getRunStatusDescription(Integer runStatus) {
// 0运行1检修2停运3调试4退运
switch (runStatus) { switch (runStatus) {
case 0:
return "运行";
case 1: case 1:
return "检修"; return "离线";
case 2: case 2:
return "停运"; return "在线";
case 3:
return "调试";
case 4:
return "退运";
default: default:
return "未知"; return "未知";
} }

View File

@@ -0,0 +1,228 @@
package com.njcn.csdevice.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.mapper.CsLedgerMapper;
import com.njcn.csdevice.mapper.CsTopologyDiagramTemplateMapper;
import com.njcn.csdevice.pojo.param.*;
import com.njcn.csdevice.pojo.po.*;
import com.njcn.csdevice.pojo.vo.CsLedgerVO;
import com.njcn.csdevice.pojo.vo.EngineeringProjectRelationVo;
import com.njcn.csdevice.service.*;
import com.njcn.system.api.AreaFeignClient;
import com.njcn.system.pojo.po.Area;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 数据集表 服务实现类
* </p>
*
* @author xuyang
* @since 2026-01-29
*/
@Service
@RequiredArgsConstructor
public class EngineeringProjectServiceImpl implements IEngineeringProjectService {
private final CsEngineeringService csEngineeringService;
private final AppProjectService appProjectService;
private final ICsLedgerService csLedgerService;
private final CsLedgerMapper csLedgerMapper;
private final AppTopologyDiagramService appTopologyDiagramService;
private final AreaFeignClient areaFeignClient;
private final CsTopologyDiagramTemplateMapper csTopologyDiagramTemplateMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean addEngineering(CsEngineeringAddParm csEngineeringAddParm) {
boolean result = false;
//新增工程信息
CsEngineeringPO po1 = csEngineeringService.add(csEngineeringAddParm);
//新增cs_ledger数据
CsLedgerParam csLedgerParam = new CsLedgerParam();
csLedgerParam.setId(po1.getId());
csLedgerParam.setPid("9999999");
csLedgerParam.setName(csEngineeringAddParm.getName());
csLedgerParam.setLevel(0);
csLedgerParam.setRemark(csEngineeringAddParm.getDescription());
csLedgerParam.setSort(csEngineeringAddParm.getSort());
CsLedger po2 = csLedgerService.addLedgerTree(csLedgerParam);
if (ObjectUtil.isNotNull(po1) && ObjectUtil.isNotNull(po2)) {
result = true;
}
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateEngineering(CsEngineeringAuditParm csEngineeringAuditParm) {
//修改工程信息
CsEngineeringPO po1 = csEngineeringService.updateData(csEngineeringAuditParm);
//修改cs_ledger数据
CsLedgerParam.Update csLedgerParam = new CsLedgerParam.Update();
csLedgerParam.setId(po1.getId());
csLedgerParam.setName(csEngineeringAuditParm.getName());
csLedgerParam.setSort(csEngineeringAuditParm.getSort());
csLedgerService.updateLedgerTree(csLedgerParam);
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteEngineering(String id) {
//查询csledger数据
List<CsLedgerVO> allList = csLedgerMapper.getAll();
allList.forEach(item->{
if (Objects.equals(item.getPid(),id)) {
throw new BusinessException("请先删除该工程下的所有项目");
}
});
//删除工程信息
csEngineeringService.deleteData(id);
//删除台账信息
csLedgerService.deleteLedgerTree(id);
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean addProject(AppProjectAddParm param) {
boolean result = false;
//新增项目信息
AppProjectPO po1 = appProjectService.add(param);
//新增cs_ledger数据
CsLedgerParam csLedgerParam = new CsLedgerParam();
csLedgerParam.setId(po1.getId());
csLedgerParam.setPid(param.getEngineeringId());
csLedgerParam.setName(param.getName());
csLedgerParam.setLevel(1);
csLedgerParam.setSort(param.getSort());
CsLedger po2 = csLedgerService.addLedgerTree(csLedgerParam);
if (ObjectUtil.isNotNull(po1) && ObjectUtil.isNotNull(po2)) {
result = true;
}
//新增项目拓扑图
if (CollectionUtil.isNotEmpty(param.getTopoIds())) {
CsTopologyDiagramTemplate csTopologyDiagramTemplate = csTopologyDiagramTemplateMapper.selectById(param.getTopoIds().get(0));
AppTopologyDiagramPO po3 = new AppTopologyDiagramPO();
po3.setFilePath (csTopologyDiagramTemplate.getFilePath());
po3.setProjectId (po1.getId());
po3.setName (csTopologyDiagramTemplate.getName());
po3.setStatus ("1");
po3.setTopoId(param.getTopoIds().get(0));
appTopologyDiagramService.save(po3);
}
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateProject(AppProjectAuditParm param) {
//修改工程信息
AppProjectPO po1 = appProjectService.updateData(param);
//修改cs_ledger数据
CsLedgerParam.Update csLedgerParam = new CsLedgerParam.Update();
csLedgerParam.setId(po1.getId());
csLedgerParam.setPid(param.getEngineeringId());
csLedgerParam.setPids("0," + param.getEngineeringId());
csLedgerParam.setName(param.getName());
csLedgerParam.setRemark(param.getDescription());
csLedgerParam.setSort(param.getSort());
csLedgerService.updateLedgerTree(csLedgerParam);
//修改项目拓扑图
AppTopologyDiagramPO po2 = appTopologyDiagramService.getByProjectId(param.getId());
if (ObjectUtil.isNotNull(po2)) {
CsTopologyDiagramTemplate csTopologyDiagramTemplate = csTopologyDiagramTemplateMapper.selectById(param.getTopoIds().get(0));
po2.setId(po2.getId());
po2.setFilePath (csTopologyDiagramTemplate.getFilePath());
po2.setName (csTopologyDiagramTemplate.getName());
po2.setStatus ("1");
po2.setTopoId(param.getTopoIds().get(0));
appTopologyDiagramService.updateById(po2);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteProject(String id) {
//删除项目信息
appProjectService.delete(id);
//删除台账信息
csLedgerService.deleteLedgerTree(id);
//删除项目拓扑图
AppTopologyDiagramPO po2 = appTopologyDiagramService.getByProjectId(id);
if (ObjectUtil.isNotNull(po2)) {
po2.setStatus("0");
appTopologyDiagramService.updateById(po2);
}
return true;
}
@Override
public List<EngineeringProjectRelationVo> getList() {
List<EngineeringProjectRelationVo> result = new ArrayList<>();
//查询所有工程
LambdaQueryWrapper<CsEngineeringPO> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(CsEngineeringPO::getStatus,"1").orderByAsc(CsEngineeringPO::getSort);
List<CsEngineeringPO> list1 = csEngineeringService.list(queryWrapper1);
//查询所有项目
LambdaQueryWrapper<AppProjectPO> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(AppProjectPO::getStatus,"1").orderByAsc(AppProjectPO::getSort);
List<AppProjectPO> list2 = appProjectService.list(queryWrapper2);
Map<String,AppProjectPO> map = list2.stream().collect(Collectors.toMap(AppProjectPO::getId, item->item));
//查询所有拓扑图
LambdaQueryWrapper<AppTopologyDiagramPO> queryWrapper3 = new LambdaQueryWrapper<>();
queryWrapper3.eq(AppTopologyDiagramPO::getStatus,"1");
List<AppTopologyDiagramPO> list3 = appTopologyDiagramService.list(queryWrapper3);
Map<String,AppTopologyDiagramPO> map3 = list3.stream().collect(Collectors.toMap(AppTopologyDiagramPO::getProjectId, item->item));
//查询台账信息
List<CsLedgerVO> allList = csLedgerMapper.getAll();
if (CollectionUtil.isNotEmpty(list1)) {
list1.forEach(item->{
EngineeringProjectRelationVo temp = new EngineeringProjectRelationVo();
temp.setEngineeringId(item.getId());
temp.setEngineeringName(item.getName());
temp.setProvinceId(item.getProvince());
temp.setCityId(item.getCity());
Area area1 = areaFeignClient.selectIdArea(item.getProvince()).getData();
Area area2 = areaFeignClient.selectIdArea(item.getCity()).getData();
temp.setEngineeringAreaName((ObjectUtil.isNotNull(area1)?area1.getName():"") + (ObjectUtil.isNotNull(area2)?area2.getName():""));
temp.setEngineeringRemark(item.getDescription());
temp.setEngineeringSort(item.getSort());
List<CsLedgerVO> projectList = allList.stream().filter(item2->item2.getPid().equals(item.getId())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(projectList)) {
List<EngineeringProjectRelationVo.ProjectInfo> projectInfoList = new ArrayList<>();
projectList.forEach(item2->{
AppProjectPO po = map.get(item2.getId());
EngineeringProjectRelationVo.ProjectInfo projectInfo = new EngineeringProjectRelationVo.ProjectInfo();
projectInfo.setProjectId(po.getId());
projectInfo.setProjectName(po.getName());
projectInfo.setProjectArea(po.getArea());
projectInfo.setProjectRemark(po.getDescription());
projectInfo.setProjectSort(po.getSort());
projectInfo.setTopologyInfoId(Objects.isNull(map3.get(po.getId()))?null:map3.get(po.getId()).getTopoId());
projectInfo.setTopologyInfo(Objects.isNull(map3.get(po.getId()))?null:map3.get(po.getId()).getFilePath());
projectInfoList.add(projectInfo);
});
temp.setProjectInfoList(projectInfoList);
}
result.add(temp);
});
}
return result;
}
}

View File

@@ -8,10 +8,10 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.csp.sentinel.util.StringUtil; import com.alibaba.csp.sentinel.util.StringUtil;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.access.utils.ChannelObjectUtil; import com.njcn.access.utils.ChannelObjectUtil;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.mapper.OverlimitMapper;
import com.njcn.csdevice.param.IcdBzParam; import com.njcn.csdevice.param.IcdBzParam;
import com.njcn.csdevice.param.IcdLedgerParam; import com.njcn.csdevice.param.IcdLedgerParam;
import com.njcn.csdevice.param.IcdParam; import com.njcn.csdevice.param.IcdParam;
@@ -22,9 +22,11 @@ import com.njcn.csdevice.pojo.po.*;
import com.njcn.csdevice.pojo.vo.CldLedgerVo; import com.njcn.csdevice.pojo.vo.CldLedgerVo;
import com.njcn.csdevice.pojo.vo.DeviceInfo; import com.njcn.csdevice.pojo.vo.DeviceInfo;
import com.njcn.csdevice.service.*; import com.njcn.csdevice.service.*;
import com.njcn.csdevice.utils.COverlimitUtil;
import com.njcn.csharmonic.api.EventFeignClient; import com.njcn.csharmonic.api.EventFeignClient;
import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.csharmonic.pojo.po.CsEventPO;
import com.njcn.device.biz.mapper.OverLimitWlMapper;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.biz.utils.COverlimitUtil;
import com.njcn.mq.message.BZEventMessage; import com.njcn.mq.message.BZEventMessage;
import com.njcn.mq.template.BZEventMessageTemplate; import com.njcn.mq.template.BZEventMessageTemplate;
import com.njcn.redis.pojo.enums.AppRedisKey; import com.njcn.redis.pojo.enums.AppRedisKey;
@@ -60,7 +62,7 @@ class IcdServiceImpl implements IcdService {
private final EventFeignClient eventFeignClient; private final EventFeignClient eventFeignClient;
private final ICsTerminalLogsService csTerminalLogsService; private final ICsTerminalLogsService csTerminalLogsService;
private final ICsTerminalReplyService csTerminalReplyService; private final ICsTerminalReplyService csTerminalReplyService;
private final OverlimitMapper overlimitMapper; private final OverLimitWlMapper overLimitWlMapper;
private final DateTimeFormatter microsecondFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS"); private final DateTimeFormatter microsecondFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
@Override @Override
@@ -96,6 +98,7 @@ class IcdServiceImpl implements IcdService {
detail.setDevType(Objects.isNull(finalSysDicTreeMap.get(dev.getDevModel())) ? "/":finalSysDicTreeMap.get(dev.getDevModel()).getCode()); detail.setDevType(Objects.isNull(finalSysDicTreeMap.get(dev.getDevModel())) ? "/":finalSysDicTreeMap.get(dev.getDevModel()).getCode());
detail.setNode(dev.getNodeProcess()); detail.setNode(dev.getNodeProcess());
detail.setMaxProcessNum(node.getMaxProcessNum()); detail.setMaxProcessNum(node.getMaxProcessNum());
detail.setDevLogLevel(dev.getDevLogLevel());
// 只获取当前设备的监测点数据 // 只获取当前设备的监测点数据
List<CsLinePO> lines = lineMap.get(dev.getId()); List<CsLinePO> lines = lineMap.get(dev.getId());
@@ -114,6 +117,7 @@ class IcdServiceImpl implements IcdService {
monitorInfo.setPt2(line.getPt2Ratio()); monitorInfo.setPt2(line.getPt2Ratio());
monitorInfo.setCt1(line.getCtRatio()); monitorInfo.setCt1(line.getCtRatio());
monitorInfo.setCt2(line.getCt2Ratio()); monitorInfo.setCt2(line.getCt2Ratio());
monitorInfo.setLineLogLevel(line.getLineLogLevel());
monitorInfos.add(monitorInfo); monitorInfos.add(monitorInfo);
}); });
detail.setMonitorData(monitorInfos); detail.setMonitorData(monitorInfos);
@@ -126,6 +130,7 @@ class IcdServiceImpl implements IcdService {
} }
@Override @Override
@DSTransactional
public void addLedgerInfo(IcdLedgerParam param) { public void addLedgerInfo(IcdLedgerParam param) {
// 第一种:全流程创建 // 第一种:全流程创建
if (isAllIndicesNull(param)) { if (isAllIndicesNull(param)) {
@@ -581,7 +586,6 @@ class IcdServiceImpl implements IcdService {
&& ObjectUtil.isNull(param.getDevIndex()); && ObjectUtil.isNull(param.getDevIndex());
} }
@Transactional(rollbackFor = Exception.class)
public void handleFullProcessCreation(@NotNull IcdLedgerParam param) { public void handleFullProcessCreation(@NotNull IcdLedgerParam param) {
if (ObjectUtil.isNotNull(param.getEngineering())) { if (ObjectUtil.isNotNull(param.getEngineering())) {
CsEngineeringPO po1 = csEngineeringService.addEngineering(param.getEngineering()); CsEngineeringPO po1 = csEngineeringService.addEngineering(param.getEngineering());
@@ -590,17 +594,14 @@ class IcdServiceImpl implements IcdService {
} }
} }
@Transactional(rollbackFor = Exception.class)
public void handleFromEngineeringCreation(IcdLedgerParam param) { public void handleFromEngineeringCreation(IcdLedgerParam param) {
createProjectAndDevices(param); createProjectAndDevices(param);
} }
@Transactional(rollbackFor = Exception.class)
public void handleFromProjectCreation(IcdLedgerParam param) { public void handleFromProjectCreation(IcdLedgerParam param) {
saveDevicesAndLines(param); saveDevicesAndLines(param);
} }
@Transactional(rollbackFor = Exception.class)
public void handleFromDeviceCreation(IcdLedgerParam param) { public void handleFromDeviceCreation(IcdLedgerParam param) {
saveLines(param); saveLines(param);
} }
@@ -634,7 +635,6 @@ class IcdServiceImpl implements IcdService {
saveLines(param); saveLines(param);
} }
@Transactional(rollbackFor = Exception.class)
public void saveLines(IcdLedgerParam param) { public void saveLines(IcdLedgerParam param) {
List<CsLineParam> lineList = param.getLine(); List<CsLineParam> lineList = param.getLine();
if (CollectionUtil.isNotEmpty(lineList)) { if (CollectionUtil.isNotEmpty(lineList)) {
@@ -660,7 +660,7 @@ class IcdServiceImpl implements IcdService {
//新增监测点限值 //新增监测点限值
Overlimit overlimit = COverlimitUtil.globalAssemble(line.getVolGrade().floatValue(), line.getProtocolCapacity().floatValue(),line.getDevCapacity().floatValue(),line.getShortCircuitCapacity().floatValue(),0,0); Overlimit overlimit = COverlimitUtil.globalAssemble(line.getVolGrade().floatValue(), line.getProtocolCapacity().floatValue(),line.getDevCapacity().floatValue(),line.getShortCircuitCapacity().floatValue(),0,0);
overlimit.setId(po.getLineId()); overlimit.setId(po.getLineId());
overlimitMapper.insert(overlimit); overLimitWlMapper.insert(overlimit);
} }
//新增台账日志 //新增台账日志

View File

@@ -1,13 +1,14 @@
package com.njcn.csdevice.service.impl; package com.njcn.csdevice.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.csdevice.mapper.CsEquipmentDeliveryMapper;
import com.njcn.csdevice.param.LineCountEvaluateParam; import com.njcn.csdevice.param.LineCountEvaluateParam;
import com.njcn.csdevice.pojo.dto.PqsCommunicateDto; import com.njcn.csdevice.pojo.dto.PqsCommunicateDto;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.service.CsEquipmentDeliveryService;
import com.njcn.csdevice.service.ICsCommunicateService; import com.njcn.csdevice.service.ICsCommunicateService;
import com.njcn.influx.imapper.PqsCommunicateMapper; import com.njcn.influx.imapper.PqsCommunicateMapper;
import com.njcn.influx.pojo.dto.StatisticalDataDTO;
import com.njcn.influx.pojo.po.PqsCommunicate; import com.njcn.influx.pojo.po.PqsCommunicate;
import com.njcn.influx.query.InfluxQueryWrapper; import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.influx.utils.InfluxDbUtils; import com.njcn.influx.utils.InfluxDbUtils;
@@ -26,6 +27,7 @@ import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
@@ -39,7 +41,7 @@ import java.util.concurrent.TimeUnit;
public class InfluxdbCsCommunicateServiceImpl implements ICsCommunicateService { public class InfluxdbCsCommunicateServiceImpl implements ICsCommunicateService {
private final InfluxDbUtils influxDbUtils; private final InfluxDbUtils influxDbUtils;
private final CsEquipmentDeliveryService csEquipmentDeliveryService; private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper;
@Resource @Resource
private PqsCommunicateMapper pqsCommunicateMapper; private PqsCommunicateMapper pqsCommunicateMapper;
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault()); private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
@@ -76,14 +78,154 @@ public class InfluxdbCsCommunicateServiceImpl implements ICsCommunicateService {
public List<PqsCommunicateDto> getRawData(LineCountEvaluateParam lineParam) { public List<PqsCommunicateDto> getRawData(LineCountEvaluateParam lineParam) {
List<PqsCommunicateDto> result = new ArrayList<>(); List<PqsCommunicateDto> result = new ArrayList<>();
List<PqsCommunicate> list = getPqsCommunicateData(lineParam); List<PqsCommunicate> list = getPqsCommunicateData(lineParam);
list.forEach(item -> {
PqsCommunicateDto dto = new PqsCommunicateDto();
BeanUtils.copyProperties(item, dto);
dto.setTime(DATE_TIME_FORMATTER.format(item.getTime()));
result.add(dto);
});
return result;
if (CollectionUtil.isNotEmpty(list)) {
result = processWithData(list, lineParam);
} else {
result = processWithoutData(lineParam);
}
return result;
}
/**
* 处理有数据的情况
*/
private List<PqsCommunicateDto> processWithData(List<PqsCommunicate> list, LineCountEvaluateParam lineParam) {
List<PqsCommunicateDto> result = new ArrayList<>();
int lastIndex = list.size() - 1;
for (int i = 0; i < list.size(); i++) {
PqsCommunicate item = list.get(i);
PqsCommunicateDto dto = convertToDto(item);
result.add(dto);
// 如果是最后一组数据,补充结束数据点
if (i == lastIndex) {
PqsCommunicateDto endData = createEndDataDto(item, lineParam);
result.add(endData);
}
}
return result;
}
/**
* 处理无数据的情况
*/
private List<PqsCommunicateDto> processWithoutData(LineCountEvaluateParam lineParam) {
LocalDateTime endTime = getEndDateTime(lineParam.getEndTime());
LocalDateTime currentTime = LocalDateTime.now();
// 判断 endTime 是否早于最早入库时间
List<PqsCommunicateDto> firstData = getRawDataFirst(lineParam);
if (CollectionUtil.isNotEmpty(firstData)) {
LocalDateTime firstTime = parseDateTime(firstData.get(0).getTime());
if (endTime.isBefore(firstTime)) {
return Collections.emptyList();
}
}
// 判断 startTime 是否晚于当前时间
LocalDateTime startTime = getStartDateTime(lineParam.getStartTime());
if (startTime.isAfter(currentTime)) {
return Collections.emptyList();
}
// 获取最新数据并创建起始和结束点
List<PqsCommunicateDto> latestData = getRawDataLatest(lineParam);
if (CollectionUtil.isEmpty(latestData)) {
return Collections.emptyList();
}
return createStartAndEndDtos(latestData.get(0), lineParam);
}
/**
* 创建起始和结束数据点
*/
private List<PqsCommunicateDto> createStartAndEndDtos(PqsCommunicateDto templateDto, LineCountEvaluateParam lineParam) {
List<PqsCommunicateDto> result = new ArrayList<>();
// 创建起始点
PqsCommunicateDto startDto = new PqsCommunicateDto();
copyDtoProperties(templateDto, startDto);
startDto.setTime(lineParam.getStartTime() + " 00:00:00");
result.add(startDto);
// 创建结束点
PqsCommunicateDto endDto = new PqsCommunicateDto();
copyDtoProperties(templateDto, endDto);
endDto.setTime(getEndTimeString(lineParam));
result.add(endDto);
return result;
}
/**
* 创建结束数据点
*/
private PqsCommunicateDto createEndDataDto(PqsCommunicate item, LineCountEvaluateParam lineParam) {
PqsCommunicateDto endData = new PqsCommunicateDto();
endData.setTime(getEndTimeString(lineParam));
endData.setDevId(lineParam.getLineId().get(0));
endData.setType(item.getType());
endData.setDescription(item.getDescription());
return endData;
}
/**
* 转换实体为DTO
*/
private PqsCommunicateDto convertToDto(PqsCommunicate item) {
PqsCommunicateDto dto = new PqsCommunicateDto();
BeanUtils.copyProperties(item, dto);
dto.setTime(DATE_TIME_FORMATTER.format(item.getTime()));
return dto;
}
/**
* 复制DTO属性
*/
private void copyDtoProperties(PqsCommunicateDto source, PqsCommunicateDto target) {
target.setDevId(source.getDevId());
target.setType(source.getType());
target.setDescription(source.getDescription());
}
/**
* 获取结束时间字符串
*/
private String getEndTimeString(LineCountEvaluateParam lineParam) {
LocalDateTime currentTime = LocalDateTime.now();
LocalDateTime endTime = getEndDateTime(lineParam.getEndTime());
if (endTime.isBefore(currentTime)) {
return lineParam.getEndTime() + " 23:59:59";
} else {
return currentTime.format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN));
}
}
/**
* 解析日期时间字符串
*/
private LocalDateTime parseDateTime(String dateTimeStr) {
return LocalDateTime.parse(dateTimeStr, DATE_TIME_FORMATTER);
}
/**
* 获取开始时间
*/
private LocalDateTime getStartDateTime(String startDate) {
return parseDateTime(startDate + " 00:00:00");
}
/**
* 获取结束时间
*/
private LocalDateTime getEndDateTime(String endDate) {
return parseDateTime(endDate + " 23:59:59");
} }
@Override @Override
@@ -111,7 +253,10 @@ public class InfluxdbCsCommunicateServiceImpl implements ICsCommunicateService {
@Override @Override
public void insertion(PqsCommunicateDto pqsCommunicateDto) { public void insertion(PqsCommunicateDto pqsCommunicateDto) {
//根据NDID获取装置信息 //根据NDID获取装置信息
CsEquipmentDeliveryPO po = csEquipmentDeliveryService.findDevByNDid(pqsCommunicateDto.getDevId()); LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getNdid,pqsCommunicateDto.getDevId()).ne(CsEquipmentDeliveryPO::getRunStatus,0);
CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectOne(lambdaQueryWrapper);
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class); InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class);
influxQueryWrapper.eq(PqsCommunicate::getDevId,po.getId()).timeDesc().limit(1); influxQueryWrapper.eq(PqsCommunicate::getDevId,po.getId()).timeDesc().limit(1);
List<PqsCommunicate> pqsCommunicates = pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper); List<PqsCommunicate> pqsCommunicates = pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper);
@@ -138,8 +283,28 @@ public class InfluxdbCsCommunicateServiceImpl implements ICsCommunicateService {
.select(PqsCommunicate::getDevId) .select(PqsCommunicate::getDevId)
.select(PqsCommunicate::getDescription) .select(PqsCommunicate::getDescription)
.select(PqsCommunicate::getType) .select(PqsCommunicate::getType)
.between(PqsCommunicate::getTime, lineParam.getStartTime(), lineParam.getEndTime()) .between(PqsCommunicate::getTime, lineParam.getStartTime() + " 00:00:00", lineParam.getEndTime() + " 23:59:59")
.timeAsc(); .timeAsc();
return pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper); return pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper);
} }
public List<PqsCommunicateDto> getRawDataFirst(LineCountEvaluateParam lineParam) {
List<PqsCommunicateDto> result = new ArrayList<>();
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class);
influxQueryWrapper.regular(PqsCommunicate::getDevId, lineParam.getLineId())
.select(PqsCommunicate::getTime)
.select(PqsCommunicate::getDevId)
.select(PqsCommunicate::getDescription)
.select(PqsCommunicate::getType)
.timeAsc()
.limit(1);
List<PqsCommunicate> list = pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper);
list.forEach(item -> {
PqsCommunicateDto dto = new PqsCommunicateDto();
BeanUtils.copyProperties(item, dto);
dto.setTime(DATE_TIME_FORMATTER.format(item.getTime()));
result.add(dto);
});
return result;
}
} }

View File

@@ -1,11 +1,12 @@
package com.njcn.csdevice.service.impl; package com.njcn.csdevice.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csdevice.mapper.OverlimitMapper;
import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.csdevice.pojo.vo.LineOverLimitVO; import com.njcn.csdevice.pojo.vo.LineOverLimitVO;
import com.njcn.csdevice.service.IOverLimitService; import com.njcn.csdevice.service.IOverLimitService;
import com.njcn.device.biz.mapper.OverLimitWlMapper;
import com.njcn.device.biz.pojo.po.Overlimit;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -15,9 +16,10 @@ import org.springframework.stereotype.Service;
* @author cdf * @author cdf
* @date 2023/6/7 * @date 2023/6/7
*/ */
@DS("sjzx")
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class OverLimitServiceImpl extends ServiceImpl<OverlimitMapper, Overlimit> implements IOverLimitService { public class OverLimitServiceImpl extends ServiceImpl<OverLimitWlMapper, Overlimit> implements IOverLimitService {
@Override @Override

View File

@@ -47,7 +47,7 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService {
QueryWrapper<CsLedger> csLedgerQueryWrapper = new QueryWrapper<>(); QueryWrapper<CsLedger> csLedgerQueryWrapper = new QueryWrapper<>();
List<String> collect = new ArrayList<>(); List<String> collect = new ArrayList<>();
if(Objects.equals(role,AppRoleEnum.APP_VIP_USER.getCode())){ if(Objects.equals(role,AppRoleEnum.APP_VIP_USER.getCode()) || Objects.equals(role,AppRoleEnum.REGULAR_USER_8000.getCode())){
csDeviceUserPOQueryWrapper.clear(); csDeviceUserPOQueryWrapper.clear();
csEngineeringUserPOQueryWrapper.clear(); csEngineeringUserPOQueryWrapper.clear();
csLedgerQueryWrapper.clear(); csLedgerQueryWrapper.clear();
@@ -94,7 +94,7 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService {
} }
// ||Objects.equals(role,"bxs_user") // ||Objects.equals(role,"bxs_user")
else if(Objects.equals(role,AppRoleEnum.ROOT.getCode())||Objects.equals(role,AppRoleEnum.OPERATION_MANAGER.getCode())){ else if(Objects.equals(role,AppRoleEnum.ROOT.getCode()) || Objects.equals(role,AppRoleEnum.OPERATION_MANAGER.getCode()) || Objects.equals(role,AppRoleEnum.REGULAR_USER.getCode()) ){
List<CsEngineeringPO> csEngineeringPOS = csEngineeringMapper.selectList(null); List<CsEngineeringPO> csEngineeringPOS = csEngineeringMapper.selectList(null);
collect =csEngineeringPOS.stream().filter(temp->Objects.equals(temp.getStatus(),"1")).map(CsEngineeringPO::getId).collect(Collectors.toList()); collect =csEngineeringPOS.stream().filter(temp->Objects.equals(temp.getStatus(),"1")).map(CsEngineeringPO::getId).collect(Collectors.toList());
} }
@@ -116,7 +116,7 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService {
List<String> collect = new ArrayList<>(); List<String> collect = new ArrayList<>();
if( if(
Objects.equals(role,AppRoleEnum.APP_VIP_USER.getCode())){ Objects.equals(role,AppRoleEnum.APP_VIP_USER.getCode()) || Objects.equals(role,AppRoleEnum.REGULAR_USER_8000.getCode())){
csDeviceUserPOQueryWrapper.clear(); csDeviceUserPOQueryWrapper.clear();
csDeviceUserPOQueryWrapper.eq("status","1").and(wq -> { csDeviceUserPOQueryWrapper.eq("status","1").and(wq -> {
wq.eq("primary_user_id", userIndex) wq.eq("primary_user_id", userIndex)
@@ -198,7 +198,7 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService {
} }
// ||Objects.equals(role,"bxs_user") // ||Objects.equals(role,"bxs_user")
else if(Objects.equals(role,AppRoleEnum.ROOT.getCode())||Objects.equals(role,AppRoleEnum.OPERATION_MANAGER.getCode())){ else if(Objects.equals(role,AppRoleEnum.ROOT.getCode())||Objects.equals(role,AppRoleEnum.OPERATION_MANAGER.getCode()) || Objects.equals(role,AppRoleEnum.REGULAR_USER.getCode())){
csLedgerQueryWrapper.clear(); csLedgerQueryWrapper.clear();
csLedgerQueryWrapper.eq("level",2).eq("state",1); csLedgerQueryWrapper.eq("level",2).eq("state",1);
List<CsLedger> csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper); List<CsLedger> csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper);

View File

@@ -24,7 +24,6 @@ import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
import com.njcn.csdevice.pojo.param.WlRecordParam; import com.njcn.csdevice.pojo.param.WlRecordParam;
import com.njcn.csdevice.pojo.po.CsDataSet; import com.njcn.csdevice.pojo.po.CsDataSet;
import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.pojo.po.Overlimit;
import com.njcn.csdevice.pojo.po.WlRecord; import com.njcn.csdevice.pojo.po.WlRecord;
import com.njcn.csdevice.pojo.vo.RecordAllDevTreeVo; import com.njcn.csdevice.pojo.vo.RecordAllDevTreeVo;
import com.njcn.csdevice.pojo.vo.RecordTreeVo; import com.njcn.csdevice.pojo.vo.RecordTreeVo;
@@ -32,10 +31,11 @@ import com.njcn.csdevice.pojo.vo.RecordVo;
import com.njcn.csdevice.service.IOverLimitService; import com.njcn.csdevice.service.IOverLimitService;
import com.njcn.csdevice.service.IWlRecordService; import com.njcn.csdevice.service.IWlRecordService;
import com.njcn.csdevice.util.InfluxDbParamUtil; import com.njcn.csdevice.util.InfluxDbParamUtil;
import com.njcn.csdevice.utils.COverlimitUtil;
import com.njcn.csdevice.utils.StringUtil; import com.njcn.csdevice.utils.StringUtil;
import com.njcn.csharmonic.param.CommonStatisticalQueryParam; import com.njcn.csharmonic.param.CommonStatisticalQueryParam;
import com.njcn.csharmonic.pojo.vo.ThdDataVO; import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.biz.utils.COverlimitUtil;
import com.njcn.influx.imapper.CommonMapper; import com.njcn.influx.imapper.CommonMapper;
import com.njcn.influx.pojo.bo.CommonQueryParam; import com.njcn.influx.pojo.bo.CommonQueryParam;
import com.njcn.influx.pojo.constant.InfluxDBTableConstant; import com.njcn.influx.pojo.constant.InfluxDBTableConstant;

View File

@@ -0,0 +1,20 @@
package com.njcn.csharmonic.param;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author xy
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CldWarnParam extends BaseParam implements Serializable {
@ApiModelProperty("告警等级")
private String level;
}

View File

@@ -28,6 +28,11 @@ public class CsConfigurationParm {
private String remark; private String remark;
/**
* 数据范围 0 私有 1全局
*/
private int scope;
private List<String> projectIds; private List<String> projectIds;
@@ -55,6 +60,10 @@ public class CsConfigurationParm {
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public static class CsConfigurationQueryParam extends BaseParam { public static class CsConfigurationQueryParam extends BaseParam {
private String id; private String id;
@ApiModelProperty(value = "当前用户ID")
private String currentUserId;
@ApiModelProperty(value = "当前用户角色")
private String roleCode;
} }

View File

@@ -16,13 +16,13 @@ public class SensitiveUserReportQueryParam {
@ApiModelProperty(name = "tempId",value = "模板ID") @ApiModelProperty(name = "tempId",value = "模板ID")
private String tempId; private String tempId;
@ApiModelProperty(name = "searchBeginTime", value = "开始时间") @ApiModelProperty(name = "startTime", value = "开始时间")
@NotBlank(message = "起始时间不可为空") @NotBlank(message = "起始时间不可为空")
@DateTimeStrValid(message = "起始时间格式出错") @DateTimeStrValid(message = "起始时间格式出错")
private String searchBeginTime; private String startTime;
@ApiModelProperty(name = "searchEndTime", value = "结束时间") @ApiModelProperty(name = "endTime", value = "结束时间")
@NotBlank(message = "结束时间不可为空") @NotBlank(message = "结束时间不可为空")
private String searchEndTime; private String endTime;
} }

View File

@@ -12,7 +12,6 @@ import java.util.List;
public class SensitiveUserTrendDataQueryParam { public class SensitiveUserTrendDataQueryParam {
@ApiModelProperty(value = "检测对象ID") @ApiModelProperty(value = "检测对象ID")
@NotBlank(message = "检测对象ID不可为空")
private String sensitiveUserId; private String sensitiveUserId;
@ApiModelProperty(name = "searchBeginTime", value = "开始时间") @ApiModelProperty(name = "searchBeginTime", value = "开始时间")
@@ -37,4 +36,8 @@ public class SensitiveUserTrendDataQueryParam {
@ApiModelProperty(value = "频次2-50") @ApiModelProperty(value = "频次2-50")
private String frequency; private String frequency;
//采用这个频次,上面那个频次用于多指标筛选
@ApiModelProperty(value = "频次2-50")
private Integer harmonicCount;
} }

View File

@@ -0,0 +1,22 @@
package com.njcn.csharmonic.pojo.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Description:
* Date: 2025/09/18 下午 2:00【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RealTimeDataDTO {
private Integer code;
private String message;
private Integer type =1;
// private List<RealTimeDataVo> realTimeDataVoList;
}

View File

@@ -56,4 +56,6 @@ public class ReportTemplateDTO {
*/ */
private String value; private String value;
private String lowValue;
} }

View File

@@ -39,8 +39,11 @@ public class ZuTaiDTO {
@SerializedName("lineId") @SerializedName("lineId")
private String lineId; private String lineId;
@SerializedName("UIDType")
private Boolean uIdType;
@SerializedName("UID") @SerializedName("UID")
private List<String> uId; private List<Object> uId;
@SerializedName("UIDName") @SerializedName("UIDName")
private String target; private String target;

View File

@@ -0,0 +1,51 @@
package com.njcn.csharmonic.pojo.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/14 20:07
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ZuTaiNewDTO {
private List<DiagramElement> json;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class DiagramElement{
private String id;
private String title;
private String keyId;
private String type;
private boolean resize;
private boolean rotate;
private boolean lock;
private boolean active;
private boolean hide;
private String tag;
private boolean use_proportional_scaling;
private String lineId;
private List<String> lineList;
private String lineName;
@JsonProperty("UID")
private List<Object> uid;
@JsonProperty("UIDNames")
private List<String> uidNames;
private List<String> unit;
private Boolean uidType;
}
}

View File

@@ -20,6 +20,12 @@ public class EventStatisticParam extends BaseParam {
@ApiModelProperty("监测点id") @ApiModelProperty("监测点id")
private String lineId; private String lineId;
/**
* 暂态事件类型
*/
@ApiModelProperty("暂态事件类型 0:全部 1:暂降 2:中断 3:暂升")
private Integer eventType;
/** /**
* 安装位置 * 安装位置
*/ */

View File

@@ -1,42 +1,42 @@
package com.njcn.csharmonic.pojo.param; //package com.njcn.csharmonic.pojo.param;
//
import io.swagger.annotations.ApiModelProperty; //import io.swagger.annotations.ApiModelProperty;
import lombok.Data; //import lombok.Data;
//
/** ///**
* 模板动态更新数据 // * 模板动态更新数据
* // *
* @author qijian // * @author qijian
* @date 2022/10/11 // * @date 2022/10/11
*/ // */
@Data //@Data
public class ReportSearchParam { //public class ReportSearchParam {
//
@ApiModelProperty(name = "lineId",value = "监测点id") // @ApiModelProperty(name = "lineId",value = "监测点id")
private String lineId; // private String lineId;
//
@ApiModelProperty(name = "tempId",value = "模板ID") // @ApiModelProperty(name = "tempId",value = "模板ID")
private String tempId; // private String tempId;
//
@ApiModelProperty(name = "activation",value = "激活状态") // @ApiModelProperty(name = "activation",value = "激活状态")
private Integer activation; // private Integer activation;
//
@ApiModelProperty(name = "type",value = "报表类型") // @ApiModelProperty(name = "type",value = "报表类型")
private Integer type; // private Integer type;
//
@ApiModelProperty(name = "startTime",value = "开始时间") // @ApiModelProperty(name = "startTime",value = "开始时间")
private String startTime; // private String startTime;
//
@ApiModelProperty(name = "endTime",value = "结束时间") // @ApiModelProperty(name = "endTime",value = "结束时间")
private String endTime; // private String endTime;
//
@ApiModelProperty(name = "deptId",value = "部门ID") // @ApiModelProperty(name = "deptId",value = "部门ID")
private String deptId; // private String deptId;
//
//目前用于区分不同系统资源null默认 1.无线系统配合cs-device // //目前用于区分不同系统资源null默认 1.无线系统配合cs-device
private Integer resourceType; // private Integer resourceType;
//
//浙江无线报表特殊标识 null为通用报表 1.浙江无线报表 // //浙江无线报表特殊标识 null为通用报表 1.浙江无线报表
private Integer customType; // private Integer customType;
//
} //}

View File

@@ -45,6 +45,12 @@ public class ReportTemplateParam {
@ApiModelProperty(name = "reportForm",value = "报表类型",required = true) @ApiModelProperty(name = "reportForm",value = "报表类型",required = true)
private String reportForm; private String reportForm;
@ApiModelProperty(name = "wiringMethod",value = "接线方式",required = true)
private String wiringMethod;
@ApiModelProperty(name = "sort",value = "排序",required = true)
private Integer sort;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)

View File

@@ -1,75 +1,75 @@
package com.njcn.csharmonic.pojo.param.eventReport; //package com.njcn.csharmonic.pojo.param.eventReport;
//
import io.swagger.annotations.ApiModelProperty; //import io.swagger.annotations.ApiModelProperty;
import lombok.Data; //import lombok.Data;
//
import java.io.Serializable; //import java.io.Serializable;
//
/** ///**
* @author xxy // * @author xxy
* @version 1.0.0 // * @version 1.0.0
* @date 2022年08月16日 19:37 // * @date 2022年08月16日 19:37
*/ // */
@Data //@Data
public class ExportParam implements Serializable { //public class ExportParam implements Serializable {
//
@ApiModelProperty(name = "lineId",value = "监测点ID") // @ApiModelProperty(name = "lineId",value = "监测点ID")
private String lineId; // private String lineId;
//
@ApiModelProperty(name = "searchBeginTime",value = "开始时间") // @ApiModelProperty(name = "searchBeginTime",value = "开始时间")
private String searchBeginTime; // private String searchBeginTime;
//
@ApiModelProperty(name = "searchEndTime",value = "结束时间") // @ApiModelProperty(name = "searchEndTime",value = "结束时间")
private String searchEndTime; // private String searchEndTime;
//
@ApiModelProperty(name = "lineName",value = "监测点名称") // @ApiModelProperty(name = "lineName",value = "监测点名称")
private String lineName; // private String lineName;
//
@ApiModelProperty(name = "xq",value = "监测点详情",example = "true") // @ApiModelProperty(name = "xq",value = "监测点详情",example = "true")
private boolean xq; // private boolean xq;
//
@ApiModelProperty(name = "lb",value = "暂降事件列表",example = "true") // @ApiModelProperty(name = "lb",value = "暂降事件列表",example = "true")
private boolean lb; // private boolean lb;
//
@ApiModelProperty(name = "mdbg",value = "暂降密度表格",example = "false") // @ApiModelProperty(name = "mdbg",value = "暂降密度表格",example = "false")
private boolean mdbg; // private boolean mdbg;
//
@ApiModelProperty(name = "mdtx",value = "暂降密度图形",example = "false") // @ApiModelProperty(name = "mdtx",value = "暂降密度图形",example = "false")
private boolean mdtx; // private boolean mdtx;
//
@ApiModelProperty(name = "sjdITIC",value = "暂降时间点ITIC",example = "false") // @ApiModelProperty(name = "sjdITIC",value = "暂降时间点ITIC",example = "false")
private boolean sjdITIC; // private boolean sjdITIC;
//
@ApiModelProperty(name = "sjdF47",value = "暂降时间点F47",example = "false") // @ApiModelProperty(name = "sjdF47",value = "暂降时间点F47",example = "false")
private boolean sjdF47; // private boolean sjdF47;
//
@ApiModelProperty(name = "glfbfz",value = "概率分布暂降赋值",example = "false") // @ApiModelProperty(name = "glfbfz",value = "概率分布暂降赋值",example = "false")
private boolean glfbfz; // private boolean glfbfz;
//
@ApiModelProperty(name = "glfbsj",value = "概率分布持续时间",example = "false") // @ApiModelProperty(name = "glfbsj",value = "概率分布持续时间",example = "false")
private boolean glfbsj; // private boolean glfbsj;
//
@ApiModelProperty(name = "tjbg",value = "月份统计表格",example = "false") // @ApiModelProperty(name = "tjbg",value = "月份统计表格",example = "false")
private boolean tjbg; // private boolean tjbg;
//
@ApiModelProperty(name = "tjtx",value = "月份统计图形",example = "false") // @ApiModelProperty(name = "tjtx",value = "月份统计图形",example = "false")
private boolean tjtx; // private boolean tjtx;
//
@ApiModelProperty(name = "yybg",value = "暂降原因表格",example = "false") // @ApiModelProperty(name = "yybg",value = "暂降原因表格",example = "false")
private boolean yybg; // private boolean yybg;
//
@ApiModelProperty(name = "yytx",value = "暂降原因图形",example = "false") // @ApiModelProperty(name = "yytx",value = "暂降原因图形",example = "false")
private boolean yytx; // private boolean yytx;
//
@ApiModelProperty(name = "lxbg",value = "暂降类型表格",example = "false") // @ApiModelProperty(name = "lxbg",value = "暂降类型表格",example = "false")
private boolean lxbg; // private boolean lxbg;
//
@ApiModelProperty(name = "lxtx",value = "暂降类型图形",example = "false") // @ApiModelProperty(name = "lxtx",value = "暂降类型图形",example = "false")
private boolean lxtx; // private boolean lxtx;
//
@ApiModelProperty(name = "flag",value = "标识") // @ApiModelProperty(name = "flag",value = "标识")
private Integer flag; // private Integer flag;
//
@ApiModelProperty(name = "type",value = "系统区分(0:pq 1:pms)") // @ApiModelProperty(name = "type",value = "系统区分(0:pq 1:pms)")
private Integer type; // private Integer type;
} //}

View File

@@ -17,8 +17,8 @@ import lombok.NoArgsConstructor;
*/ */
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@TableName(value = "cs_configuration") @TableName(value = "cs_configuration")
public class CsConfigurationPO extends BaseEntity { public class CsConfigurationPO extends BaseEntity {
/** /**
* id * id
*/ */
@@ -31,6 +31,12 @@ public class CsConfigurationPO extends BaseEntity {
@TableField(value = "`name`") @TableField(value = "`name`")
private String name; private String name;
/**
* 数据范围 0 私有 1全局
*/
@TableField(value = "scope")
private int scope;
@TableField(value = "image_path") @TableField(value = "image_path")
private String imagePath; private String imagePath;
@@ -50,7 +56,6 @@ public class CsConfigurationPO extends BaseEntity {
private String status; private String status;
public static final String COL_ID = "id"; public static final String COL_ID = "id";
public static final String COL_NAME = "name"; public static final String COL_NAME = "name";

View File

@@ -0,0 +1,20 @@
package com.njcn.csharmonic.pojo.po;
import lombok.Data;
import java.io.Serializable;
@Data
public class CsPageUser implements Serializable {
/**
* 组态界面ID
*/
private String pageId;
/**
* 用户ID
*/
private String userId;
}

View File

@@ -1,37 +1,37 @@
package com.njcn.csharmonic.pojo.po; //package com.njcn.csharmonic.pojo.po;
//
import com.baomidou.mybatisplus.annotation.TableName; //import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity; //import com.njcn.db.bo.BaseEntity;
import lombok.Data; //import lombok.Data;
import lombok.EqualsAndHashCode; //import lombok.EqualsAndHashCode;
//
//
/** ///**
* pqs // * pqs
* 自定义报表 // * 自定义报表
* @author cdf // * @author cdf
* @date 2022/8/16 // * @date 2022/8/16
*/ // */
@Data //@Data
@EqualsAndHashCode(callSuper = true) //@EqualsAndHashCode(callSuper = true)
@TableName(value = "sys_excel_rpt_temp") //@TableName(value = "sys_excel_rpt_temp")
public class ExcelRptTemp extends BaseEntity { //public class ExcelRptTemp extends BaseEntity {
private String id; // private String id;
//
private String name; // private String name;
//
private String content; // private String content;
//
private Integer activation; // private Integer activation;
//
private Integer state; // private Integer state;
//
private String valueTitle; // private String valueTitle;
//
private String reportType; // private String reportType;
//
private String reportForm; // private String reportForm;
//
private Integer sort; // private Integer sort;
//
} //}

View File

@@ -1,5 +1,6 @@
package com.njcn.csharmonic.pojo.po; package com.njcn.csharmonic.pojo.po;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity; import com.njcn.db.bo.BaseEntity;
import lombok.Getter; import lombok.Getter;
@@ -7,6 +8,8 @@ import lombok.Setter;
import java.io.Serializable; import java.io.Serializable;
import static com.baomidou.mybatisplus.annotation.IdType.ASSIGN_ID;
/** /**
* <p> * <p>
* *
@@ -25,6 +28,7 @@ public class PqSensitiveUser extends BaseEntity implements Serializable{
/** /**
* id * id
*/ */
@TableId(value = "id",type = ASSIGN_ID)
private String id; private String id;
/** /**

View File

@@ -0,0 +1,127 @@
//package com.njcn.csharmonic.pojo.po;
//
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.annotation.TableField;
//import com.baomidou.mybatisplus.annotation.TableId;
//import com.baomidou.mybatisplus.annotation.TableName;
//import com.fasterxml.jackson.annotation.JsonFormat;
//import io.swagger.annotations.ApiModel;
//import io.swagger.annotations.ApiModelProperty;
//import lombok.Data;
//
//import java.io.Serializable;
//import java.time.LocalDateTime;
//
///**
// * 暂降明细实体类
// *
// * @author yzh
// * @since 2022-10-12 18:34:55
// */
//@Data
//@TableName("r_mp_event_detail")
//@ApiModel(value="RmpEventDetail对象")
//public class RmpEventDetailPO implements Serializable {
// private static final long serialVersionUID = 1L;
//
// @ApiModelProperty(value = "暂时事件ID")
// @TableId(value = "event_id", type = IdType.ASSIGN_ID)
// private String eventId;
//
// @ApiModelProperty(value = "监测点ID")
// private String measurementPointId;
//
// @ApiModelProperty(value = "监测点ID(复制)")
// @TableField("measurement_point_id")
// private String lineId;
//
// @ApiModelProperty(value = "统计类型")
// private String eventType;
//
// @ApiModelProperty(value = "暂降原因Event_Reason")
// @TableField("advance_reason")
// private String advanceReason;
//
// @ApiModelProperty(value = "暂降类型Event_Type")
// @TableField("advance_type")
// private String advanceType;
//
// @ApiModelProperty(value = "事件关联分析表Guid")
// private String eventassIndex;
//
// @ApiModelProperty(value = "dq计算持续时间 ")
// private Double dqTime;
//
// @ApiModelProperty(value = "特征值计算更新时间外键PQS_Relevance的Time字段")
// private LocalDateTime dealTime;
//
// @ApiModelProperty(value = "默认事件个数为0")
// private Integer num;
//
// @ApiModelProperty(value = "波形文件是否从装置招到本地(0未招1已招)默认值为0")
// private Integer fileFlag;
//
// @ApiModelProperty(value = "特征值计算标志0未处理1已处理; 2已处理无结果;3计算失败默认值为0")
// private Integer dealFlag;
//
// @ApiModelProperty(value = "处理结果第一条事件发生时间(读comtra文件获取)")
// private LocalDateTime firstTime;
//
// @ApiModelProperty(value = "处理结果第一条事件暂降类型字典表PQS_Dicdata")
// private String firstType;
//
// @ApiModelProperty(value = "处理结果第一条事件发生时间毫秒(读comtra文件获取)")
// private Double firstMs;
//
// @ApiModelProperty(value = "暂降能量")
// private Double energy;
//
// @ApiModelProperty(value = "暂降严重度")
// private Double severity;
//
// @ApiModelProperty(value = "暂降源与监测位置关系 Upper:上游Lower :下游Unknown :未知;为空则是未计算")
// private String sagsource;
//
// @ApiModelProperty(value = "开始时间")
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
// private LocalDateTime startTime;
//
// @ApiModelProperty(value = "格式化开始时间")
// @TableField(exist = false)
// private String formatTime;
//
//
// @ApiModelProperty(value = "持续时间,单位秒")
// private Double duration;
//
// @ApiModelProperty(value = "特征幅值")
// private Double featureAmplitude;
//
// @ApiModelProperty(value = "相别")
// private String phase;
//
// @ApiModelProperty(value = "事件描述")
// private String eventDescribe;
//
// @ApiModelProperty(value = "波形路径")
// private String wavePath;
//
// @ApiModelProperty(value = "暂降核实原因")
// @TableField("verify_reason")
// private String verifyReason;
//
// @ApiModelProperty(value = "暂降核实原因详情")
// @TableField("verify_reason_detail")
// private String verifyReasonDetail;
//
// private Double transientValue;
//
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// private LocalDateTime createTime;
//
// @ApiModelProperty(value = "用于计算数量")
// @TableField(exist = false)
// private Integer count;
//
//}
//

View File

@@ -31,6 +31,8 @@ public class CsConfigurationVO extends BaseEntity {
private Integer orderBy; private Integer orderBy;
private Integer scope;
private List<String> projectIds; private List<String> projectIds;

View File

@@ -42,6 +42,9 @@ public class CsRtDataVO {
@ApiModelProperty("指标显示名称") @ApiModelProperty("指标显示名称")
private String statisticalName; private String statisticalName;
@ApiModelProperty("指标单位")
private String unit;
@ApiModelProperty("指标名称") @ApiModelProperty("指标名称")
private String target; private String target;

View File

@@ -0,0 +1,49 @@
package com.njcn.csharmonic.pojo.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 组态下事件描述实体
*/
@Data
public class CsWarnDescVO implements Serializable {
/**
* id
*/
private String id;
/**
* 名称,比如监测点名称
*/
private String name;
/**
* 发生时间
*/
private String timeId;
/**
* 事件描述eventDesc
*/
private String eventDesc;
/**
* 持续时间
*/
private Double persistTime;
/**
* 暂降幅值
*/
private Double amplitude;
}

View File

@@ -1,34 +1,34 @@
package com.njcn.csharmonic.pojo.vo; //package com.njcn.csharmonic.pojo.vo;
//
import com.njcn.db.bo.BaseEntity; //import com.njcn.db.bo.BaseEntity;
import lombok.Data; //import lombok.Data;
import lombok.EqualsAndHashCode; //import lombok.EqualsAndHashCode;
//
/** ///**
* pqs // * pqs
* 自定义报表 // * 自定义报表
* @author cdf // * @author cdf
* @date 2022/8/16 // * @date 2022/8/16
*/ // */
@Data //@Data
@EqualsAndHashCode(callSuper = true) //@EqualsAndHashCode(callSuper = true)
public class ReportTemplateVO extends BaseEntity { //public class ReportTemplateVO extends BaseEntity {
private String id; // private String id;
//
private String name; // private String name;
//
private String content; // private String content;
//
private String deptId; // private String deptId;
//
private Integer activation; // private Integer activation;
//
private Integer state; // private Integer state;
//
private String deptName; // private String deptName;
//
private String reportType; // private String reportType;
//
private String reportForm; // private String reportForm;
//
} //}

View File

@@ -22,8 +22,10 @@ public class TotalLimitStatisticsDetailsVO {
private Integer allTime; private Integer allTime;
@ApiModelProperty(value = "闪变越限次数") @ApiModelProperty(value = "闪变越限次数")
private Integer flickerOvertime; private Integer flickerAllTime;
@ApiModelProperty(value = "闪变越限")
private double flickerOvertime;
@ApiModelProperty(value = "频率偏差越限") @ApiModelProperty(value = "频率偏差越限")
private double freqDevOvertime; private double freqDevOvertime;

View File

@@ -1,142 +1,142 @@
package com.njcn.csharmonic.utils.report; //package com.njcn.csharmonic.utils.report;
//
/** ///**
* @author hongawen // * @author hongawen
* @date: 2020/8/20 13:36 // * @date: 2020/8/20 13:36
*/ // */
public class ClearPathUtil { //public class ClearPathUtil {
//
/** // /**
* 针对漏洞,新增的特殊字符替换的扫描方法 // * 针对漏洞,新增的特殊字符替换的扫描方法
*/ // */
public static String cleanString(String str) { // public static String cleanString(String str) {
if (str == null) { // if (str == null) {
return null; // return null;
} // }
StringBuilder sb = new StringBuilder(); // StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); ++i) { // for (int i = 0; i < str.length(); ++i) {
sb.append(cleanChar(str.charAt(i))); // sb.append(cleanChar(str.charAt(i)));
} // }
return sb.toString(); // return sb.toString();
} // }
//
private static char cleanChar(char ch) { // private static char cleanChar(char ch) {
//
// 0 - 9 // // 0 - 9
for (int i = 48; i < 58; ++i) { // for (int i = 48; i < 58; ++i) {
if (ch == i) { // if (ch == i) {
return (char) i; // return (char) i;
} // }
} // }
//
// 'A' - 'Z' // // 'A' - 'Z'
for (int i = 65; i < 91; ++i) { // for (int i = 65; i < 91; ++i) {
if (ch == i) { // if (ch == i) {
return (char) i; // return (char) i;
} // }
} // }
//
// 'a' - 'z' // // 'a' - 'z'
for (int i = 97; i < 123; ++i) { // for (int i = 97; i < 123; ++i) {
if (ch == i) { // if (ch == i) {
return (char) i; // return (char) i;
} // }
} // }
//
// other valid characters // // other valid characters
switch (ch) { // switch (ch) {
case '/': // case '/':
return '/'; // return '/';
case '.': // case '.':
return '.'; // return '.';
case '-': // case '-':
return '-'; // return '-';
case '_': // case '_':
return '_'; // return '_';
case ',': // case ',':
return ','; // return ',';
case ' ': // case ' ':
return ' '; // return ' ';
case '!': // case '!':
return '!'; // return '!';
case '@': // case '@':
return '@'; // return '@';
case '#': // case '#':
return '#'; // return '#';
case '$': // case '$':
return '$'; // return '$';
case '%': // case '%':
return '%'; // return '%';
case '^': // case '^':
return '^'; // return '^';
case '&': // case '&':
return '&'; // return '&';
case '*': // case '*':
return '*'; // return '*';
case '(': // case '(':
return '('; // return '(';
case ')': // case ')':
return ')'; // return ')';
case '+': // case '+':
return '+'; // return '+';
case '=': // case '=':
return '='; // return '=';
case ':': // case ':':
return ':'; // return ':';
case ';': // case ';':
return ';'; // return ';';
case '?': // case '?':
return '?'; // return '?';
case '"': // case '"':
return '"'; // return '"';
case '<': // case '<':
return '<'; // return '<';
case '>': // case '>':
return '>'; // return '>';
case '`': // case '`':
return '`'; // return '`';
case '\\': // case '\\':
return '/'; // return '/';
case 'I': // case 'I':
return 'I'; // return 'I';
case 'Ⅱ': // case 'Ⅱ':
return 'Ⅱ'; // return 'Ⅱ';
case 'Ⅲ': // case 'Ⅲ':
return 'Ⅲ'; // return 'Ⅲ';
case 'Ⅳ': // case 'Ⅳ':
return 'Ⅳ'; // return 'Ⅳ';
case '': // case '':
return ''; // return '';
case 'Ⅵ': // case 'Ⅵ':
return 'Ⅵ'; // return 'Ⅵ';
case 'Ⅶ': // case 'Ⅶ':
return 'Ⅶ'; // return 'Ⅶ';
case 'Ⅷ': // case 'Ⅷ':
return 'Ⅷ'; // return 'Ⅷ';
case 'Ⅸ': // case 'Ⅸ':
return 'Ⅸ'; // return 'Ⅸ';
//
case 'V': // case 'V':
return 'V'; // return 'V';
case 'X': // case 'X':
return 'X'; // return 'X';
case '': // case '':
return ''; // return '';
default: // default:
if (isChineseChar(ch)) { // if (isChineseChar(ch)) {
return ch; // return ch;
} // }
return '%'; // return '%';
} // }
} // }
//
// 根据Unicode编码判断中文汉字和符号 // // 根据Unicode编码判断中文汉字和符号
private static boolean isChineseChar(char c) { // private static boolean isChineseChar(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); // Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS // return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B // || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS // || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION; // || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION;
} // }
//
} //}

View File

@@ -1,83 +1,83 @@
package com.njcn.csharmonic.utils.report; //package com.njcn.csharmonic.utils.report;
//
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.apache.poi.openxml4j.opc.OPCPackage; //import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.XWPFDocument; //import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph; //import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.xmlbeans.XmlException; //import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlToken; //import org.apache.xmlbeans.XmlToken;
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps; //import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D; //import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline; //import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;
//
import java.io.IOException; //import java.io.IOException;
import java.io.InputStream; //import java.io.InputStream;
//
@Slf4j //@Slf4j
public class CustomXWPFDocument extends XWPFDocument { //public class CustomXWPFDocument extends XWPFDocument {
// 日志记录 // // 日志记录
public CustomXWPFDocument(InputStream in) throws IOException { // public CustomXWPFDocument(InputStream in) throws IOException {
super(in); // super(in);
} // }
//
public CustomXWPFDocument() { // public CustomXWPFDocument() {
super(); // super();
} // }
//
public CustomXWPFDocument(OPCPackage pkg) throws IOException { // public CustomXWPFDocument(OPCPackage pkg) throws IOException {
super(pkg); // super(pkg);
} // }
//
/** // /**
* @param id // * @param id
* @param width // * @param width
* 宽 // * 宽
* @param height // * @param height
* 高 // * 高
* @param paragraph // * @param paragraph
* 段落 // * 段落
*/ // */
public void createPicture(int id, int width, int height,String blipId, XWPFParagraph paragraph) { // public void createPicture(int id, int width, int height,String blipId, XWPFParagraph paragraph) {
final int EMU = 9525; // final int EMU = 9525;
width *= EMU; // width *= EMU;
height *= EMU; // height *= EMU;
// String blipId = getAllPictures().get(id).getPackageRelationship().getId(); //// String blipId = getAllPictures().get(id).getPackageRelationship().getId();
CTInline inline = paragraph.createRun().getCTR().addNewDrawing().addNewInline(); // CTInline inline = paragraph.createRun().getCTR().addNewDrawing().addNewInline();
String picXml = "" + "<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">" // String picXml = "" + "<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">"
+ " <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" // + " <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"
+ " <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" // + " <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"
+ " <pic:nvPicPr>" + " <pic:cNvPr id=\"" + id + "\" name=\"Generated\"/>" // + " <pic:nvPicPr>" + " <pic:cNvPr id=\"" + id + "\" name=\"Generated\"/>"
+ " <pic:cNvPicPr/>" + " </pic:nvPicPr>" + " <pic:blipFill>" // + " <pic:cNvPicPr/>" + " </pic:nvPicPr>" + " <pic:blipFill>"
+ " <a:blip r:embed=\"" + blipId // + " <a:blip r:embed=\"" + blipId
+ "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>" // + "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"
+ " <a:stretch>" + " <a:fillRect/>" + " </a:stretch>" // + " <a:stretch>" + " <a:fillRect/>" + " </a:stretch>"
+ " </pic:blipFill>" + " <pic:spPr>" + " <a:xfrm>" // + " </pic:blipFill>" + " <pic:spPr>" + " <a:xfrm>"
+ " <a:off x=\"0\" y=\"0\"/>" + " <a:ext cx=\"" + width + "\" cy=\"" // + " <a:off x=\"0\" y=\"0\"/>" + " <a:ext cx=\"" + width + "\" cy=\""
+ height + "\"/>" + " </a:xfrm>" + " <a:prstGeom prst=\"rect\">" // + height + "\"/>" + " </a:xfrm>" + " <a:prstGeom prst=\"rect\">"
+ " <a:avLst/>" + " </a:prstGeom>" + " </pic:spPr>" // + " <a:avLst/>" + " </a:prstGeom>" + " </pic:spPr>"
+ " </pic:pic>" + " </a:graphicData>" + "</a:graphic>"; // + " </pic:pic>" + " </a:graphicData>" + "</a:graphic>";
//
inline.addNewGraphic().addNewGraphicData(); // inline.addNewGraphic().addNewGraphicData();
XmlToken xmlToken = null; // XmlToken xmlToken = null;
try { // try {
xmlToken = XmlToken.Factory.parse(picXml); // xmlToken = XmlToken.Factory.parse(picXml);
} catch (XmlException xe) { // } catch (XmlException xe) {
log.error("生成报表发生异常,异常是"+xe.getMessage()); // log.error("生成报表发生异常,异常是"+xe.getMessage());
} // }
inline.set(xmlToken); // inline.set(xmlToken);
//
inline.setDistT(0); // inline.setDistT(0);
inline.setDistB(0); // inline.setDistB(0);
inline.setDistL(0); // inline.setDistL(0);
inline.setDistR(0); // inline.setDistR(0);
//
CTPositiveSize2D extent = inline.addNewExtent(); // CTPositiveSize2D extent = inline.addNewExtent();
extent.setCx(width); // extent.setCx(width);
extent.setCy(height); // extent.setCy(height);
//
CTNonVisualDrawingProps docPr = inline.addNewDocPr(); // CTNonVisualDrawingProps docPr = inline.addNewDocPr();
docPr.setId(id); // docPr.setId(id);
docPr.setName("图片" + id); // docPr.setName("图片" + id);
docPr.setDescr("测试"); // docPr.setDescr("测试");
} // }
} //}

View File

@@ -1,28 +1,28 @@
package com.njcn.csharmonic.utils.report; //package com.njcn.csharmonic.utils.report;
//
import java.math.BigDecimal; //import java.math.BigDecimal;
//
/** ///**
* @author hongawen(创建) -----denghuajun移植使用 // * @author hongawen(创建) -----denghuajun移植使用
* @Date: 2018/8/27 11:29 // * @Date: 2018/8/27 11:29
*/ // */
public class FloatUtils { //public class FloatUtils {
//
//
/** // /**
* 保留传入进来的float的两位小数四舍五入的方式 // * 保留传入进来的float的两位小数四舍五入的方式
* // *
* @param data Float参数 // * @param data Float参数
*/ // */
public static float get2Float(Float data) { // public static float get2Float(Float data) {
if (data == null || data.isNaN() || data.isInfinite()) { // if (data == null || data.isNaN() || data.isInfinite()) {
return 0f; // return 0f;
} // }
int scale = 2;//设置位数 // int scale = 2;//设置位数
int roundingMode = 4;//表示四舍五入,可以选择其他舍值方式,例如去尾,等等. // int roundingMode = 4;//表示四舍五入,可以选择其他舍值方式,例如去尾,等等.
BigDecimal bd = new BigDecimal(data); // BigDecimal bd = new BigDecimal(data);
bd = bd.setScale(scale, roundingMode); // bd = bd.setScale(scale, roundingMode);
data = bd.floatValue(); // data = bd.floatValue();
return data; // return data;
} // }
} //}

View File

@@ -1,224 +1,224 @@
package com.njcn.csharmonic.utils.report; //package com.njcn.csharmonic.utils.report;
//
import cn.hutool.core.util.ObjectUtil; //import cn.hutool.core.util.ObjectUtil;
import lombok.SneakyThrows; //import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
//
import java.io.File; //import java.io.File;
import java.io.IOException; //import java.io.IOException;
import java.io.InputStream; //import java.io.InputStream;
import java.text.SimpleDateFormat; //import java.text.SimpleDateFormat;
import java.util.*; //import java.util.*;
//
/** ///**
* @author wr // * @author wr
* @description // * @description
* @date 2023/4/10 17:39 // * @date 2023/4/10 17:39
*/ // */
@Slf4j //@Slf4j
public class PubUtils { //public class PubUtils {
public static boolean createFile(String destFileName) { // public static boolean createFile(String destFileName) {
File file = new File(destFileName); // File file = new File(destFileName);
if (file.exists()) { // if (file.exists()) {
log.warn("创建单个文件" + destFileName + "失败,目标文件已存在!"); // log.warn("创建单个文件" + destFileName + "失败,目标文件已存在!");
return false; // return false;
} // }
if (destFileName.endsWith(File.separator)) { // if (destFileName.endsWith(File.separator)) {
log.warn("创建单个文件" + destFileName + "失败,目标文件不能为目录!"); // log.warn("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
return false; // return false;
} // }
//判断目标文件所在的目录是否存在 // //判断目标文件所在的目录是否存在
if (!file.getParentFile().exists()) { // if (!file.getParentFile().exists()) {
//如果目标文件所在的目录不存在,则创建父目录 // //如果目标文件所在的目录不存在,则创建父目录
log.warn("目标文件所在目录不存在,准备创建它!"); // log.warn("目标文件所在目录不存在,准备创建它!");
if (!file.getParentFile().mkdirs()) { // if (!file.getParentFile().mkdirs()) {
log.warn("创建目标文件所在目录失败!"); // log.warn("创建目标文件所在目录失败!");
return false; // return false;
} // }
} // }
//创建目标文件 // //创建目标文件
try { // try {
if (file.createNewFile()) { // if (file.createNewFile()) {
log.warn("创建单个文件" + destFileName + "成功!"); // log.warn("创建单个文件" + destFileName + "成功!");
return true; // return true;
} else { // } else {
log.warn("创建单个文件" + destFileName + "失败!"); // log.warn("创建单个文件" + destFileName + "失败!");
return false; // return false;
} // }
} catch (IOException e) { // } catch (IOException e) {
log.warn("创建单个文件" + destFileName + "失败!" + e.getMessage()); // log.warn("创建单个文件" + destFileName + "失败!" + e.getMessage());
return false; // return false;
} // }
} // }
//
/** // /**
* 读取配置文件 // * 读取配置文件
* // *
* @param cl 类名字 // * @param cl 类名字
* @param strPropertiesName 配置文件名称 // * @param strPropertiesName 配置文件名称
*/ // */
public static Properties readProperties(ClassLoader cl, String strPropertiesName) { // public static Properties readProperties(ClassLoader cl, String strPropertiesName) {
Properties pros = new Properties(); // Properties pros = new Properties();
InputStream in = null; // InputStream in = null;
try { // try {
in = cl.getResourceAsStream(strPropertiesName); // in = cl.getResourceAsStream(strPropertiesName);
pros.load(in); // pros.load(in);
} catch (Exception e) { // } catch (Exception e) {
log.error("读取配置文件失败失败:" + e.getMessage()); // log.error("读取配置文件失败失败:" + e.getMessage());
} finally { // } finally {
if (in != null) { // if (in != null) {
PubUtils.safeClose(in, "安全关闭读取配置文件失败,异常为:"); // PubUtils.safeClose(in, "安全关闭读取配置文件失败,异常为:");
} // }
} // }
return pros; // return pros;
} // }
//
/** // /**
* 安全关闭InputStream // * 安全关闭InputStream
* // *
* @param s // * @param s
*/ // */
public static void safeClose(InputStream s, String strError) { // public static void safeClose(InputStream s, String strError) {
if (s != null) { // if (s != null) {
try { // try {
s.close(); // s.close();
} catch (IOException e) { // } catch (IOException e) {
log.error(strError + e.toString()); // log.error(strError + e.toString());
} // }
} // }
} // }
//
public static Double dataLimits(Double data) { // public static Double dataLimits(Double data) {
if (ObjectUtil.isNotNull(data)) { // if (ObjectUtil.isNotNull(data)) {
return data > 100 ? 100 : data; // return data > 100 ? 100 : data;
} // }
return data; // return data;
} // }
//
@SneakyThrows // @SneakyThrows
public static List<String> getIntervalTime(String startTime, String endTime) { // public static List<String> getIntervalTime(String startTime, String endTime) {
List<String> times = new ArrayList<>(); // List<String> times = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date start = sdf.parse(startTime); // Date start = sdf.parse(startTime);
Date end = sdf.parse(endTime); // Date end = sdf.parse(endTime);
// 同月 // // 同月
if (start.getTime() == end.getTime()) { // if (start.getTime() == end.getTime()) {
String time = startTime.substring(0, 7); // String time = startTime.substring(0, 7);
times.add(time); // times.add(time);
} else if (start.getYear() == end.getYear()) { // } else if (start.getYear() == end.getYear()) {
// 同年 // // 同年
int startM = start.getMonth() + 1; // int startM = start.getMonth() + 1;
int endM = end.getMonth() + 1; // int endM = end.getMonth() + 1;
int temp = endM - startM; // int temp = endM - startM;
for (int i = 0; i <= temp; i++) { // for (int i = 0; i <= temp; i++) {
String time = start.getYear() + 1900 + ""; // String time = start.getYear() + 1900 + "";
int month = startM + i; // int month = startM + i;
if (month < 10) { // if (month < 10) {
time = time + "-0" + month; // time = time + "-0" + month;
} else { // } else {
time = time + "-" + month; // time = time + "-" + month;
} // }
times.add(time); // times.add(time);
} // }
} else { // } else {
// 不同年!!!!这里忽略了年份之间跨年的情况 // // 不同年!!!!这里忽略了年份之间跨年的情况
int startY = start.getYear() + 1900; // int startY = start.getYear() + 1900;
int startM = start.getMonth() + 1; // int startM = start.getMonth() + 1;
int endY = end.getYear() + 1900; // int endY = end.getYear() + 1900;
int endM = end.getMonth() + 1; // int endM = end.getMonth() + 1;
int tempS = 12 - startM; // int tempS = 12 - startM;
// 连续的年份 // // 连续的年份
if (endY - startY == 1) { // if (endY - startY == 1) {
// 第一年的时间获取 // // 第一年的时间获取
for (int i = 0; i <= tempS; i++) { // for (int i = 0; i <= tempS; i++) {
int month = startM + i; // int month = startM + i;
String time = startY + "-"; // String time = startY + "-";
if (month < 10) { // if (month < 10) {
time = time + "0" + month; // time = time + "0" + month;
} else { // } else {
time = time + month; // time = time + month;
} // }
times.add(time); // times.add(time);
} // }
// 第二年的时间获取 // // 第二年的时间获取
//
for (int i = 1; i <= endM; i++) { // for (int i = 1; i <= endM; i++) {
String time = endY + "-"; // String time = endY + "-";
if (i < 10) { // if (i < 10) {
time = time + "0" + i; // time = time + "0" + i;
} else { // } else {
time = time + i; // time = time + i;
} // }
times.add(time); // times.add(time);
} // }
} else { // } else {
// 不连续的年份 // // 不连续的年份
// 第一年的时间获取 // // 第一年的时间获取
for (int i = 0; i <= tempS; i++) { // for (int i = 0; i <= tempS; i++) {
int month = startM + i; // int month = startM + i;
String time = startY + "-"; // String time = startY + "-";
if (month < 10) { // if (month < 10) {
time = time + "0" + month; // time = time + "0" + month;
} else { // } else {
time = time + month; // time = time + month;
} // }
times.add(time); // times.add(time);
} // }
int tempY = endY - startY; // int tempY = endY - startY;
// 中间年份的时间 // // 中间年份的时间
for (int i = 1; i < tempY; i++) { // for (int i = 1; i < tempY; i++) {
for (int j = 1; j <= 12; j++) { // for (int j = 1; j <= 12; j++) {
String time = startY + i + "-"; // String time = startY + i + "-";
if (j < 10) { // if (j < 10) {
time = time + "0" + j; // time = time + "0" + j;
} else { // } else {
time = time + j; // time = time + j;
} // }
times.add(time); // times.add(time);
} // }
} // }
// 最后一年的时间获取 // // 最后一年的时间获取
for (int i = 1; i <= endM; i++) { // for (int i = 1; i <= endM; i++) {
String time = endY + "-"; // String time = endY + "-";
if (i < 10) { // if (i < 10) {
time = time + "0" + i; // time = time + "0" + i;
} else { // } else {
time = time + i; // time = time + i;
} // }
times.add(time); // times.add(time);
} // }
} // }
//
} // }
return times; // return times;
} // }
//
@SneakyThrows // @SneakyThrows
public static List<String> getIntervalDateTime(Integer startTime, int beginDay, Integer endTime, Integer dd) { // public static List<String> getIntervalDateTime(Integer startTime, int beginDay, Integer endTime, Integer dd) {
List<String> list = new ArrayList<>(); // List<String> list = new ArrayList<>();
Calendar calendar = Calendar.getInstance(Locale.CHINA); // Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.set(startTime, endTime - 1, 1); // calendar.set(startTime, endTime - 1, 1);
//年份 // //年份
int year = calendar.get(Calendar.YEAR); // int year = calendar.get(Calendar.YEAR);
//月份 // //月份
int month = calendar.get(Calendar.MONTH) + 1; // int month = calendar.get(Calendar.MONTH) + 1;
for (int i = beginDay; i <= dd; i++) { // for (int i = beginDay; i <= dd; i++) {
String date = null; // String date = null;
if (month < 10 && i < 10) { // if (month < 10 && i < 10) {
date = year + "-0" + month + "-0" + i; // date = year + "-0" + month + "-0" + i;
} // }
if (month < 10 && i >= 10) { // if (month < 10 && i >= 10) {
date = year + "-0" + month + "-" + i; // date = year + "-0" + month + "-" + i;
} // }
if (month >= 10 && i < 10) { // if (month >= 10 && i < 10) {
date = year + "-" + month + "-0" + i; // date = year + "-" + month + "-0" + i;
} // }
if (month >= 10 && i >= 10) { // if (month >= 10 && i >= 10) {
date = year + "-" + month + "-" + i; // date = year + "-" + month + "-" + i;
} // }
//
list.add(date); // list.add(date);
} // }
return list; // return list;
} // }
} //}

View File

@@ -1,30 +1,30 @@
package com.njcn.csharmonic.utils.report; //package com.njcn.csharmonic.utils.report;
//
/** ///**
* 数据公共工具类 // * 数据公共工具类
* // *
* @author qijian // * @author qijian
* @version 1.0.0 // * @version 1.0.0
* @createTime 2022/10/14 - 10:07 // * @createTime 2022/10/14 - 10:07
*/ // */
public class PublicDataUtils { //public class PublicDataUtils {
/** // /**
* 功能:下划线命名转驼峰命名 // * 功能:下划线命名转驼峰命名
* 将下划线替换为空格,将字符串根据空格分割成数组,再将每个单词首字母大写 // * 将下划线替换为空格,将字符串根据空格分割成数组,再将每个单词首字母大写
* @param s // * @param s
* @return // * @return
*/ // */
public static String underCamel(String s) // public static String underCamel(String s)
{ // {
String separator = "_"; // String separator = "_";
String under=""; // String under="";
s = s.toLowerCase().replace(separator, " "); // s = s.toLowerCase().replace(separator, " ");
String sarr[]=s.split(" "); // String sarr[]=s.split(" ");
for(int i=0;i<sarr.length;i++) // for(int i=0;i<sarr.length;i++)
{ // {
String w=sarr[i].substring(0,1).toUpperCase()+sarr[i].substring(1); // String w=sarr[i].substring(0,1).toUpperCase()+sarr[i].substring(1);
under +=w; // under +=w;
} // }
return under; // return under;
} // }
} //}

View File

@@ -1,25 +1,25 @@
package com.njcn.csharmonic.utils.report; //package com.njcn.csharmonic.utils.report;
//
import com.alibaba.fastjson.serializer.JSONSerializer; //import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer; //import com.alibaba.fastjson.serializer.ObjectSerializer;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
import java.io.IOException; //import java.io.IOException;
import java.lang.reflect.Type; //import java.lang.reflect.Type;
import java.sql.Timestamp; //import java.sql.Timestamp;
//
@Component //@Component
public class TimestampAsLongSerializer implements ObjectSerializer { //public class TimestampAsLongSerializer implements ObjectSerializer {
//
@Override // @Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException { // public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
if (object instanceof Timestamp) { // if (object instanceof Timestamp) {
Timestamp timestamp = (Timestamp) object; // Timestamp timestamp = (Timestamp) object;
// 将Timestamp转换为时间戳毫秒数 // // 将Timestamp转换为时间戳毫秒数
long time = timestamp.getTime(); // long time = timestamp.getTime();
serializer.write(time); // serializer.write(time);
} else { // } else {
serializer.write(object); // serializer.write(object);
} // }
} // }
} //}

View File

@@ -1,427 +1,427 @@
package com.njcn.csharmonic.utils.report; //package com.njcn.csharmonic.utils.report;
//
import cn.hutool.core.collection.CollUtil; //import cn.hutool.core.collection.CollUtil;
import com.njcn.oss.constant.OssPath; //import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil; //import com.njcn.oss.utils.FileStorageUtil;
import lombok.RequiredArgsConstructor; //import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xwpf.usermodel.*; //import org.apache.poi.xwpf.usermodel.*;
import org.apache.tomcat.util.http.fileupload.IOUtils; //import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.core.io.ClassPathResource; //import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource; //import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader; //import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
import org.springframework.util.FileCopyUtils; //import org.springframework.util.FileCopyUtils;
//
import javax.servlet.ServletOutputStream; //import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; //import javax.servlet.http.HttpServletResponse;
import java.io.*; //import java.io.*;
import java.util.*; //import java.util.*;
import java.util.Map.Entry; //import java.util.Map.Entry;
import java.util.regex.Matcher; //import java.util.regex.Matcher;
import java.util.regex.Pattern; //import java.util.regex.Pattern;
//
@Slf4j //@Slf4j
@Component //@Component
@RequiredArgsConstructor //@RequiredArgsConstructor
public class WordUtil2 { //public class WordUtil2 {
//
//
private final ResourceLoader resourceLoader; // private final ResourceLoader resourceLoader;
private final FileStorageUtil fileStorageUtil; // private final FileStorageUtil fileStorageUtil;
//
//
public void getWord(String path, Map<String, Object> params, String fileName,List<List<String[]>> tableList, HttpServletResponse response) // public void getWord(String path, Map<String, Object> params, String fileName,List<List<String[]>> tableList, HttpServletResponse response)
throws Exception { // throws Exception {
byte[] docBytes = null; // byte[] docBytes = null;
//
path = ClearPathUtil.cleanString(path); // path = ClearPathUtil.cleanString(path);
InputStream is = null; // InputStream is = null;
CustomXWPFDocument doc = null; // CustomXWPFDocument doc = null;
//读取报告模板 // //读取报告模板
try { // try {
Resource resource = resourceLoader.getResource("classpath:" + path); // Resource resource = resourceLoader.getResource("classpath:" + path);
if (!resource.exists()) { // if (!resource.exists()) {
throw new FileNotFoundException("模板文件未找到: " + path); // throw new FileNotFoundException("模板文件未找到: " + path);
} // }
is = resource.getInputStream(); // is = resource.getInputStream();
doc = new CustomXWPFDocument(is); // doc = new CustomXWPFDocument(is);
if(CollUtil.isNotEmpty(tableList)){ // if(CollUtil.isNotEmpty(tableList)){
this.replaceInTable(doc, params,tableList); // this.replaceInTable(doc, params,tableList);
}else{ // }else{
this.replaceInTable(doc, params); // this.replaceInTable(doc, params);
} // }
// 替换表格里面的变量 // // 替换表格里面的变量
this.replaceInPara(doc, params); // 替换文本里面的变量 // this.replaceInPara(doc, params); // 替换文本里面的变量
} catch (IOException e) { // } catch (IOException e) {
getError("获取报告模板异常,原因为:" + e); // getError("获取报告模板异常,原因为:" + e);
} finally { // } finally {
if (null != is) { // if (null != is) {
is.close(); // is.close();
} // }
} // }
try { // try {
ServletOutputStream outputStream = response.getOutputStream(); // ServletOutputStream outputStream = response.getOutputStream();
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); // response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.setContentType("application/octet-stream;charset=UTF-8"); // response.setContentType("application/octet-stream;charset=UTF-8");
doc.write(outputStream); // doc.write(outputStream);
outputStream.close(); // outputStream.close();
} catch (Exception e) { // } catch (Exception e) {
getError("输出稳态报告异常,原因为:" + e); // getError("输出稳态报告异常,原因为:" + e);
} finally { // } finally {
if (doc != null) { // if (doc != null) {
doc.close(); // doc.close();
} // }
} // }
} // }
//
//
//
//
// 辅助方法:字节数组转十六进制(便于打印排查) // // 辅助方法:字节数组转十六进制(便于打印排查)
private static String bytesToHex(byte[] bytes) { // private static String bytesToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder(); // StringBuilder sb = new StringBuilder();
for (byte b : bytes) { // for (byte b : bytes) {
sb.append(String.format("%02X ", b)); // sb.append(String.format("%02X ", b));
} // }
return sb.toString().trim(); // return sb.toString().trim();
} // }
//
//
//
//
public InputStream getReportFile(String path, Map<String, Object> params, List<List<String[]>> tableList) // public InputStream getReportFile(String path, Map<String, Object> params, List<List<String[]>> tableList)
throws Exception { // throws Exception {
path = ClearPathUtil.cleanString(path); // path = ClearPathUtil.cleanString(path);
InputStream inStream = null,in = null; // InputStream inStream = null,in = null;
CustomXWPFDocument doc = null; // CustomXWPFDocument doc = null;
//读取报告模板 // //读取报告模板
try { // try {
inStream = new ClassPathResource(path).getInputStream(); // inStream = new ClassPathResource(path).getInputStream();
doc = new CustomXWPFDocument(inStream); // doc = new CustomXWPFDocument(inStream);
this.replaceInTable(doc,params,tableList); // this.replaceInTable(doc,params,tableList);
this.replaceInPara(doc, params); // this.replaceInPara(doc, params);
} catch (IOException e) { // } catch (IOException e) {
getError("获取报告模板异常,原因为:" + e); // getError("获取报告模板异常,原因为:" + e);
} finally { // } finally {
if (null != inStream) { // if (null != inStream) {
inStream.close(); // inStream.close();
} // }
} // }
try { // try {
//临时缓冲区 // //临时缓冲区
ByteArrayOutputStream out = new ByteArrayOutputStream(); // ByteArrayOutputStream out = new ByteArrayOutputStream();
doc.write(out); // doc.write(out);
byte[] docByteAry = out.toByteArray(); // byte[] docByteAry = out.toByteArray();
in = new ByteArrayInputStream(docByteAry); // in = new ByteArrayInputStream(docByteAry);
out.close(); // out.close();
} catch (Exception e) { // } catch (Exception e) {
getError("输出稳态报告异常,原因为:" + e); // getError("输出稳态报告异常,原因为:" + e);
} finally { // } finally {
if (doc != null) { // if (doc != null) {
doc.close(); // doc.close();
} // }
} // }
return in; // return in;
} // }
//
//
//
public String getReportFileUrl(String path,String fileName,List<List<String[]>> tableList, Map<String, Object> params) // public String getReportFileUrl(String path,String fileName,List<List<String[]>> tableList, Map<String, Object> params)
throws Exception { // throws Exception {
path = ClearPathUtil.cleanString(path); // path = ClearPathUtil.cleanString(path);
InputStream inStream = null,in = null; // InputStream inStream = null,in = null;
CustomXWPFDocument doc = null; // CustomXWPFDocument doc = null;
//读取报告模板 // //读取报告模板
try { // try {
inStream = new ClassPathResource(path).getInputStream();; // inStream = new ClassPathResource(path).getInputStream();;
doc = new CustomXWPFDocument(inStream); // doc = new CustomXWPFDocument(inStream);
if(CollUtil.isNotEmpty(tableList)){ // if(CollUtil.isNotEmpty(tableList)){
this.replaceInTable(doc, params,tableList); // this.replaceInTable(doc, params,tableList);
}else{ // }else{
this.replaceInTable(doc, params); // this.replaceInTable(doc, params);
} // }
this.replaceInPara(doc, params); // 替换文本里面的变量 // this.replaceInPara(doc, params); // 替换文本里面的变量
//临时缓冲区 // //临时缓冲区
ByteArrayOutputStream out = new ByteArrayOutputStream(); // ByteArrayOutputStream out = new ByteArrayOutputStream();
doc.write(out); // doc.write(out);
byte[] docByteAry = out.toByteArray(); // byte[] docByteAry = out.toByteArray();
in = new ByteArrayInputStream(docByteAry); // in = new ByteArrayInputStream(docByteAry);
out.close(); // out.close();
} catch (IOException e) { // } catch (IOException e) {
getError("获取报告模板异常,原因为:" + e); // getError("获取报告模板异常,原因为:" + e);
} finally { // } finally {
if (null != inStream) { // if (null != inStream) {
inStream.close(); // inStream.close();
} // }
if (doc != null) { // if (doc != null) {
doc.close(); // doc.close();
} // }
} // }
//上传文件服务器 // //上传文件服务器
return fileStorageUtil.uploadStreamSpecifyName(in, OssPath.ONLINE_REPORT, fileName); // return fileStorageUtil.uploadStreamSpecifyName(in, OssPath.ONLINE_REPORT, fileName);
} // }
//
//
private static void getError(String e) { // private static void getError(String e) {
log.error(e); // log.error(e);
} // }
/** // /**
* 替换段落里面的变量 // * 替换段落里面的变量
* // *
* @param doc 要替换的文档 // * @param doc 要替换的文档
* @param params 参数 // * @param params 参数
*/ // */
private void replaceInPara(CustomXWPFDocument doc, Map<String, Object> params) { // private void replaceInPara(CustomXWPFDocument doc, Map<String, Object> params) {
Iterator<XWPFParagraph> iterator = doc.getParagraphsIterator(); // Iterator<XWPFParagraph> iterator = doc.getParagraphsIterator();
List<XWPFParagraph> paragraphList = new ArrayList<>(); // List<XWPFParagraph> paragraphList = new ArrayList<>();
XWPFParagraph para; // XWPFParagraph para;
while (iterator.hasNext()) { // while (iterator.hasNext()) {
para = iterator.next(); // para = iterator.next();
paragraphList.add(para); // paragraphList.add(para);
} // }
processParagraphs(paragraphList, params, doc); // processParagraphs(paragraphList, params, doc);
} // }
//
private void replaceInTable(CustomXWPFDocument doc, Map<String, Object> params) { // private void replaceInTable(CustomXWPFDocument doc, Map<String, Object> params) {
Iterator<XWPFTable> it = doc.getTablesIterator(); // Iterator<XWPFTable> it = doc.getTablesIterator();
while (it.hasNext()) { // while (it.hasNext()) {
XWPFTable table = it.next(); // XWPFTable table = it.next();
List<XWPFTableRow> rows = table.getRows(); // List<XWPFTableRow> rows = table.getRows();
for (XWPFTableRow row : rows) { // for (XWPFTableRow row : rows) {
List<XWPFTableCell> cells = row.getTableCells(); // List<XWPFTableCell> cells = row.getTableCells();
for (XWPFTableCell cell : cells) { // for (XWPFTableCell cell : cells) {
List<XWPFParagraph> paragraphListTable = cell.getParagraphs(); // List<XWPFParagraph> paragraphListTable = cell.getParagraphs();
processParagraphs(paragraphListTable, params, doc); // processParagraphs(paragraphListTable, params, doc);
} // }
} // }
} // }
} // }
//
public static void processParagraphs(List<XWPFParagraph> paragraphList, Map<String, Object> param, // public static void processParagraphs(List<XWPFParagraph> paragraphList, Map<String, Object> param,
CustomXWPFDocument doc) { // CustomXWPFDocument doc) {
if (paragraphList != null && paragraphList.size() > 0) { // if (paragraphList != null && paragraphList.size() > 0) {
for (XWPFParagraph paragraph : paragraphList) { // for (XWPFParagraph paragraph : paragraphList) {
List<XWPFRun> runs = paragraph.getRuns(); // List<XWPFRun> runs = paragraph.getRuns();
if (runs.size() > 0) { // if (runs.size() > 0) {
for (XWPFRun run : runs) { // for (XWPFRun run : runs) {
String bflag = ""; // String bflag = "";
String text = run.getText(0); // String text = run.getText(0);
if (text != null) { // if (text != null) {
boolean isSetText = false; // boolean isSetText = false;
for (Entry<String, Object> entry : param.entrySet()) { // for (Entry<String, Object> entry : param.entrySet()) {
String key = entry.getKey(); // String key = entry.getKey();
if (text.indexOf(key) != -1) { // if (text.indexOf(key) != -1) {
isSetText = true; // isSetText = true;
Object value = entry.getValue(); // Object value = entry.getValue();
if (value instanceof String) {// 文本替换 // if (value instanceof String) {// 文本替换
text = text.replace(key, value.toString()); // text = text.replace(key, value.toString());
} else if (value instanceof Map) {// 图片替换 // } else if (value instanceof Map) {// 图片替换
text = text.replace(key, ""); // text = text.replace(key, "");
Map pic = (Map) value; // Map pic = (Map) value;
int width = Integer.parseInt(pic.get("width").toString()); // int width = Integer.parseInt(pic.get("width").toString());
int height = Integer.parseInt(pic.get("height").toString()); // int height = Integer.parseInt(pic.get("height").toString());
int picType = getPictureType(pic.get("type").toString()); // int picType = getPictureType(pic.get("type").toString());
byte[] byteArray = (byte[]) pic.get("content"); // byte[] byteArray = (byte[]) pic.get("content");
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray); // ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray);
try { // try {
String s = doc.addPictureData(byteInputStream, picType); // String s = doc.addPictureData(byteInputStream, picType);
//
doc.createPicture(doc.getAllPictures().size() - 1, width, height, // doc.createPicture(doc.getAllPictures().size() - 1, width, height,
s,paragraph); // s,paragraph);
bflag = "break"; // bflag = "break";
} catch (Exception e) { // } catch (Exception e) {
getError("文本替换发生异常,异常是" + e.getMessage()); // getError("文本替换发生异常,异常是" + e.getMessage());
} // }
} // }
} // }
} // }
if (isSetText) { // if (isSetText) {
run.setText(text, 0); // run.setText(text, 0);
} // }
} // }
if (bflag == "break") { // if (bflag == "break") {
break; // break;
} // }
} // }
} // }
} // }
} // }
} // }
//
/** // /**
* 替换段落里面的变量 // * 替换段落里面的变量
* // *
* @param para 要替换的段落 // * @param para 要替换的段落
* @param params 参数 // * @param params 参数
*/ // */
private void replaceInPara(XWPFParagraph para, Map<String, Object> params, CustomXWPFDocument doc) { // private void replaceInPara(XWPFParagraph para, Map<String, Object> params, CustomXWPFDocument doc) {
List<XWPFRun> runs; // List<XWPFRun> runs;
Matcher matcher; // Matcher matcher;
// if (this.matcher(para.getParagraphText()).find()) { // // if (this.matcher(para.getParagraphText()).find()) {
runs = para.getRuns(); // runs = para.getRuns();
int start = -1; // int start = -1;
int end = -1; // int end = -1;
String str = ""; // String str = "";
for (int i = 0; i < runs.size(); i++) { // for (int i = 0; i < runs.size(); i++) {
XWPFRun run = runs.get(i); // XWPFRun run = runs.get(i);
String runText = run.toString(); // String runText = run.toString();
if ('$' == runText.charAt(0) && '{' == runText.charAt(1)) { // if ('$' == runText.charAt(0) && '{' == runText.charAt(1)) {
start = i; // start = i;
} // }
if ((start != -1)) { // if ((start != -1)) {
str += runText; // str += runText;
} // }
if ('}' == runText.charAt(runText.length() - 1)) { // if ('}' == runText.charAt(runText.length() - 1)) {
if (start != -1) { // if (start != -1) {
end = i; // end = i;
break; // break;
} // }
} // }
} // }
//
for (int i = start; i <= end; i++) { // for (int i = start; i <= end; i++) {
para.removeRun(i); // para.removeRun(i);
i--; // i--;
end--; // end--;
} // }
//
for (Entry<String, Object> entry : params.entrySet()) { // for (Entry<String, Object> entry : params.entrySet()) {
String key = entry.getKey(); // String key = entry.getKey();
if (str.indexOf(key) != -1) { // if (str.indexOf(key) != -1) {
Object value = entry.getValue(); // Object value = entry.getValue();
if (value instanceof String) { // if (value instanceof String) {
str = str.replace(key, value.toString()); // str = str.replace(key, value.toString());
para.createRun().setText(str, 0); // para.createRun().setText(str, 0);
break; // break;
} else if (value instanceof Map) { // } else if (value instanceof Map) {
str = str.replace(key, ""); // str = str.replace(key, "");
Map pic = (Map) value; // Map pic = (Map) value;
int width = Integer.parseInt(pic.get("width").toString()); // int width = Integer.parseInt(pic.get("width").toString());
int height = Integer.parseInt(pic.get("height").toString()); // int height = Integer.parseInt(pic.get("height").toString());
int picType = getPictureType(pic.get("type").toString()); // int picType = getPictureType(pic.get("type").toString());
byte[] byteArray = (byte[]) pic.get("content"); // byte[] byteArray = (byte[]) pic.get("content");
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray); // ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray);
try { // try {
// int ind = doc.addPicture(byteInputStream,picType); // // int ind = doc.addPicture(byteInputStream,picType);
// doc.createPicture(ind, width , height,para); // // doc.createPicture(ind, width , height,para);
String s = doc.addPictureData(byteInputStream, picType); // String s = doc.addPictureData(byteInputStream, picType);
doc.createPicture(doc.getAllPictures().size() - 1, width, height,s, para); // doc.createPicture(doc.getAllPictures().size() - 1, width, height,s, para);
para.createRun().setText(str, 0); // para.createRun().setText(str, 0);
break; // break;
} catch (Exception e) { // } catch (Exception e) {
getError("文件替换发生异常,异常是" + e.getMessage()); // getError("文件替换发生异常,异常是" + e.getMessage());
} // }
} // }
} // }
} // }
// } // // }
} // }
//
/** // /**
* 为表格插入数据,行数不够添加新行 // * 为表格插入数据,行数不够添加新行
* // *
* @param table 需要插入数据的表格 // * @param table 需要插入数据的表格
* @param tableList 插入数据集合 // * @param tableList 插入数据集合
*/ // */
private static void insertTable(XWPFTable table, List<String[]> tableList) { // private static void insertTable(XWPFTable table, List<String[]> tableList) {
//删除占位符行数 // //删除占位符行数
table.removeRow(1); // table.removeRow(1);
if (CollUtil.isNotEmpty(tableList)) { // if (CollUtil.isNotEmpty(tableList)) {
// 创建行,根据需要插入的数据添加新行,不处理表头 // // 创建行,根据需要插入的数据添加新行,不处理表头
for (int i = 0; i < tableList.size(); i++) { // for (int i = 0; i < tableList.size(); i++) {
XWPFTableRow row = table.createRow(); // XWPFTableRow row = table.createRow();
List<XWPFTableCell> cells = row.getTableCells(); // List<XWPFTableCell> cells = row.getTableCells();
for (int j = 0; j < cells.size(); j++) { // for (int j = 0; j < cells.size(); j++) {
String s = tableList.get(i)[j]; // String s = tableList.get(i)[j];
XWPFTableCell cell = cells.get(j); // XWPFTableCell cell = cells.get(j);
cell.removeParagraph(0); // cell.removeParagraph(0);
XWPFParagraph paragraph = cell.addParagraph(); // XWPFParagraph paragraph = cell.addParagraph();
paragraph.setAlignment(ParagraphAlignment.CENTER); // paragraph.setAlignment(ParagraphAlignment.CENTER);
// 在段落中添加文本 // // 在段落中添加文本
XWPFRun run = paragraph.createRun(); // XWPFRun run = paragraph.createRun();
run.setText(s); // run.setText(s);
} // }
} // }
} // }
} // }
//
/** // /**
* 替换表格里面的变量 // * 替换表格里面的变量
* // *
* @param doc 要替换的文档 // * @param doc 要替换的文档
* @param tableList 存放数据顺序要与表格一致 // * @param tableList 存放数据顺序要与表格一致
* @param params 参数 // * @param params 参数
*/ // */
private void replaceInTable(CustomXWPFDocument doc, Map<String, Object> params, List<List<String[]>> tableList) { // private void replaceInTable(CustomXWPFDocument doc, Map<String, Object> params, List<List<String[]>> tableList) {
Iterator<XWPFTable> iterator = doc.getTablesIterator(); // Iterator<XWPFTable> iterator = doc.getTablesIterator();
XWPFTable table; // XWPFTable table;
List<XWPFTableRow> rows; // List<XWPFTableRow> rows;
List<XWPFTableCell> cells; // List<XWPFTableCell> cells;
List<XWPFParagraph> paras; // List<XWPFParagraph> paras;
Integer num=0; // Integer num=0;
while (iterator.hasNext()) { // while (iterator.hasNext()) {
table = iterator.next(); // table = iterator.next();
if (table.getRows().size() > 1) { // if (table.getRows().size() > 1) {
// 判断表格是需要替换还是需要插入,判断逻辑有$为替换,表格无$为插入 // // 判断表格是需要替换还是需要插入,判断逻辑有$为替换,表格无$为插入
if (this.matcher(table.getText()).find()||this.matcherS(table.getText()).find()) { // if (this.matcher(table.getText()).find()||this.matcherS(table.getText()).find()) {
rows = table.getRows(); // rows = table.getRows();
for (XWPFTableRow row : rows) { // for (XWPFTableRow row : rows) {
cells = row.getTableCells(); // cells = row.getTableCells();
for (XWPFTableCell cell : cells) { // for (XWPFTableCell cell : cells) {
List<XWPFParagraph> paragraphListTable = cell.getParagraphs(); // List<XWPFParagraph> paragraphListTable = cell.getParagraphs();
processParagraphs(paragraphListTable, params, doc); // processParagraphs(paragraphListTable, params, doc);
} // }
} // }
}else { // }else {
if (CollUtil.isNotEmpty(tableList.get(num))){ // if (CollUtil.isNotEmpty(tableList.get(num))){
insertTable(table, tableList.get(num)); // 插入数据 // insertTable(table, tableList.get(num)); // 插入数据
} // }
num++; // num++;
} // }
} // }
} // }
} // }
//
/** // /**
* 正则匹配字符串 // * 正则匹配字符串
* // *
* @param str // * @param str
* @return // * @return
*/ // */
private Matcher matcher(String str) { // private Matcher matcher(String str) {
Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}", Pattern.CASE_INSENSITIVE); // Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str); // Matcher matcher = pattern.matcher(str);
return matcher; // return matcher;
} // }
private Matcher matcherS(String str) { // private Matcher matcherS(String str) {
Pattern pattern = Pattern.compile("\\$(.*?)\\$"); // Pattern pattern = Pattern.compile("\\$(.*?)\\$");
Matcher matcher = pattern.matcher(str); // Matcher matcher = pattern.matcher(str);
return matcher; // return matcher;
} // }
//
/** // /**
* 根据图片类型,取得对应的图片类型代码 // * 根据图片类型,取得对应的图片类型代码
* // *
* @param picType // * @param picType
* @return int // * @return int
*/ // */
private static int getPictureType(String picType) { // private static int getPictureType(String picType) {
int res = CustomXWPFDocument.PICTURE_TYPE_PICT; // int res = CustomXWPFDocument.PICTURE_TYPE_PICT;
if (picType != null) { // if (picType != null) {
if (picType.equalsIgnoreCase("image/png")) { // if (picType.equalsIgnoreCase("image/png")) {
res = CustomXWPFDocument.PICTURE_TYPE_PNG; // res = CustomXWPFDocument.PICTURE_TYPE_PNG;
} else if (picType.equalsIgnoreCase("image/dib")) { // } else if (picType.equalsIgnoreCase("image/dib")) {
res = CustomXWPFDocument.PICTURE_TYPE_DIB; // res = CustomXWPFDocument.PICTURE_TYPE_DIB;
} else if (picType.equalsIgnoreCase("image/emf")) { // } else if (picType.equalsIgnoreCase("image/emf")) {
res = CustomXWPFDocument.PICTURE_TYPE_EMF; // res = CustomXWPFDocument.PICTURE_TYPE_EMF;
} else if (picType.equalsIgnoreCase("image/jpg") || picType.equalsIgnoreCase("image/jpeg")) { // } else if (picType.equalsIgnoreCase("image/jpg") || picType.equalsIgnoreCase("image/jpeg")) {
res = CustomXWPFDocument.PICTURE_TYPE_JPEG; // res = CustomXWPFDocument.PICTURE_TYPE_JPEG;
} else if (picType.equalsIgnoreCase("image/wmf")) { // } else if (picType.equalsIgnoreCase("image/wmf")) {
res = CustomXWPFDocument.PICTURE_TYPE_WMF; // res = CustomXWPFDocument.PICTURE_TYPE_WMF;
} // }
} // }
return res; // return res;
} // }
//
} //}

View File

@@ -135,11 +135,39 @@
<artifactId>message-api</artifactId> <artifactId>message-api</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>cs-system-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>harmonic-common</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>event-common</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>csHarmonicBoot</finalName> <finalName>csHarmonicBoot</finalName>
<plugins> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>

View File

@@ -22,10 +22,10 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
/** /**
* (cs_configuration)表控制层 * (cs_configuration)表控制层
* *
* @author xxxxx * @author xxxxx
*/ */
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/csconfiguration") @RequestMapping("/csconfiguration")
@@ -38,10 +38,10 @@ public class CsConfigurationController extends BaseController {
@PostMapping("/add") @PostMapping("/add")
@ApiOperation("新增组态项目") @ApiOperation("新增组态项目")
@ApiImplicitParam(name = "csConfigurationParm", value = "新增组态项目参数", required = true) @ApiImplicitParam(name = "csConfigurationParm", value = "新增组态项目参数", required = true)
public HttpResult<Boolean> add(@RequestBody @Validated CsConfigurationParm csConfigurationParm){ public HttpResult<Boolean> add(@RequestBody @Validated CsConfigurationParm csConfigurationParm) {
String methodDescribe = getMethodDescribe("add"); String methodDescribe = getMethodDescribe("add");
boolean save = csConfigurationService.add (csConfigurationParm); boolean save = csConfigurationService.add(csConfigurationParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, save, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, save, methodDescribe);
} }
@@ -49,23 +49,22 @@ public class CsConfigurationController extends BaseController {
@PostMapping("/audit") @PostMapping("/audit")
@ApiOperation("修改组态项目") @ApiOperation("修改组态项目")
@ApiImplicitParam(name = "auditParm", value = "修改组态项目参数", required = true) @ApiImplicitParam(name = "auditParm", value = "修改组态项目参数", required = true)
public HttpResult<Boolean> audit(@RequestBody @Validated CsConfigurationParm.CsConfigurationAuditParam auditParm){ public HttpResult<Boolean> audit(@RequestBody @Validated CsConfigurationParm.CsConfigurationAuditParam auditParm) {
String methodDescribe = getMethodDescribe("audit"); String methodDescribe = getMethodDescribe("audit");
boolean save = csConfigurationService.audit (auditParm); boolean save = csConfigurationService.audit(auditParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, save, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, save, methodDescribe);
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryPage") @PostMapping("/queryPage")
@ApiOperation("组态项目分页查询") @ApiOperation("组态项目分页查询")
@ApiImplicitParam(name = "csConfigurationQueryParam", value = "组态项目查询参数", required = true) @ApiImplicitParam(name = "csConfigurationQueryParam", value = "组态项目查询参数", required = true)
public HttpResult<IPage<CsConfigurationVO>> queryPage(@RequestBody @Validated CsConfigurationParm.CsConfigurationQueryParam csConfigurationQueryParam ){ public HttpResult<IPage<CsConfigurationVO>> queryPage(@RequestBody @Validated CsConfigurationParm.CsConfigurationQueryParam csConfigurationQueryParam) {
String methodDescribe = getMethodDescribe("queryPage"); String methodDescribe = getMethodDescribe("queryPage");
IPage<CsConfigurationVO> page = csConfigurationService.queryPage (csConfigurationQueryParam); IPage<CsConfigurationVO> page = csConfigurationService.queryPage(csConfigurationQueryParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
} }
@@ -73,10 +72,10 @@ public class CsConfigurationController extends BaseController {
@PostMapping("/uploadImage") @PostMapping("/uploadImage")
@ApiOperation("上传底图") @ApiOperation("上传底图")
@ApiImplicitParam(name = "file", value = "底图文件", required = true) @ApiImplicitParam(name = "file", value = "底图文件", required = true)
public HttpResult<MinIoUploadResDTO> uploadImage(@RequestParam("file") MultipartFile issuesFile){ public HttpResult<MinIoUploadResDTO> uploadImage(@RequestParam("file") MultipartFile issuesFile) {
String methodDescribe = getMethodDescribe("uploadImage"); String methodDescribe = getMethodDescribe("uploadImage");
String filePath = csConfigurationService.uploadImage(issuesFile); String filePath = csConfigurationService.uploadImage(issuesFile);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,new MinIoUploadResDTO(issuesFile.getOriginalFilename(),filePath), methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, new MinIoUploadResDTO(issuesFile.getOriginalFilename(), filePath), methodDescribe);
} }
} }

View File

@@ -1,10 +1,16 @@
package com.njcn.csharmonic.controller; package com.njcn.csharmonic.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.extra.template.TemplateException; import cn.hutool.extra.template.TemplateException;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.csharmonic.pojo.param.eventReport.ExportParam; import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csharmonic.service.event.EventMonitorReportService; import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
import com.njcn.csharmonic.service.event.CsEventMonitorReportService;
import com.njcn.event.common.pojo.dto.LineDetailDataCommDTO;
import com.njcn.event.common.service.EventMonitorReportService;
import com.njcn.event.pojo.param.ExportParam;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -32,16 +38,17 @@ import java.text.ParseException;
@RestController @RestController
@RequestMapping("/eventReport") @RequestMapping("/eventReport")
@RequiredArgsConstructor @RequiredArgsConstructor
public class EventMonitorReportController { public class CsEventMonitorReportController {
private final EventMonitorReportService eventMonitorReportService; private final CsEventMonitorReportService monitorEventReportService;
private final CsLineFeignClient csLineFeignClient;
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getLineExport") @PostMapping("/getLineExport")
@ApiOperation("监测点报告导出") @ApiOperation("监测点报告导出")
@ApiImplicitParam(name = "exportParam", value = "监测点报告导出参数", required = true) @ApiImplicitParam(name = "exportParam", value = "监测点报告导出参数", required = true)
public void getLineExport(@RequestBody @Validated ExportParam exportParam, HttpServletResponse response) throws IOException, InvalidFormatException, TemplateException, ParseException { public void getLineExport(@RequestBody @Validated ExportParam exportParam, HttpServletResponse response) throws IOException, InvalidFormatException, TemplateException, ParseException {
eventMonitorReportService.getLineExport(exportParam, response); monitorEventReportService.getLineExport(exportParam, response);
} }
} }

Some files were not shown because too many files have changed in this diff Show More