终端统计及appbug修改

This commit is contained in:
huangzj
2023-05-16 08:47:49 +08:00
parent 40339b22f8
commit 1ff7080bc9
36 changed files with 686 additions and 40 deletions

View File

@@ -0,0 +1,55 @@
package com.njcn.prepare.harmonic.controller.newalgorithm;
import com.njcn.common.pojo.annotation.OperateInfo;
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.prepare.harmonic.pojo.param.DeviceParam;
import com.njcn.prepare.harmonic.service.mysql.area.RMpDevEvaluateDetailPOService;
import com.njcn.prepare.harmonic.service.mysql.device.RStatDevSignalDPOService;
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.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("/rMpDevEvaluateDetail")
@RequiredArgsConstructor
public class RMpDevEvaluateDetailController extends BaseController {
private final RMpDevEvaluateDetailPOService rMpDevEvaluateDetailPOService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/handler")
@ApiOperation("终端数据评价_日统计")
@ApiImplicitParam(name = "deviceParamList", value = "参数", required = true)
public HttpResult<String> handler(@RequestBody @Validated List<DeviceParam> deviceParamList){
log.info(LocalDateTime.now()+"handler始执行");
String methodDescribe = getMethodDescribe("handler");
rMpDevEvaluateDetailPOService.handler (deviceParamList);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -0,0 +1,59 @@
package com.njcn.prepare.harmonic.controller.newalgorithm;
import com.njcn.common.pojo.annotation.OperateInfo;
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.pq.api.LineFeignClient;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.device.RStatDevSignalDPOService;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailService;
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.CollectionUtils;
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.ArrayList;
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("/rstatdevsignal")
@RequiredArgsConstructor
public class RStatDevSignalController extends BaseController {
private final RStatDevSignalDPOService rStatDevSignalDPOService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/rstatdevsignalHandler")
@ApiOperation("终端通信管理_日统计")
@ApiImplicitParam(name = "deviceParamList", value = "参数", required = true)
public HttpResult<String> rstatdevsignalHandler(@RequestBody @Validated List<DeviceParam> deviceParamList){
log.info(LocalDateTime.now()+"rstatdevsignalHandler始执行");
String methodDescribe = getMethodDescribe("rstatdevsignalHandler");
rStatDevSignalDPOService.eventdetailHandler (deviceParamList);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -0,0 +1,16 @@
package com.njcn.prepare.harmonic.mapper.mysql.device;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.po.RMpDevSolveDetailPO;
/**
*
* Description:
* Date: 2023/5/9 15:43【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface RMpDevSolveDetailPOMapper extends MppBaseMapper<RMpDevSolveDetailPO> {
}

View File

@@ -0,0 +1,15 @@
package com.njcn.prepare.harmonic.mapper.mysql.device;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
/**
* Description:
* Date: 2023/5/4 14:30【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface RStatDevSignalDPOMapper extends MppBaseMapper<RStatDevSignalDPO> {
}

View File

@@ -0,0 +1,21 @@
<?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.device.RMpDevSolveDetailPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.po.RMpDevSolveDetailPO">
<!--@mbg.generated-->
<!--@Table r_mp_dev_solve_detail-->
<id column="device_id" jdbcType="VARCHAR" property="deviceId" />
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<result column="break_down_date" jdbcType="TIMESTAMP" property="breakDownDate" />
<result column="break_down_type" jdbcType="VARCHAR" property="breakDownType" />
<result column="is_solve" jdbcType="TINYINT" property="isSolve" />
<result column="solve_date" jdbcType="TIMESTAMP" property="solveDate" />
<result column="defect_treatment" jdbcType="LONGVARCHAR" property="defectTreatment" />
<result column="defect_severity" jdbcType="VARCHAR" property="defectSeverity" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
device_id, data_date, break_down_date, break_down_type, is_solve, solve_date, defect_treatment,
defect_severity
</sql>
</mapper>

View File

@@ -0,0 +1,16 @@
<?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.device.RStatDevSignalDPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO">
<!--@mbg.generated-->
<!--@Table r_stat_dev_signal_d-->
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
<id column="dev_id" jdbcType="VARCHAR" property="devId" />
<result column="device_status" jdbcType="VARCHAR" property="deviceStatus" />
<result column="run_status" jdbcType="VARCHAR" property="runStatus" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
data_date, dev_id, device_status, run_status
</sql>
</mapper>

View File

@@ -1,10 +1,33 @@
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.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.utils.PubUtils;
import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpDevEvaluateDetailPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
import com.njcn.prepare.harmonic.pojo.po.RMpDevSolveDetailPO;
import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
import com.njcn.prepare.harmonic.service.mysql.area.RMpDevEvaluateDetailPOService;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexDPOService;
import com.njcn.prepare.harmonic.service.mysql.device.RMpDevSolveDetailPOService;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.OptionalDouble;
/**
*
* Description:
@@ -15,6 +38,61 @@ import org.springframework.stereotype.Service;
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class RMpDevEvaluateDetailPOServiceImpl extends MppServiceImpl<RMpDevEvaluateDetailPOMapper, RMpDevEvaluateDetailPO> implements RMpDevEvaluateDetailPOService{
private final ROperatingMonitorDMapper rOperatingMonitorDMapper;
private final RMpDevSolveDetailPOService rMpDevSolveDetailPOService;
private final DecimalFormat df = new DecimalFormat("#.00");
@Override
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
@SneakyThrows
public void handler(List<DeviceParam> deviceParamList) {
List<RMpDevEvaluateDetailPO> rMpDevEvaluateDetailPOList = new ArrayList<>();
Date date = DateUtil.parse(deviceParamList.get(0).getDataDate());
QueryWrapper<ROperatingMonitorDPO> wrapper = new QueryWrapper<>();
QueryWrapper<RMpDevSolveDetailPO> wrapper1 = new QueryWrapper<>();
deviceParamList.forEach(temp -> {
RMpDevEvaluateDetailPO rMpDevEvaluateDetailPO = new RMpDevEvaluateDetailPO();
rMpDevEvaluateDetailPO.setDeviceId(temp.getDevId());
rMpDevEvaluateDetailPO.setDataDate(date);
wrapper.clear();
wrapper1.clear();
wrapper1.select(RMpDevSolveDetailPO.COL_DEFECT_SEVERITY).
eq(RMpDevSolveDetailPO.COL_DEVICE_ID,temp.getDevId()).
eq(RMpDevSolveDetailPO.COL_DATA_DATE, temp.getDataDate());
RMpDevSolveDetailPO one = rMpDevSolveDetailPOService.getOne(wrapper1);
Double defectSeverity = PubUtils.getDefectSeverity(one.getDefectSeverity());
rMpDevEvaluateDetailPO.setDevScore(Double.valueOf(df.format(defectSeverity/3)));
List<ROperatingMonitorDPO> rOperatingMonitorDPOS = new ArrayList<>();
List<String> lineIds = temp.getLineIds();
if(lineIds.size() > 0){
wrapper.in("measurement_point_id", lineIds);
rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(wrapper);
}
double asDouble1=0.00 ,asDouble2=0.00,aDouble=0.00;
if(rOperatingMonitorDPOS.size()>0){
asDouble1= rOperatingMonitorDPOS.stream().mapToDouble(po -> po.getDataIntegrityRate().doubleValue()).average().getAsDouble();
asDouble2 = rOperatingMonitorDPOS.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble();
long count = rOperatingMonitorDPOS.stream().filter(po -> po.getIsUnusual() == 1 && po.getDataIntegrityRate().compareTo(new BigDecimal(0.95)) == 1).count();
aDouble = Double.valueOf(count) / rOperatingMonitorDPOS.size();
}
rMpDevEvaluateDetailPO.setDevDataRate(Double.valueOf(df.format(asDouble1)));
rMpDevEvaluateDetailPO.setDevTargetRate(Double.valueOf(df.format(asDouble2)));
rMpDevEvaluateDetailPO.setDevEffectiveRate(Double.valueOf(df.format(aDouble)));
rMpDevEvaluateDetailPOList.add(rMpDevEvaluateDetailPO);
});
this.saveOrUpdateBatchByMultiId(rMpDevEvaluateDetailPOList,500);
}
}

View File

@@ -0,0 +1,22 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.device;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.prepare.harmonic.mapper.mysql.device.RMpDevSolveDetailPOMapper;
import com.njcn.prepare.harmonic.pojo.po.RMpDevSolveDetailPO;
import com.njcn.prepare.harmonic.service.mysql.device.RMpDevSolveDetailPOService;
/**
*
* Description:
* Date: 2023/5/9 15:43【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RMpDevSolveDetailPOServiceImpl extends MppServiceImpl<RMpDevSolveDetailPOMapper, RMpDevSolveDetailPO> implements RMpDevSolveDetailPOService{
}

View File

@@ -0,0 +1,74 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.device;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper;
import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.njcn.prepare.harmonic.mapper.mysql.device.RStatDevSignalDPOMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
import com.njcn.prepare.harmonic.service.mysql.device.RStatDevSignalDPOService;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* Description:
* Date: 2023/5/4 14:25【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class RStatDevSignalDPOServiceImpl extends MppServiceImpl<RStatDevSignalDPOMapper,RStatDevSignalDPO > implements RStatDevSignalDPOService{
private final RMpMonitorEvaluateDMapper revaluateDMapper;
@Override
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
@SneakyThrows
public void eventdetailHandler(List<DeviceParam> deviceParamList) {
List<RStatDevSignalDPO> rStatDevSignalDPOList = new ArrayList<>();
Date date = DateUtil.parse(deviceParamList.get(0).getDataDate());
QueryWrapper<RMpMonitorEvaluateDPO> wrapper = new QueryWrapper<>();
deviceParamList.forEach(temp -> {
RStatDevSignalDPO rStatDevSignalDPO = new RStatDevSignalDPO();
rStatDevSignalDPO.setDevId(temp.getDevId());
rStatDevSignalDPO.setDeviceStatus(temp.getDeviceStatus());
rStatDevSignalDPO.setUpdateTime(temp.getUpdateTime());
rStatDevSignalDPO.setDataDate(date);
/**
* 1、运行状态设备下任意一个监测点有效接入分钟数effective_minute_count > 0为在线状态反之离线状态
*/
Integer effective_minute_count = 0;
List<String> lineIds = temp.getLineIds();
if(lineIds.size() > 0){
wrapper.clear();
wrapper.select("sum(effective_minute_count) as effective_minute_count ");
wrapper.eq("device_id", temp.getDevId());
wrapper.in("measurement_point_id", lineIds);
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = revaluateDMapper.selectOne(wrapper);
effective_minute_count = rMpMonitorEvaluateDPO.getEffectiveMinuteCount();
}
String runStatus = "0";
if(effective_minute_count>0&&temp.getDeviceStatus().equals("0")){
runStatus = "1";
}
rStatDevSignalDPO.setRunStatus(runStatus);
rStatDevSignalDPOList.add(rStatDevSignalDPO);
});
this.saveOrUpdateBatchByMultiId(rStatDevSignalDPOList,500);
}
}

View File

@@ -63,6 +63,8 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
indexLists.forEach (temp -> {
LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( );
String devid = lineFeignClient.getLineIdByDevId(temp).getData();
/*todo 统计间隔电压等级取值方式后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/
@@ -84,6 +86,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
return;
}
rMpMonitorEvaluateDPO.setAllMinuteCount (fiveItems.size ());
rMpMonitorEvaluateDPO.setDeviceId(devid);
rMpMonitorEvaluateDPO.setDataDate (date);
rMpMonitorEvaluateDPO.setMeasurementPointId (temp);
rMpMonitorEvaluateDPO.setPltCount (twoFlickerData.getPltCount ());

View File

@@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.date.DateUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.utils.PubUtils;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
@@ -108,7 +109,7 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
)
);
rOperatingMonitorDPO.setDevId (devid);
rOperatingMonitorDPO.setMonitorState (data.getRunFlag());
rOperatingMonitorDPO.setMonitorState (PubUtils.getRunFlag(data.getRunFlag())+"");
rOperatingMonitorDPOList.add (rOperatingMonitorDPO);
});
this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500);

View File

@@ -2,6 +2,9 @@ package com.njcn.prepare.harmonic.service.mysql.area;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
import java.util.List;
/**
*
@@ -15,4 +18,5 @@ import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO;
public interface RMpDevEvaluateDetailPOService extends IMppService<RMpDevEvaluateDetailPO> {
void handler(List<DeviceParam> deviceParamList);
}

View File

@@ -0,0 +1,17 @@
package com.njcn.prepare.harmonic.service.mysql.device;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.harmonic.pojo.po.RMpDevSolveDetailPO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
* Description:
* Date: 2023/5/9 15:43【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface RMpDevSolveDetailPOService extends IMppService<RMpDevSolveDetailPO> {
}

View File

@@ -0,0 +1,22 @@
package com.njcn.prepare.harmonic.service.mysql.device;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
*
* Description:
* Date: 2023/5/4 14:25【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface RStatDevSignalDPOService extends IMppService<RStatDevSignalDPO> {
void eventdetailHandler(List<DeviceParam> deviceParamList);
}