zbj//1.单位暂态指标数据统计_日统计 算法

This commit is contained in:
zhangbaojian
2023-06-15 10:06:54 +08:00
parent 7bc2fe684b
commit acd746a280
13 changed files with 441 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
package com.njcn.prepare.harmonic.controller.newalgorithm;
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.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.prepare.harmonic.pojo.param.OrgParam;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventOrgService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
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.time.LocalDateTime;
import java.util.List;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/28 13:47【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Slf4j
@Api(tags = "单位暂态指标数据统计")
@RestController
@RequestMapping("/rStartEventOrg")
@RequiredArgsConstructor
public class RStatEventOrgController extends BaseController {
private final RStatEventOrgService rStatEventOrgService;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final DeptFeignClient deptFeignClient;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/rStartEventOrgHandler")
@ApiOperation("单位暂态指标数据统计")
@ApiImplicitParam(name = "orgParam", value = "参数", required = true)
public HttpResult<String> rStartEventOrgHandler(@RequestBody @Validated OrgParam orgParam) {
log.info(LocalDateTime.now() + "rStartEventOrgHandler开始执行");
String methodDescribe = getMethodDescribe("rStartEventOrgHandler");
/**
* 支持补录
*/
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
if (StringUtils.isEmpty(orgParam.getOrgId())) {
Dept data = deptFeignClient.getRootDept().getData();
deptGetLineParam.setDeptId(data.getId());
} else {
deptGetLineParam.setDeptId(orgParam.getOrgId());
}
deptGetLineParam.setServerName(ServerInfo.PREPARE_BOOT);
List<DeptGetChildrenMoreDTO> data = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
rStatEventOrgService.handler(data,orgParam.getDataDate(),orgParam.getType());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -2,7 +2,12 @@ package com.njcn.prepare.harmonic.mapper.mysql.area;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import com.njcn.prepare.harmonic.pojo.po.RStatEventDVO;
import com.njcn.prepare.harmonic.pojo.po.RStatOrgDVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
@@ -15,4 +20,7 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface RStatOrgDMapper extends MppBaseMapper<RStatOrgDPO> {
List<RStatOrgDVO> listAll(@Param("date") String date, @Param("orgId") String orgId);
}

View File

@@ -21,4 +21,12 @@
org_no, data_date, measurement_type_class, data_type, all_count, effective_measurement,
harmonic_measurement, event_measurement, event_count, should_count, warn_count
</sql>
<select id="listAll" resultType="com.njcn.prepare.harmonic.pojo.po.RStatOrgDVO">
select org_no "orgNo",data_type"dataType",effective_measurement"effectiveMeasurement"
from r_stat_org_d
where date_format(data_date, '%y%m%d') = date_format(#{date}, '%y%m%d')
and org_no = #{orgId}
</select>
</mapper>

View File

@@ -2,7 +2,11 @@ package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatEventDPO;
import com.njcn.prepare.harmonic.pojo.po.RStatEventDVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Description:
@@ -14,4 +18,7 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface RStatEventDPOMapper extends MppBaseMapper<RStatEventDPO> {
List<RStatEventDVO> listAll(@Param("date") String date, @Param("orgId") String orgId);
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatEventMPO;
import com.njcn.prepare.harmonic.pojo.po.RStatEventOrgDPO;
import org.apache.ibatis.annotations.Mapper;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/13 15:39【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RStatEventOrgDPOMapper extends MppBaseMapper<RStatEventOrgDPO> {
}

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDPOMapper">
<select id="listAll" resultType="com.njcn.prepare.harmonic.pojo.po.RStatEventDVO">
select org_no "orgNo",
data_date "dataDate",
event_type "eventType",
data_type "dataType",
sum(event_measurement)
"emSum",
sum(event_count) "ecSum"
from r_stat_event_d
where date_format(data_date, '%y%m%d') = date_format(#{date}, '%y%m%d')
and org_no = #{orgId}
GROUP BY org_no, data_date, event_type, data_type
</select>
</mapper>

View File

@@ -0,0 +1,14 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.harmonic.pojo.po.RStatEventOrgDPO;
/**
* @author zbj
* @since 2023-06-14
*/
public interface RStatEventOrgDPOService extends IMppService<RStatEventOrgDPO> {
}

View File

@@ -0,0 +1,16 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import java.util.List;
/**
* @author zbj
* @since 2023-06-14
*/
public interface RStatEventOrgService {
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
}

View File

@@ -0,0 +1,24 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventMPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventOrgDPOMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatEventMPO;
import com.njcn.prepare.harmonic.pojo.po.RStatEventOrgDPO;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventMPOService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventOrgDPOService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* <p>
* 终端检测监督
* </p>
*
* @author zbj
* @since 2023-06-14
*/
@Service
@RequiredArgsConstructor
public class RStatEventOrgDPOServiceImpl extends MppServiceImpl<RStatEventOrgDPOMapper, RStatEventOrgDPO> implements RStatEventOrgDPOService {
}

View File

@@ -0,0 +1,149 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgYMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventMPOMapper;
import com.njcn.prepare.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* <p>
* 暂态指标统计
* </p>
*
* @author zbj
* @since 2023-06-06
*/
@Service
@RequiredArgsConstructor
public class RStatEventOrgServiceImpl implements RStatEventOrgService {
private final DicDataFeignClient dicDataFeignClient;
private final RStatEventOrgDPOService rStatEventOrgDPOService;
private final RStatEventDPOMapper rStatEventDPOMapper;
private final RStatOrgDMapper rStatOrgDMapper;
@Override
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
switch (type) {
/* case 1:
this.rStartEventYHandler (data, dataDate, type);
break;
case 2:
this.rStartEventQHandler(data, dataDate, type);
break;
case 3:
this.rStartEventMHandler(data, dataDate, type);
break;*/
case 5:
this.rStartEventDHandler(data, dataDate, type);
break;
default:
break;
}
}
//天表
public void rStartEventDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatEventOrgDPO> rStatEventOrgDPOS = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
Date date = DateUtil.parse(dataDate);
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
data.forEach(deptGetChildrenMoreDTO -> {
List<RStatEventDVO> rStatEventDVO = rStatEventDPOMapper.listAll(dataDate, deptGetChildrenMoreDTO.getUnitId());
List<RStatOrgDVO> rStatOrgDVOS = rStatOrgDMapper.listAll(dataDate, deptGetChildrenMoreDTO.getUnitId());
//集合判空
if (!CollectionUtils.isEmpty(rStatEventDVO)) {
//list转为map
Map<String, Integer> emMap = new HashMap<>();
if (!CollectionUtils.isEmpty(rStatOrgDVOS)) {
if (rStatOrgDVOS.size() == 1) {
if (Objects.equals(rStatOrgDVOS.get(0).getDataType(), dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId())) {
emMap.put(rStatOrgDVOS.get(0).getDataType(), rStatOrgDVOS.get(0).getEffectiveMeasurement());
emMap.put(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId(), 0);
} else {
emMap.put(rStatOrgDVOS.get(0).getDataType(), rStatOrgDVOS.get(0).getEffectiveMeasurement());
emMap.put(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId(), 0);
}
} else {
emMap.put(rStatOrgDVOS.get(0).getDataType(), rStatOrgDVOS.get(0).getEffectiveMeasurement());
emMap.put(rStatOrgDVOS.get(1).getDataType(), rStatOrgDVOS.get(1).getEffectiveMeasurement());
}
} else {
emMap.put(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId(), 0);
emMap.put(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId(), 0);
}
//循环
rStatEventDVO.forEach(o -> {
RStatEventOrgDPO rStatEventOrgDPO = new RStatEventOrgDPO();
rStatEventOrgDPO.setOrgNo(o.getOrgNo());
rStatEventOrgDPO.setDataDate(localDate);
rStatEventOrgDPO.setEventType(o.getEventType());
rStatEventOrgDPO.setEventMeasurement(o.getEmSum());
rStatEventOrgDPO.setEventCount(o.getEcSum());
rStatEventOrgDPO.setDataType(o.getDataType());
if (Objects.equals(o.getDataType(), dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId())) {
if (emMap.get(o.getDataType()) == 0) {
rStatEventOrgDPO.setEventMeasurementRatio(1.00f);
} else {
String value = df.format(o.getEmSum() / emMap.get(o.getDataType()));
rStatEventOrgDPO.setEventMeasurementRatio(Float.parseFloat(value));
}
} else {
if (emMap.get(o.getDataType()) == 0) {
rStatEventOrgDPO.setEventMeasurementRatio(1.00f);
} else {
String value = df.format(o.getEmSum() / emMap.get(o.getDataType()));
rStatEventOrgDPO.setEventMeasurementRatio(Float.parseFloat(value));
}
}
rStatEventOrgDPOS.add(rStatEventOrgDPO);
});
}
});
if (!CollectionUtils.isEmpty(rStatEventOrgDPOS)) {
rStatEventOrgDPOService.saveOrUpdateBatchByMultiId(rStatEventOrgDPOS, 500);
}
}
}