添加电能质量全过程月报

功能及其批处理任务
This commit is contained in:
hzj
2024-10-29 14:26:10 +08:00
parent 3132b0a134
commit 3c820b1645
6 changed files with 221 additions and 86 deletions

View File

@@ -0,0 +1,33 @@
package com.njcn.harmonic.api;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.harmonic.api.fallback.PmsTemProcessReportFallbackFactory;
import com.njcn.harmonic.api.fallback.UploadGwDataFallbackFactory;
import com.njcn.harmonic.pojo.param.UploadDataParam;
import com.njcn.harmonic.pojo.param.UploadParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @author xuyang
*/
@FeignClient(
value = ServerInfo.HARMONIC,
path = "/process/pmsTemProcessReport",
fallbackFactory = PmsTemProcessReportFallbackFactory.class,
contextId = "pmsTemProcessReport")
public interface PmsTemProcessReportFeignClient {
@PostMapping("/dayCalReport")
HttpResult<Boolean> dayCalReport() ;
}

View File

@@ -0,0 +1,43 @@
package com.njcn.harmonic.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.harmonic.api.PmsTemProcessReportFeignClient;
import com.njcn.harmonic.api.UploadGwDataFeignClient;
import com.njcn.harmonic.pojo.param.UploadDataParam;
import com.njcn.harmonic.pojo.param.UploadParam;
import com.njcn.harmonic.utils.HarmonicEnumUtil;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author xuyang
* @version 1.0.0
* @date 2023年12月15日 13:50
*/
@Slf4j
@Component
public class PmsTemProcessReportFallbackFactory implements FallbackFactory<PmsTemProcessReportFeignClient> {
@Override
public PmsTemProcessReportFeignClient create(Throwable throwable) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (throwable.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) throwable.getCause();
exceptionEnum = HarmonicEnumUtil.getExceptionEnum(businessException.getResult());
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new PmsTemProcessReportFeignClient() {
@Override
public HttpResult<Boolean> dayCalReport() {
log.error("{}异常,降级处理,异常为:{}", "电能质量全过程月报", throwable.toString());
return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage());
}
};
}
}

View File

@@ -25,6 +25,7 @@ public class PmsTemProcessReport{
/** /**
* uuid * uuid
*/ */
@TableId(value = "obj_id", type = IdType.ASSIGN_UUID)
private String objId; private String objId;
/** /**

View File

@@ -31,6 +31,7 @@ import com.njcn.web.utils.GwSendUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
@@ -110,9 +111,12 @@ public class PmsTemProcessReportServiceImpl extends ServiceImpl<PmsTemProcessRep
List<PvTerminalTreeVO> data = deptFeignClient.allDeptList().getData(); List<PvTerminalTreeVO> data = deptFeignClient.allDeptList().getData();
data = data.stream().filter(temp -> Objects.equals(temp.getLevel(), 2)).collect(Collectors.toList()); List<PvTerminalTreeVO> collect = data.stream().filter(temp -> Objects.equals(temp.getLevel(), 2))
.peek(item -> {
data.forEach(province->{ item.setLevel(2);
item.setChildren(getChildren(item, data));
}).collect(Collectors.toList());
collect.forEach(province->{
province.getChildren().forEach(city->{ province.getChildren().forEach(city->{
PmsTemProcessReport pmsTemProcessReport = new PmsTemProcessReport(); PmsTemProcessReport pmsTemProcessReport = new PmsTemProcessReport();
pmsTemProcessReport.setProvinceOrg(province.getCode()); pmsTemProcessReport.setProvinceOrg(province.getCode());
@@ -139,7 +143,25 @@ public class PmsTemProcessReportServiceImpl extends ServiceImpl<PmsTemProcessRep
pmsTemProcessReport.setNewUserCount(list.size()); pmsTemProcessReport.setNewUserCount(list.size());
List<String> userIds = list.stream().map(PmsTemUserPO::getObjId).collect(Collectors.toList()); List<String> userIds = list.stream().map(PmsTemUserPO::getObjId).collect(Collectors.toList());
if(CollectionUtils.isEmpty(userIds)){
pmsTemProcessReport.setReportAuditNum(0);
pmsTemProcessReport.setReportAuditCount(0);
pmsTemProcessReport.setApprovalAuditNum(0);
pmsTemProcessReport.setApprovalAuditCount(0);
pmsTemProcessReport.setApprovalProblemNum(0);
pmsTemProcessReport.setApprovalProblemCount(0);
pmsTemProcessReport.setApprovalRectificationProblemNum(0);
pmsTemProcessReport.setApprovalRectificationProblemCount(0);
pmsTemProcessReport.setTestRunUserCount(0);
pmsTemProcessReport.setTestRunOvUserNum(0);
pmsTemProcessReport.setTestRunOvUserRate(BigDecimal.valueOf(0.00));
pmsTemProcessReport.setRunUserCount(0);
pmsTemProcessReport.setRunOvUserNum(0);
pmsTemProcessReport.setRunOvUserRate(BigDecimal.valueOf(0.00));
}else {
//规划可研阶段 //规划可研阶段
Integer auditCount = iPmsTemProcessTrackService.lambdaQuery() Integer auditCount = iPmsTemProcessTrackService.lambdaQuery()
.in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds)
@@ -236,18 +258,24 @@ public class PmsTemProcessReportServiceImpl extends ServiceImpl<PmsTemProcessRep
pmsTemProcessReport.setRunUserCount(runUserCount); pmsTemProcessReport.setRunUserCount(runUserCount);
pmsTemProcessReport.setRunOvUserNum(runOvUserNum); pmsTemProcessReport.setRunOvUserNum(runOvUserNum);
pmsTemProcessReport.setRunOvUserRate(BigDecimal.valueOf(Double.valueOf(runOvUserNum*100)/runUserCount).setScale(2)); pmsTemProcessReport.setRunOvUserRate(BigDecimal.valueOf(Double.valueOf(runOvUserNum*100)/runUserCount).setScale(2));
pmsTemProcessReportList.add(pmsTemProcessReport);
}
pmsTemProcessReportList.add(pmsTemProcessReport);
}); });
}); });
pmsTemProcessReportList.forEach(temp->{
QueryWrapper<PmsTemProcessReport> queryWrapper = new QueryWrapper<>(); QueryWrapper<PmsTemProcessReport> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(PmsTemProcessReport::getProvinceOrg,temp.getProvinceOrg()) queryWrapper.lambda().eq(PmsTemProcessReport::getStatisticalDate,statisticalDate);
.eq(PmsTemProcessReport::getCityOrg,temp.getCityOrg()) this.remove(queryWrapper);
.eq(PmsTemProcessReport::getStatisticalDate,temp.getStatisticalDate()); this.saveBatch(pmsTemProcessReportList);
this.update(temp,queryWrapper);
});
return true; return true;
} }
private List<PvTerminalTreeVO> getChildren(PvTerminalTreeVO temp, List<PvTerminalTreeVO> all) {
return all.stream().filter(item -> item.getPid().equals(temp.getId())).peek(item -> {
item.setLevel(temp.getLevel() + 1);
item.setChildren(getChildren(item, all));
}).collect(Collectors.toList());
}
} }

View File

@@ -98,7 +98,7 @@ public class SysDicTreePOServiceImpl extends ServiceImpl<SysDicTreePOMapper, Sys
public List<DictTreeVO> queryByPid(String pid) { public List<DictTreeVO> queryByPid(String pid) {
List<DictTreeVO> collect = new ArrayList<>(); List<DictTreeVO> collect = new ArrayList<>();
LambdaQueryWrapper<SysDicTreePO> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysDicTreePO> query = new LambdaQueryWrapper<>();
query.eq(SysDicTreePO::getPid, pid).eq(SysDicTreePO::getStatus, "0"); query.eq(SysDicTreePO::getPid, pid).eq(SysDicTreePO::getStatus, "0").orderByDesc(SysDicTreePO::getSort);
List<SysDicTreePO> resultList = this.list(query); List<SysDicTreePO> resultList = this.list(query);
SysDicTreePO byId = this.getById(pid); SysDicTreePO byId = this.getById(pid);

View File

@@ -0,0 +1,30 @@
package com.njcn.system.timer.tasks.hbPushGw;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.njcn.harmonic.api.PmsTemProcessReportFeignClient;
import com.njcn.harmonic.api.UploadGwDataFeignClient;
import com.njcn.harmonic.pojo.param.UploadDataParam;
import com.njcn.system.timer.TimerTaskRunner;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
/**
* Description:
* Date: 2024/10/29 14:07【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Component
@RequiredArgsConstructor
public class PmsTemProcessReportRunner implements TimerTaskRunner {
private final PmsTemProcessReportFeignClient pmsTemProcessReportFeignClient;
@Override
public void action(String date) {
pmsTemProcessReportFeignClient.dayCalReport();
}
}