终端统计及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

@@ -31,7 +31,8 @@ public class CsEdDataAddParm {
@ApiModelProperty(value = "装置型号") @ApiModelProperty(value = "装置型号")
@NotBlank(message="装置型号不能为空!") @NotBlank(message="装置型号不能为空!")
private String devType; private String devType;
@ApiModelProperty(value = "装置类型")
private String type;
/** /**
* 版本号 * 版本号
*/ */

View File

@@ -8,6 +8,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
/** /**
* *
@@ -30,7 +31,8 @@ public class CsEdDataAuditParm {
*/ */
@ApiModelProperty(value = "装置型号") @ApiModelProperty(value = "装置型号")
private String devType; private String devType;
@ApiModelProperty(value = "装置类型")
private String type;
/** /**
* 版本号 * 版本号
*/ */
@@ -49,7 +51,7 @@ public class CsEdDataAuditParm {
@ApiModelProperty(value = "版本日期") @ApiModelProperty(value = "版本日期")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDate versionDate; private Date versionDate;
/** /**
* 描述 * 描述
@@ -65,7 +67,8 @@ public class CsEdDataAuditParm {
@ApiModelProperty(value = "crc信息") @ApiModelProperty(value = "crc信息")
private String crcInfo; private String crcInfo;
@ApiModelProperty(value="0删除 1正常")
private String status;
@ApiModelProperty(value = ".bin文件") @ApiModelProperty(value = ".bin文件")
private MultipartFile file; private MultipartFile file;

View File

@@ -50,12 +50,12 @@ public class CsEquipmentDeliveryAddParm{
@NotBlank(message="装置用途不能为空!") @NotBlank(message="装置用途不能为空!")
private String devUse; private String devUse;
/** // /**
* 装置类型(直连设备、网关设备) // * 装置类型(直连设备、网关设备)
*/ // */
@ApiModelProperty(value="装置类型") // @ApiModelProperty(value="装置类型")
@NotBlank(message="装置类型不能为空!") // @NotBlank(message="装置类型不能为空!")
private String devType; // private String devType;
/** /**
* 装置型号pqs588、pqs680... * 装置型号pqs588、pqs680...

View File

@@ -48,11 +48,11 @@ public class CsEquipmentDeliveryAuditParm {
@ApiModelProperty(value="装置用途") @ApiModelProperty(value="装置用途")
private String devUse; private String devUse;
/** // /**
* 装置类型(直连设备、网关设备) // * 装置类型(直连设备、网关设备)
*/ // */
@ApiModelProperty(value="装置类型") // @ApiModelProperty(value="装置类型")
private String devType; // private String devType;
/** /**
* 装置型号pqs588、pqs680... * 装置型号pqs588、pqs680...

View File

@@ -44,11 +44,11 @@ public class CsEquipmentDeliveryQueryParm {
@ApiModelProperty(value="装置用途") @ApiModelProperty(value="装置用途")
private String devUse; private String devUse;
/** // /**
* 装置类型(直连设备、网关设备) // * 装置类型(直连设备、网关设备)
*/ // */
@ApiModelProperty(value="装置类型") // @ApiModelProperty(value="装置类型")
private String devType; // private String devType;
/** /**
* 装置型号pqs588、pqs680... * 装置型号pqs588、pqs680...

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity; import com.njcn.db.bo.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
@@ -35,7 +36,11 @@ public class CsEdDataPO extends BaseEntity {
*/ */
@TableField(value = "dev_type") @TableField(value = "dev_type")
private String devType; private String devType;
/**
* 装置类型(直连设备、网关设备)
*/
@TableField(value = "type")
private String type;
/** /**
* 版本号 * 版本号
*/ */

View File

@@ -52,11 +52,11 @@ public class CsEquipmentDeliveryPO extends BaseEntity {
@TableField(value = "dev_use") @TableField(value = "dev_use")
private String devUse; private String devUse;
/** // /**
* 装置类型(直连设备、网关设备) // * 装置类型(直连设备、网关设备)
*/ // */
@TableField(value = "dev_type") // @TableField(value = "dev_type")
private String devType; // private String devType;
/** /**
* 装置型号pqs588、pqs680... * 装置型号pqs588、pqs680...

View File

@@ -37,6 +37,9 @@ public class AppTopologyDiagramVO extends BaseEntity {
@ApiModelProperty(value = "项目Id") @ApiModelProperty(value = "项目Id")
private String projectId; private String projectId;
@ApiModelProperty(value = "项目名称")
private String projectName;
/** /**
* 拓扑图文件路径 * 拓扑图文件路径
*/ */

View File

@@ -1,10 +1,14 @@
package com.njcn.algorithm.pojo.vo; package com.njcn.algorithm.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.njcn.db.bo.BaseEntity; import com.njcn.db.bo.BaseEntity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
/** /**
* *
@@ -46,7 +50,9 @@ public class CsDevModelPageVO extends BaseEntity {
* 版本日期 * 版本日期
*/ */
@ApiModelProperty(value = "版本日期") @ApiModelProperty(value = "版本日期")
private LocalDate versionDate; @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date versionDate;
/** /**
* 装置模板文件路径 * 装置模板文件路径

View File

@@ -1,10 +1,13 @@
package com.njcn.algorithm.pojo.vo; package com.njcn.algorithm.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.njcn.db.bo.BaseEntity; import com.njcn.db.bo.BaseEntity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
/** /**
* *
@@ -30,7 +33,8 @@ public class CsEdDataVO extends BaseEntity {
private String devType; private String devType;
@ApiModelProperty(value = "装置名称") @ApiModelProperty(value = "装置名称")
private String devName; private String devName;
@ApiModelProperty(value = "装置类型")
private String type;
/** /**
* 版本号 * 版本号
@@ -47,8 +51,10 @@ public class CsEdDataVO extends BaseEntity {
/** /**
* 版本日期 * 版本日期
*/ */
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty(value = "版本日期") @ApiModelProperty(value = "版本日期")
private LocalDate versionDate; private Date versionDate;
/** /**
* 描述 * 描述
@@ -56,6 +62,9 @@ public class CsEdDataVO extends BaseEntity {
@ApiModelProperty(value = "描述") @ApiModelProperty(value = "描述")
private String description; private String description;
@ApiModelProperty(value = "状态")
private String status;
/** /**
* 版本类型 * 版本类型
*/ */

View File

@@ -51,11 +51,11 @@ public class CsEquipmentDeliveryVO extends BaseEntity {
@ApiModelProperty(value="装置用途") @ApiModelProperty(value="装置用途")
private String devUse; private String devUse;
/** // /**
* 装置类型(直连设备、网关设备) // * 装置类型(直连设备、网关设备)
*/ // */
@ApiModelProperty(value="装置类型") // @ApiModelProperty(value="装置类型")
private String devType; // private String devType;
/** /**
* 装置型号pqs588、pqs680... * 装置型号pqs588、pqs680...

View File

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.njcn.algorithm.pojo.po.CsFeedbackChatPO; import com.njcn.algorithm.pojo.po.CsFeedbackChatPO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@@ -60,7 +61,8 @@ public class CsFeedbackDetailVO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime; private LocalDateTime createTime;
private List<String> imageUrls; private List<String> imageUrls;

View File

@@ -3,6 +3,7 @@ package com.njcn.algorithm.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -59,7 +60,8 @@ public class CsFeedbackVO {
@ApiModelProperty(value = "未读消息条数") @ApiModelProperty(value = "未读消息条数")
private int chatCount; private int chatCount;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime; private LocalDateTime createTime;

View File

@@ -29,7 +29,7 @@
FROM cs_ed_data a FROM cs_ed_data a
LEFT JOIN sys_dict_data b ON a.dev_type = b.id LEFT JOIN sys_dict_data b ON a.dev_type = b.id
WHERE WHERE
1 = 1 And a.`status`='1' 1 = 1
<if test="csEdDataQueryParm.versionStartDate != null and csEdDataQueryParm.versionStartDate != ''"> <if test="csEdDataQueryParm.versionStartDate != null and csEdDataQueryParm.versionStartDate != ''">
AND a.version_date &gt;= #{csEdDataQueryParm.versionStartDate } AND a.version_date &gt;= #{csEdDataQueryParm.versionStartDate }
</if> </if>

View File

@@ -6,13 +6,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.google.common.base.Objects; import com.google.common.base.Objects;
import com.njcn.algorithm.mapper.AppProjectMapper;
import com.njcn.algorithm.mapper.AppTopologyDiagramMapper; import com.njcn.algorithm.mapper.AppTopologyDiagramMapper;
import com.njcn.algorithm.pojo.param.AppTopologyDiagramAddParm; import com.njcn.algorithm.pojo.param.AppTopologyDiagramAddParm;
import com.njcn.algorithm.pojo.param.AppTopologyDiagramAuditParm; import com.njcn.algorithm.pojo.param.AppTopologyDiagramAuditParm;
import com.njcn.algorithm.pojo.param.AppTopologyDiagramQueryPageParm; import com.njcn.algorithm.pojo.param.AppTopologyDiagramQueryPageParm;
import com.njcn.algorithm.pojo.param.AppTopologyDiagramQueryParm; import com.njcn.algorithm.pojo.param.AppTopologyDiagramQueryParm;
import com.njcn.algorithm.pojo.po.AppProjectPO;
import com.njcn.algorithm.pojo.po.AppTopologyDiagramPO; import com.njcn.algorithm.pojo.po.AppTopologyDiagramPO;
import com.njcn.algorithm.pojo.vo.AppTopologyDiagramVO; import com.njcn.algorithm.pojo.vo.AppTopologyDiagramVO;
import com.njcn.algorithm.service.AppProjectService;
import com.njcn.algorithm.service.AppTopologyDiagramService; import com.njcn.algorithm.service.AppTopologyDiagramService;
import com.njcn.oss.constant.OssPath; import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil; import com.njcn.oss.utils.FileStorageUtil;
@@ -41,6 +44,7 @@ public class AppTopologyDiagramServiceImpl extends MppServiceImpl<AppTopologyDia
private final FileStorageUtil fileStorageUtil; private final FileStorageUtil fileStorageUtil;
private final AppProjectMapper appServiceMapper;
private final AppTopologyDiagramMapper appTopologyDiagramMapper; private final AppTopologyDiagramMapper appTopologyDiagramMapper;
@Override @Override
@@ -91,9 +95,13 @@ public class AppTopologyDiagramServiceImpl extends MppServiceImpl<AppTopologyDia
eq (StringUtils.isNotBlank (appTopologyDiagramAuditParm.getProjectId ()),"project_id",appTopologyDiagramAuditParm.getProjectId ()). eq (StringUtils.isNotBlank (appTopologyDiagramAuditParm.getProjectId ()),"project_id",appTopologyDiagramAuditParm.getProjectId ()).
like (StringUtils.isNotBlank (appTopologyDiagramAuditParm.getName ()),"name", appTopologyDiagramAuditParm.getName ()); like (StringUtils.isNotBlank (appTopologyDiagramAuditParm.getName ()),"name", appTopologyDiagramAuditParm.getName ());
List<AppTopologyDiagramPO> list = this.list (queryWrapper); List<AppTopologyDiagramPO> list = this.list (queryWrapper);
List<AppTopologyDiagramVO> collect = list.stream ( ).map (temp -> { List<AppTopologyDiagramVO> collect = list.stream ( ).map (temp -> {
AppTopologyDiagramVO vo = new AppTopologyDiagramVO ( ); AppTopologyDiagramVO vo = new AppTopologyDiagramVO ( );
BeanUtils.copyProperties (temp, vo); BeanUtils.copyProperties (temp, vo);
AppProjectPO appProjectPO = appServiceMapper.selectById(vo.getProjectId());
vo.setProjectName(appProjectPO.getName());
vo.setFilePath (fileStorageUtil.getFileUrl (vo.getFilePath ())); vo.setFilePath (fileStorageUtil.getFileUrl (vo.getFilePath ()));
return vo; return vo;
}).collect (Collectors.toList ( )); }).collect (Collectors.toList ( ));
@@ -114,6 +122,9 @@ public class AppTopologyDiagramServiceImpl extends MppServiceImpl<AppTopologyDia
List<AppTopologyDiagramVO> collect = tempPage.getRecords ( ).stream ( ).map (temp -> { List<AppTopologyDiagramVO> collect = tempPage.getRecords ( ).stream ( ).map (temp -> {
AppTopologyDiagramVO vo = new AppTopologyDiagramVO ( ); AppTopologyDiagramVO vo = new AppTopologyDiagramVO ( );
BeanUtils.copyProperties (temp, vo); BeanUtils.copyProperties (temp, vo);
AppProjectPO appProjectPO = appServiceMapper.selectById(vo.getProjectId());
vo.setProjectName(appProjectPO.getName());
vo.setFilePath (fileStorageUtil.getFileUrl (temp.getFilePath ( ))); vo.setFilePath (fileStorageUtil.getFileUrl (temp.getFilePath ( )));
return vo; return vo;
}).collect (Collectors.toList ( )); }).collect (Collectors.toList ( ));

View File

@@ -31,7 +31,7 @@ spring:
shared-configs: shared-configs:
- data-id: share-config.yaml - data-id: share-config.yaml
refresh: true refresh: true
- data-Id: share-config-datasource-db.yaml - data-Id: algorithm-config.yaml
refresh: true refresh: true
main: main:
allow-bean-definition-overriding: true allow-bean-definition-overriding: true

View File

@@ -256,6 +256,31 @@ public class PubUtils {
} }
} }
public static Integer getRunFlag(String runFlag) {
switch (runFlag) {
case "投运":
return 0;
case "热备用":
return 1;
case "停运":
return 2;
default:
return -1;
}
}
public static Double getDefectSeverity(String defectSeverity) {
switch (defectSeverity) {
case "轻缺陷":
return 0.02;
case "较重缺陷":
return 0.12;
case "严重缺陷":
return 0.42;
default:
return 0.00;
}
}
public static String ptType(Integer ptType) { public static String ptType(Integer ptType) {
switch (ptType) { switch (ptType) {
case 0: case 0:

View File

@@ -125,6 +125,13 @@ spring:
filters: filters:
- SwaggerHeaderFilter - SwaggerHeaderFilter
- StripPrefix=1 - StripPrefix=1
- id: algorithm-boot
uri: lb://algorithm-boot
predicates:
- Path=/algorithm-boot/**
filters:
- SwaggerHeaderFilter
- StripPrefix=1
#项目日志的配置 #项目日志的配置
logging: logging:
config: http://@nacos.url@/nacos/v1/cs/configs?tenant=@nacos.namespace@&group=DEFAULT_GROUP&dataId=logback.xml config: http://@nacos.url@/nacos/v1/cs/configs?tenant=@nacos.namespace@&group=DEFAULT_GROUP&dataId=logback.xml

View File

@@ -33,6 +33,9 @@ public class RMpMonitorEvaluateDPO {
@MppMultiId(value = "measurement_point_id") @MppMultiId(value = "measurement_point_id")
private String measurementPointId; private String measurementPointId;
@TableField(value = "device_id")
private String deviceId;
/** /**
* 总接入分钟数 * 总接入分钟数
*/ */
@@ -54,7 +57,6 @@ public class RMpMonitorEvaluateDPO {
/** /**
* 相电压有效值平均值指标数据个数 * 相电压有效值平均值指标数据个数
*/ */
@TableField(value = "phase_voltage_count")
private Integer phaseVoltageCount; private Integer phaseVoltageCount;
/** /**

View File

@@ -0,0 +1,31 @@
package com.njcn.prepare.harmonic.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* Description:
* Date: 2023/5/4 15:18【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
public class DeviceParam {
@ApiModelProperty(name = "devId",value = "终端id")
private String devId;
private String updateTime;
@ApiModelProperty(name = "lineIds",value = "监测点索引集合")
private List<String> lineIds;
@ApiModelProperty(name = "dataDate",value = "时间")
@NotBlank(message = "报表时间不可为空")
private String dataDate;
private String deviceStatus;
}

View File

@@ -0,0 +1,86 @@
package com.njcn.prepare.harmonic.pojo.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
/**
*
* Description:
* Date: 2023/5/9 15:43【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
@TableName(value = "r_mp_dev_solve_detail")
public class RMpDevSolveDetailPO {
/**
* 终端id
*/
@MppMultiId(value = "device_id")
private String deviceId;
/**
* 生成数据的时间,每天统计一次
*/
@MppMultiId(value = "data_date")
private Date dataDate;
/**
* 故障时间
*/
@TableField(value = "break_down_date")
private Date breakDownDate;
/**
* 故障类型
*/
@TableField(value = "break_down_type")
private String breakDownType;
/**
* 是否消缺(0否 1是)
*/
@TableField(value = "is_solve")
private String isSolve;
/**
* 消缺时间
*/
@TableField(value = "solve_date")
private Date solveDate;
/**
* 消缺措施
*/
@TableField(value = "defect_treatment")
private String defectTreatment;
/**
* 缺陷严重度(轻缺陷、较重缺陷和严重缺陷 三类缺陷对应分值为0.02,0.12和0.42消缺为对应缺陷分值的1/3)
*/
@TableField(value = "defect_severity")
private String defectSeverity;
public static final String COL_DEVICE_ID = "device_id";
public static final String COL_DATA_DATE = "data_date";
public static final String COL_BREAK_DOWN_DATE = "break_down_date";
public static final String COL_BREAK_DOWN_TYPE = "break_down_type";
public static final String COL_IS_SOLVE = "is_solve";
public static final String COL_SOLVE_DATE = "solve_date";
public static final String COL_DEFECT_TREATMENT = "defect_treatment";
public static final String COL_DEFECT_SEVERITY = "defect_severity";
}

View File

@@ -0,0 +1,50 @@
package com.njcn.prepare.harmonic.pojo.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
/**
* Description:
* Date: 2023/5/4 14:30【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
@TableName(value = "r_stat_dev_signal_d")
public class RStatDevSignalDPO {
/**
* 更新时间
*/
@MppMultiId(value = "data_date")
private Date dataDate;
/**
* 终端Id
*/
@MppMultiId(value = "dev_id")
private String devId;
/**
* 设备状态
*/
@TableField(value = "device_status")
private String deviceStatus;
/**
* 运行状态
*/
@TableField(value = "run_status")
private String runStatus;
@TableField(value = "update_time")
private String updateTime;
}

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; 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.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.utils.PubUtils;
import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO; import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpDevEvaluateDetailPOMapper; 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.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.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: * Description:
@@ -15,6 +38,61 @@ import org.springframework.stereotype.Service;
* @version V1.0.0 * @version V1.0.0
*/ */
@Service @Service
@RequiredArgsConstructor
public class RMpDevEvaluateDetailPOServiceImpl extends MppServiceImpl<RMpDevEvaluateDetailPOMapper, RMpDevEvaluateDetailPO> implements RMpDevEvaluateDetailPOService{ 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 -> { indexLists.forEach (temp -> {
LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( ); LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( );
String devid = lineFeignClient.getLineIdByDevId(temp).getData();
/*todo 统计间隔电压等级取值方式后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/ /*todo 统计间隔电压等级取值方式后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/ /*统计间隔*/
@@ -84,6 +86,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
return; return;
} }
rMpMonitorEvaluateDPO.setAllMinuteCount (fiveItems.size ()); rMpMonitorEvaluateDPO.setAllMinuteCount (fiveItems.size ());
rMpMonitorEvaluateDPO.setDeviceId(devid);
rMpMonitorEvaluateDPO.setDataDate (date); rMpMonitorEvaluateDPO.setDataDate (date);
rMpMonitorEvaluateDPO.setMeasurementPointId (temp); rMpMonitorEvaluateDPO.setMeasurementPointId (temp);
rMpMonitorEvaluateDPO.setPltCount (twoFlickerData.getPltCount ()); 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 cn.hutool.core.date.DateUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; 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.api.LineFeignClient;
import com.njcn.device.pq.pojo.vo.LineDetailDataVO; import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
@@ -108,7 +109,7 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
) )
); );
rOperatingMonitorDPO.setDevId (devid); rOperatingMonitorDPO.setDevId (devid);
rOperatingMonitorDPO.setMonitorState (data.getRunFlag()); rOperatingMonitorDPO.setMonitorState (PubUtils.getRunFlag(data.getRunFlag())+"");
rOperatingMonitorDPOList.add (rOperatingMonitorDPO); rOperatingMonitorDPOList.add (rOperatingMonitorDPO);
}); });
this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500); 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.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO; 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> { 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);
}