diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/ProjectEquipmentVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/ProjectEquipmentVO.java index 3ad739b..49dd279 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/ProjectEquipmentVO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/ProjectEquipmentVO.java @@ -66,6 +66,9 @@ public class ProjectEquipmentVO { @ApiModelProperty(value = "设备类型(监测设备:DEV_CLD 治理设备:Direct_Connected_Device)") private String devType; + @ApiModelProperty(value = "是否存在告警(告警通过查询当日的未读的暂态事件判断)") + private Boolean isAlarm; + @ApiModelProperty(value = "监测点集合") private List lineList; diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java index 512910e..e774baf 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java @@ -315,126 +315,6 @@ public class CsDeviceUserPOServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); -// -// DevCountVO devCountVO = new DevCountVO(); -// -// String userRole = RequestUtil.getUserRole(); -// List strings = JSONArray.parseArray(userRole, String.class); -// if(CollectionUtils.isEmpty(strings)){ -// throw new BusinessException(AlgorithmResponseEnum.UNKNOW_ROLE); -// -// } -// userRole=strings.get(0); -// -// List device = roleEngineerDevService.getDevice(); -// if(CollectionUtils.isEmpty(device)){ -// devCountVO.setOnLineDevCount(0); -// devCountVO.setOnLineDevs(new ArrayList<>()); -// devCountVO.setOffLineDevCount(0); -// devCountVO.setOffLineDevs(new ArrayList<>()); -// }else { -// queryWrapper.clear(); -// queryWrapper.in("id",device); -// -// List csEquipmentDeliveryPOS = csEquipmentDeliveryMapper.selectList(queryWrapper); -// List collect = csEquipmentDeliveryPOS.stream().filter(temp -> temp.getRunStatus() == 1).collect(Collectors.toList()); -// List collect2= csEquipmentDeliveryPOS.stream().filter(temp -> temp.getRunStatus() == 2).collect(Collectors.toList()); -// devCountVO.setOnLineDevCount(collect2.size()); -// devCountVO.setOnLineDevs(collect2); -// devCountVO.setOffLineDevCount(collect.size()); -// devCountVO.setOffLineDevs(collect); -// List roleengineer = roleEngineerDevService.getRoleengineer(); -// devCountVO.setEningerCount(roleengineer.size()); -// } -// -// List deviceTree = iCsLedgerService.getDeviceTree(null); -// //由于多加了一程便携式设备 -// List collect1 = deviceTree.stream() -// .map(CsLedgerVO::getChildren).flatMap(Collection::stream) -// .filter(temp -> temp.getId().equals(id)) -// .map(CsLedgerVO::getChildren).flatMap(Collection::stream) -// .map(CsLedgerVO::getChildren).flatMap(Collection::stream) -// .map(CsLedgerVO::getId).collect(Collectors.toList()); -// //求交集 -// device.retainAll(collect1); -// if(CollectionUtils.isEmpty(device)){ -// devCountVO.setCurrentOnLineDevCount(0); -// devCountVO.setCurrentOnLineDevs(new ArrayList<>()); -// devCountVO.setCurrentOffLineDevCount(0); -// devCountVO.setCurrentOffLineDevs(new ArrayList<>()); -// devCountVO.setCurrentProjectCount(0); -// -// }else { -// queryWrapper.clear(); -// queryWrapper.in("id",device); -// -// List csEquipmentDeliveryPOS = csEquipmentDeliveryMapper.selectList(queryWrapper); -// List collect = csEquipmentDeliveryPOS.stream().filter(temp -> temp.getRunStatus() == 1).collect(Collectors.toList()); -// List collect2= csEquipmentDeliveryPOS.stream().filter(temp -> temp.getRunStatus() == 2).collect(Collectors.toList()); -// devCountVO.setCurrentOnLineDevCount(collect2.size()); -// devCountVO.setCurrentOnLineDevs(collect2); -// devCountVO.setCurrentOffLineDevCount(collect.size()); -// devCountVO.setCurrentOffLineDevs(collect); -// List list = iCsLedgerService.lambdaQuery().eq(CsLedger::getPid, id).eq(CsLedger::getState, 1).list(); -// devCountVO.setCurrentProjectCount(list.size()); -// } -// CsEventUserQueryParam csEventUserQueryParam = new CsEventUserQueryParam(); -// csEventUserQueryParam.setStatus("0"); -// -// //查询暂态事件、运行事件还是使用之前的方法 -// List data = eventUserFeignClient.queryEventList(csEventUserQueryParam).getData(); -// //查询稳态事件 先获取监测点id -// csLinePOService.getLinesByDevList(device); -// -// -// //查询运行告警事件 -// -// -// -// -// List event = data.stream().filter(temp -> temp.getType() == 0).collect(Collectors.toList()); -// List harmonic = data.stream().filter(temp -> temp.getType() == 1).collect(Collectors.toList()); -// List alarm = data.stream().filter(temp -> temp.getType() == 3).collect(Collectors.toList()); -// -// if(Objects.equals(userRole, AppRoleEnum.APP_VIP_USER.getCode())){ -// alarm = alarm.stream().filter(temp -> Objects.equals("3", temp.getLevel())).collect(Collectors.toList()); -// } -// List run = data.stream().filter(temp -> temp.getType() == 2).collect(Collectors.toList()); -// if(Objects.equals(userRole,AppRoleEnum.APP_VIP_USER.getCode())||Objects.equals(userRole,AppRoleEnum.TOURIST.getCode()) -// ||Objects.equals(userRole,AppRoleEnum.MARKET_USER.getCode())){ -// devCountVO.setFeedBackCount(0); -// -// }else { -// CsFeedbackQueryParm csFeedbackQueryParm = new CsFeedbackQueryParm(); -// csFeedbackQueryParm.setPageNum(1); -// csFeedbackQueryParm.setPageSize(100000); -// csFeedbackQueryParm.setStatus("1"); -// Page data1 = feedBackFeignClient.queryFeedBackPage(csFeedbackQueryParm).getData(); -// List collect = data1.getRecords().stream().filter(temp -> !Objects.equals(temp.getUserId(), RequestUtil.getUserIndex())).collect(Collectors.toList()); -// devCountVO.setFeedBackCount(collect.size()); -// } -// -// //todo 后续添加警告数,事件数 -// devCountVO.setEventCount(event.size()); -// devCountVO.setAlarmCount(alarm.size()); -// devCountVO.setRunCount(run.size()); -// devCountVO.setHarmonicCount(harmonic.size()); -// List curEvent = event.stream().filter(temp -> Objects.equals(temp.getEngineeringid(), id)).collect(Collectors.toList()); -// List curHarmonic = harmonic.stream().filter(temp -> Objects.equals(temp.getEngineeringid(), id)).collect(Collectors.toList()); -// List curAlarm = alarm.stream().filter(temp -> Objects.equals(temp.getEngineeringid(), id)).collect(Collectors.toList()); -// List curRun = run.stream().filter(temp -> Objects.equals(temp.getEngineeringid(), id)).collect(Collectors.toList()); -// -// devCountVO.setCurrentEventCount(curEvent.size()); -// devCountVO.setCurrentAlarmCount(curAlarm.size()); -// devCountVO.setCurrentRunCount(curRun.size()); -// devCountVO.setCurrentHarmonicCount(curHarmonic.size()); -// -// -// return devCountVO; -// } /** * @Description: 判断当前用户是否是主用户 0-否1-是 * @Param: diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java index 6d58c6f..195a2e0 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java @@ -41,6 +41,9 @@ import com.njcn.csdevice.service.*; import com.njcn.csdevice.util.QRCodeUtil; import com.njcn.csdevice.utils.ExcelStyleUtil; import com.njcn.csdevice.utils.StringUtil; +import com.njcn.csharmonic.api.EventUserFeignClient; +import com.njcn.csharmonic.param.CsEventUserQueryParam; +import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.oss.constant.OssPath; import com.njcn.oss.utils.FileStorageUtil; import com.njcn.redis.pojo.enums.AppRedisKey; @@ -68,6 +71,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -109,6 +113,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl list = this.baseMapper.queryProjectEquipmentVO(returnpage,projectEquipmentQueryParm,device); //根据设备id获取监测点id集合 List lineIds = csLinePOService.getLineByDev(device); - + //根据设备获取当日是否存在未读取的暂态事件 + CsEventUserQueryParam param = new CsEventUserQueryParam(); + param.setUserId(RequestUtil.getUserIndex()); + param.setStartTime(LocalDate.now().atStartOfDay().format(DatePattern.NORM_DATETIME_FORMATTER)); + param.setEndTime(LocalDateTime.now().format(DatePattern.NORM_DATETIME_FORMATTER)); + param.setEventIds(lineIds.stream().map(CsLinePO::getLineId).collect(Collectors.toList())); + List eventList = eventUserFeignClient.queryTempEventDetail(param).getData(); + Map> eventMap = Optional.ofNullable(eventList) + .orElse(Collections.emptyList()) + .stream() + .collect(Collectors.groupingBy(CsEventPO::getDeviceId)); List recordList = new ArrayList<>(); list.getRecords().forEach(temp->{ @@ -260,6 +275,8 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl getById(@RequestParam("id") String id); + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/CsHarmonicPlanLineFeignClient.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/CsHarmonicPlanLineFeignClient.java new file mode 100644 index 0000000..e4abeeb --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/CsHarmonicPlanLineFeignClient.java @@ -0,0 +1,21 @@ +package com.njcn.csharmonic.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.csharmonic.api.fallback.CsHarmonicPlanLineFeignClientFallbackFactory; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @author xy + */ +@FeignClient(value = ServerInfo.CS_HARMONIC_BOOT, path = "/csHarmonicPlanLine", fallbackFactory = CsHarmonicPlanLineFeignClientFallbackFactory.class,contextId = "csHarmonicPlanLine") +public interface CsHarmonicPlanLineFeignClient { + + @GetMapping("/getPlanIdByLineId") + @ApiOperation("根据监测点ID查询方案ID") + HttpResult getPlanIdByLineId(@RequestParam("lineId") String lineId); + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/EventUserFeignClient.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/EventUserFeignClient.java index d977577..489a3f9 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/EventUserFeignClient.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/EventUserFeignClient.java @@ -1,11 +1,17 @@ package com.njcn.csharmonic.api; +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.csharmonic.api.fallback.EventUserFeignClientFallbackFactory; import com.njcn.csharmonic.param.CsEventUserQueryParam; +import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.csharmonic.pojo.po.CsEventUserPO; import com.njcn.csharmonic.pojo.vo.EventDetailVO; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -33,6 +39,10 @@ public interface EventUserFeignClient { @ApiOperation("查询暂态事件(未读)") HttpResult> queryTempEvent(@RequestBody CsEventUserQueryParam param); + @PostMapping("/queryTempEventDetail") + @ApiOperation("查询暂态事件详细信息(未读)") + HttpResult> queryTempEventDetail(@RequestBody CsEventUserQueryParam param); + @PostMapping("/queryTempHarmonic") @ApiOperation("查询稳态事件(未读)") HttpResult> queryTempHarmonic(@RequestBody CsEventUserQueryParam param); diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/CsHarmonicPlanFeignClientFallbackFactory.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/CsHarmonicPlanFeignClientFallbackFactory.java new file mode 100644 index 0000000..ebf4e5c --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/CsHarmonicPlanFeignClientFallbackFactory.java @@ -0,0 +1,39 @@ +package com.njcn.csharmonic.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.csharmonic.api.CsHarmonicFeignClient; +import com.njcn.csharmonic.api.CsHarmonicPlanFeignClient; +import com.njcn.csharmonic.pojo.po.CsHarmonic; +import com.njcn.csharmonic.pojo.po.CsHarmonicPlan; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author xy + */ +@Slf4j +@Component +public class CsHarmonicPlanFeignClientFallbackFactory implements FallbackFactory { + @Override + public CsHarmonicPlanFeignClient create(Throwable cause) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (cause.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) cause.getCause(); + } + Enum finalExceptionEnum = exceptionEnum; + return new CsHarmonicPlanFeignClient() { + + @Override + public HttpResult getById(String id) { + log.error("{}异常,降级处理,异常为:{}","根据ID查询稳态指标方案异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/CsHarmonicPlanLineFeignClientFallbackFactory.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/CsHarmonicPlanLineFeignClientFallbackFactory.java new file mode 100644 index 0000000..c96000d --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/CsHarmonicPlanLineFeignClientFallbackFactory.java @@ -0,0 +1,33 @@ +package com.njcn.csharmonic.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.csharmonic.api.CsHarmonicPlanLineFeignClient; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author xy + */ +@Slf4j +@Component +public class CsHarmonicPlanLineFeignClientFallbackFactory implements FallbackFactory { + @Override + public CsHarmonicPlanLineFeignClient create(Throwable cause) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (cause.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) cause.getCause(); + } + Enum finalExceptionEnum = exceptionEnum; + return new CsHarmonicPlanLineFeignClient() { + @Override + public HttpResult getPlanIdByLineId(String lineId) { + log.error("{}异常,降级处理,异常为:{}","根据监测点ID查询方案ID异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/EventUserFeignClientFallbackFactory.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/EventUserFeignClientFallbackFactory.java index 48d1c9c..5e1bb96 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/EventUserFeignClientFallbackFactory.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/api/fallback/EventUserFeignClientFallbackFactory.java @@ -5,6 +5,7 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.csharmonic.api.EventUserFeignClient; import com.njcn.csharmonic.param.CsEventUserQueryParam; +import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.csharmonic.pojo.po.CsEventUserPO; import com.njcn.csharmonic.pojo.vo.EventDetailVO; import feign.hystrix.FallbackFactory; @@ -52,6 +53,12 @@ public class EventUserFeignClientFallbackFactory implements FallbackFactory> queryTempEventDetail(CsEventUserQueryParam param) { + log.error("{}异常,降级处理,异常为:{}","查询暂态事件详细信息(未读)异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + @Override public HttpResult> queryTempHarmonic(CsEventUserQueryParam param) { log.error("{}异常,降级处理,异常为:{}","查询稳态事件(未读)异常",cause.toString()); diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CsHarmonicPlanLineParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CsHarmonicPlanLineParam.java new file mode 100644 index 0000000..44b233a --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CsHarmonicPlanLineParam.java @@ -0,0 +1,32 @@ +package com.njcn.csharmonic.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 稳态指标方案与测点关系参数类 + * + * @author xy + * @since 2026-04-15 + */ +@Data +public class CsHarmonicPlanLineParam { + + /** + * 方案ID + */ + @ApiModelProperty(value = "方案ID") + @NotBlank(message = "方案ID不能为空") + private String id; + + /** + * 监测点ID集合 + */ + @ApiModelProperty(value = "监测点ID集合") + @NotEmpty(message = "监测点ID集合不能为空") + private List lineIds; +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CsHarmonicPlanParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CsHarmonicPlanParam.java new file mode 100644 index 0000000..c005d47 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CsHarmonicPlanParam.java @@ -0,0 +1,65 @@ +package com.njcn.csharmonic.param; + +import com.njcn.web.pojo.param.BaseParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * 稳态指标方案参数类 + * + * @author xy + * @since 2026-04-15 + */ +@Data +public class CsHarmonicPlanParam { + + /** + * 稳态方案名称 + */ + @ApiModelProperty(value = "稳态方案名称") + @NotBlank(message = "稳态方案名称不能为空") + private String name; + + /** + * 稳态指标集合 + */ + @ApiModelProperty(value = "稳态指标集合") + private String harmonicTarget; + + /** + * 排序 + */ + @ApiModelProperty(value = "排序") + private Integer sort; + + /** + * 监测点id集合 + */ + @ApiModelProperty(value = "监测点id集合") + private List lineList; + + /** + * 修改参数类 + */ + @Data + @EqualsAndHashCode(callSuper = true) + public static class UpdateCsHarmonicPlanParam extends CsHarmonicPlanParam { + @ApiModelProperty("ID") + @NotBlank(message = "ID不能为空") + private String id; + } + + /** + * 分页查询参数类 + */ + @Data + @EqualsAndHashCode(callSuper = true) + public static class QueryParam extends BaseParam { + @ApiModelProperty(value = "稳态方案名称") + private String name; + } +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/CsHarmonicPlan.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/CsHarmonicPlan.java new file mode 100644 index 0000000..a23c873 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/CsHarmonicPlan.java @@ -0,0 +1,52 @@ +package com.njcn.csharmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * + *

+ * + * @author xy + * @since 2026-04-15 + */ +@Getter +@Setter +@TableName("cs_harmonic_plan") +public class CsHarmonicPlan extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String id; + + /** + * 稳态方案名称 + */ + private String name; + + /** + * 稳态指标集合 + */ + private String harmonicTarget; + + /** + * 排序 + */ + private Integer sort; + + /** + * 监测点ID集合(非数据库字段) + */ + @TableField(exist = false) + private List lineList; +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/CsHarmonicPlanLine.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/CsHarmonicPlanLine.java new file mode 100644 index 0000000..8cba6c2 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/CsHarmonicPlanLine.java @@ -0,0 +1,35 @@ +package com.njcn.csharmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author xy + * @since 2026-04-15 + */ +@Getter +@Setter +@TableName("cs_harmonic_plan_line") +public class CsHarmonicPlanLine implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String id; + + /** + * 监测点id + */ + private String lineId; + + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AlarmVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AlarmVO.java index d31aa52..98b5118 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AlarmVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AlarmVO.java @@ -24,6 +24,12 @@ public class AlarmVO implements Serializable { @ApiModelProperty(value = "告警设备台数") private Integer warnNums; + @ApiModelProperty(value = "通讯中断告警次数") + private Integer interruptCounts; + + @ApiModelProperty(value = "终端告警次数") + private Integer warnCounts; + @ApiModelProperty(value = "告警设备id集合") private List devIds; @@ -42,6 +48,9 @@ public class AlarmVO implements Serializable { @ApiModelProperty(value = "设备名称") private String devName; + @ApiModelProperty(value = "设备类型") + private String devType; + @ApiModelProperty(value = "告警次数") private Integer warnCounts = 0; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/EventDetailVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/EventDetailVO.java index 81cea6e..1ecd82f 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/EventDetailVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/EventDetailVO.java @@ -8,7 +8,6 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; -import java.util.Date; import java.util.List; /** @@ -47,6 +46,8 @@ public class EventDetailVO { */ private String deviceId; + @ApiModelProperty(value = "设备类型") + private String devType; @ApiModelProperty(value = "设备名称") private String equipmentName; diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsHarmonicPlanController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsHarmonicPlanController.java new file mode 100644 index 0000000..d27d531 --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsHarmonicPlanController.java @@ -0,0 +1,115 @@ +package com.njcn.csharmonic.controller; + +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.csharmonic.param.CsHarmonicPlanParam; +import com.njcn.csharmonic.pojo.po.CsHarmonicPlan; +import com.njcn.csharmonic.service.ICsHarmonicPlanService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 稳态指标方案 前端控制器 + *

+ * + * @author xy + * @since 2026-04-15 + */ +@Slf4j +@RestController +@RequestMapping("/csHarmonicPlan") +@Api(tags = "稳态指标方案") +@AllArgsConstructor +public class CsHarmonicPlanController extends BaseController { + + private final ICsHarmonicPlanService csHarmonicPlanService; + + /** + * 新增稳态指标方案(包含监测点关联) + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.ADD) + @PostMapping("/save") + @ApiOperation("新增稳态指标方案") + public HttpResult save(@RequestBody @Validated CsHarmonicPlanParam param) { + String methodDescribe = getMethodDescribe("save"); + csHarmonicPlanService.save(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + + /** + * 修改稳态指标方案(包含监测点关联) + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPDATE) + @PostMapping("/update") + @ApiOperation("修改稳态指标方案") + public HttpResult update(@RequestBody @Validated CsHarmonicPlanParam.UpdateCsHarmonicPlanParam param) { + String methodDescribe = getMethodDescribe("update"); + csHarmonicPlanService.update(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + + /** + * 删除稳态指标方案(同时删除监测点关联) + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DELETE) + @PostMapping("/delete") + @ApiOperation("删除稳态指标方案") + @ApiImplicitParam(name = "ids", value = "ID集合") + public HttpResult delete(@RequestBody List ids) { + String methodDescribe = getMethodDescribe("delete"); + csHarmonicPlanService.deleteWithLines(ids); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + + /** + * 根据ID查询稳态指标方案(包含监测点列表) + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getById") + @ApiOperation("根据ID查询稳态指标方案") + @ApiImplicitParam(name = "id", value = "ID", required = true) + public HttpResult getById(@RequestParam("id") String id) { + String methodDescribe = getMethodDescribe("getById"); + CsHarmonicPlan plan = csHarmonicPlanService.getByIdWithLines(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, plan, methodDescribe); + } + + /** + * 分页查询稳态指标方案 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getPage") + @ApiOperation("分页查询稳态指标方案") + @ApiImplicitParam(name = "param", value = "查询参数", required = true) + public HttpResult> getPage(@RequestBody CsHarmonicPlanParam.QueryParam param) { + String methodDescribe = getMethodDescribe("getPage"); + Page page = csHarmonicPlanService.getPage(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); + } + + /** + * 查询所有稳态指标方案 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/list") + @ApiOperation("查询所有稳态指标方案") + public HttpResult> list() { + String methodDescribe = getMethodDescribe("list"); + List list = csHarmonicPlanService.listAllOrderBySort(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsHarmonicPlanLineController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsHarmonicPlanLineController.java new file mode 100644 index 0000000..acf5f8c --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsHarmonicPlanLineController.java @@ -0,0 +1,91 @@ +package com.njcn.csharmonic.controller; + + +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.csharmonic.param.CsHarmonicPlanLineParam; +import com.njcn.csharmonic.pojo.po.CsHarmonicPlanLine; +import com.njcn.csharmonic.service.ICsHarmonicPlanLineService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xy + * @since 2026-04-15 + */ +@Slf4j +@RestController +@RequestMapping("/csHarmonicPlanLine") +@Api(tags = "稳态指标方案与测点关系") +@AllArgsConstructor +public class CsHarmonicPlanLineController extends BaseController { + + private final ICsHarmonicPlanLineService csHarmonicPlanLineService; + + /** + * 根据方案ID查询关联的监测点 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getByPlanId") + @ApiOperation("根据方案ID查询关联的监测点") + @ApiImplicitParam(name = "id", value = "方案ID", required = true) + public HttpResult> getByPlanId(@RequestParam("id") String id) { + String methodDescribe = getMethodDescribe("getByPlanId"); + List list = csHarmonicPlanLineService.getByPlanId(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + /** + * 新增方案与监测点关联 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.ADD) + @PostMapping("/savePlanLines") + @ApiOperation("新增方案与监测点关联") + public HttpResult savePlanLines(@RequestBody @Validated CsHarmonicPlanLineParam param) { + String methodDescribe = getMethodDescribe("savePlanLines"); + csHarmonicPlanLineService.savePlanLines(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + + /** + * 根据监测点ID集合删除关联 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DELETE) + @PostMapping("/deleteByLineIds") + @ApiOperation("根据监测点ID集合删除关联") + @ApiImplicitParam(name = "lineIds", value = "监测点ID集合") + public HttpResult deleteByLineIds(@RequestBody List lineIds) { + String methodDescribe = getMethodDescribe("deleteByLineIds"); + csHarmonicPlanLineService.deleteByLineIds(lineIds); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + + /** + * 根据监测点ID查询方案ID + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getPlanIdByLineId") + @ApiOperation("根据监测点ID查询方案ID") + @ApiImplicitParam(name = "lineId", value = "监测点ID", required = true) + public HttpResult getPlanIdByLineId(@RequestParam("lineId") String lineId) { + String methodDescribe = getMethodDescribe("getPlanIdByLineId"); + String planId = csHarmonicPlanLineService.getPlanIdByLineId(lineId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, planId, methodDescribe); + } +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventUserController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventUserController.java index dcabe21..e32344c 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventUserController.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventUserController.java @@ -135,6 +135,16 @@ public class EventUserController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryTempEventDetail") + @ApiOperation("查询暂态事件详细信息(未读)") + @ApiImplicitParam(name = "param", value = "暂降事件查询参数", required = true) + public HttpResult> queryTempEventDetail(@RequestBody CsEventUserQueryParam param) { + String methodDescribe = getMethodDescribe("queryTempEventDetail"); + List result = csEventUserPOMapper.queryTempEventDetail(param.getUserId(), param.getStartTime(), param.getEndTime(), param.getEventIds()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryTempHarmonic") @ApiOperation("查询稳态事件(未读)") diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsEventUserPOMapper.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsEventUserPOMapper.java index 679fa49..a733474 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsEventUserPOMapper.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsEventUserPOMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.csharmonic.param.CsEventUserQueryPage; import com.njcn.csharmonic.param.CsEventUserQueryParam; import com.njcn.csharmonic.pojo.dto.UnReadEventDto; +import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.csharmonic.pojo.po.CsEventUserPO; import com.njcn.csharmonic.pojo.vo.EventDetailVO; import com.njcn.csharmonic.pojo.vo.event.EventStatisticVO; @@ -40,6 +41,9 @@ public interface CsEventUserPOMapper extends BaseMapper { //查询暂态事件(未读) List queryTempEvent(@Param("userId") String userId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("ids") List ids); + //查询暂态事件详细信息(未读) + List queryTempEventDetail(@Param("userId") String userId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("ids") List ids); + //查询稳态事件(未读) List queryTempHarmonic(@Param("userId") String userId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("ids") List ids); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsHarmonicPlanLineMapper.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsHarmonicPlanLineMapper.java new file mode 100644 index 0000000..ab25b3f --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsHarmonicPlanLineMapper.java @@ -0,0 +1,16 @@ +package com.njcn.csharmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.csharmonic.pojo.po.CsHarmonicPlanLine; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xy + * @since 2026-04-15 + */ +public interface CsHarmonicPlanLineMapper extends BaseMapper { + +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsHarmonicPlanMapper.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsHarmonicPlanMapper.java new file mode 100644 index 0000000..3fbb8d4 --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/CsHarmonicPlanMapper.java @@ -0,0 +1,16 @@ +package com.njcn.csharmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.csharmonic.pojo.po.CsHarmonicPlan; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xy + * @since 2026-04-15 + */ +public interface CsHarmonicPlanMapper extends BaseMapper { + +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml index 6120705..d6ac7bc 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml @@ -150,10 +150,35 @@ @@ -268,6 +301,24 @@ + +