1.单位标数据质量算法兼容修改

This commit is contained in:
wr
2023-09-26 17:38:39 +08:00
parent 904a94fe83
commit 94779ce822
23 changed files with 687 additions and 430 deletions

View File

@@ -59,7 +59,7 @@ public interface CommTerminalGeneralClient {
HttpResult<List<DeptGetSubStationDTO>> deptSubStation(@RequestBody @Validated DeptGetLineParam deptGetLineParam);
/**
* 根据单位获取所有变电站
* 根据单位获取所有母线
*
* @author cdf
* @date 2023/5/10
@@ -77,6 +77,13 @@ public interface CommTerminalGeneralClient {
@PostMapping("deptGetDevice")
HttpResult<List<DeptGetDeviceDTO>> deptGetDevice(@RequestBody @Validated DeptGetLineParam deptGetLineParam);
/**
* @Description: 根据单位获取单位下的装置以及装置下的监测点
* @Author: wr
* @Date: 2023/9/25 10:30
*/
@PostMapping("deptGetDeviceAndMonitor")
HttpResult<List<DeptGetDeviceDTO>> deptGetDeviceAndMonitor(@RequestBody @Validated DeptGetLineParam deptGetLineParam);
/**
* 根据单站id获取监测点信息

View File

@@ -54,7 +54,7 @@ public class CommTerminalGeneralClientFallbackFactory implements FallbackFactory
@Override
public HttpResult<List<DeptGetBusBarDTO>> deptBusBar(DeptGetLineParam deptGetLineParam) {
log.error("{}异常,降级处理,异常为:{}", "根据单位获取所有变电站", throwable.toString());
log.error("{}异常,降级处理,异常为:{}", "根据单位获取所有母线", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
@@ -64,6 +64,12 @@ public class CommTerminalGeneralClientFallbackFactory implements FallbackFactory
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<DeptGetDeviceDTO>> deptGetDeviceAndMonitor(DeptGetLineParam deptGetLineParam) {
log.error("{}异常,降级处理,异常为:{}", "根据单位获取单位下的装置以及装置下的监测点", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<LineDevGetBandDTO> substationGetLine(String substationId) {
log.error("{}异常,降级处理,异常为:{}", "根据单站id获取监测点信息", throwable.toString());

View File

@@ -123,6 +123,8 @@ public class PmsTerminal extends BaseEntity {
*/
private Integer status;
/**
* 通讯状态0中断1正常
*/
private Integer comFlag;
}

View File

@@ -119,7 +119,7 @@ public class CommTerminalController extends BaseController {
}
/**
* 根据单位获取所有变电站
* 根据单位获取所有母线
* @author cdf
* @date 2023/5/10
*/

View File

@@ -1,6 +1,8 @@
package com.njcn.device.pms.service.ledgerManger.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.enums.common.DataStateEnum;
@@ -252,9 +254,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
List<PmsMonitorBaseDTO> pmsMonitorBaseDTOList = distributionMonitorMapper.getDisMonitorAllList(null, 0);
List<String> pwTerminalIds = pmsMonitorBaseDTOList.stream().map(PmsMonitorBaseDTO::getTerminalId).distinct().collect(Collectors.toList());
lambdaQueryWrapper.clear();
lambdaQueryWrapper.in(PmsTerminal::getId, pwTerminalIds);
List<PmsTerminal> pwPmsTerminals = terminalMapper.selectList(lambdaQueryWrapper);
List<PmsTerminal> pwPmsTerminals = terminalMapper.selectList(new LambdaQueryWrapper<PmsTerminal>().in(CollUtil.isNotEmpty(pwTerminalIds),PmsTerminal::getId, pwTerminalIds));
Map<String, List<PmsTerminal>> mapPms = pwPmsTerminals.stream().collect(Collectors.groupingBy(PmsTerminal::getOrgId));
Map<String, List<Monitor>> monitorMap = new HashMap<>();
@@ -262,7 +262,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
if (type == 1) {
//获取装置接入的监测点
monitorMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getTerminalId));
pwMonitorMap = pmsMonitorBaseDTOList.stream().collect(Collectors.groupingBy(PmsMonitorBaseDTO::getTerminalId));
pwMonitorMap = pmsMonitorBaseDTOList.stream().filter(x-> ObjectUtil.isNotNull(x.getTerminalId())).collect(Collectors.groupingBy(PmsMonitorBaseDTO::getTerminalId));
}
@@ -285,6 +285,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
lineDevGetDTO.setDevId(dev.getId());
lineDevGetDTO.setType(0);
lineDevGetDTO.setUpdateTime(dev.getUpdateTime());
lineDevGetDTO.setComFlag(dev.getComFlag());
if(type == 1) {
if (finalMonitorMap.containsKey(dev.getId())) {
lineDevGetDTO.setMonitorIds(finalMonitorMap.get(dev.getId()).stream().map(Monitor::getId).distinct().collect(Collectors.toList()));
@@ -300,6 +301,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
lineDevGetDTO.setDevId(dev.getId());
lineDevGetDTO.setType(1);
lineDevGetDTO.setUpdateTime(dev.getUpdateTime());
lineDevGetDTO.setComFlag(dev.getComFlag());
if(type == 1) {
if (finalPwMonitorMap.containsKey(dev.getId())) {
lineDevGetDTO.setMonitorIds(finalMonitorMap.get(dev.getId()).stream().map(Monitor::getId).distinct().collect(Collectors.toList()));

View File

@@ -364,7 +364,10 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
//返回主网和配网监测信息
List<DeptGetChildrenDTO> deviceInfos = new ArrayList<>();
List<DeptDTO> deptInfos = deptFeignClient.getDeptDescendantIndexes(param.getDeptId(), Stream.of(0, 1).collect(Collectors.toList())).getData();
DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.LINE_STATE.getName(),DicDataEnum.RUN.getName()).getData();
if(Objects.isNull(dictData)){
throw new BusinessException("监测点状态字典为空");
}
for (DeptDTO deptInfo : deptInfos) {
List<DeptDTO> directDeptInfos = deptInfos.stream()
.filter(deptDTO -> deptDTO.getPid().equals(deptInfo.getId()))
@@ -374,7 +377,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
List<DeptDTO> dept = deptInfos.stream()
.filter(deptDTO -> deptDTO.getId().equals(deptInfo.getId()))
.collect(Collectors.toList());
deviceInfos.add(getPmsMonitor(dept.get(0), Collections.singletonList(dept.get(0).getCode())));
deviceInfos.add(getPmsMonitor(dept.get(0),dictData, Collections.singletonList(dept.get(0).getCode())));
} else {
List<String> deptIdList = new ArrayList<>();
for (DeptDTO deptDTO : directDeptInfos) {
@@ -389,7 +392,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
.collect(Collectors.toList()));
deptIdList.add(deptDTO.getCode());
}
deviceInfos.add(getPmsMonitor(deptInfo, deptIdList));
deviceInfos.add(getPmsMonitor(deptInfo, dictData,deptIdList));
}
}
return deviceInfos;
@@ -460,7 +463,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
* @param deptIdList
* @return
*/
private DeptGetChildrenDTO getPmsMonitor(DeptDTO deptDTO, List<String> deptIdList) {
private DeptGetChildrenDTO getPmsMonitor(DeptDTO deptDTO,DictData dictData, List<String> deptIdList) {
DeptGetChildrenDTO pmsDeptGetChildrenDTO = new DeptGetChildrenDTO();
pmsDeptGetChildrenDTO.setDeptId(deptDTO.getCode());
if (deptDTO.getType() == 0) {
@@ -473,6 +476,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
//主网监测点
List<Monitor> monitorList = this.list(new LambdaQueryWrapper<Monitor>()
.select(Monitor::getId)
.eq(Monitor::getMonitorState,dictData.getId())
.in(CollUtil.isNotEmpty(deptIdList), Monitor::getOrgId, deptIdList));
//配网监测点
List<PmsMonitorBaseDTO> pwMonitorList = iDistributionMonitorService.getMonitorByCondition(deptIdList, null);

View File

@@ -47,7 +47,8 @@
dev.id devId,
dic.value voltageLevel,
1 as type ,
device.update_time
device.update_time,
device.Com_Flag as comFlag
</if>
from pq_dept_line pq_dept_line
inner join pq_line point on pq_dept_line.line_id = point.id

View File

@@ -0,0 +1,67 @@
package com.njcn.executor.handler;
import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.executor.utils.CommonExecutorUtils;
import com.njcn.prepare.harmonic.api.newalgorithm.ROperatingIndexFeignClient;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
/**
* @Description: 单位监测指标数据质量
* @return: null
* @Author: wr
* @Date: 2023/9/26 13:41
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class ROperatingIndexJob {
private final ROperatingIndexFeignClient rOperatingIndexFeignClient;
@XxlJob("rOperatingIndexDay")
public void rOperatingMonitorDay(){
log.info(LocalDateTime.now()+"单位监测指标数据质量_日表(主网,数据中心)------------------------");
PrimaryGridParam primaryGridParam=new PrimaryGridParam();
primaryGridParam.setDataSource(1);
primaryGridParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_DAY));
CommonExecutorUtils.commDefineDateObj(BizParamConstant.STAT_BIZ_DAY,primaryGridParam);
rOperatingIndexFeignClient.primaryGridDataHanlder(primaryGridParam);
}
@XxlJob("rOperatingIndexMonth")
public void rOperatingIndexMonth(){
log.info(LocalDateTime.now()+"单位监测指标数据质量_月表(主网,数据中心)------------------------");
PrimaryGridParam primaryGridParam=new PrimaryGridParam();
primaryGridParam.setDataSource(1);
primaryGridParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_MONTH));
CommonExecutorUtils.commDefineDateObj(BizParamConstant.STAT_BIZ_MONTH,primaryGridParam);
rOperatingIndexFeignClient.primaryGridDataHanlder(primaryGridParam);
}
@XxlJob("rOperatingIndexQuarter")
public void rOperatingIndexQuarter(){
log.info(LocalDateTime.now()+"单位监测指标数据质量_季表(主网,数据中心)------------------------");
PrimaryGridParam primaryGridParam=new PrimaryGridParam();
primaryGridParam.setDataSource(1);
primaryGridParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_QUARTER));
CommonExecutorUtils.commDefineDateObj(BizParamConstant.STAT_BIZ_QUARTER,primaryGridParam);
rOperatingIndexFeignClient.primaryGridDataHanlder(primaryGridParam);
}
@XxlJob("rOperatingIndexYear")
public void rOperatingIndexYear(){
log.info(LocalDateTime.now()+"单位监测指标数据质量_月表(主网,数据中心)------------------------");
PrimaryGridParam primaryGridParam=new PrimaryGridParam();
primaryGridParam.setDataSource(1);
primaryGridParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_YEAR));
CommonExecutorUtils.commDefineDateObj(BizParamConstant.STAT_BIZ_YEAR,primaryGridParam);
rOperatingIndexFeignClient.primaryGridDataHanlder(primaryGridParam);
}
}

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Calendar;
@@ -28,11 +29,20 @@ public class CommonExecutorUtils {
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-1);
if (Objects.equals(BizParamConstant.STAT_BIZ_DAY, command)) {
calendar.add(Calendar.DAY_OF_MONTH, -1);
} else if (Objects.equals(BizParamConstant.STAT_BIZ_MONTH, command)) {
calendar.set(Calendar.DAY_OF_MONTH, 1);
} else if (Objects.equals(BizParamConstant.STAT_BIZ_QUARTER, command)) {
int nowMonth = calendar.get(Calendar.MONTH);
calendar.set(Calendar.MONTH, nowMonth - (nowMonth % 3));
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
} else if (Objects.equals(BizParamConstant.STAT_BIZ_YEAR, command)) {
calendar.set(Calendar.DAY_OF_YEAR, 1);
}
log.info("job调度时间:" + sdf.format(calendar.getTime()));
return sdf.format(calendar.getTime());
@@ -41,6 +51,7 @@ public class CommonExecutorUtils {
/**
* 根据xxl-job的参数生成一个任务的起始时间和结束时间
*
* @author cdf
* @date 2023/9/20
*/
@@ -83,5 +94,51 @@ public class CommonExecutorUtils {
}
public static void commDefineDateObj(String command, Object param) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String begin;
String end;
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -1);
Date temDate = calendar.getTime();
switch (command) {
case BizParamConstant.STAT_BIZ_DAY:
begin = sdf.format(DateUtil.beginOfDay(temDate));
end = sdf.format(DateUtil.endOfDay(temDate));
break;
case BizParamConstant.STAT_BIZ_WEEK:
begin = sdf.format(DateUtil.beginOfWeek(temDate));
end = sdf.format(DateUtil.endOfWeek(temDate));
break;
case BizParamConstant.STAT_BIZ_MONTH:
begin = sdf.format(DateUtil.beginOfMonth(temDate));
end = sdf.format(DateUtil.endOfMonth(temDate));
break;
case BizParamConstant.STAT_BIZ_QUARTER:
begin = sdf.format(DateUtil.beginOfQuarter(temDate));
end = sdf.format(DateUtil.endOfQuarter(temDate));
break;
case BizParamConstant.STAT_BIZ_YEAR:
begin = sdf.format(DateUtil.beginOfYear(temDate));
end = sdf.format(DateUtil.endOfYear(temDate));
break;
default:
begin = sdf.format(DateUtil.beginOfDay(temDate));
end = sdf.format(DateUtil.endOfDay(temDate));
break;
}
try {
Field beginTime = param.getClass().getDeclaredField("beginTime");
beginTime.setAccessible(true);
beginTime.set(param, begin);
Field endTime = param.getClass().getDeclaredField("endTime");
endTime.setAccessible(true);
endTime.set(param, end);
} catch (Exception e) {
log.error(LocalDateTime.now() + "时间属性反射异常: " + e);
}
}
}

View File

@@ -0,0 +1,25 @@
package com.njcn.prepare.harmonic.api.newalgorithm;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.prepare.harmonic.api.newalgorithm.fallback.ROperatingMonitorFeignClientFallbackFactory;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(
value = ServerInfo.PREPARE_BOOT,//对应模块名
path = "/primaryGridData",//对应controller请求类
fallbackFactory = ROperatingMonitorFeignClientFallbackFactory.class//服务降级处理类
)
public interface ROperatingIndexFeignClient {
@PostMapping("primaryGridDataHanlder")
HttpResult<Boolean> primaryGridDataHanlder(@RequestBody PrimaryGridParam primaryGridParam);
@PostMapping("primaryGridDataIntegrityHanlder")
HttpResult<Boolean> primaryGridDataIntegrityHanlder(@RequestBody PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam);
}

View File

@@ -0,0 +1,41 @@
package com.njcn.prepare.harmonic.api.newalgorithm.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.prepare.harmonic.api.newalgorithm.ROperatingIndexFeignClient;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.njcn.prepare.harmonic.utils.PrepareEnumUtil;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class ROperatingIndexFeignClientFallbackFactory implements FallbackFactory<ROperatingIndexFeignClient> {
@Override
public ROperatingIndexFeignClient create(Throwable throwable) {
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (throwable.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException)throwable.getCause();
exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult());
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new ROperatingIndexFeignClient() {
@Override
public HttpResult<Boolean> primaryGridDataHanlder(PrimaryGridParam primaryGridParam) {
log.error("{}异常,降级处理,异常为:{}", "单位标数据质量_统计: ", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<Boolean> primaryGridDataIntegrityHanlder(PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam) {
log.error("{}异常,降级处理,异常为:{}", "终端通信管理_日表: ", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -30,4 +30,22 @@ public class PrimaryGridParam {
@NotBlank(message = "数据源")
private Integer dataSource;
/**
* 调度任务开始时间
*/
@NotBlank(message = "调度任务开始时间不可为空")
private String beginTime;
/**
* 调度任务结束时间
*/
@NotBlank(message = "调度任务结束时间不可为空")
private String endTime;
/**
* 是否补招标识,默认false不补招
*/
@ApiModelProperty(name = "repairFlag",value = "0.不补招 1.补招",example = "false")
private Boolean repairFlag = false;
}

View File

@@ -1,10 +1,12 @@
package com.njcn.prepare.harmonic.controller.area;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.BizParamConstant;
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.common.utils.NjcnDateUtils;
import com.njcn.device.pms.api.PmsTerminalClient;
import com.njcn.device.pms.pojo.param.PmsBaseParam;
import com.njcn.device.pms.pojo.po.PmsTerminal;
@@ -63,23 +65,28 @@ public class PrimaryGridDataController extends BaseController {
public HttpResult<Boolean> primaryGridDataHanlder(@RequestBody PrimaryGridParam primaryGridParam) {
log.info(LocalDateTime.now() + "primaryGridDataHanlder开始执行");
String methodDescribe = getMethodDescribe("primaryGridDataHanlder");
Boolean result = true;
List<String> orgIdList = new ArrayList<> ();
List<String> orgIdList;
if (CollectionUtils.isEmpty(primaryGridParam.getOrgIdList())) {
/*todo 不知道是否需要补招*/
List<PvTerminalTreeVO> dept = deptFeignClient.allDeptList().getData();
orgIdList = dept.stream().map(PvTerminalTreeVO::getId).collect(Collectors.toList());
} else {
orgIdList = primaryGridParam.getOrgIdList();
}
primaryGridParam.setOrgIdList(orgIdList);
if (primaryGridParam.getRepairFlag() && Integer.valueOf(BizParamConstant.STAT_BIZ_DAY).equals(primaryGridParam.getType())) {
List<String> timeRange = NjcnDateUtils.findEveryDay(primaryGridParam.getBeginTime(), primaryGridParam.getEndTime());
for (String item : timeRange) {
log.info(item + "-->开始执行");
primaryGridParam.setBeginTime(item + " " + "00:00:00");
primaryGridParam.setEndTime(item + " " + "23:59:59");
primaryGridParam.setDataDate(item);
primaryGridDataService.primaryGridDataHanlder(primaryGridParam);
if (result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
}
} else {
primaryGridDataService.primaryGridDataHanlder(primaryGridParam);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@ApiOperation("主网终端数据完整率月统计")
@@ -109,7 +116,4 @@ public class PrimaryGridDataController extends BaseController {
}
}

View File

@@ -3,6 +3,9 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
@@ -11,11 +14,13 @@ import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.user.api.DeptFeignClient;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
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;
@@ -30,16 +35,14 @@ import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN;
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class PmsMonitorPOServiceImpl extends ServiceImpl<PmsMonitorPOMapper, PmsMonitorPO> implements PmsMonitorPOService{
private @Autowired
RedisUtil redisUtil;
private final RedisUtil redisUtil;
private @Autowired
PmsMonitorPOMapper pmsMonitorPOMapper;
private final PmsMonitorPOMapper pmsMonitorPOMapper;
private @Autowired
DeptFeignClient deptFeignClient;
private final DeptFeignClient deptFeignClient;
/**
* @Description: 在运监测点集合

View File

@@ -2,18 +2,24 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.dto.DeptGetDeviceDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.harmonic.pojo.po.PmsTerminalPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsTerminalPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.PmsTerminalPOService;
import com.njcn.user.api.DeptFeignClient;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:53【需求编号】
@@ -22,13 +28,14 @@ import java.util.List;
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class PmsTerminalPOServiceImpl extends ServiceImpl<PmsTerminalPOMapper, PmsTerminalPO> implements PmsTerminalPOService {
private @Autowired
PmsTerminalPOMapper pmsTerminalPOMapper;
private @Autowired
DeptFeignClient deptFeignClient;
private final PmsTerminalPOMapper pmsTerminalPOMapper;
private final DeptFeignClient deptFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
/**
* @Description: 监测终端集合
* @Param: [orgid]
@@ -48,4 +55,12 @@ public class PmsTerminalPOServiceImpl extends ServiceImpl<PmsTerminalPOMapper, P
return list;
}
@Override
public List<LineDevGetDTO> getRunTerminalAndLine(String orgId) {
DeptGetLineParam deptGetLineParam=new DeptGetLineParam();
deptGetLineParam.setDeptId(orgId);
List<DeptGetDeviceDTO> data = commTerminalGeneralClient.deptGetDeviceAndMonitor(deptGetLineParam).getData();
return data.stream().flatMap(x -> x.getDeviceList().stream()).distinct().collect(Collectors.toList());
}
}

View File

@@ -1,7 +1,11 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
@@ -17,6 +21,7 @@ import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
@@ -44,46 +49,38 @@ import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN;
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
private @Autowired
PmsMonitorPOService pmsMonitorPOService;
private final PmsMonitorPOService pmsMonitorPOService;
private @Autowired
PmsTerminalPOService pmsTerminalPOService;
private final PmsTerminalPOService pmsTerminalPOService;
private @Autowired
DataVInfluxdbService dataVInfluxdbService;
private final DataVInfluxdbService dataVInfluxdbService;
private @Autowired
PqLinedetailPOService pqLinedetailPOService;
private final PqLinedetailPOService pqLinedetailPOService;
private @Autowired
DataVOraclePOService dataVOraclePOService;
private final DataVOraclePOService dataVOraclePOService;
private @Autowired
RMpIntegrityDPOService rMpIntegrityDPOService;
private final RMpIntegrityDPOService rMpIntegrityDPOService;
private @Autowired
RStatAbnormalDPOMapper rStatAbnormalDPOMapper;
private final RStatAbnormalDPOMapper rStatAbnormalDPOMapper;
private @Autowired
ROperatingIndexDPOService rOperatingIndexDPOService;
private final ROperatingIndexDPOService rOperatingIndexDPOService;
private @Autowired
ROperatingIndexMPOService rOperatingIndexMPOService;
private final ROperatingIndexMPOService rOperatingIndexMPOService;
private @Autowired
ROperatingIndexQPOService rOperatingIndexQPOService;
private final ROperatingIndexQPOService rOperatingIndexQPOService;
private @Autowired
ROperatingIndexYPOService rOperatingIndexYPOService;
private final ROperatingIndexYPOService rOperatingIndexYPOService;
private final RMpDevEvaluateDetailPOService rMpDevEvaluateDetailPOService;
private final RedisUtil redisUtil;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private @Autowired
RMpDevEvaluateDetailPOService rMpDevEvaluateDetailPOService;
private @Autowired
RedisUtil redisUtil;
/**
* @param primaryGridParam
@@ -180,6 +177,7 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
break;
}
}
@SneakyThrows
private void hanlderInfluxdbDay(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList();
@@ -187,34 +185,33 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
List<ROperatingIndexDPO> rOperatingIndexDPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach(orgid -> {
/*measurement_run_points:在运监测点个数*/
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid);
Integer measurement_run_points = pmsMonitorPOS.size ( );
List<String> mysqlIndexList = pmsMonitorPOS.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
/*主网单位在线监测点数 transit_measurement_points*/
Integer transit_measurement_points = dataVInfluxdbService.queryTransitMeasurementPoints(mysqlIndexList,primaryGridParam.getDataDate (),"A");
/*主网单位有效接入监测点个数 effective_access_measurement_count*/
Integer effective_access_measurement_count = this.queryEffectiveAccessMeasurementCount(mysqlIndexList,primaryGridParam.getDataDate ());
//获取终端信息,和包含的终端下监测点
List<LineDevGetDTO> runTerminalAndLine = pmsTerminalPOService.getRunTerminalAndLine(orgid);
//终端数量
Integer online_measurement_points = runTerminalAndLine.size();
/*在运监测终端个数 online_measurement_count*/
Long online_measurement_count = runTerminalAndLine.stream().filter(x -> x.getComFlag() == 1).collect(Collectors.counting());
/*监测终端数量 online_measurement_points*/
List<PmsTerminalPO> pmsTerminalPOS = pmsTerminalPOService.queryOnlineMeasurementPoints(orgid);
Integer online_measurement_points = pmsTerminalPOS.size ();
List<String> runMonitor = runTerminalAndLine.stream().flatMap(x -> x.getMonitorIds().stream()).collect(Collectors.toList());
/*在运监测终端个数 online_measurement_count*/
String state = redisUtil.getStringByKey (NAME_KEY+
SPLIT_SIGN+ DicDataTypeEnum.DEV_STATUS.getCode ( )+
SPLIT_SIGN+ DicDataEnum.RUNNING.getCode ( ));
Integer online_measurement_count = Integer.valueOf (pmsTerminalPOS.stream ( ).filter (temp -> Objects.equals (temp.getTerminalState ( ),state)).count ( )+"");
// List<String> runMonitor = pmsMonitorPOService.getRunMonitor(orgid);
Integer measurement_run_points = runMonitor.size();
/*主网单位在线监测点数 transit_measurement_points*/
Integer transit_measurement_points = dataVInfluxdbService.queryTransitMeasurementPoints(runMonitor, primaryGridParam.getDataDate(), "A");
/*主网单位有效接入监测点个数 effective_access_measurement_count*/
Integer effective_access_measurement_count = this.queryEffectiveAccessMeasurementCount(runMonitor, primaryGridParam.getDataDate());
// List<PmsTerminalPO> pmsTerminalPOS = pmsTerminalPOService.queryOnlineMeasurementPoints(orgid);
/*主网单位数据完整率 data_integrity_rate*/
double data_integrity_rate = 0.00;
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity (mysqlIndexList, dataDate);
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity(runMonitor, dataDate);
/*求平均值*/
if (!CollectionUtils.isEmpty(monitorDataIntegrityDTOList)) {
data_integrity_rate = monitorDataIntegrityDTOList.stream().mapToDouble(temp -> {
@@ -222,9 +219,8 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
}).average().getAsDouble();
}
/*主网单位数据异常监测点数日统计 is_unusual*/
Integer is_unusual =this.queryIsUnusualCount(mysqlIndexList,primaryGridParam.getDataDate ());
Integer is_unusual = this.queryIsUnusualCount(runMonitor, primaryGridParam.getDataDate());
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
rOperatingIndexDPO.setOrgNo(orgid);
@@ -233,7 +229,7 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
rOperatingIndexDPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexDPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
rOperatingIndexDPO.setOnlineMeasurementPoints(online_measurement_points);
rOperatingIndexDPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexDPO.setOnlineMeasurementCount(Math.toIntExact(online_measurement_count));
rOperatingIndexDPO.setDataIntegrityRate(data_integrity_rate);
rOperatingIndexDPO.setIsUnusual(is_unusual > 0 ? 1 : 0);
rOperatingIndexDPOList.add(rOperatingIndexDPO);
@@ -284,13 +280,13 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
private void hanlderOracleMonth(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList();
String dataDate = primaryGridParam.getDataDate ( );
String beginTime = primaryGridParam.getBeginTime();
String endTime = primaryGridParam.getEndTime();
List<ROperatingIndexMPO> rOperatingIndexMPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach(orgid -> {
/*查询day表数据生成月表数据*/
List<ROperatingIndexDPO> list = rOperatingIndexDPOService.queryOneMothData(orgid,dataDate);
List<ROperatingIndexDPO> list = rOperatingIndexDPOService.queryOneMothData(orgid, beginTime,endTime);
/*求平均值*/
int measurement_run_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getMeasurementRunPoints()).
@@ -327,7 +323,7 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
ROperatingIndexMPO rOperatingIndexMPO = new ROperatingIndexMPO();
rOperatingIndexMPO.setOrgNo(orgid);
rOperatingIndexMPO.setDataDate (tempDate);
rOperatingIndexMPO.setDataDate(DateUtil.parse(primaryGridParam.getDataDate()));
rOperatingIndexMPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexMPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexMPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
@@ -415,6 +411,7 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
}
}
/**
* @Description: queryIsUnusualCount :用监测点id在r_stat_abnormal_d表中查找value_alarm为0的监测点个数
* @Param: [mysqlIndexList, dataDate]
@@ -439,7 +436,6 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
}
/**
* @Description: 主网单位有效接入监测点个数
* 1.获取pms_monitor表中监测点状态为投运的监测点id列表
@@ -478,9 +474,6 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
}
/**
* @Description: hanlderOracleQtr
* @Param: [primaryGridParam]
@@ -492,13 +485,13 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
private void hanlderOracleQtr(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList();
String dataDate = primaryGridParam.getDataDate ( );
String beginTime = primaryGridParam.getBeginTime();
String endTime = primaryGridParam.getEndTime();
List<ROperatingIndexQPO> rOperatingIndexQPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach(orgid -> {
/*查询Mouth表数据生成季表数据*/
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneQtrData(orgid,dataDate);
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneQtrData(orgid, beginTime,endTime);
/*求平均值*/
int measurement_run_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getMeasurementRunPoints()).
@@ -535,7 +528,7 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
ROperatingIndexQPO rOperatingIndexQPO = new ROperatingIndexQPO();
rOperatingIndexQPO.setOrgNo(orgid);
rOperatingIndexQPO.setDataDate (tempDate);
rOperatingIndexQPO.setDataDate(DateUtil.parse(primaryGridParam.getDataDate()));
rOperatingIndexQPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexQPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexQPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
@@ -561,13 +554,13 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
private void hanlderOracleYear(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList();
String dataDate = primaryGridParam.getDataDate ( );
String beginTime = primaryGridParam.getBeginTime();
String endTime = primaryGridParam.getEndTime();
List<ROperatingIndexYPO> rOperatingIndexYPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach(orgid -> {
/*查询Mouth表数据生成年表数据*/
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneYearData(orgid,dataDate);
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneYearData(orgid, beginTime,endTime);
/*求平均值*/
int measurement_run_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getMeasurementRunPoints()).
@@ -604,7 +597,7 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
ROperatingIndexYPO rOperatingIndexYPO = new ROperatingIndexYPO();
rOperatingIndexYPO.setOrgNo(orgid);
rOperatingIndexYPO.setDataDate (tempDate);
rOperatingIndexYPO.setDataDate(DateUtil.parse(primaryGridParam.getDataDate()));
rOperatingIndexYPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexYPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexYPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);

View File

@@ -35,12 +35,13 @@ public class ROperatingIndexDPOServiceImpl extends MppServiceImpl<ROperatingInde
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexDPO> queryOneMothData(String orgid, String dataDate) {
public List<ROperatingIndexDPO> queryOneMothData(String orgid,String beginTime, String endTime) {
QueryWrapper<ROperatingIndexDPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring (0, 7));
queryWrapper.eq ("org_no", orgid)
.ge("data_date",beginTime)
.le("data_date",endTime);
List<ROperatingIndexDPO> list = rOperatingIndexDPOMapper.selectList (queryWrapper);

View File

@@ -27,7 +27,8 @@ public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingInde
ROperatingIndexMPOMapper rOperatingIndexMPOMapper;
/**
* @param orgid
* @param dataDate
* @param beginTime
* @param endTime
* @Description: queryOneQtrData 查询一季度Mouth表数据
* @Param: [orgid, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.ROperatingIndexMPO>
@@ -35,11 +36,12 @@ public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingInde
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexMPO> queryOneQtrData(String orgid, String dataDate) {
public List<ROperatingIndexMPO> queryOneQtrData(String orgid,String beginTime, String endTime) {
QueryWrapper<ROperatingIndexMPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
queryWrapper.eq ("org_no", orgid)
.ge("data_date",beginTime)
.le("data_date",endTime);
List<ROperatingIndexMPO> list = rOperatingIndexMPOMapper.selectList (queryWrapper);
@@ -49,7 +51,8 @@ public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingInde
/**
* @param orgid
* @param dataDate
* @param beginTime
* @param endTime
* @Description: queryOneYearData 查询一年Mouth表数据
* @Param: [orgid, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.ROperatingIndexMPO>
@@ -57,10 +60,11 @@ public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingInde
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexMPO> queryOneYearData(String orgid, String dataDate) {
public List<ROperatingIndexMPO> queryOneYearData(String orgid,String beginTime, String endTime) {
QueryWrapper<ROperatingIndexMPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("YEAR( data_date )",dataDate.substring (0, 4));
ge("data_date",beginTime)
.le("data_date",endTime);
List<ROperatingIndexMPO> list = rOperatingIndexMPOMapper.selectList (queryWrapper);
return list;

View File

@@ -6,7 +6,6 @@ import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:32【需求编号】
@@ -23,5 +22,6 @@ public interface PmsMonitorPOService extends IService<PmsMonitorPO>{
* @Author: clam
* @Date: 2022/11/25
*/
public List<PmsMonitorPO> qurymeasurementRunPoints(String orgid);
List<PmsMonitorPO> qurymeasurementRunPoints(String orgid);
}

View File

@@ -1,12 +1,12 @@
package com.njcn.prepare.harmonic.service.mysql.area;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.harmonic.pojo.po.PmsTerminalPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:53【需求编号】
@@ -17,4 +17,12 @@ import java.util.List;
public interface PmsTerminalPOService extends IService<PmsTerminalPO> {
List<PmsTerminalPO> queryOnlineMeasurementPoints(String orgid);
/**
* @Description: 获取终端信息
* @param orgId
* @Author: wr
* @Date: 2023/9/25 10:44
*/
List<LineDevGetDTO> getRunTerminalAndLine(String orgId);
}

View File

@@ -7,7 +7,6 @@ import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:38【需求编号】

View File

@@ -23,5 +23,5 @@ public interface ROperatingIndexDPOService extends IMppService<ROperatingIndexDP
* @Author: clam
* @Date: 2022/11/30
*/
List<ROperatingIndexDPO> queryOneMothData(String orgid, String dataDate);
List<ROperatingIndexDPO> queryOneMothData(String orgid,String beginTime, String endTime);
}

View File

@@ -22,7 +22,7 @@ public interface ROperatingIndexMPOService extends IMppService<ROperatingIndexMP
* @Author: clam
* @Date: 2022/11/30
*/
List<ROperatingIndexMPO> queryOneQtrData(String orgid, String dataDate);
List<ROperatingIndexMPO> queryOneQtrData(String orgid,String beginTime, String endTime);
/**
* @Description: queryOneYearData 查询一年Mouth表数据
@@ -31,5 +31,5 @@ public interface ROperatingIndexMPOService extends IMppService<ROperatingIndexMP
* @Author: clam
* @Date: 2022/11/30
*/
List<ROperatingIndexMPO> queryOneYearData(String orgid, String dataDate);
List<ROperatingIndexMPO> queryOneYearData(String orgid,String beginTime, String endTime);
}