zbj//1.单位暂态指标数据统计_日统计 算法
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user