合并代码

This commit is contained in:
2022-11-21 17:58:18 +08:00
parent a4c225d067
commit a81a815636
65 changed files with 3828 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
package com.njcn.device.pms.api;
import cn.hutool.core.collection.CollectionUtil;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pms.api.fallback.DistributionMonitorClientFallbackFactory;
import com.njcn.device.pms.api.fallback.MonitorClientFallbackFactory;
import com.njcn.device.pms.pojo.dto.PmsMonitorDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO;
import com.njcn.device.pms.pojo.param.PmsMonitorInfoParam;
import com.njcn.device.pms.pojo.param.PmsMonitorParam;
import com.njcn.device.pms.pojo.vo.DoubleUserVO;
import com.njcn.device.pq.pojo.po.Overlimit;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @author yzh
* @date 2022/10/18
*/
@FeignClient(
value = ServerInfo.DEVICE,
path = "/pms/distributionMonitor",
fallbackFactory = DistributionMonitorClientFallbackFactory.class)
public interface DistributionMonitorClient {
/**
* 获取指定组织下的发电用电用户
* @author cdf
* @date 2022/11/15
*/
@PostMapping("/getDoubleUserByDept")
HttpResult<List<DoubleUserVO>> getDoubleUserByDept(@RequestParam("orgId")String orgId);
}

View File

@@ -0,0 +1,50 @@
package com.njcn.device.pms.api.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.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.pojo.dto.PmsMonitorDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO;
import com.njcn.device.pms.pojo.param.PmsMonitorInfoParam;
import com.njcn.device.pms.pojo.param.PmsMonitorParam;
import com.njcn.device.pms.pojo.vo.DoubleUserVO;
import com.njcn.device.pms.utils.PmsDeviceEnumUtil;
import com.njcn.device.pq.pojo.po.Overlimit;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @author yzh
* @date 2022/10/18
*/
@Slf4j
@Component
public class DistributionMonitorClientFallbackFactory implements FallbackFactory<DistributionMonitorClient> {
@Override
public DistributionMonitorClient create(Throwable throwable) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (throwable.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) throwable.getCause();
exceptionEnum = PmsDeviceEnumUtil.getExceptionEnum(businessException.getResult());
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new DistributionMonitorClient()
{
@Override
public HttpResult<List<DoubleUserVO>> getDoubleUserByDept(@RequestParam("orgId")String orgId) {
log.error("{}异常,降级处理,异常为:{}", "获取指定组织下的发电用电用户", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,25 @@
package com.njcn.device.pms.pojo.param;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 终端异常管理接收参数实体
* @Title RMpDevAbnormalManageParam
* @Package com.njcn.device.pms.pojo.param
* @Author jianghaifei
* @Date 2022-11-14 19:48
* @Version V1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RMpDevAbnormalManageParam extends StatisticsBizBaseParam {
@ApiModelProperty(name = "manufactureIds", value = "厂家id(仅限厂家终端消缺统计接口使用)")
private String manufactureIds;
@ApiModelProperty(name = "breakDownType", value = "故障类型(仅限故障类型消缺统计接口使用)")
private String breakDownType;
}

View File

@@ -0,0 +1,26 @@
package com.njcn.device.pms.pojo.param;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @Title RMpDevEvaluateDetailParam
* @Package com.njcn.device.pms.pojo.param
* @Author jianghaifei
* @Date 2022-11-17 15:50
* @Version V1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RMpDevEvaluateDetailParam extends StatisticsBizBaseParam {
@ApiModelProperty(name = "searchType", value = "维度(1:单位2:终端厂家3:终端型号)")
private String searchType;
@ApiModelProperty(name = "manufactureIds", value = "终端厂商ids")
private String manufactureIds;
@ApiModelProperty(name = "deviceModel", value = "终端型号(可多选)")
private String deviceModel;
}

View File

@@ -0,0 +1,20 @@
package com.njcn.device.pms.pojo.param;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Title RMpDevSolveDetailParam
* @Package com.njcn.device.pms.pojo.param
* @Author jianghaifei
* @Date 2022-11-17 10:30
* @Version V1.0
*/
@Data
public class RMpDevSolveDetailParam extends StatisticsBizBaseParam {
@ApiModelProperty(name = "manufactureIds", value = "厂家ids")
private String manufactureIds;
}

View File

@@ -0,0 +1,28 @@
package com.njcn.device.pms.pojo.param;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 终端通信管理接收参数实体类
* @Title RStatDevSignalParam
* @Package com.njcn.device.pms.pojo.param
* @Author jianghaifei
* @Date 2022-11-11 16:13
* @Version V1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RStatDevSignalParam extends StatisticsBizBaseParam {
@ApiModelProperty(name = "terminalName", value = "终端名称")
private String deviceName;
@ApiModelProperty(name = "deviceStatus", value = "设备状态")
private String deviceStatus;
@ApiModelProperty(name = "runStatus", value = "运行状态")
private String runStatus;
}

View File

@@ -0,0 +1,44 @@
package com.njcn.device.pms.pojo.po;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 终端评价详情表
* @TableName r_mp_dev_evaluate_detail
*/
@Data
public class RMpDevEvaluateDetail implements Serializable {
/**
* 生成数据的时间,每月统计一次
*/
private Date dataDate;
/**
* 终端id
*/
private String deviceId;
/**
* 终端指标完整率
*/
private Double devTargetRate;
/**
* 终端数据完整率
*/
private Double devDataRate;
/**
* 终端故障及消缺评分
*/
private Double devScore;
/**
* 终端有效接入率
*/
private Double devEffectiveRate;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,54 @@
package com.njcn.device.pms.pojo.po;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 终端消缺明细数据表
* @TableName r_mp_dev_solve_detail
*/
@Data
public class RMpDevSolveDetail implements Serializable {
/**
* 终端id
*/
private String deviceId;
/**
* 生成数据的时间,每天统计一次
*/
private Date dataDate;
/**
* 故障时间
*/
private Date breakDownDate;
/**
* 故障类型
*/
private String breakDownType;
/**
* 是否消缺(0否 1是)
*/
private Integer isSolve;
/**
* 消缺时间
*/
private Date solveDate;
/**
* 消缺措施
*/
private String defectTreatment;
/**
* 缺陷严重度(轻缺陷、较重缺陷和严重缺陷 三类缺陷对应分值为0.02,0.12和0.42消缺为对应缺陷分值的1/3)
*/
private String defectSeverity;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,39 @@
package com.njcn.device.pms.pojo.po;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 终端通信管理日表
* @TableName r_stat_dev_signal_d
*/
@Data
public class RStatDevSignalD implements Serializable {
/**
* 终端id
*/
private String deviceId;
/**
* 生成数据的时间,每日统计一次
*/
private Date dataDate;
/**
* 设备状态
*/
private String deviceStatus;
/**
* 运行状态
*/
private String runStatus;
/**
* 更新时间
*/
private Date updateTime;
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,54 @@
package com.njcn.device.pms.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Title RMpDevEvaluateDetailVO
* @Package com.njcn.device.pms.pojo.vo
* @Author jianghaifei
* @Date 2022-11-17 16:00
* @Version V1.0
*/
@Data
public class RMpDevEvaluateDetailVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(name = "orgId", value = "单位id")
private String orgId; //单位id
@ApiModelProperty(name = "orgName", value = "单位名称")
private String orgName; //单位名称
@ApiModelProperty(name = "manufactureId", value = "厂家(字典id)")
private String manufactureId;
@ApiModelProperty(name = "deviceModel", value = "终端型号(字典id)")
private String deviceModel;
@ApiModelProperty(name = "dataDate", value = "日期")
private String dataDate;
/**
* 终端有效接入率
*/
@ApiModelProperty(name = "devEffectiveRate", value = "终端有效接入率")
private Double devEffectiveRate;
/**
* 终端指标完整率
*/
@ApiModelProperty(name = "devTargetRate", value = "终端指标完整率")
private Double devTargetRate;
/**
* 终端数据完整率
*/
@ApiModelProperty(name = "devDataRate", value = "终端数据完整率")
private Double devDataRate;
@ApiModelProperty(name = "assessment", value = "综合评价")
private Double assessment;
}

View File

@@ -0,0 +1,63 @@
package com.njcn.device.pms.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 异常终端消缺明细返回实体类
* @TableName r_mp_dev_solve_detail
*/
@Data
public class RMpDevSolveDetailVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(name = "orgId", value = "单位id")
private String orgId; //单位id
@ApiModelProperty(name = "orgName", value = "单位名称")
private String orgName; //单位名称
@ApiModelProperty(name = "powerId", value = "变电站id")
private String powerId;
@ApiModelProperty(name = "powerName", value = "变电站名称")
private String powerName;
/**
* 终端id
*/
@ApiModelProperty(name = "deviceId", value = "终端编号")
private String deviceId;
/**
* 故障时间
*/
@ApiModelProperty(name = "breakDownDate", value = "故障时间")
private Date breakDownDate;
/**
* 故障类型
*/
@ApiModelProperty(name = "breakDownType", value = "故障类型(字典)")
private String breakDownType;
/**
* 是否消缺(0否 1是)
*/
@ApiModelProperty(name = "isSolve", value = "是否消缺(0否 1是)")
private Integer isSolve;
/**
* 消缺时间
*/
@ApiModelProperty(name = "solveDate", value = "消缺时间")
private Date solveDate;
}

View File

@@ -0,0 +1,45 @@
package com.njcn.device.pms.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 终端异常管理返回实体类
* @Title RMpDevAbnormalManageVO
* @Package com.njcn.device.pms.pojo.vo
* @Author jianghaifei
* @Date 2022-11-14 19:50
* @Version V1.0
*/
@Data
public class RMpDevSolveVO {
@ApiModelProperty(name = "dataDate", value = "时间")
private String dataDate;
@ApiModelProperty(name = "orgId", value = "单位id")
private String orgId; //单位id
@ApiModelProperty(name = "orgName", value = "单位名称")
private String orgName; //单位名称
@ApiModelProperty(name = "manufactureId", value = "厂商id(字典)")
private String manufactureId;
@ApiModelProperty(name = "breakDownType", value = "故障类型(字典id)")
private String breakDownType;
@ApiModelProperty(name = "terminalCount", value = "终端数量")
private Integer terminalCount;
@ApiModelProperty(name = "terminalAbnormalCount", value = "终端异常数量")
private Integer terminalAbnormalCount;
@ApiModelProperty(name = "solveCount", value = "已消缺异常数量")
private Integer solveCount;
@ApiModelProperty(name = "solveRate", value = "消缺率")
private Double solveRate;
}

View File

@@ -0,0 +1,45 @@
package com.njcn.device.pms.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 终端通信管理返回前端实体类
* @Title RStatDevSignalVO
* @Package com.njcn.device.pms.pojo.vo
* @Author jianghaifei
* @Date 2022-11-11 16:16
* @Version V1.0
*/
@Data
public class RStatDevSignalVO {
@ApiModelProperty(name = "orgId", value = "单位id")
private String orgId; //单位id
@ApiModelProperty(name = "orgName", value = "单位名称")
private String orgName; //单位名称
@ApiModelProperty(name = "terminalId", value = "终端编号")
private String terminalId; //终端编号
@ApiModelProperty(name = "terminalName", value = "终端名称")
private String terminalName; //终端名称
@ApiModelProperty(name = "deviceStatus", value = "设备状态(字典)")
private String deviceStatus; //设备状态
@ApiModelProperty(name = "runStatus", value = "运行状态(字典)")
private String runStatus; //运行状态
@ApiModelProperty(name = "ip", value = "ip地址")
private String ip; //ip地址
@ApiModelProperty(name = "port", value = "端口")
private String port; //端口
@ApiModelProperty(name = "updateTime", value = "最后通讯时间")
private Date updateTime; //最后通讯时间
}

View File

@@ -0,0 +1,115 @@
package com.njcn.device.pms.controller.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
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.pms.pojo.param.GeneratrixWireParam;
import com.njcn.device.pms.pojo.po.GeneratrixWire;
import com.njcn.device.pms.service.majornetwork.IGeneratrixWireService;
import com.njcn.web.controller.BaseController;
import com.njcn.web.pojo.param.BaseParam;
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.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Objects;
/**
* pms-device
*
* @author cdf
* @date 2022/10/26
*/
@RestController
@RequestMapping("/pms/GeneratrixWireWire")
@Slf4j
@Api(tags = "台账-线路")
@RequiredArgsConstructor
public class PmsGeneratrixWireController extends BaseController {
private final IGeneratrixWireService iGeneratrixWireService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/addGeneratrixWire")
@ApiOperation("新增线路")
@ApiImplicitParam(name = "generatrixWireParam", value = "线路实体", required = true)
public HttpResult<Boolean> addGeneratrixWire(@RequestBody GeneratrixWireParam generatrixWireParam) {
String methodDescribe = getMethodDescribe("addGeneratrixWire");
boolean result = iGeneratrixWireService.addGeneratrixWire(generatrixWireParam);
if(result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.UPDATE)
@PostMapping("/updateGeneratrixWire")
@ApiOperation("修改线路")
@ApiImplicitParam(name = "generatrixWireParam", value = "线路实体", required = true)
public HttpResult<Boolean> updateGeneratrixWire(@RequestBody GeneratrixWireParam generatrixWireParam) {
String methodDescribe = getMethodDescribe("updateGeneratrixWire");
boolean result = iGeneratrixWireService.updateGeneratrixWire(generatrixWireParam);
if(result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.DELETE)
@DeleteMapping("/delGeneratrixWire")
@ApiOperation("删除线路")
@ApiImplicitParam(name = "generatrixWireIds", value = "线路ids", required = true)
public HttpResult<Boolean> delGeneratrixWire(@RequestBody @NotEmpty(message = "线路id不可为空") List<String> generatrixWireIds) {
String methodDescribe = getMethodDescribe("delGeneratrixWire");
boolean result = iGeneratrixWireService.delGeneratrixWire(generatrixWireIds);
if(result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getGeneratrixWireById")
@ApiOperation("根据线路id获取线路")
@ApiImplicitParam(name = "generatrixWireId", value = "线路id", required = true)
public HttpResult<GeneratrixWire> getGeneratrixWireById(@RequestParam("generatrixWireId") String generatrixWireId) {
String methodDescribe = getMethodDescribe("getGeneratrixWireById");
GeneratrixWire result = iGeneratrixWireService.getGeneratrixWireById(generatrixWireId);
if(Objects.nonNull(result)){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getGeneratrixWireList")
@ApiOperation("获取所有线路下拉框使用")
public HttpResult<List<GeneratrixWire>> getGeneratrixWireList() {
String methodDescribe = getMethodDescribe("getGeneratrixWireList");
List<GeneratrixWire> result = iGeneratrixWireService.getGeneratrixWireList();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getGeneratrixWirePageList")
@ApiOperation("分页获取线路列表")
@ApiImplicitParam(name = "baseParam", value = "基本查询体", required = true)
public HttpResult<Page<GeneratrixWire>> getGeneratrixWirePageList(@RequestBody BaseParam baseParam) {
String methodDescribe = getMethodDescribe("getGeneratrixWirePageList");
Page<GeneratrixWire> result = iGeneratrixWireService.getGeneratrixWirePageList(baseParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -0,0 +1,132 @@
package com.njcn.device.pms.controller.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
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.LogUtil;
import com.njcn.device.pms.pojo.param.PmsTerminalParam;
import com.njcn.device.pms.pojo.po.PmsTerminal;
import com.njcn.device.pms.pojo.vo.PmsTerminalVO;
import com.njcn.device.pms.service.majornetwork.ITerminalService;
import com.njcn.web.pojo.param.BaseParam;
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.*;
import com.njcn.web.controller.BaseController;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 监测终端台账增删改查
* </p>
*
* @author hongawen
* @since 2022-10-14
*/
@Slf4j
@RestController
@RequestMapping("/pms/terminal")
@Api(tags = "台账-监测终端台账")
@RequiredArgsConstructor
@Validated
public class PmsTerminalController extends BaseController {
private final ITerminalService iTerminalService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("getTerminalList")
@ApiOperation("查询监测终端台账所有信息")
@ApiImplicitParam(name = "baseParam",value = "查询监测终端台账信息",required = true)
public HttpResult<Page<PmsTerminal>> getTerminalList(@RequestBody @Validated BaseParam baseParam){
String methodDescribe = getMethodDescribe("getTerminalList");
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, baseParam);
Page<PmsTerminal> res = iTerminalService.getTerminalList(baseParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,res,methodDescribe);
}
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getTerminalById")
@ApiOperation("根据ID查询监测终端台账数据")
@ApiImplicitParam(name = "id",value = "id",required = true)
public HttpResult<PmsTerminal> getTerminalById(@RequestParam("id") String id){
String methodDescribe = getMethodDescribe("getTerminalById");
PmsTerminal pmsTerminal = iTerminalService.getTerminalById(id);
if (Objects.nonNull(pmsTerminal)){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pmsTerminal, methodDescribe);
}
else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}
/**
* 新增监测终端台账信息
* @author hany
* @date 2022/10/26
*/
@PostMapping("/addTerminal")
@OperateInfo(info = LogEnum.SYSTEM_COMMON,operateType= OperateType.ADD)
@ApiOperation("新增监测终端台账信息")
@ApiImplicitParam(name = "terminalParam", value = "新增实体", required = true)
public HttpResult<Object> add(@RequestBody @Validated PmsTerminalParam terminalParam){
String methodDescribe = getMethodDescribe("add");
boolean result = iTerminalService.add(terminalParam);
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
/**
* 修改监测终端台账信息
* @author hany
* @date 2022/10/27
*/
@PostMapping("/updateTerminal")
@OperateInfo(info = LogEnum.SYSTEM_COMMON,operateType = OperateType.UPDATE)
@ApiOperation("修改监测终端台账信息")
@ApiImplicitParam(name = "updateParam", value = "更新实体", required = true)
public HttpResult<Object> update(@RequestBody @Validated PmsTerminalParam updateParam){
String methodDescribe = getMethodDescribe("update");
boolean result = iTerminalService.update(updateParam);
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
/**
* 删除监测终端台账信息
* @param ids id
* @author hany
* @date 2022/10/27
*/
@PostMapping("/deleteTerminal")
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.DELETE)
@ApiOperation("删除监测终端台账信息")
@ApiImplicitParam(name = "ids", value = "ID索引", required = true)
public HttpResult<Object> delete(@RequestBody List<String> ids){
String methodDescribe = getMethodDescribe("delete");
boolean result = iTerminalService.delete(ids);
if(result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
}
}

View File

@@ -0,0 +1,68 @@
package com.njcn.device.pms.controller.majornetwork;
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.pms.pojo.param.RMpDevAbnormalManageParam;
import com.njcn.device.pms.pojo.param.RMpDevEvaluateDetailParam;
import com.njcn.device.pms.pojo.vo.RMpDevEvaluateDetailVO;
import com.njcn.device.pms.pojo.vo.RMpDevSolveVO;
import com.njcn.device.pms.service.majornetwork.RMpDevEvaluateDetailService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
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.util.List;
/**
* @Title RMpDevEvaluateDetailController
* @Package com.njcn.device.pms.controller.majornetwork
* @Author jianghaifei
* @Date 2022-11-17 15:44
* @Version V1.0
*/
@RestController
@Api(tags = "终端质量评价")
@RequiredArgsConstructor
@RequestMapping("/rMpDevEvaluateDetail")
public class RMpDevEvaluateDetailController extends BaseController {
private final RMpDevEvaluateDetailService rMpDevEvaluateDetailService;
@PostMapping("/getRMpDevEvaluateDetailList")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("终端质量评价")
public HttpResult<List<RMpDevEvaluateDetailVO>> getRMpDevEvaluateDetailList(@RequestBody RMpDevEvaluateDetailParam rMpDevEvaluateDetailParam) {
String methodDescribe = getMethodDescribe("getRMpDevEvaluateDetailList");
//没有携带【维度】条件
if (StringUtils.isBlank(rMpDevEvaluateDetailParam.getSearchType())) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.METHOD_ARGUMENT_NOT_VALID_EXCEPTION, null, methodDescribe);
}
List<RMpDevEvaluateDetailVO> list = null;
//单位维度
if ("1".equals(rMpDevEvaluateDetailParam.getSearchType())) {
list = rMpDevEvaluateDetailService.getOrgDevEvaluateDetailList(rMpDevEvaluateDetailParam);
}
//厂商维度
else if ("2".equals(rMpDevEvaluateDetailParam.getSearchType())) {
list = rMpDevEvaluateDetailService.getManufactureDevEvaluateDetailList(rMpDevEvaluateDetailParam);
}
//终端型号
else if ("3".equals(rMpDevEvaluateDetailParam.getSearchType())) {
list = rMpDevEvaluateDetailService.getModelDevEvaluateDetailList(rMpDevEvaluateDetailParam);
} else {
//没有对应的searchType
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.INVALID_PARAMETER, null, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -0,0 +1,102 @@
package com.njcn.device.pms.controller.majornetwork;
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.pms.pojo.param.RMpDevAbnormalManageParam;
import com.njcn.device.pms.pojo.param.RMpDevSolveDetailParam;
import com.njcn.device.pms.pojo.vo.RMpDevSolveDetailVO;
import com.njcn.device.pms.pojo.vo.RMpDevSolveVO;
import com.njcn.device.pms.service.majornetwork.RMpDevSolveDetailService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
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.util.List;
/**
* @Title RMpDevSolveDetailController
* @Package com.njcn.device.pms.controller.majornetwork
* @Author jianghaifei
* @Date 2022-11-14 19:44
* @Version V1.0
*/
@RestController
@Api(tags = "终端异常管理")
@RequiredArgsConstructor
@RequestMapping("/rMpDevSolveDetail")
public class RMpDevSolveDetailController extends BaseController {
private final RMpDevSolveDetailService rMpDevSolveDetailService;
/***
*
* @author jianghaifei
* @date 2022-11-17 16:04
* @param rMpDevAbnormalManageParam
* @return com.njcn.common.pojo.response.HttpResult<java.util.List<com.njcn.device.pms.pojo.vo.RMpDevSolveVO>>
*/
@PostMapping("/getOrgRMpDevSolveList")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("单位-终端消缺统计")
public HttpResult<List<RMpDevSolveVO>> getOrgRMpDevSolveList(@RequestBody RMpDevAbnormalManageParam rMpDevAbnormalManageParam) {
String methodDescribe = getMethodDescribe("getOrgRMpDevSolveList");
List<RMpDevSolveVO> list = rMpDevSolveDetailService.getOrgRMpDevSolveList(rMpDevAbnormalManageParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
/***
*
* @author jianghaifei
* @date 2022-11-17 16:04
* @param rMpDevAbnormalManageParam
* @return com.njcn.common.pojo.response.HttpResult<java.util.List<com.njcn.device.pms.pojo.vo.RMpDevSolveVO>>
*/
@PostMapping("/getManufactureRMpDevSolveList")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("厂商-终端消缺统计")
public HttpResult<List<RMpDevSolveVO>> getManufactureRMpDevSolveList(@RequestBody RMpDevAbnormalManageParam rMpDevAbnormalManageParam) {
String methodDescribe = getMethodDescribe("getManufactureRMpDevSolveList");
List<RMpDevSolveVO> list = rMpDevSolveDetailService.getManufactureRMpDevSolveList(rMpDevAbnormalManageParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
/***
*
* @author jianghaifei
* @date 2022-11-17 16:04
* @param rMpDevAbnormalManageParam
* @return com.njcn.common.pojo.response.HttpResult<java.util.List<com.njcn.device.pms.pojo.vo.RMpDevSolveVO>>
*/
@PostMapping("/getTypeRMpDevSolveList")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("故障类型-终端消缺统计")
public HttpResult<List<RMpDevSolveVO>> getTypeRMpDevSolveList(@RequestBody RMpDevAbnormalManageParam rMpDevAbnormalManageParam) {
String methodDescribe = getMethodDescribe("getTypeRMpDevSolveList");
List<RMpDevSolveVO> list = rMpDevSolveDetailService.getTypeRMpDevSolveList(rMpDevAbnormalManageParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
/***
*
* @author jianghaifei
* @date 2022-11-17 16:04
* @param rMpDevSolveDetailParam
* @return com.njcn.common.pojo.response.HttpResult<java.util.List<com.njcn.device.pms.pojo.vo.RMpDevSolveDetailVO>>
*/
@PostMapping("/getRMpDevSolveDetailList")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("终端异常清单")
public HttpResult<List<RMpDevSolveDetailVO>> getRMpDevSolveDetailList(@RequestBody RMpDevSolveDetailParam rMpDevSolveDetailParam) {
String methodDescribe = getMethodDescribe("getRMpDevSolveDetailList");
List<RMpDevSolveDetailVO> list = rMpDevSolveDetailService.getRMpDevSolveDetailList(rMpDevSolveDetailParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -0,0 +1,47 @@
package com.njcn.device.pms.controller.majornetwork;
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.pms.pojo.param.RStatDevSignalParam;
import com.njcn.device.pms.pojo.param.RStatZwAlarmCountWParam;
import com.njcn.device.pms.pojo.vo.RStatDevSignalVO;
import com.njcn.device.pms.pojo.vo.RStatZwAlarmCountWVO;
import com.njcn.device.pms.service.majornetwork.RStatDevSignalDService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
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.util.List;
/**
* @Title RStatDevSignalDController
* @Package com.njcn.device.pms.controller.majornetwork
* @Author jianghaifei
* @Date 2022-11-11 16:04
* @Version V1.0
*/
@RestController
@Api(tags = "终端通信管理")
@RequiredArgsConstructor
@RequestMapping("/rStatDevSignal")
public class RStatDevSignalDController extends BaseController {
private final RStatDevSignalDService rStatDevSignalDService;
@PostMapping("getRStatDevSignalList")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("终端通信管理台账")
public HttpResult<List<RStatDevSignalVO>> getRStatDevSignalList(@RequestBody RStatDevSignalParam rStatDevSignalParam) {
String methodDescribe = getMethodDescribe("getRStatDevSignalList");
List<RStatDevSignalVO> list = rStatDevSignalDService.getRStatDevSignalList(rStatDevSignalParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -0,0 +1,18 @@
package com.njcn.device.pms.mapper.majornetwork;
import com.njcn.device.pms.pojo.po.RMpDevEvaluateDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author jianghf
* @description 针对表【r_mp_dev_evaluate_detail(终端评价详情表 )】的数据库操作Mapper
* @createDate 2022-11-17 15:38:02
* @Entity com.njcn.device.pms.pojo.po.RMpDevEvaluateDetail
*/
public interface RMpDevEvaluateDetailMapper extends BaseMapper<RMpDevEvaluateDetail> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.device.pms.mapper.majornetwork;
import com.njcn.device.pms.pojo.po.RMpDevSolveDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author jianghf
* @description 针对表【r_mp_dev_solve_detail(终端消缺明细数据表)】的数据库操作Mapper
* @createDate 2022-11-14 19:42:13
* @Entity com.njcn.device.pms.pojo.po.RMpDevSolveDetail
*/
public interface RMpDevSolveDetailMapper extends BaseMapper<RMpDevSolveDetail> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.device.pms.mapper.majornetwork;
import com.njcn.device.pms.pojo.po.RStatDevSignalD;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author jianghf
* @description 针对表【r_stat_dev_signal_d(终端通信管理日表)】的数据库操作Mapper
* @createDate 2022-11-11 15:35:35
* @Entity com.njcn.device.pms.pojo.po.RStatDevSignalD
*/
public interface RStatDevSignalDMapper extends BaseMapper<RStatDevSignalD> {
}

View File

@@ -0,0 +1,20 @@
<?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.device.pms.mapper.majornetwork.RMpDevEvaluateDetailMapper">
<resultMap id="BaseResultMap" type="com.njcn.device.pms.pojo.po.RMpDevEvaluateDetail">
<id property="dataDate" column="data_date" jdbcType="TIMESTAMP"/>
<id property="deviceId" column="device_id" jdbcType="VARCHAR"/>
<result property="devTargetRate" column="dev_target_rate" jdbcType="FLOAT"/>
<result property="devDataRate" column="dev_data_rate" jdbcType="FLOAT"/>
<result property="devScore" column="dev_score" jdbcType="FLOAT"/>
<result property="devEffectiveRate" column="dev_effective_rate" jdbcType="FLOAT"/>
</resultMap>
<sql id="Base_Column_List">
data_date,device_id,dev_target_rate,
dev_data_rate,dev_score,dev_effective_rate
</sql>
</mapper>

View File

@@ -0,0 +1,23 @@
<?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.device.pms.mapper.majornetwork.RMpDevSolveDetailMapper">
<resultMap id="BaseResultMap" type="com.njcn.device.pms.pojo.po.RMpDevSolveDetail">
<id property="deviceId" column="device_id" jdbcType="VARCHAR"/>
<id property="dataDate" column="data_date" jdbcType="TIMESTAMP"/>
<result property="breakDownDate" column="break_down_date" jdbcType="TIMESTAMP"/>
<result property="breakDownType" column="break_down_type" jdbcType="VARCHAR"/>
<result property="isSolve" column="is_solve" jdbcType="TINYINT"/>
<result property="solveDate" column="solve_date" jdbcType="TIMESTAMP"/>
<result property="defectTreatment" column="defect_treatment" jdbcType="VARCHAR"/>
<result property="defectSeverity" column="defect_severity" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
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,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.device.pms.mapper.majornetwork.RStatDevSignalDMapper">
<resultMap id="BaseResultMap" type="com.njcn.device.pms.pojo.po.RStatDevSignalD">
<id property="deviceId" column="device_id" jdbcType="VARCHAR"/>
<id property="dataDate" column="data_date" jdbcType="TIMESTAMP"/>
<result property="deviceStatus" column="device_status" jdbcType="VARCHAR"/>
<result property="runStatus" column="run_status" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
device_id,data_date,device_status,
run_status,update_time
</sql>
</mapper>

View File

@@ -0,0 +1,23 @@
package com.njcn.device.pms.service.majornetwork;
import com.njcn.device.pms.pojo.param.RMpDevEvaluateDetailParam;
import com.njcn.device.pms.pojo.po.RMpDevEvaluateDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pms.pojo.vo.RMpDevEvaluateDetailVO;
import java.util.List;
/**
* @author jianghf
* @description 针对表【r_mp_dev_evaluate_detail(终端评价详情表 )】的数据库操作Service
* @createDate 2022-11-17 15:38:02
*/
public interface RMpDevEvaluateDetailService extends IService<RMpDevEvaluateDetail> {
List<RMpDevEvaluateDetailVO> getOrgDevEvaluateDetailList(RMpDevEvaluateDetailParam rMpDevEvaluateDetailParam);
List<RMpDevEvaluateDetailVO> getManufactureDevEvaluateDetailList(RMpDevEvaluateDetailParam rMpDevEvaluateDetailParam);
List<RMpDevEvaluateDetailVO> getModelDevEvaluateDetailList(RMpDevEvaluateDetailParam rMpDevEvaluateDetailParam);
}

View File

@@ -0,0 +1,41 @@
package com.njcn.device.pms.service.majornetwork;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pms.pojo.param.RMpDevAbnormalManageParam;
import com.njcn.device.pms.pojo.param.RMpDevSolveDetailParam;
import com.njcn.device.pms.pojo.po.RMpDevSolveDetail;
import com.njcn.device.pms.pojo.vo.RMpDevSolveDetailVO;
import com.njcn.device.pms.pojo.vo.RMpDevSolveVO;
import java.util.List;
/**
* @author jianghf
* @description 针对表【r_mp_dev_solve_detail(终端消缺明细数据表)】的数据库操作Service
* @createDate 2022-11-14 19:42:13
*/
public interface RMpDevSolveDetailService extends IService<RMpDevSolveDetail> {
/**
* 单位终端消缺统计
* @param rMpDevAbnormalManageParam
* @return
*/
List<RMpDevSolveVO> getOrgRMpDevSolveList(RMpDevAbnormalManageParam rMpDevAbnormalManageParam);
/**
* 厂家终端消缺统计
* @param rMpDevAbnormalManageParam
* @return
*/
List<RMpDevSolveVO> getManufactureRMpDevSolveList(RMpDevAbnormalManageParam rMpDevAbnormalManageParam);
/**
* 故障类型终端消缺统计
* @param rMpDevAbnormalManageParam
* @return
*/
List<RMpDevSolveVO> getTypeRMpDevSolveList(RMpDevAbnormalManageParam rMpDevAbnormalManageParam);
List<RMpDevSolveDetailVO> getRMpDevSolveDetailList(RMpDevSolveDetailParam rMpDevSolveDetailParam);
}

View File

@@ -0,0 +1,18 @@
package com.njcn.device.pms.service.majornetwork;
import com.njcn.device.pms.pojo.param.RStatDevSignalParam;
import com.njcn.device.pms.pojo.po.RStatDevSignalD;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pms.pojo.vo.RStatDevSignalVO;
import java.util.List;
/**
* @author jianghf
* @description 针对表【r_stat_dev_signal_d(终端通信管理日表)】的数据库操作Service
* @createDate 2022-11-11 15:35:35
*/
public interface RStatDevSignalDService extends IService<RStatDevSignalD> {
List<RStatDevSignalVO> getRStatDevSignalList(RStatDevSignalParam rStatDevSignalParam);
}

View File

@@ -0,0 +1,271 @@
package com.njcn.device.pms.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.param.RMpDevEvaluateDetailParam;
import com.njcn.device.pms.pojo.po.PmsTerminal;
import com.njcn.device.pms.pojo.po.RMpDevEvaluateDetail;
import com.njcn.device.pms.pojo.po.RMpDevSolveDetail;
import com.njcn.device.pms.pojo.vo.RMpDevEvaluateDetailVO;
import com.njcn.device.pms.service.majornetwork.IPmsGeneralDeviceService;
import com.njcn.device.pms.service.majornetwork.ITerminalService;
import com.njcn.device.pms.service.majornetwork.RMpDevEvaluateDetailService;
import com.njcn.device.pms.mapper.majornetwork.RMpDevEvaluateDetailMapper;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.web.utils.WebUtil;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author jianghf
* @description 针对表【r_mp_dev_evaluate_detail(终端评价详情表 )】的数据库操作Service实现
* @createDate 2022-11-17 15:38:02
*/
@Service
@RequiredArgsConstructor
public class RMpDevEvaluateDetailServiceImpl extends ServiceImpl<RMpDevEvaluateDetailMapper, RMpDevEvaluateDetail>
implements RMpDevEvaluateDetailService{
private final ITerminalService iTerminalService;
private final DeptFeignClient deptFeignClient;
/***
* 单位维度终端质量评价
* @author jianghaifei
* @date 2022-11-17 16:12
* @param rMpDevEvaluateDetailParam
* @return java.util.List<com.njcn.device.pms.pojo.vo.RMpDevEvaluateDetailVO>
*/
@Override
public List<RMpDevEvaluateDetailVO> getOrgDevEvaluateDetailList(RMpDevEvaluateDetailParam rMpDevEvaluateDetailParam) {
//提取参数
String id = rMpDevEvaluateDetailParam.getId(); //单位id
String startTime = rMpDevEvaluateDetailParam.getStartTime(); //开始时间
String endTime = rMpDevEvaluateDetailParam.getEndTime(); //截止时间
if (StringUtils.isBlank(id)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "单位id不可为空");
}
// //查询单位下的终端信息
// PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
// pmsDeviceInfoParam.setDeptIndex(id);
// pmsDeviceInfoParam.setStatisticalType(new SimpleDTO());
// List<PmsGeneralDeviceDTO> pmsDeviceInfoWithInOrg = iPmsGeneralDeviceService.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam);
// pmsDeviceInfoWithInOrg.get(0);
//获取所有子部门信息
List<DeptDTO> deptDTOList = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData();
if (CollUtil.isEmpty(deptDTOList)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "部门不存在");
}
//单位id集合
List<String> orgNoList = deptDTOList.stream().map(DeptDTO::getId).collect(Collectors.toList());
//将单位信息转为map集合 key: 单位id value: 单位实体
Map<String, DeptDTO> deptDTOMap = deptDTOList.stream().collect(Collectors.toMap(DeptDTO::getId, deptDTO -> deptDTO));
//查询单位下的终端数据
LambdaQueryWrapper<PmsTerminal> terminalWrapper = new LambdaQueryWrapper<>();
terminalWrapper.in(PmsTerminal::getOrgId, orgNoList);
List<PmsTerminal> terminalList = iTerminalService.list(terminalWrapper);
if (CollUtil.isEmpty(terminalList)) {
return new ArrayList<>();
}
//提取终端id
List<String> terminalIdList = terminalList.stream().map(PmsTerminal::getId).collect(Collectors.toList());
//将终端信息转为map集合 key: 终端id value: 终端实体
Map<String, PmsTerminal> terminalMap = terminalList.stream().collect(Collectors.toMap(PmsTerminal::getId, terminal -> terminal));
//将终端信息按单位分组 key单位id value终端集合
Map<String, List<PmsTerminal>> terminalListMapByOrgId = terminalList.stream().collect(Collectors.groupingBy(PmsTerminal::getOrgId));
//查询终端评价详情表数据【r_mp_dev_evaluate_detail】
LambdaQueryWrapper<RMpDevEvaluateDetail> businessWrapper = new LambdaQueryWrapper<>();
businessWrapper.in(RMpDevEvaluateDetail::getDeviceId, terminalIdList)
.ge(StringUtils.isNotBlank(startTime), RMpDevEvaluateDetail::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpDevEvaluateDetail::getDataDate, endTime);
List<RMpDevEvaluateDetail> list = this.list(businessWrapper);
//封装返回数据
List<RMpDevEvaluateDetailVO> resultList = new ArrayList<>();
terminalListMapByOrgId.forEach((key, terminalListByOrg) -> {
RMpDevEvaluateDetailVO rMpDevEvaluateDetailVO = new RMpDevEvaluateDetailVO();
rMpDevEvaluateDetailVO.setDataDate(startTime); //日期(前端传递的时间)
rMpDevEvaluateDetailVO.setOrgId(key); //单位id
rMpDevEvaluateDetailVO.setOrgName(terminalListByOrg.get(0).getOrgName()); //单位名称
//终端有效接入率
double devEffectiveRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getOrgId().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevEffectiveRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevEffectiveRate(devEffectiveRate);
//终端指标完整率
double devTargetRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getOrgId().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevTargetRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevTargetRate(devTargetRate);
//终端数据完整率
double devDataRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getOrgId().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevDataRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevDataRate(devDataRate);
//综合评价
rMpDevEvaluateDetailVO.setAssessment((devEffectiveRate + devTargetRate + devDataRate) / 3.0);
resultList.add(rMpDevEvaluateDetailVO);
});
return resultList;
}
/***
* 厂商维度终端质量评价
* @author jianghaifei
* @date 2022-11-17 16:13
* @param rMpDevEvaluateDetailParam
* @return java.util.List<com.njcn.device.pms.pojo.vo.RMpDevEvaluateDetailVO>
*/
@Override
public List<RMpDevEvaluateDetailVO> getManufactureDevEvaluateDetailList(RMpDevEvaluateDetailParam rMpDevEvaluateDetailParam) {
//提取参数
List<String> manufactureIdList = StringUtils.isNotBlank(rMpDevEvaluateDetailParam.getManufactureIds()) ?
Arrays.asList(rMpDevEvaluateDetailParam.getManufactureIds().split(",")) : null; //厂商ids
List<String> deviceModelIdList = StringUtils.isNotBlank(rMpDevEvaluateDetailParam.getDeviceModel()) ?
Arrays.asList(rMpDevEvaluateDetailParam.getDeviceModel().split(",")) : null; //终端型号
String startTime = rMpDevEvaluateDetailParam.getStartTime(); //开始时间
String endTime = rMpDevEvaluateDetailParam.getEndTime(); //截止时间
//查询终端厂商下的终端数据
LambdaQueryWrapper<PmsTerminal> terminalWrapper = new LambdaQueryWrapper<>();
terminalWrapper.in(CollUtil.isNotEmpty(manufactureIdList), PmsTerminal::getManufacture, manufactureIdList)
.isNotNull(CollUtil.isEmpty(manufactureIdList), PmsTerminal::getManufacture)
.in(CollUtil.isEmpty(deviceModelIdList), PmsTerminal::getDeviceModel, deviceModelIdList);
List<PmsTerminal> terminalList = iTerminalService.list(terminalWrapper);
if (CollUtil.isEmpty(terminalList)) {
return new ArrayList<>();
}
//提取终端id
List<String> terminalIdList = terminalList.stream().map(PmsTerminal::getId).collect(Collectors.toList());
//将终端信息转为map集合 key: 终端id value: 终端实体
Map<String, PmsTerminal> terminalMap = terminalList.stream().collect(Collectors.toMap(PmsTerminal::getId, terminal -> terminal));
//将终端信息按厂商分组 key厂商id value终端集合
Map<String, List<PmsTerminal>> terminalListMapByManufacture = terminalList.stream().collect(Collectors.groupingBy(PmsTerminal::getManufacture));
//查询终端评价详情表数据【r_mp_dev_evaluate_detail】
LambdaQueryWrapper<RMpDevEvaluateDetail> businessWrapper = new LambdaQueryWrapper<>();
businessWrapper.in(RMpDevEvaluateDetail::getDeviceId, terminalIdList)
.ge(StringUtils.isNotBlank(startTime), RMpDevEvaluateDetail::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpDevEvaluateDetail::getDataDate, endTime);
List<RMpDevEvaluateDetail> list = this.list(businessWrapper);
//封装返回数据
List<RMpDevEvaluateDetailVO> resultList = new ArrayList<>();
terminalListMapByManufacture.forEach((key, terminalListByManufacture) -> {
RMpDevEvaluateDetailVO rMpDevEvaluateDetailVO = new RMpDevEvaluateDetailVO();
rMpDevEvaluateDetailVO.setDataDate(startTime); //日期(前端传递的时间)
rMpDevEvaluateDetailVO.setManufactureId(key); //厂商id
//终端有效接入率
double devEffectiveRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getManufacture().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevEffectiveRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevEffectiveRate(devEffectiveRate);
//终端指标完整率
double devTargetRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getManufacture().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevTargetRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevTargetRate(devTargetRate);
//终端数据完整率
double devDataRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getManufacture().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevDataRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevDataRate(devDataRate);
//综合评价
rMpDevEvaluateDetailVO.setAssessment((devEffectiveRate + devTargetRate + devDataRate) / 3.0);
resultList.add(rMpDevEvaluateDetailVO);
});
return resultList;
}
/***
* 终端型号维度终端质量评价
* @author jianghaifei
* @date 2022-11-18 15:40
* @param rMpDevEvaluateDetailParam
* @return java.util.List<com.njcn.device.pms.pojo.vo.RMpDevEvaluateDetailVO>
*/
@Override
public List<RMpDevEvaluateDetailVO> getModelDevEvaluateDetailList(RMpDevEvaluateDetailParam rMpDevEvaluateDetailParam) {
//提取参数
List<String> deviceModelIdList = StringUtils.isNotBlank(rMpDevEvaluateDetailParam.getDeviceModel()) ?
Arrays.asList(rMpDevEvaluateDetailParam.getDeviceModel().split(",")) : null; //终端型号
String startTime = rMpDevEvaluateDetailParam.getStartTime(); //开始时间
String endTime = rMpDevEvaluateDetailParam.getEndTime(); //截止时间
//查询终端厂商下的终端数据
LambdaQueryWrapper<PmsTerminal> terminalWrapper = new LambdaQueryWrapper<>();
terminalWrapper.in(CollUtil.isEmpty(deviceModelIdList), PmsTerminal::getDeviceModel, deviceModelIdList);
List<PmsTerminal> terminalList = iTerminalService.list(terminalWrapper);
if (CollUtil.isEmpty(terminalList)) {
return new ArrayList<>();
}
//提取终端id
List<String> terminalIdList = terminalList.stream().map(PmsTerminal::getId).collect(Collectors.toList());
//将终端信息转为map集合 key: 终端id value: 终端实体
Map<String, PmsTerminal> terminalMap = terminalList.stream().collect(Collectors.toMap(PmsTerminal::getId, terminal -> terminal));
//将终端信息按终端型号分组 key型号 value终端集合
Map<String, List<PmsTerminal>> terminalListMapByModel = terminalList.stream().collect(Collectors.groupingBy(PmsTerminal::getDeviceModel));
//查询终端评价详情表数据【r_mp_dev_evaluate_detail】
LambdaQueryWrapper<RMpDevEvaluateDetail> businessWrapper = new LambdaQueryWrapper<>();
businessWrapper.in(RMpDevEvaluateDetail::getDeviceId, terminalIdList)
.ge(StringUtils.isNotBlank(startTime), RMpDevEvaluateDetail::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpDevEvaluateDetail::getDataDate, endTime);
List<RMpDevEvaluateDetail> list = this.list(businessWrapper);
//封装返回数据
List<RMpDevEvaluateDetailVO> resultList = new ArrayList<>();
terminalListMapByModel.forEach((key, terminalListByModel) -> {
RMpDevEvaluateDetailVO rMpDevEvaluateDetailVO = new RMpDevEvaluateDetailVO();
rMpDevEvaluateDetailVO.setDataDate(startTime); //日期(前端传递的时间)
rMpDevEvaluateDetailVO.setDeviceModel(key); //终端型号
//终端有效接入率
double devEffectiveRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getDeviceModel().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevEffectiveRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevEffectiveRate(devEffectiveRate);
//终端指标完整率
double devTargetRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getDeviceModel().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevTargetRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevTargetRate(devTargetRate);
//终端数据完整率
double devDataRate = list.stream().filter(item -> terminalMap.get(item.getDeviceId()).getDeviceModel().equals(key))
.mapToDouble(RMpDevEvaluateDetail::getDevDataRate).average().orElse(0);
rMpDevEvaluateDetailVO.setDevDataRate(devDataRate);
//综合评价
rMpDevEvaluateDetailVO.setAssessment((devEffectiveRate + devTargetRate + devDataRate) / 3.0);
resultList.add(rMpDevEvaluateDetailVO);
});
return resultList;
}
}

View File

@@ -0,0 +1,334 @@
package com.njcn.device.pms.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.mapper.majornetwork.RMpDevSolveDetailMapper;
import com.njcn.device.pms.pojo.param.RMpDevAbnormalManageParam;
import com.njcn.device.pms.pojo.param.RMpDevSolveDetailParam;
import com.njcn.device.pms.pojo.po.RMpDevSolveDetail;
import com.njcn.device.pms.pojo.po.RStatZwAlarmCountW;
import com.njcn.device.pms.pojo.po.PmsTerminal;
import com.njcn.device.pms.pojo.vo.RMpDevSolveDetailVO;
import com.njcn.device.pms.pojo.vo.RMpDevSolveVO;
import com.njcn.device.pms.service.majornetwork.ITerminalService;
import com.njcn.device.pms.service.majornetwork.RMpDevSolveDetailService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.web.utils.WebUtil;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author jianghf
* @description 针对表【r_mp_dev_solve_detail(终端消缺明细数据表)】的数据库操作Service实现
* @createDate 2022-11-14 19:42:13
*/
@Service
@RequiredArgsConstructor
public class RMpDevSolveDetailServiceImpl extends ServiceImpl<RMpDevSolveDetailMapper, RMpDevSolveDetail>
implements RMpDevSolveDetailService{
private final ITerminalService iTerminalService;
private final DeptFeignClient deptFeignClient;
/***
* 单位终端消缺统计
* @author jianghaifei
* @date 2022-11-14 19:50
* @param rMpDevAbnormalManageParam
*/
@Override
public List<RMpDevSolveVO> getOrgRMpDevSolveList(RMpDevAbnormalManageParam rMpDevAbnormalManageParam) {
//提取参数
String id = rMpDevAbnormalManageParam.getId(); //单位id
String startTime = rMpDevAbnormalManageParam.getStartTime(); //开始时间
String endTime = rMpDevAbnormalManageParam.getEndTime(); //结束时间
//获取所有子部门信息
List<DeptDTO> deptDTOList = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData();
if (CollUtil.isEmpty(deptDTOList)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "部门不存在");
}
//单位id集合
List<String> orgNoList = deptDTOList.stream().map(DeptDTO::getId).collect(Collectors.toList());
//将单位信息转为map集合 key: 单位id value: 单位实体
Map<String, DeptDTO> deptDTOMap = deptDTOList.stream().collect(Collectors.toMap(DeptDTO::getId, deptDTO -> deptDTO));
//查询单位下的终端数据
LambdaQueryWrapper<PmsTerminal> terminalWrapper = new LambdaQueryWrapper<>();
terminalWrapper.in(PmsTerminal::getOrgId, orgNoList);
List<PmsTerminal> terminalList = iTerminalService.list(terminalWrapper);
//提取终端id
List<String> terminalIdList = terminalList.stream().map(PmsTerminal::getId).collect(Collectors.toList());
//将终端信息转为map集合 key: 终端id value: 终端实体
Map<String, PmsTerminal> terminalMap = terminalList.stream().collect(Collectors.toMap(PmsTerminal::getId, terminal -> terminal));
if (CollUtil.isEmpty(terminalIdList)) {
return new ArrayList<>();
}
//将终端信息按单位分组 key单位id value终端集合
Map<String, List<PmsTerminal>> terminalListMapByOrgId = terminalList.stream().collect(Collectors.groupingBy(PmsTerminal::getOrgId));
//查询终端消缺数据
LambdaQueryWrapper<RMpDevSolveDetail> solveWrapper = new LambdaQueryWrapper<>();
solveWrapper.in(RMpDevSolveDetail::getDeviceId, terminalIdList)
.ge(StringUtils.isNotBlank(startTime), RMpDevSolveDetail::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpDevSolveDetail::getDataDate, endTime);
List<RMpDevSolveDetail> solveList = this.list(solveWrapper);
//有异常的终端id集合(去重,一个终端即使有多次异常,也算作一个终端异常数量)
List<String> solveDevIdList = solveList.stream().map(RMpDevSolveDetail::getDeviceId).distinct().collect(Collectors.toList());
//封装返回数据
List<RMpDevSolveVO> resultList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("###.00");
terminalListMapByOrgId.forEach((key, terminalListByOrg) -> {
RMpDevSolveVO rMpDevSolveVO = new RMpDevSolveVO();
rMpDevSolveVO.setDataDate(startTime);
rMpDevSolveVO.setOrgId(key); //单位id
rMpDevSolveVO.setOrgName(terminalListByOrg.get(0).getOrgName()); //单位名称
rMpDevSolveVO.setTerminalCount(terminalListByOrg.size()); //终端数量
//终端异常数量 terminalAbnormalCount
int terminalAbnormalCount = (int)solveDevIdList.stream().filter(item -> terminalMap.get(item).getOrgId().equals(key)).count();
rMpDevSolveVO.setTerminalAbnormalCount(terminalAbnormalCount);
/**已消缺数量 solveCount**/
int notSolveCount = 0, solveCount = 0;
//当前单位未消缺的终端数量
if (terminalAbnormalCount != 0) {
notSolveCount = (int)solveList.stream().filter(item -> {
return terminalMap.get(item.getDeviceId()).getOrgId().equals(key) && item.getIsSolve() == 0;
}).map(RMpDevSolveDetail::getDeviceId).distinct().count();
//已消缺数量
solveCount = terminalAbnormalCount - notSolveCount;
}
rMpDevSolveVO.setSolveCount(terminalAbnormalCount - notSolveCount);
//消缺率 solveRate
if (terminalAbnormalCount == 0) { //防止算术异常
rMpDevSolveVO.setSolveRate(00.00);
} else {
rMpDevSolveVO.setSolveRate(Double.parseDouble(df.format((solveCount * 1.0) / (terminalAbnormalCount * 1.0))) * 100);
}
resultList.add(rMpDevSolveVO);
});
return resultList;
}
/***
* 厂家终端消缺统计
* @author jianghaifei
* @date 2022-11-14 19:50
* @param rMpDevAbnormalManageParam
*/
@Override
public List<RMpDevSolveVO> getManufactureRMpDevSolveList(RMpDevAbnormalManageParam rMpDevAbnormalManageParam) {
//提取参数
List<String> manufactureIdList = StringUtils.isNotBlank(rMpDevAbnormalManageParam.getManufactureIds()) ?
Arrays.asList(rMpDevAbnormalManageParam.getManufactureIds().split(",")) : null; //厂商id
String startTime = rMpDevAbnormalManageParam.getStartTime(); //开始时间
String endTime = rMpDevAbnormalManageParam.getEndTime(); //结束时间
//查询终端厂商下的终端数据
LambdaQueryWrapper<PmsTerminal> terminalWrapper = new LambdaQueryWrapper<>();
terminalWrapper.in(CollUtil.isNotEmpty(manufactureIdList), PmsTerminal::getManufacture, manufactureIdList)
.isNotNull(CollUtil.isEmpty(manufactureIdList), PmsTerminal::getManufacture);
List<PmsTerminal> terminalList = iTerminalService.list(terminalWrapper);
//提取终端id
List<String> terminalIdList = terminalList.stream().map(PmsTerminal::getId).collect(Collectors.toList());
//将终端信息转为map集合 key: 终端id value: 终端实体
Map<String, PmsTerminal> terminalMap = terminalList.stream().collect(Collectors.toMap(PmsTerminal::getId, terminal -> terminal));
if (CollUtil.isEmpty(terminalIdList)) {
return new ArrayList<>();
}
//将终端信息按厂商分组 key单位id value终端集合
Map<String, List<PmsTerminal>> terminalListMapByManufacture = terminalList.stream().collect(Collectors.groupingBy(PmsTerminal::getManufacture));
//查询终端消缺数据
LambdaQueryWrapper<RMpDevSolveDetail> solveWrapper = new LambdaQueryWrapper<>();
solveWrapper.in(RMpDevSolveDetail::getDeviceId, terminalIdList)
.ge(StringUtils.isNotBlank(startTime), RMpDevSolveDetail::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpDevSolveDetail::getDataDate, endTime);
List<RMpDevSolveDetail> solveList = this.list(solveWrapper);
//有异常的终端id集合(去重,一个终端即使有多次异常,也算作一个终端异常数量)
List<String> solveDevIdList = solveList.stream().map(RMpDevSolveDetail::getDeviceId).distinct().collect(Collectors.toList());
//封装返回数据
List<RMpDevSolveVO> resultList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("###.00");
terminalListMapByManufacture.forEach((key, terminalListByOrg) -> {
RMpDevSolveVO rMpDevSolveVO = new RMpDevSolveVO();
rMpDevSolveVO.setDataDate(startTime);
rMpDevSolveVO.setManufactureId(key); //厂商id
rMpDevSolveVO.setTerminalCount(terminalListByOrg.size()); //终端数量
//终端异常数量 terminalAbnormalCount
int terminalAbnormalCount = (int)solveDevIdList.stream().filter(item -> terminalMap.get(item).getManufacture().equals(key)).count();
rMpDevSolveVO.setTerminalAbnormalCount(terminalAbnormalCount);
/**已消缺数量 solveCount**/
int notSolveCount = 0, solveCount = 0;
//当前厂商未消缺的终端数量
if (terminalAbnormalCount != 0) {
notSolveCount = (int)solveList.stream().filter(item -> {
return terminalMap.get(item.getDeviceId()).getManufacture().equals(key) && item.getIsSolve() == 0;
}).map(RMpDevSolveDetail::getDeviceId).distinct().count();
//已消缺数量
solveCount = terminalAbnormalCount - notSolveCount;
}
rMpDevSolveVO.setSolveCount(solveCount);
//消缺率 solveRate
if (terminalAbnormalCount == 0) { //防止算术异常
rMpDevSolveVO.setSolveRate(00.00);
} else {
rMpDevSolveVO.setSolveRate(Double.parseDouble(df.format((solveCount * 1.0) / (terminalAbnormalCount * 1.0))) * 100);
}
resultList.add(rMpDevSolveVO);
});
return resultList;
}
@Override
public List<RMpDevSolveVO> getTypeRMpDevSolveList(RMpDevAbnormalManageParam rMpDevAbnormalManageParam) {
//提取参数
List<String> breakDownTypeList = StringUtils.isNotBlank(rMpDevAbnormalManageParam.getBreakDownType()) ?
Arrays.asList(rMpDevAbnormalManageParam.getBreakDownType().split(",")) : null; //故障类型
String startTime = rMpDevAbnormalManageParam.getStartTime(); //开始时间
String endTime = rMpDevAbnormalManageParam.getEndTime(); //结束时间
//查询终端消缺数据
LambdaQueryWrapper<RMpDevSolveDetail> solveWrapper = new LambdaQueryWrapper<>();
solveWrapper.in(CollUtil.isNotEmpty(breakDownTypeList), RMpDevSolveDetail::getBreakDownType, breakDownTypeList)
.ge(StringUtils.isNotBlank(startTime), RMpDevSolveDetail::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpDevSolveDetail::getDataDate, endTime);
List<RMpDevSolveDetail> solveList = this.list(solveWrapper);
if (CollUtil.isEmpty(solveList)) {
return new ArrayList<>();
}
//按故障类型分组
Map<String, List<RMpDevSolveDetail>> solveMap = solveList.stream().collect(Collectors.groupingBy(RMpDevSolveDetail::getBreakDownType));
//封装返回数据
List<RMpDevSolveVO> resultList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("###.00");
solveMap.forEach((key, RMpDevSolveDetailList) -> {
RMpDevSolveVO rMpDevSolveVO = new RMpDevSolveVO();
rMpDevSolveVO.setDataDate(startTime);
rMpDevSolveVO.setBreakDownType(key); //故障类型
rMpDevSolveVO.setTerminalCount(null); //终端数量(故障类型的终端数量前端展示'/')
//终端异常数量 terminalAbnormalCount
int terminalAbnormalCount = (int)RMpDevSolveDetailList.stream().map(RMpDevSolveDetail::getDeviceId).distinct().count();
rMpDevSolveVO.setTerminalAbnormalCount(terminalAbnormalCount);
//已消缺数量 solveCount
//未消缺数量
int notSolveCount = 0, solveCount = 0;
if (terminalAbnormalCount != 0) {
notSolveCount = (int)solveList.stream().filter(item -> {
return item.getIsSolve() == 0;
}).map(RMpDevSolveDetail::getDeviceId).distinct().count();
solveCount = terminalAbnormalCount - notSolveCount;
}
rMpDevSolveVO.setSolveCount(solveCount);
//消缺率 solveRate
if (terminalAbnormalCount == 0) { //防止算术异常
rMpDevSolveVO.setSolveRate(00.00);
} else {
rMpDevSolveVO.setSolveRate(Double.parseDouble(df.format((solveCount * 1.0) / (terminalAbnormalCount * 1.0))) * 100);
}
resultList.add(rMpDevSolveVO);
});
return resultList;
}
@Override
public List<RMpDevSolveDetailVO> getRMpDevSolveDetailList(RMpDevSolveDetailParam rMpDevSolveDetailParam) {
//提取参数
String id = rMpDevSolveDetailParam.getId(); //单位id
List<String> manufactureIdList = StringUtils.isNotBlank(rMpDevSolveDetailParam.getManufactureIds()) ?
Arrays.asList(rMpDevSolveDetailParam.getManufactureIds().split(",")) : null; //厂商ids
String startTime = rMpDevSolveDetailParam.getStartTime(); //开始时间
String endTime = rMpDevSolveDetailParam.getEndTime(); //结束时间
/**根据条件查询终端**/
//获取所有子部门信息
List<DeptDTO> deptDTOList = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData();
if (CollUtil.isEmpty(deptDTOList)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "部门不存在");
}
//单位id集合
List<String> orgNoList = deptDTOList.stream().map(DeptDTO::getId).collect(Collectors.toList());
//查询单位下的终端数据
LambdaQueryWrapper<PmsTerminal> terminalWrapper = new LambdaQueryWrapper<>();
terminalWrapper.in(PmsTerminal::getOrgId, orgNoList) //单位id
.in(CollUtil.isNotEmpty(manufactureIdList), PmsTerminal::getManufacture, manufactureIdList); //厂家
List<PmsTerminal> terminalList = iTerminalService.list(terminalWrapper);
if (CollUtil.isEmpty(terminalList)) {
return new ArrayList<>();
}
List<String> terminalIdList = terminalList.stream().map(PmsTerminal::getId).collect(Collectors.toList());
Map<String, PmsTerminal> terminalMap = terminalList.stream().collect(Collectors.toMap(PmsTerminal::getId, terminal -> terminal));
//查询消缺清单
//查询终端消缺数据
LambdaQueryWrapper<RMpDevSolveDetail> solveWrapper = new LambdaQueryWrapper<>();
solveWrapper.in(CollUtil.isNotEmpty(terminalIdList), RMpDevSolveDetail::getDeviceId, terminalIdList)
.ge(StringUtils.isNotBlank(startTime), RMpDevSolveDetail::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpDevSolveDetail::getDataDate, endTime);
List<RMpDevSolveDetail> solveList = this.list(solveWrapper);
//封装返回数据
List<RMpDevSolveDetailVO> resultList = solveList.stream().map(item -> {
RMpDevSolveDetailVO rMpDevSolveDetailVO = new RMpDevSolveDetailVO();
BeanUtils.copyProperties(item, rMpDevSolveDetailVO); //终端id、故障时间、故障类型、是否消缺、消缺时间
rMpDevSolveDetailVO.setOrgId(terminalMap.get(item.getDeviceId()).getOrgId()); //单位id
rMpDevSolveDetailVO.setOrgName(terminalMap.get(item.getDeviceId()).getOrgName()); //单位名称
rMpDevSolveDetailVO.setPowerId(terminalMap.get(item.getDeviceId()).getPowerStationId()); //变电站id
rMpDevSolveDetailVO.setPowerName(terminalMap.get(item.getDeviceId()).getPowerrName()); //变电站名称
return rMpDevSolveDetailVO;
}).collect(Collectors.toList());
return resultList;
}
}

View File

@@ -0,0 +1,100 @@
package com.njcn.device.pms.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.pojo.param.RStatDevSignalParam;
import com.njcn.device.pms.pojo.po.RStatDevSignalD;
import com.njcn.device.pms.pojo.po.PmsTerminal;
import com.njcn.device.pms.pojo.vo.RStatDevSignalVO;
import com.njcn.device.pms.service.majornetwork.ITerminalService;
import com.njcn.device.pms.service.majornetwork.RStatDevSignalDService;
import com.njcn.device.pms.mapper.majornetwork.RStatDevSignalDMapper;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.web.utils.WebUtil;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author jianghf
* @description 针对表【r_stat_dev_signal_d(终端通信管理日表)】的数据库操作Service实现
* @createDate 2022-11-11 15:35:35
*/
@Service
@RequiredArgsConstructor
public class RStatDevSignalDServiceImpl extends ServiceImpl<RStatDevSignalDMapper, RStatDevSignalD>
implements RStatDevSignalDService{
private final ITerminalService iTerminalService;
private final DeptFeignClient deptFeignClient;
@Override
public List<RStatDevSignalVO> getRStatDevSignalList(RStatDevSignalParam rStatDevSignalParam) {
//提取查询条件
String id = rStatDevSignalParam.getId(); //单位id
String deviceName = rStatDevSignalParam.getDeviceName(); //终端名称
String deviceStatus = rStatDevSignalParam.getDeviceStatus(); //终端状态
String runStatus = rStatDevSignalParam.getRunStatus(); //运行状态
if (StringUtils.isBlank(id)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "单位id不可为空");
}
//获取所有子部门信息
List<DeptDTO> deptDTOList = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData();
if (CollUtil.isEmpty(deptDTOList)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "部门不存在");
}
//单位id集合
List<String> orgNoList = deptDTOList.stream().map(DeptDTO::getId).collect(Collectors.toList());
//查询终端数据
LambdaQueryWrapper<PmsTerminal> terminalWrapper = new LambdaQueryWrapper<>();
terminalWrapper.in(PmsTerminal::getOrgId, orgNoList).like(StringUtils.isNotBlank(deviceName), PmsTerminal::getName, deviceName);
List<PmsTerminal> terminalList = iTerminalService.list(terminalWrapper);
//提取终端id
List<String> terminalIdList = terminalList.stream().map(PmsTerminal::getId).collect(Collectors.toList());
//将终端信息转为map集合 key: 终端id value: 终端实体
Map<String, PmsTerminal> terminalMap = terminalList.stream().collect(Collectors.toMap(PmsTerminal::getId, terminal -> terminal));
if (CollUtil.isEmpty(terminalIdList)) {
return new ArrayList<>();
}
//查询业务数据
LambdaQueryWrapper<RStatDevSignalD> businessWrapper = new LambdaQueryWrapper<>();
businessWrapper.in(RStatDevSignalD::getDeviceId, terminalIdList)
.eq(StringUtils.isNotBlank(deviceStatus), RStatDevSignalD::getDeviceStatus, deviceStatus)
.eq(StringUtils.isNotBlank(runStatus), RStatDevSignalD::getRunStatus, runStatus);
List<RStatDevSignalD> list = this.list(businessWrapper);
//封装返回数据
List<RStatDevSignalVO> resultList = list.stream().map(item -> {
RStatDevSignalVO rStatDevSignalVO = new RStatDevSignalVO();
BeanUtils.copyProperties(item, rStatDevSignalVO); //设备状态、运行状态、最后通讯时间(更新时间)
rStatDevSignalVO.setTerminalId(item.getDeviceId()); //终端id(终端编号)
rStatDevSignalVO.setOrgId(terminalMap.get(item.getDeviceId()).getOrgId()); //单位id
rStatDevSignalVO.setOrgName(terminalMap.get(item.getDeviceId()).getOrgName()); //单位名称
rStatDevSignalVO.setTerminalName(terminalMap.get(item.getDeviceId()).getName()); //终端名称
rStatDevSignalVO.setIp(terminalMap.get(item.getDeviceId()).getIp()); //ip
rStatDevSignalVO.setPort(terminalMap.get(item.getDeviceId()).getPort()); //端口
return rStatDevSignalVO;
}).collect(Collectors.toList());
return resultList;
}
}