diff --git a/pqs-auth/src/main/java/com/njcn/auth/service/UserTokenService.java b/pqs-auth/src/main/java/com/njcn/auth/service/UserTokenService.java index 4a47ce0e2..188df8d45 100644 --- a/pqs-auth/src/main/java/com/njcn/auth/service/UserTokenService.java +++ b/pqs-auth/src/main/java/com/njcn/auth/service/UserTokenService.java @@ -104,7 +104,7 @@ public class UserTokenService { redisUtil.saveByKeyWithExpire(onlineUserKey, userTokenInfo, refreshLifeTime.plusMinutes(5L).toEpochSecond(ZoneOffset.of("+8")) - LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"))); //记录成功登录后的信息 - LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, nickName, ip, "登录认证", OperateType.AUTHENTICATE, 1, "", 0, 1, generalInfo.getMicroServiceName(), userIndex); + LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, nickName, ip, "登录认证", OperateType.AUTHENTICATE, 1, "", 0, 1, generalInfo.getMicroServiceName(), userIndex,LocalDateTime.now()); publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 2, false); } diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/LogInfoDTO.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/LogInfoDTO.java index 3ce0ad73f..78cba3f62 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/LogInfoDTO.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/LogInfoDTO.java @@ -1,10 +1,16 @@ package com.njcn.common.pojo.dto; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDateTime; /** * @author hongawen @@ -62,4 +68,11 @@ public class LogInfoDTO implements Serializable { */ private String userIndex; + /** + * 0 未登录; 1 已登录 + */ + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; } diff --git a/pqs-common/common-web/src/main/java/com/njcn/web/service/impl/LogServiceImpl.java b/pqs-common/common-web/src/main/java/com/njcn/web/service/impl/LogServiceImpl.java index 35cffb9d4..93f31a407 100644 --- a/pqs-common/common-web/src/main/java/com/njcn/web/service/impl/LogServiceImpl.java +++ b/pqs-common/common-web/src/main/java/com/njcn/web/service/impl/LogServiceImpl.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; +import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -78,8 +79,17 @@ public class LogServiceImpl implements ILogService { String type = ReflectCommonUtil.getOperateInfoByMethod(returnType.getMethod()).getOperateType(); String level = ReflectCommonUtil.getOperateInfoByMethod(returnType.getMethod()).getOperateLevel(); String operateType = ReflectCommonUtil.getOperateTypeByMethod(returnType.getMethod()); - LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, userName, ip, methodDescribe, operateType, result.equalsIgnoreCase("失败") ? 0 : 1, "", levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex); + Integer severity = levelStringToNumber(level); + LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, userName, ip, methodDescribe, operateType, result.equalsIgnoreCase("失败") ? 0 : 1, "", severity, type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex, LocalDateTime.now()); publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 2, false); + //推送审计消息功能 + if(severity!=0){ + publisher.send("/userLogPush", PubUtils.obj2json(logInfoDTO), 2, false); + //发送邮箱功能 + if(severity==2&&logInfoDTO.getResult()==0){ + publisher.send("/userLogEmailPush", PubUtils.obj2json(logInfoDTO), 2, false); + } + } //如果存在设备日志注解,则记录设备日志 if(Objects.nonNull((returnType.getMethod()))&& (returnType.getMethod()).isAnnotationPresent(DeviceLog.class)){ String deviceOperate = returnType.getMethod().getAnnotation(DeviceLog.class).operateType(); @@ -120,8 +130,10 @@ public class LogServiceImpl implements ILogService { String type = ReflectCommonUtil.getOperateInfoByMethod(method).getOperateType(); String level = ReflectCommonUtil.getOperateInfoByMethod(method).getOperateLevel(); String operateType = ReflectCommonUtil.getOperateTypeByMethod(method); - LogInfoDTO logInfoDTO = new LogInfoDTO(tempLogInfo.getLoginName(), tempLogInfo.getUserName(), tempLogInfo.getIp(), ReflectCommonUtil.getMethodDescribeByMethod(method), operateType, result.equalsIgnoreCase("失败") ? 0 : 1, message, levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex); + Integer severity = levelStringToNumber(level); + LogInfoDTO logInfoDTO = new LogInfoDTO(tempLogInfo.getLoginName(), tempLogInfo.getUserName(), tempLogInfo.getIp(), ReflectCommonUtil.getMethodDescribeByMethod(method), operateType, result.equalsIgnoreCase("失败") ? 0 : 1, message, severity, type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex, LocalDateTime.now()); publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 1, false); + auditPush(severity, logInfoDTO); } /** @@ -145,9 +157,22 @@ public class LogServiceImpl implements ILogService { String ip = RequestUtil.getRealIp(request); String type = ReflectCommonUtil.getOperateInfoByMethod(method).getOperateType(); String level = ReflectCommonUtil.getOperateInfoByMethod(method).getOperateLevel(); + Integer severity = levelStringToNumber(level); String operateType = ReflectCommonUtil.getOperateTypeByMethod(method); - LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, "", ip, ReflectCommonUtil.getMethodDescribeByMethod(method), operateType, result.equalsIgnoreCase("失败") ? 0 : 1, message, levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), loginName); + LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, "", ip, ReflectCommonUtil.getMethodDescribeByMethod(method), operateType, result.equalsIgnoreCase("失败") ? 0 : 1, message, severity, type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), loginName, LocalDateTime.now()); publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 1, false); + auditPush(severity, logInfoDTO); + } + + private void auditPush(Integer severity, LogInfoDTO logInfoDTO) { + //推送审计消息功能 + if(severity !=0){ + publisher.send("/userLogPush", PubUtils.obj2json(logInfoDTO), 2, false); + //发送邮箱功能 + if(severity ==2&& logInfoDTO.getResult()==0){ + publisher.send("/userLogEmailPush", PubUtils.obj2json(logInfoDTO), 2, false); + } + } } /** diff --git a/pqs-common/common-web/src/main/java/com/njcn/web/utils/EmailUtil.java b/pqs-common/common-web/src/main/java/com/njcn/web/utils/EmailUtil.java new file mode 100644 index 000000000..b3bd08a56 --- /dev/null +++ b/pqs-common/common-web/src/main/java/com/njcn/web/utils/EmailUtil.java @@ -0,0 +1,51 @@ +package com.njcn.web.utils; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.extra.mail.MailUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author wr + * @description + * @date 2024/3/11 14:32 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class EmailUtil { + + + /** + * 推送单邮件信息发送 + * @param to + * @param title + * @param content + * @param isHtml + */ + public void send(String to,String title,String content,Boolean isHtml) { + if(isHtml){ + String s = FileUtil.readUtf8String("cs.html"); + content = s.replace("#{content}", content); + } + MailUtil.send(to, title, content, isHtml); + } + + /** + * 推送多个邮件信息 + * @param to + * @param title + * @param content + * @param isHtml + */ + public void sendMultiple(List to,String title,String content,Boolean isHtml) { + if(isHtml){ + String s = FileUtil.readUtf8String("cs.html"); + content = s.replace("#{content}", content); + } + MailUtil.send(to, title, content, isHtml); + } +} diff --git a/pqs-common/common-web/src/main/resources/cs.html b/pqs-common/common-web/src/main/resources/cs.html new file mode 100644 index 000000000..52cd4f13b --- /dev/null +++ b/pqs-common/common-web/src/main/resources/cs.html @@ -0,0 +1,53 @@ + + + + + + 系统通知邮件 + + + +
+



+
+
+
+
+
+
消息通知: +
+
+ #{content} +
+ 如有疑问 + 登录系统 处理! +
+
+
+
温馨提醒 +
+
使用过程中如有任何问题,请联系系统管理员。
+
+
+
+
+
+
+

+ + Copyright © 2023-2024 南京灿能电力自动化股份有限公司. 保留所有权利。 +

+

+ + 邮件由系统自动发送,请勿直接回复本邮件! +

+
+
+ + + \ No newline at end of file diff --git a/pqs-common/common-web/src/main/resources/mail.setting b/pqs-common/common-web/src/main/resources/mail.setting new file mode 100644 index 000000000..ed5bcc61c --- /dev/null +++ b/pqs-common/common-web/src/main/resources/mail.setting @@ -0,0 +1,10 @@ +# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀> +host = smtp.163.com +# 邮件服务器的SMTP端口,可选,默认25 +port = 25 +# 发件人(必须正确,否则发送失败) +from = wxb41010@163.com +# 用户名,默认为发件人邮箱前缀 +user = wxb41010 +# 密码(注意,某些邮箱需要为SMTP服务单独设置授权码,详情查看相关帮助) +pass = ZMZJRKMKRIXWZLMP diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/send/PqTypicalSourceCreatePO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/send/PqTypicalSourceCreatePO.java index c5eeff95c..588b9d1f7 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/send/PqTypicalSourceCreatePO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/send/PqTypicalSourceCreatePO.java @@ -153,6 +153,9 @@ public class PqTypicalSourceCreatePO { @TableField("interferenceSourceCount") private Integer interferenceSourceCount; - + /** + * 计算日期 + */ + private String computeDate; } \ No newline at end of file diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadEvaluationDataD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadEvaluationDataD.java index fac3b5bd3..fe080d15d 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadEvaluationDataD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadEvaluationDataD.java @@ -130,5 +130,9 @@ public class RUploadEvaluationDataD { */ private Integer uploadStatus; + /** + * 计算日期 + */ + private String computeDate; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java index 87ece3ada..1034e3f3e 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java @@ -130,4 +130,8 @@ public class RUploadPointStatisticalDataD { * 上送状态(0:未上送 1:已上送) */ private Integer uploadStatus; + /** + * 计算日期 + */ + private String computeDate; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadSubstationStatisticalDataD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadSubstationStatisticalDataD.java index 48efb6429..97a5c31a6 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadSubstationStatisticalDataD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadSubstationStatisticalDataD.java @@ -109,10 +109,13 @@ public class RUploadSubstationStatisticalDataD { @MppMultiId private String statisticalType; - private String statisticalMonth; /** * 上送状态(0:未上送 1:已上送) */ private Integer uploadStatus; + /** + * 计算日期 + */ + private String computeDate; } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/send/impl/PqTypicalSourceCreatePOServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/send/impl/PqTypicalSourceCreatePOServiceImpl.java index 05ff4ce4f..a3f7aa8b9 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/send/impl/PqTypicalSourceCreatePOServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/send/impl/PqTypicalSourceCreatePOServiceImpl.java @@ -99,6 +99,9 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl dtoList = BeanUtil.copyToList(list, PqTypicalSourceCreateDTO.class); + //以尺寸100分片 - List> pendingIds = ListUtils.partition(dtoList, 100); - pendingIds.forEach(temp->{ + List> partition = ListUtils.partition(list, 100); + partition.forEach(temp->{ + List dtoList = BeanUtil.copyToList(temp, PqTypicalSourceCreateDTO.class); SendParam sendParam = new SendParam(); - sendParam.setStats(temp); - sendParam.setStatisticalDate(temp.get(0).getStatisticalDate()); + sendParam.setStats(dtoList); + sendParam.setStatisticalDate(temp.get(0).getComputeDate()); String s = JSONObject.toJSONStringWithDateFormat(sendParam, JSON.DEFFAULT_DATE_FORMAT); log.info(Thread.currentThread().getName() + "获取返回体 换流站指标统计明细数据接口数据:" + s + "开始----!"); Map send = GwSendUtil.send(sendParam, GWSendEnum.TYPICAL_SOURCE); log.info(Thread.currentThread().getName() + "获取返回体换流站指标统计明细数据接口响应结果:" + send + "结束----!"); - - List trIds = temp.stream().map(PqTypicalSourceCreateDTO::getId).distinct().collect(Collectors.toList()); + List trIds = dtoList.stream().map(PqTypicalSourceCreateDTO::getId).distinct().collect(Collectors.toList()); returnInformation(1, trIds, send); }); - return "成功"; } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PointStatisticalDataServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PointStatisticalDataServiceImpl.java index 87e774b01..8394a2b8e 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PointStatisticalDataServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PointStatisticalDataServiceImpl.java @@ -94,19 +94,17 @@ public class PointStatisticalDataServiceImpl extends ServiceImplitem.setStationType(dictDataMap.get(item.getStationType()).getValue())).collect(Collectors.toList()); - - List dtoList = BeanUtil.copyToList(list, MonitorStatisticalDTO.class); - //以尺寸100分片 - List> pendingIds = ListUtils.partition(dtoList, 100); + List> partition = ListUtils.partition(list, 100); //分片上传 - for (int i = 0; i < pendingIds.size(); i++) { + for (int i = 0; i < partition.size(); i++) { + List dtoList = BeanUtil.copyToList(partition.get(i), MonitorStatisticalDTO.class); SendParam sp = new SendParam(); - sp.setStats(pendingIds.get(i)); - sp.setStatisticalDate(param.getTime()); + sp.setStats(dtoList); + sp.setStatisticalDate(partition.get(i).get(0).getComputeDate()); //上送数据 Map send = GwSendUtil.send(sp, GWSendEnum.STATISTICAL_CREATE); //获取返回结果 - List l = pendingIds.get(i).stream().map(MonitorStatisticalDTO::getId).collect(Collectors.toList()); + List l = dtoList.stream().map(MonitorStatisticalDTO::getId).collect(Collectors.toList()); returnInformation(i,l,send); } return "上送成功:成功数据" + list.size() + "条"; diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java index ba9e9bc09..73f7b4adb 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java @@ -107,49 +107,50 @@ public class REvaluationDataServiceImpl extends ServiceImpl dtoList = BeanUtil.copyToList(list, PqEvaluationCreateDTO.class); + //以尺寸100分片 - List> pendingIds = ListUtils.partition(dtoList, 100); + List> partition = ListUtils.partition(list, 100); //分片上传 - for (int i = 0; i < pendingIds.size(); i++) { + for (int i = 0; i < partition.size(); i++) { //处理数据 - List l1 = pendingIds.get(i).stream().peek(item->{ - if (Objects.equals(item.getAvgValue(),3.1415926)){ + List collect = partition.get(i).stream().peek(item -> { + if (Objects.equals(item.getAvgValue(), 3.1415926)) { item.setAvgValue(0d); } else { BigDecimal four = BigDecimal.valueOf(item.getAvgValue()); - double value = four.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue(); + double value = four.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); item.setAvgValue(value); } - if (Objects.equals(item.getStandardDeviation(),3.1415926)){ + if (Objects.equals(item.getStandardDeviation(), 3.1415926)) { item.setStandardDeviation(0d); } - if (Objects.equals(item.getHarmonicNum(),0)){ + if (Objects.equals(item.getHarmonicNum(), 0)) { item.setHarmonicNum(null); } - if (Objects.equals(item.getVoltageLevel(),"0")){ + if (Objects.equals(item.getVoltageLevel(), "0")) { item.setVoltageLevel(null); } else { item.setVoltageLevel(getVoltage(item.getVoltageLevel())); } - if (Objects.equals(item.getCityId(),"")){ + if (Objects.equals(item.getCityId(), "")) { item.setCityId(null); } - if (Objects.equals(item.getCountyId(),"")){ + if (Objects.equals(item.getCountyId(), "")) { item.setCountyId(null); } BigDecimal four = BigDecimal.valueOf(item.getMonitorBusRate()); - double value = four.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue(); + double value = four.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); item.setMonitorBusRate(value); }).collect(Collectors.toList()); + List dtoList = BeanUtil.copyToList(collect, PqEvaluationCreateDTO.class); //组装数据 SendParam sp = new SendParam(); - sp.setStats(l1); - sp.setStatisticalDate(param.getTime()); + sp.setStats(dtoList); + sp.setStatisticalDate(collect.get(0).getComputeDate()); //上送数据 Map send = GwSendUtil.send(sp, GWSendEnum.EVALUATION); //获取返回结果 - List l = pendingIds.get(i).stream().map(PqEvaluationCreateDTO::getId).collect(Collectors.toList()); + List l = dtoList.stream().map(PqEvaluationCreateDTO::getId).collect(Collectors.toList()); returnInformation(i,l,send); } return "上送成功:成功数据" + list.size() + "条"; diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java index b11c13166..1318e5c4a 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; @@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.harmonic.mapper.upload.RUploadSubstationStatisticalDataDMapper; +import com.njcn.harmonic.pojo.dto.PqTypicalSourceCreateDTO; import com.njcn.harmonic.pojo.dto.upload.SubstationQualityStatisticsDTO; import com.njcn.harmonic.pojo.param.UploadDataParam; import com.njcn.harmonic.pojo.param.UploadParam; @@ -86,21 +88,21 @@ public class RSubstationStatisticalDataServiceImpl extends ServiceImpl dtoList = BeanUtil.copyToList(list, SubstationQualityStatisticsDTO.class); //以尺寸100分片 - List> pendingIds = ListUtils.partition(dtoList, 100); + List> partition = ListUtils.partition(list, 100); //分片上传 - for (int i = 0; i < pendingIds.size(); i++) { + for (int i = 0; i < partition.size(); i++) { + List collect = partition.get(i).stream().peek(item -> { + item.setStatisticalDate(item.getComputeDate().substring(0, 7)); + }).collect(Collectors.toList()); + List dtoList = BeanUtil.copyToList(collect, SubstationQualityStatisticsDTO.class); SendParam sp = new SendParam(); - sp.setStats(pendingIds.get(i)); - sp.setStatisticalDate(time); + sp.setStats(dtoList); + sp.setStatisticalDate(partition.get(i).get(0).getComputeDate()); //上送数据 Map send = GwSendUtil.send(sp, GWSendEnum.SUBSTATION_MONITOR); //获取返回结果 - List l = pendingIds.get(i).stream().map(SubstationQualityStatisticsDTO::getId).collect(Collectors.toList()); + List l = dtoList.stream().map(SubstationQualityStatisticsDTO::getId).collect(Collectors.toList()); returnInformation(i,l,send); } return "上送成功:成功数据" + list.size() + "条"; @@ -143,9 +145,7 @@ public class RSubstationStatisticalDataServiceImpl extends ServiceImpl { - PqTypicalSourceCreatePO selectAvg(@Param("param") PqTypicalSourceCreatePO param, + PqTypicalSourceCreatePO selectAvgMonth(@Param("param") PqTypicalSourceCreatePO param, + @Param("startTime")String begin, + @Param("endTime")String end); + + PqTypicalSourceCreatePO selectAvgYear(@Param("param") PqTypicalSourceCreatePO param, @Param("startTime")String begin, @Param("endTime")String end); } \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/send/mapping/PqTypicalSourceCreatePOMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/send/mapping/PqTypicalSourceCreatePOMapper.xml index e03906da8..27c0baef8 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/send/mapping/PqTypicalSourceCreatePOMapper.xml +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/send/mapping/PqTypicalSourceCreatePOMapper.xml @@ -2,7 +2,7 @@ - select avg(interferenceSourceNum) as interferenceSourceNum, avg(averageOvDays) as averageOvDays, @@ -25,18 +25,17 @@ avg(vOvNum) as vOvNum, avg(vOvRate) as vOvRate, avg(unbanAvgOvRate) as unbanAvgOvRate, - avg(ovDayCount) as ovDayCount, - avg(is_upload_head) as is_upload_head, - avg(monthsCount) as monthsCount, - avg(flickerOvCount) as flickerOvCount, - avg(harmiOvCount) as harmiOvCount, - avg(inseqOvCount) as inseqOvCount, - avg(unbanOvCount) as unbanOvCount, - avg(harmvOvCount) as harmvOvCount, - avg(monitorCount) as monitorCount, - avg(voltageLevel) as voltageLevel, - avg(ovCount) as ovCount, - avg(interferenceSourceCount) as interferenceSourceCount + sum(ovDayCount) as ovDayCount, + sum(monthsCount) as monthsCount, + sum(flickerOvCount) as flickerOvCount, + sum(harmiOvCount) as harmiOvCount, + sum(inseqOvCount) as inseqOvCount, + sum(unbanOvCount) as unbanOvCount, + sum(harmvOvCount) as harmvOvCount, + sum(monitorCount) as monitorCount, + voltageLevel, + sum(ovCount) as ovCount, + sum(interferenceSourceCount) as interferenceSourceCount FROM pq_typical_source_create @@ -85,6 +84,90 @@ + GROUP BY voltageLevel + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/upload/mapping/RUploadSubstationStatisticalDataDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/upload/mapping/RUploadSubstationStatisticalDataDMapper.xml index 12b074096..cf6640960 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/upload/mapping/RUploadSubstationStatisticalDataDMapper.xml +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/upload/mapping/RUploadSubstationStatisticalDataDMapper.xml @@ -18,13 +18,13 @@ round(avg(coverage_rate),4) coverageRate, case when avg(run_substation_num) = 0 then 0 else round(avg(monitor_substaion_num)/avg(run_substation_num)*100,4) end monitoringRate, #{monthDate} statisticalDate, - #{monthDate} statisticalMonth, '01' statisticalType, 0 uploadStatus from r_upload_substation_statistical_data_d where statistical_date between #{startTime} and #{endTime} + and statistical_type = "02" group by province_id , province_name , city_id , diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/PqTypicalSourceCreatePOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/PqTypicalSourceCreatePOService.java index eb1577375..f788ec330 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/PqTypicalSourceCreatePOService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/PqTypicalSourceCreatePOService.java @@ -17,4 +17,6 @@ public interface PqTypicalSourceCreatePOService extends IService calculatedParam); void handlerMonth(CalculatedParam calculatedParam); + + void handleYear(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/impl/PqTypicalSourceCreatePOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/impl/PqTypicalSourceCreatePOServiceImpl.java index 6626c64c3..a86d8159b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/impl/PqTypicalSourceCreatePOServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/impl/PqTypicalSourceCreatePOServiceImpl.java @@ -222,6 +222,7 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl calculatedParam) { + List pqTypicalSourceCreatePOList = new ArrayList<>(); + //查询时间范围 + String begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(); + String end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(); + String date = begin.substring(0, 4); + + /*3.45 典型源荷用户类型*/ + List collect = Stream.of(DicDataEnum.TRACTIONSTATION.getCode(), + DicDataEnum.WINDFARM_USER.getCode(), + DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode(), + DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode()).collect(Collectors.toList()); + + + List deptList = deptFeignClient.allDeptList().getData(); + Map mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity())); + Map mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity())); + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + + collect.stream().forEach(temp->{ + PqTypicalSourceCreatePO pqTypicalSourceCreatePO = new PqTypicalSourceCreatePO(); + if (temp.equals(DicDataEnum.TRACTIONSTATION.getCode())){ + pqTypicalSourceCreatePO.setIndustryType("99"); + + } else if (temp.equals(DicDataEnum.WINDFARM_USER.getCode())) { + pqTypicalSourceCreatePO.setIndustryType("99"); + + }else if(temp.equals(DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode())) { + pqTypicalSourceCreatePO.setIndustryType("99"); + }else if(temp.equals(DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode())) { + pqTypicalSourceCreatePO.setIndustryType("00"); + + } + if (mapCode.containsKey(deptGetChildrenMoreDTO.getUnitId())) { + PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(deptGetChildrenMoreDTO.getUnitId()); + String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId()) + .split(StrUtil.COMMA); + if (split.length <3) { + return; + } + + for (int i = 2; i < split.length; i++) { + //省 + if (i == 2) { + if (mapList.containsKey(split[i])) { + pvTerminalTreeVO = mapList.get(split[i]); + pqTypicalSourceCreatePO.setProvinceName(pvTerminalTreeVO.getName()); + pqTypicalSourceCreatePO.setProvinceId(pvTerminalTreeVO.getCode()); + pqTypicalSourceCreatePO.setStatisticalLevel("3"); + } + } + //市 + if (i == 3) { + if (mapList.containsKey(split[i])) { + pvTerminalTreeVO = mapList.get(split[i]); + pqTypicalSourceCreatePO.setCityName(pvTerminalTreeVO.getName()); + pqTypicalSourceCreatePO.setCityId(pvTerminalTreeVO.getCode()); + pqTypicalSourceCreatePO.setStatisticalLevel("4"); + + } + } + //县 + if (i == 4) { + if (mapList.containsKey(split[i])) { + pvTerminalTreeVO = mapList.get(split[i]); + pqTypicalSourceCreatePO.setCountyName(pvTerminalTreeVO.getName()); + pqTypicalSourceCreatePO.setCountyId(pvTerminalTreeVO.getCode()); + pqTypicalSourceCreatePO.setStatisticalLevel("5"); + + } + } + } + } + pqTypicalSourceCreatePO.setIndexType(temp); + pqTypicalSourceCreatePO.setStatisticalType("02"); + PqTypicalSourceCreatePO po= this.baseMapper.selectAvgYear(pqTypicalSourceCreatePO, begin, end); + if(ObjectUtil.isNotNull(po)){ + po.setStatisticalType("01"); + po.setIndexType(temp); + po.setStatisticalDate(date); + po.setComputeDate(calculatedParam.getDataDate()); + po.setProvinceName(pqTypicalSourceCreatePO.getProvinceName()); + po.setProvinceId(pqTypicalSourceCreatePO.getProvinceId()); + po.setCityName(pqTypicalSourceCreatePO.getCityName()); + po.setCityId(pqTypicalSourceCreatePO.getCityId()); + po.setCountyName(pqTypicalSourceCreatePO.getCountyName()); + po.setCountyId(pqTypicalSourceCreatePO.getCountyId()); + po.setStatisticalLevel(pqTypicalSourceCreatePO.getStatisticalLevel()); + po.setIndustryType(pqTypicalSourceCreatePO.getIndustryType()); + po.setId(deptGetChildrenMoreDTO.getUnitId()+"-"+po.getIndexType()+"-"+po.getStatisticalType()+"-"+date); pqTypicalSourceCreatePOList.add(po); } }); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java index 5831f02ec..4fa43cd61 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java @@ -101,6 +101,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl{ item.setId(IdUtil.simpleUUID()); + item.setComputeDate(calculatedParam.getDataDate()); }); this.saveOrUpdateBatchByMultiId(list,1000); } @@ -208,6 +210,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl{ item.setId(IdUtil.simpleUUID()); + item.setComputeDate(calculatedParam.getDataDate()); }); this.saveOrUpdateBatchByMultiId(list,1000); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java index 3bf7653b9..c9b9c4a98 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java @@ -159,6 +159,7 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl{ item.setId(IdUtil.simpleUUID()); + item.setComputeDate(calculatedParam.getDataDate()); }); this.saveOrUpdateBatchByMultiId(list,1000); } @@ -293,6 +296,7 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl{ item.setId(IdUtil.simpleUUID()); + item.setComputeDate(calculatedParam.getDataDate()); }); this.saveOrUpdateBatchByMultiId(list,1000); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadSubstationStatisticalDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadSubstationStatisticalDataDServiceImpl.java index c287b2e39..cb4699a56 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadSubstationStatisticalDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadSubstationStatisticalDataDServiceImpl.java @@ -79,6 +79,7 @@ public class RUploadSubstationStatisticalDataDServiceImpl extends MppServiceImpl RUploadSubstationStatisticalDataD rUploadSubstationStatisticalDataD = new RUploadSubstationStatisticalDataD(); rUploadSubstationStatisticalDataD.setId(IdUtil.simpleUUID()); rUploadSubstationStatisticalDataD.setStatisticalDate(DateUtil.format(DateUtil.parse(calculatedParam.getDataDate()),DatePattern.NORM_MONTH_PATTERN)); + rUploadSubstationStatisticalDataD.setComputeDate(calculatedParam.getDataDate()); rUploadSubstationStatisticalDataD.setStatisticalType(UploadEnum.STATISTICAL_TYPE_02.getCode()); rUploadSubstationStatisticalDataD.setProvinceId(dept.getCode()); rUploadSubstationStatisticalDataD.setProvinceName(dept.getName()); @@ -114,19 +115,17 @@ public class RUploadSubstationStatisticalDataDServiceImpl extends MppServiceImpl @Override public void insertSubStatisticalDataMonth(CalculatedParam calculatedParam) { //开始月份 - String beginMonth = DateUtil.format(DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_MONTH_PATTERN)), DatePattern.NORM_MONTH_PATTERN); + String beginMonth = DateUtil.format(DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_MONTH_PATTERN)), DatePattern.NORM_YEAR_PATTERN); //起始时间 String startTime = DateUtil.format(DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATE_PATTERN); //结束时间 String endTime = DateUtil.format(DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATE_PATTERN); //数据集 List list = this.baseMapper.substationStatisticalMonthData(beginMonth,startTime,endTime); - - - if (CollUtil.isNotEmpty(list)){ list.forEach(item->{ item.setId(IdUtil.simpleUUID()); + item.setComputeDate(calculatedParam.getDataDate()); }); this.saveOrUpdateBatchByMultiId(list,1000); } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/handler/MqttMessageHandler.java b/pqs-system/system-boot/src/main/java/com/njcn/system/handler/MqttMessageHandler.java index 3bcb3de56..175061bb4 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/handler/MqttMessageHandler.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/handler/MqttMessageHandler.java @@ -1,16 +1,27 @@ package com.njcn.system.handler; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import com.github.tocrhz.mqtt.annotation.MqttSubscribe; import com.github.tocrhz.mqtt.annotation.Payload; +import com.njcn.common.pojo.constant.PatternRegex; import com.njcn.common.pojo.dto.LogInfoDTO; import com.njcn.common.utils.PubUtils; import com.njcn.system.service.IUserLogService; +import com.njcn.user.api.UserFeignClient; +import com.njcn.user.pojo.po.User; +import com.njcn.web.utils.EmailUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.springframework.stereotype.Component; import java.nio.charset.StandardCharsets; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * @author hongawen @@ -23,6 +34,8 @@ import java.nio.charset.StandardCharsets; public class MqttMessageHandler { private final IUserLogService userLogService; + private final UserFeignClient userFeignClient; + private final EmailUtil emailUtil; /** * 订阅审计日志的记录,并进行入库操作 @@ -32,4 +45,35 @@ public class MqttMessageHandler { LogInfoDTO logInfoDTO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class); userLogService.addUserLog(logInfoDTO); } + + /** + * 订阅审计日志的记录,并进行入库操作 + */ + @MqttSubscribe(value = "/userLogEmailPush") + public void subUserLogEmail(String topic, MqttMessage message, @Payload String payload) { + LogInfoDTO auditLogVO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class); + List data = userFeignClient.getUserListByRoleCode("audit_manager").getData(); + List emails = data.stream() + .filter(x -> Pattern.matches(PatternRegex.EMAIL_REGEX,x.getEmail())) + .filter(x -> StrUtil.isNotBlank(x.getEmail()) && x.getEmailNotice() == 1) + .map(User::getEmail).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(emails)){ + StringBuilder describe = new StringBuilder(); + describe.append(auditLogVO.getType() == 0 ? "业务事件 -> " : "系统事件 -> "); + describe.append(auditLogVO.getUserName()).append("在") + .append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(auditLogVO.getCreateTime())) + .append("在") + .append(auditLogVO.getIp()) + .append("执行了") + .append(auditLogVO.getOperate()) + .append(",结果为"); + if (auditLogVO.getResult() == 1) { + describe.append("成功"); + } + if (auditLogVO.getResult() == 0) { + describe.append("失败").append(",失败原因为").append(auditLogVO.getFailReason()); + } + emailUtil.sendMultiple(emails,"告警消息",describe.toString(),false); + } + } } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java index 798f025ac..57182e17c 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java @@ -112,7 +112,7 @@ public class AuditServiceImpl extends ServiceImpl implem auditLogVO.setUserName(userLog.getLoginName()); auditLogVO.setOperate(userLog.getOperate()); StringBuilder describe = new StringBuilder(); - describe.append(auditLogVO.getUserName()).append("在").append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(userLog.getUpdateTime())).append("在").append(userLog.getIp()).append("执行了").append(userLog.getOperate()).append(",结果为"); + describe.append(auditLogVO.getUserName()).append("在").append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(userLog.getUpdateTime())).append("在").append(userLog.getIp()).append("执行了").append(userLog.getOperate()).append(",结果为"); if (userLog.getResult() == 1) { describe.append("成功"); } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/PqTypicalSourceTaskMRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/PqTypicalSourceTaskMRunner.java index 1acc88140..1c53c580f 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/PqTypicalSourceTaskMRunner.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/PqTypicalSourceTaskMRunner.java @@ -22,11 +22,18 @@ public class PqTypicalSourceTaskMRunner implements TimerTaskRunner { @Override public void action(String date) { + //月 UploadParam param=new UploadParam(); param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_MONTH_PATTERN)); String code = pqTypicalSourceFeignClient.send(param).getCode(); if(code.equals("A0002")){ throw new BusinessException("失败"); } + //年 + param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_YEAR_PATTERN)); + String code2 = pqTypicalSourceFeignClient.send(param).getCode(); + if(code2.equals("A0002")){ + throw new BusinessException("失败"); + } } } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskEvaluationMRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskEvaluationMRunner.java index 05de7d306..a8c1a52ca 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskEvaluationMRunner.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskEvaluationMRunner.java @@ -24,11 +24,18 @@ public class UploadGwTaskEvaluationMRunner implements TimerTaskRunner { @Override public void action(String date) { + //月 UploadParam param = new UploadParam(); param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_MONTH_PATTERN)); String code = uploadGwDataFeignClient.uploadEvaluationData(param).getCode(); if(code.equals("A0002")){ throw new BusinessException("失败"); } + //年 + param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_YEAR_PATTERN)); + String code2 = uploadGwDataFeignClient.uploadEvaluationData(param).getCode(); + if(code2.equals("A0002")){ + throw new BusinessException("失败"); + } } } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskMRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskMRunner.java index 583858bd7..9561c57a2 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskMRunner.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskMRunner.java @@ -30,5 +30,11 @@ public class UploadGwTaskMRunner implements TimerTaskRunner { if(code.equals("A0002")){ throw new BusinessException("失败"); } + //年 + param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_YEAR_PATTERN)); + String code2 = uploadGwDataFeignClient.uploadPointStatisticalData(param).getCode(); + if(code2.equals("A0002")){ + throw new BusinessException("失败"); + } } } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskSubstationMRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskSubstationMRunner.java index 7ce921c72..b77ef5b35 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskSubstationMRunner.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskSubstationMRunner.java @@ -30,5 +30,11 @@ public class UploadGwTaskSubstationMRunner implements TimerTaskRunner { if(code.equals("A0002")){ throw new BusinessException("失败"); } + //年 + param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_YEAR_PATTERN)); + String code2 = uploadGwDataFeignClient.uploadSubstationStatisticalData(param).getCode(); + if(code2.equals("A0002")){ + throw new BusinessException("失败"); + } } } diff --git a/pqs-user/user-api/src/main/java/com/njcn/user/api/UserFeignClient.java b/pqs-user/user-api/src/main/java/com/njcn/user/api/UserFeignClient.java index 3e1a45143..4898b8e37 100644 --- a/pqs-user/user-api/src/main/java/com/njcn/user/api/UserFeignClient.java +++ b/pqs-user/user-api/src/main/java/com/njcn/user/api/UserFeignClient.java @@ -73,4 +73,11 @@ public interface UserFeignClient { */ @PostMapping("/getUserByDeptIds") HttpResult> getUserByDeptIds(@RequestBody List deptId); + /** + * 根据角色Code集合查询用户信息 + * @param roleCode + * @return + */ + @GetMapping("/getUserListByRoleCode") + HttpResult> getUserListByRoleCode(@RequestParam("roleCode") String roleCode); } diff --git a/pqs-user/user-api/src/main/java/com/njcn/user/api/fallback/UserFeignClientFallbackFactory.java b/pqs-user/user-api/src/main/java/com/njcn/user/api/fallback/UserFeignClientFallbackFactory.java index 65e60c5d0..8d8a68c27 100644 --- a/pqs-user/user-api/src/main/java/com/njcn/user/api/fallback/UserFeignClientFallbackFactory.java +++ b/pqs-user/user-api/src/main/java/com/njcn/user/api/fallback/UserFeignClientFallbackFactory.java @@ -78,6 +78,12 @@ public class UserFeignClientFallbackFactory implements FallbackFactory> getUserListByRoleCode(String roleCode) { + log.error("{}异常,降级处理,异常为:{}","根据角色Code集合查询用户信息",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/DeptController.java b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/DeptController.java index 81d1fc79b..9312e9d06 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/DeptController.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/DeptController.java @@ -490,7 +490,7 @@ public class DeptController extends BaseController { @OperateInfo(info = LogEnum.SYSTEM_COMMON) @PostMapping("/getDeptInfoListByIds") @ApiOperation("根据部门ids获取部门集合") - @ApiImplicitParam(name = "list", value = "code集合", required = true) + @ApiImplicitParam(name = "deptIds", value = "code集合", required = true) public HttpResult> getDeptInfoListByIds(@RequestBody List deptIds) { String methodDescribe = getMethodDescribe("getDeptInfoListByIds"); List result = deptService.getDeptInfoListByIds(deptIds); diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/UserController.java b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/UserController.java index 0fbeb710d..707b7b485 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/UserController.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/UserController.java @@ -483,5 +483,20 @@ public class UserController extends BaseController { ); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, users, methodDescribe); } + + /** + * 获取同级部门用户,以及下级部门所有用户 + * @author cdf + * @date 2023/7/31 + */ + @OperateInfo(info = LogEnum.SYSTEM_SERIOUS) + @GetMapping("/getUserListByRoleCode") + @ApiOperation("根据角色Code集合查询用户信息") + @ApiImplicitParam(name = "roleCode", value = "角色Code", required = true) + public HttpResult> getUserListByRoleCode(@RequestParam("roleCode") String roleCode) { + String methodDescribe = getMethodDescribe("getUserListByRoleCode"); + List users = userService.getUserListByRoleCode(roleCode); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, users, methodDescribe); + } } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/UserRoleMapper.java b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/UserRoleMapper.java index 76a86a4df..b9b07f274 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/UserRoleMapper.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/UserRoleMapper.java @@ -2,6 +2,7 @@ package com.njcn.user.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.njcn.user.pojo.po.Role; +import com.njcn.user.pojo.po.User; import com.njcn.user.pojo.po.UserRole; import org.apache.ibatis.annotations.Param; @@ -32,4 +33,12 @@ public interface UserRoleMapper extends BaseMapper { * @return 角色结果集 */ List getRoleListByUserId(String userId); + + /** + * 根据角色Code获取角色信息 + * @param roleCode + * @return + */ + List selectUserRoleCode(@Param("roleCode")String roleCode); + } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/UserRoleMapper.xml b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/UserRoleMapper.xml index bee0470d9..23ace3b2c 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/UserRoleMapper.xml +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/UserRoleMapper.xml @@ -18,4 +18,14 @@ where a.user_id = #{userId} and b.state = 1 + diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/IUserService.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/IUserService.java index b254de63e..3c4210cdf 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/IUserService.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/IUserService.java @@ -185,4 +185,7 @@ public interface IUserService extends IService { String uploadImage(MultipartFile issuesFile); String getUrl(String headSculpture); + + List getUserListByRoleCode(String roleCode); + } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/UserServiceImpl.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/UserServiceImpl.java index 62316940a..b1971fe00 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/UserServiceImpl.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/UserServiceImpl.java @@ -518,6 +518,11 @@ public class UserServiceImpl extends ServiceImpl implements IU return fileStorageUtil.getFileUrl(headSculpture); } + @Override + public List getUserListByRoleCode(String roleCode) { + return userRoleMapper.selectUserRoleCode(roleCode); + } + /** * 根据登录名查询用户 *