代码合并终

This commit is contained in:
2023-02-06 13:32:26 +08:00
parent 4f64623dbd
commit 51041ad52d
8 changed files with 108 additions and 57 deletions

View File

@@ -47,7 +47,7 @@
SELECT SELECT
monitoring_object, monitoring_object,
area_pq_event_type, area_pq_event_type,
TRUNCATE ( SUM( total_monitor_num )/ count( total_monitor_num ), 2 ) AS totalMonitorNum TRUNCATE ( SUM( total_monitor_num )/ count( total_monitor_num ), 0 ) AS totalMonitorNum
FROM FROM
r_stat_org_pv_power_quality_m r_stat_org_pv_power_quality_m
<where> <where>

View File

@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.utils.DeptUtil; import com.njcn.harmonic.utils.DeptUtil;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData; import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient; import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.user.pojo.dto.DeptDTO;
@@ -44,6 +45,7 @@ public class RStatOrgMServiceImpl extends ServiceImpl<RStatOrgMMapper, RStatOrgM
private final DeptFeignClient deptFeignClient; private final DeptFeignClient deptFeignClient;
private final DicDataFeignClient dicDataFeignClient; private final DicDataFeignClient dicDataFeignClient;
private final RStatOrgMMapper rStatOrgMMapper; private final RStatOrgMMapper rStatOrgMMapper;
private static final String XIONG_AN_CITY="雄安新区";
@Override @Override
public List<RStatOrgVO> getRStatHarmonicMAll(StatisticsBizBaseParam param) { public List<RStatOrgVO> getRStatHarmonicMAll(StatisticsBizBaseParam param) {
@@ -95,6 +97,12 @@ public class RStatOrgMServiceImpl extends ServiceImpl<RStatOrgMMapper, RStatOrgM
List<OverviewVO.GroupVO> info =new ArrayList<>(); List<OverviewVO.GroupVO> info =new ArrayList<>();
//查询配网信息 //查询配网信息
DictData dictData = dicDataFeignClient.getDicDataByCode(DicDataEnum.DISTRIBUTION_POINT.getCode()).getData(); DictData dictData = dicDataFeignClient.getDicDataByCode(DicDataEnum.DISTRIBUTION_POINT.getCode()).getData();
//获取监测点类别
List<DictData> monitorType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> dictDataMap = monitorType.stream()
.collect(Collectors.toMap(DictData::getId, Function.identity()));
//获取部门数据 //获取部门数据
List<DeptDTO> subDeptListCode = getSubDeptListCode(param.getId()); List<DeptDTO> subDeptListCode = getSubDeptListCode(param.getId());
List<String> deptListCode = subDeptListCode.stream().map(DeptDTO::getCode).collect(Collectors.toList()); List<String> deptListCode = subDeptListCode.stream().map(DeptDTO::getCode).collect(Collectors.toList());
@@ -114,19 +122,52 @@ public class RStatOrgMServiceImpl extends ServiceImpl<RStatOrgMMapper, RStatOrgM
if(deptMap.containsKey(key)){ if(deptMap.containsKey(key)){
OverviewVO.GroupVO groupVO=new OverviewVO.GroupVO(); OverviewVO.GroupVO groupVO=new OverviewVO.GroupVO();
String name = deptMap.get(key).getName(); String name = deptMap.get(key).getName();
groupVO.setMonitorSort(name.replace("供电公司","")); String replace = name.replace("供电公司","");
List<OverviewVO.StatOrgVO> statOrgVOS =new ArrayList<>(); if(XIONG_AN_CITY.equals(replace)){
OverviewVO.StatOrgVO statOrgVO; groupVO.setCity(XIONG_AN_CITY);
for (RStatOrgM statOrgM : value) { }else{
statOrgVO=new OverviewVO.StatOrgVO(); groupVO.setCity(replace+"");
statOrgVO.setMeasurementTypeClass(statOrgM.getMeasurementTypeClass()); }
statOrgVO.setEffectiveMeasurementAccrued(statOrgM.getEffectiveMeasurementAccrued()); groupVO.setOneLine(0);
statOrgVOS.add(statOrgVO); groupVO.setTwoLine(0);
groupVO.setThreeLine(0);
for (RStatOrgM statOrgM : value) {
if (dictDataMap.containsKey(statOrgM.getMeasurementTypeClass())) {
DictData data = dictDataMap.get(statOrgM.getMeasurementTypeClass());
//一类监测点
if(DicDataEnum.LINE_ONE.getCode().equals(data.getCode())){
groupVO.setOneLine(statOrgM.getEffectiveMeasurementAccrued());
}
//二类监测点
if(DicDataEnum.LINE_TWO.getCode().equals(data.getCode())){
groupVO.setTwoLine(statOrgM.getEffectiveMeasurementAccrued());
}
//三类监测点
if(DicDataEnum.LINE_THREE.getCode().equals(data.getCode())){
groupVO.setThreeLine(statOrgM.getEffectiveMeasurementAccrued());
}
}
} }
groupVO.setSubset(statOrgVOS);
info.add(groupVO); info.add(groupVO);
} }
}); });
List<DeptDTO> deptDTOS = subDeptListCode.stream().filter(r -> !orgNoMap.containsKey(r.getId()))
.collect(Collectors.toList());
OverviewVO.GroupVO groupVO;
for (DeptDTO deptDTO : deptDTOS) {
groupVO=new OverviewVO.GroupVO();
String replace = deptDTO.getName().replace("供电公司","");
if(XIONG_AN_CITY.equals(replace)){
groupVO.setCity(XIONG_AN_CITY);
}else{
groupVO.setCity(replace+"");
}
groupVO.setOneLine(0);
groupVO.setTwoLine(0);
groupVO.setThreeLine(0);
info.add(groupVO);
}
return info; return info;
} }

View File

@@ -178,7 +178,7 @@ public class RStatOrgPvPowerQualityServiceImpl extends ServiceImpl<RStatOrgPvPow
} }
} }
} }
//数据库查询 //数据库查询(里面有聚合查询,直接舍弃小数部分)
List<OverviewVO.VoltageVO> voltageVOS = rStatOrgPvPowerQualityMMapper.selectVoltage(Arrays.asList(dept.getCode()), typeID,param); List<OverviewVO.VoltageVO> voltageVOS = rStatOrgPvPowerQualityMMapper.selectVoltage(Arrays.asList(dept.getCode()), typeID,param);
Map<String, List<OverviewVO.VoltageVO>> voltageMap = voltageVOS.stream().collect( Map<String, List<OverviewVO.VoltageVO>> voltageMap = voltageVOS.stream().collect(

View File

@@ -1,3 +1,4 @@
/*
package com.njcn.prepare.harmonic.constant; package com.njcn.prepare.harmonic.constant;
import com.njcn.redis.utils.RedisUtil; import com.njcn.redis.utils.RedisUtil;
@@ -14,6 +15,7 @@ import javax.annotation.PreDestroy;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
*/
/** /**
* Description: * Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html * 接口文档访问地址http://serverIP:port/swagger-ui.html
@@ -21,7 +23,8 @@ import java.util.Set;
* *
* @author clam * @author clam
* @version V1.0.0 * @version V1.0.0
*/ *//*
@Component @Component
@Slf4j @Slf4j
@@ -41,15 +44,19 @@ public class DictCache {
@PostConstruct @PostConstruct
public void init(){ public void init(){
log.info("系统启动中。。。加载dictDataMap"); log.info("系统启动中。。。加载dictDataMap");
/*todo 后续将字典表全部加载*/ */
/*todo 后续将字典表全部加载*//*
List<DictData> data = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_STATE.getCode ( )).getData ( ); List<DictData> data = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_STATE.getCode ( )).getData ( );
List<DictData> data2 = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.DEV_STATUS.getCode ( )).getData ( ); List<DictData> data2 = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.DEV_STATUS.getCode ( )).getData ( );
List<DictData> data3 = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_SORT.getCode ( )).getData ( ); List<DictData> data3 = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_SORT.getCode ( )).getData ( );
/* */
/*
* key:NAME_KEY前缀清缓存使用+SPLIT_SIGN拼接符号+DicDataTypeEnum+SPLIT_SIGN拼接符号+Code * key:NAME_KEY前缀清缓存使用+SPLIT_SIGN拼接符号+DicDataTypeEnum+SPLIT_SIGN拼接符号+Code
* Value:id * Value:id
* */ * *//*
data.forEach (temp->{ data.forEach (temp->{
redisUtil.saveByKey (NAME_KEY+SPLIT_SIGN+DicDataTypeEnum.LINE_STATE.getCode ( )+SPLIT_SIGN+temp.getCode (),temp.getId ()); redisUtil.saveByKey (NAME_KEY+SPLIT_SIGN+DicDataTypeEnum.LINE_STATE.getCode ( )+SPLIT_SIGN+temp.getCode (),temp.getId ());
}); });
@@ -75,3 +82,4 @@ public class DictCache {
} }
} }
*/

View File

@@ -44,12 +44,8 @@ public class ReportController extends BaseController {
@ApiImplicitParam(name = "reportParam", value = "查询体", required = true) @ApiImplicitParam(name = "reportParam", value = "查询体", required = true)
public HttpResult<Boolean> batchReport(@RequestBody @Validated LineParam reportParam){ public HttpResult<Boolean> batchReport(@RequestBody @Validated LineParam reportParam){
String methodDescribe = getMethodDescribe("batchReport"); String methodDescribe = getMethodDescribe("batchReport");
boolean res = reportService.batchReport(reportParam); reportService.batchReport(reportParam);
if(res){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
} }

View File

@@ -9,7 +9,6 @@ import com.njcn.harmonic.pojo.po.RStatAbnormalDPO;
import com.njcn.harmonic.pojo.po.RStatOrgDPO; import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import com.njcn.harmonic.pojo.po.RStatOrgMPO; import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.harmonic.constant.AlgorithmParam; import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.constant.DictCache;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum; import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper;
import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO; import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO;
@@ -30,6 +29,9 @@ import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.njcn.system.pojo.constant.DicDataConstant.NAME_KEY;
import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN;
/** /**
* Description: * Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html * 接口文档访问地址http://serverIP:port/swagger-ui.html
@@ -125,15 +127,15 @@ public class AreaCountServiceImpl implements AreaCountService {
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate); final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
/*在运的字典表id配网123类监测点字典表id用于for循环中过滤*/ /*在运的字典表id配网123类监测点字典表id用于for循环中过滤*/
String lineTypeOneId = redisUtil.getStringByKey (DictCache.NAME_KEY + String lineTypeOneId = redisUtil.getStringByKey (NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) + SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_ONE.getCode ( )); SPLIT_SIGN + DicDataEnum.LINE_ONE.getCode ( ));
String lineTypeTwoId = redisUtil.getStringByKey (DictCache.NAME_KEY + String lineTypeTwoId = redisUtil.getStringByKey (NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) + SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_TWO.getCode ( )); SPLIT_SIGN + DicDataEnum.LINE_TWO.getCode ( ));
String lineTypeThreeId = redisUtil.getStringByKey (DictCache.NAME_KEY + String lineTypeThreeId = redisUtil.getStringByKey (NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) + SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_THREE.getCode ( )); SPLIT_SIGN + DicDataEnum.LINE_THREE.getCode ( ));
if ( if (
StringUtils.isEmpty (lineTypeOneId) || StringUtils.isEmpty (lineTypeOneId) ||
StringUtils.isEmpty (lineTypeTwoId) || StringUtils.isEmpty (lineTypeTwoId) ||
@@ -190,15 +192,15 @@ public class AreaCountServiceImpl implements AreaCountService {
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate); final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse (dataDate);
/*在运的字典表id配网123类监测点字典表id用于for循环中过滤*/ /*在运的字典表id配网123类监测点字典表id用于for循环中过滤*/
String lineTypeOneId = redisUtil.getStringByKey (DictCache.NAME_KEY + String lineTypeOneId = redisUtil.getStringByKey (NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) + SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_ONE.getCode ( )); SPLIT_SIGN + DicDataEnum.LINE_ONE.getCode ( ));
String lineTypeTwoId = redisUtil.getStringByKey (DictCache.NAME_KEY + String lineTypeTwoId = redisUtil.getStringByKey (NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) + SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_TWO.getCode ( )); SPLIT_SIGN + DicDataEnum.LINE_TWO.getCode ( ));
String lineTypeThreeId = redisUtil.getStringByKey (DictCache.NAME_KEY + String lineTypeThreeId = redisUtil.getStringByKey (NAME_KEY +
DictCache.SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) + SPLIT_SIGN + DicDataTypeEnum.LINE_SORT.getCode ( ) +
DictCache.SPLIT_SIGN + DicDataEnum.LINE_THREE.getCode ( )); SPLIT_SIGN + DicDataEnum.LINE_THREE.getCode ( ));
if ( if (
StringUtils.isEmpty (lineTypeOneId) || StringUtils.isEmpty (lineTypeOneId) ||
StringUtils.isEmpty (lineTypeTwoId) || StringUtils.isEmpty (lineTypeTwoId) ||

View File

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.harmonic.pojo.po.PmsMonitorPO; import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import com.njcn.prepare.harmonic.constant.DictCache;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum; import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.PmsMonitorPOService; import com.njcn.prepare.harmonic.service.mysql.area.PmsMonitorPOService;
@@ -18,6 +17,9 @@ import org.springframework.util.StringUtils;
import java.util.List; import java.util.List;
import static com.njcn.system.pojo.constant.DicDataConstant.NAME_KEY;
import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN;
/** /**
* *
* Description: * Description:
@@ -56,9 +58,9 @@ public class PmsMonitorPOServiceImpl extends ServiceImpl<PmsMonitorPOMapper, Pms
monitorPOLambdaQueryWrapper.in (PmsMonitorPO::getOrgId, deptIds); monitorPOLambdaQueryWrapper.in (PmsMonitorPO::getOrgId, deptIds);
// List<DictData> data = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_STATE.getCode ( )).getData ( ); // List<DictData> data = dicDataFeignClient.getDicDataByTypeCode (DicDataTypeEnum.LINE_STATE.getCode ( )).getData ( );
// List<DictData> collect = data.stream ( ).filter (temp -> Objects.equals (temp.getCode ( ), DicDataEnum.RUN.getCode ())).collect (Collectors.toList ( )); // List<DictData> collect = data.stream ( ).filter (temp -> Objects.equals (temp.getCode ( ), DicDataEnum.RUN.getCode ())).collect (Collectors.toList ( ));
String state = redisUtil.getStringByKey (DictCache.NAME_KEY+ String state = redisUtil.getStringByKey (NAME_KEY+
DictCache.SPLIT_SIGN+ DicDataTypeEnum.LINE_STATE.getCode ( )+ SPLIT_SIGN+ DicDataTypeEnum.LINE_STATE.getCode ( )+
DictCache.SPLIT_SIGN+ DicDataEnum.RUN.getCode ( )); SPLIT_SIGN+ DicDataEnum.RUN.getCode ( ));
if(StringUtils.isEmpty (state)){ if(StringUtils.isEmpty (state)){
throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION); throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
} }

View File

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.harmonic.pojo.po.*; import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.constant.AlgorithmParam; import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.constant.DictCache;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum; import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper;
import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO; import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO;
@@ -32,6 +31,9 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.njcn.system.pojo.constant.DicDataConstant.NAME_KEY;
import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN;
/** /**
* Description: * Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html * 接口文档访问地址http://serverIP:port/swagger-ui.html
@@ -122,9 +124,9 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
double dev_data_rate=0.00; double dev_data_rate=0.00;
/*获取终端下的监测点集合*/ /*获取终端下的监测点集合*/
QueryWrapper<PmsMonitorPO> queryWrapper = new QueryWrapper<> (); QueryWrapper<PmsMonitorPO> queryWrapper = new QueryWrapper<> ();
String state = redisUtil.getStringByKey (DictCache.NAME_KEY+ String state = redisUtil.getStringByKey (NAME_KEY+
DictCache.SPLIT_SIGN+ DicDataTypeEnum.LINE_STATE.getCode ( )+ SPLIT_SIGN+ DicDataTypeEnum.LINE_STATE.getCode ( )+
DictCache.SPLIT_SIGN+ DicDataEnum.RUN.getCode ( )); SPLIT_SIGN+ DicDataEnum.RUN.getCode ( ));
if(StringUtils.isEmpty (state)){ if(StringUtils.isEmpty (state)){
throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION); throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
} }
@@ -294,9 +296,9 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
Integer online_measurement_points = pmsTerminalPOS.size (); Integer online_measurement_points = pmsTerminalPOS.size ();
/*在运监测终端个数 online_measurement_count*/ /*在运监测终端个数 online_measurement_count*/
String state = redisUtil.getStringByKey (DictCache.NAME_KEY+ String state = redisUtil.getStringByKey (NAME_KEY+
DictCache.SPLIT_SIGN+ DicDataTypeEnum.DEV_STATUS.getCode ( )+ SPLIT_SIGN+ DicDataTypeEnum.DEV_STATUS.getCode ( )+
DictCache.SPLIT_SIGN+ DicDataEnum.RUNNING.getCode ( )); SPLIT_SIGN+ DicDataEnum.RUNNING.getCode ( ));
Integer online_measurement_count = Integer.valueOf (pmsTerminalPOS.stream ( ).filter (temp -> Objects.equals (temp.getTerminalState ( ),state)).count ( )+""); Integer online_measurement_count = Integer.valueOf (pmsTerminalPOS.stream ( ).filter (temp -> Objects.equals (temp.getTerminalState ( ),state)).count ( )+"");
/*主网单位数据完整率 data_integrity_rate*/ /*主网单位数据完整率 data_integrity_rate*/