diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/Integrity.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/Integrity.java new file mode 100644 index 0000000..8d2c9e1 --- /dev/null +++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/Integrity.java @@ -0,0 +1,46 @@ +package com.njcn.cloud.pojo.vo.AdminStatistic; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Description: 数据完整性 + * @Author: wr + * @Date: 2024/1/8 9:57 + */ +@Data +public class Integrity implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("开始时间") + private Date timeStart; + + @ApiModelProperty("结束时间") + private Date timeEnd; + + @ApiModelProperty("总监测点完整性") + private Float integrityz; + + @ApiModelProperty("各监测点数据完整性") + private List list; + + @Data + public static class DataIntegrity implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("监测点id") + private String lineIndex; + + @ApiModelProperty("监测点名称") + private String lineName; + + @ApiModelProperty("数据完整性") + private Float integrity; + } +} \ No newline at end of file diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/StaticInfo.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/StaticInfo.java index f6e5fbe..536e497 100644 --- a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/StaticInfo.java +++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/StaticInfo.java @@ -3,6 +3,7 @@ package com.njcn.cloud.pojo.vo.AdminStatistic; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -13,7 +14,9 @@ import java.util.List; * @Date: 2024/1/5 10:44 */ @Data -public class StaticInfo { +public class StaticInfo implements Serializable { + + private static final long serialVersionUID = 1L; @ApiModelProperty("统计开始时间") private Date timeStart; @@ -32,7 +35,9 @@ public class StaticInfo { @Data - public static class DevStatic { + public static class DevStatic implements Serializable { + + private static final long serialVersionUID = 1L; @ApiModelProperty("终端编号") private String devIndex; diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/AdminStatistic/DataIntegrityController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/AdminStatistic/DataIntegrityController.java new file mode 100644 index 0000000..3066a40 --- /dev/null +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/AdminStatistic/DataIntegrityController.java @@ -0,0 +1,46 @@ +package com.njcn.cloud.controller.AdminStatistic; + +import com.njcn.cloud.pojo.vo.AdminStatistic.Integrity; +import com.njcn.cloud.pojo.vo.AdminStatistic.StaticInfo; +import com.njcn.cloud.service.AdminStatistic.DataIntegrityService; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * @Description: 统计终端在线率 + * @Author: wr + * @Date: 2024/1/8 14:30 + */ +@RestController +@RequestMapping("/dataIntegrity") +@Api(tags = "统计数据完整性率接口") +@RequiredArgsConstructor +public class DataIntegrityController extends BaseController { + + private final DataIntegrityService dataIntegrityService; + + /** + * 统计数据完整性率 + */ + @PostMapping("/getDataIntegrity") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "用户ID", required = true, paramType = "query"), + }) + @ApiOperation(value = "统计数据完整性率入口", notes = "统计数据完整性率列表") + public HttpResult getDataIntegrity(String userId) { + String methodDescribe = getMethodDescribe("getDataIntegrity"); + Integrity integrity = dataIntegrityService.getIntegrity(userId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, integrity, methodDescribe); + } +} \ No newline at end of file diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/AdminStatistic/DataIntegrityService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/AdminStatistic/DataIntegrityService.java new file mode 100644 index 0000000..fee8a51 --- /dev/null +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/AdminStatistic/DataIntegrityService.java @@ -0,0 +1,17 @@ +package com.njcn.cloud.service.AdminStatistic; + + +import com.njcn.cloud.pojo.vo.AdminStatistic.Integrity; + + +public interface DataIntegrityService { + + /** + * @Description: 统计数据数据完整性统计 + * @param userID + * @return: com.njcn.cloud.pojo.vo.AdminStatistic.Integrity + * @Author: wr + * @Date: 2024/1/8 13:49 + */ + Integrity getIntegrity(String userID); +} \ No newline at end of file diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AdminStatistic/DataIntegrityServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AdminStatistic/DataIntegrityServiceImpl.java new file mode 100644 index 0000000..9dcc4bb --- /dev/null +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AdminStatistic/DataIntegrityServiceImpl.java @@ -0,0 +1,84 @@ +package com.njcn.cloud.service.impl.AdminStatistic; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import com.njcn.cloud.enums.app.UserCodeEnum; +import com.njcn.cloud.pojo.vo.AdminStatistic.Integrity; +import com.njcn.cloud.pojo.vo.AdminStatistic.StaticInfo; +import com.njcn.cloud.service.AdminStatistic.DataIntegrityService; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.device.pq.api.GeneralDeviceInfoClient; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.device.pq.api.LineIntegrityClient; +import com.njcn.device.pq.pojo.param.LineBaseQueryParam; +import com.njcn.device.pq.pojo.param.OnlineRateParam; +import com.njcn.device.pq.pojo.po.RStatIntegrityD; +import com.njcn.device.pq.pojo.vo.DevDetail; +import com.njcn.device.pq.pojo.vo.LineDeviceStateVO; +import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO; +import com.njcn.user.api.UserFeignClient; +import com.njcn.user.pojo.po.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + + +/** + * @description: DataIntegrityServiceImpl + * @author: denghuajun + * @time: 2020-01-02 10:05:11 + **/ +@Service +@RequiredArgsConstructor +public class DataIntegrityServiceImpl implements DataIntegrityService { + + private final LineIntegrityClient lineIntegrityClient; + private final UserFeignClient userFeignClient; + private final GeneralDeviceInfoClient generalDeviceInfoClient; + private final LineFeignClient lineFeignClient; + + @Override + public Integrity getIntegrity(String userID) { + Date date = new Date(); + //开始时间 + Date startTime = DateUtil.beginOfDay(date); + //根据用户id获取用户部门 + List users = userFeignClient.getUserByIdList(Collections.singletonList(userID)).getData(); + if(CollUtil.isEmpty(users)){ + throw new BusinessException(UserCodeEnum.NO_USER.getMsg()); + } + //获取监测点ids + List lindIds = generalDeviceInfoClient.deptGetRunLine(users.get(0).getDeptId()).getData(); + //获取总终端在线率 + LineBaseQueryParam param=new LineBaseQueryParam(); + param.setLineIds(lindIds); + param.setStartTime(startTime.toString()); + param.setEndTime(date.toString()); + Float data = lineIntegrityClient.getTotalIntegrityByLineIds(param).getData(); + Integrity info=new Integrity(); + info.setTimeStart(startTime); + info.setTimeEnd(date); + info.setIntegrityz(data); + List list=new ArrayList<>(); + //获取监测点数据完整性 + List integrityDS = lineIntegrityClient.getIntegrityByLineIds(lindIds,startTime.toString(),date.toString()).getData(); + Map onIntegrityMap = integrityDS.stream().collect(Collectors.toMap(RStatIntegrityD::getLineIndex, RStatIntegrityD::getIntegrityData)); + Integrity.DataIntegrity integrity; + //获取监测点信息 + List lineDetails = lineFeignClient.getAllLine(lindIds).getData(); + + for (LineDeviceStateVO lineDetail : lineDetails) { + integrity=new Integrity.DataIntegrity(); + integrity.setLineIndex(lineDetail.getId()); + integrity.setLineName(lineDetail.getName()); + integrity.setIntegrity(onIntegrityMap.get(lineDetail.getId())==null?0:onIntegrityMap.get(lineDetail.getId())); + list.add(integrity); + } + info.setList(list); + return info; + } + + +} \ No newline at end of file