Browse Source

#定时任务抽离

zhongwei
yang_shj 1 year ago
parent
commit
bc3b9e9dae
  1. 43
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/entity/EcologyFlowDataEntity.java
  2. 29
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/entity/EcologyFlowStationEntity.java
  3. 23
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/vo/DemonstrateTopVo.java
  4. 32
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/vo/EcologFlowStationVo.java
  5. 29
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/vo/TrendChartVo.java
  6. 7
      hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/service/impl/EmInfoServiceImpl.java
  7. 2
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/alert/service/impl/AbnormalAlarmServiceImpl.java
  8. 1
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/alert/service/impl/LevelAlarmServiceImpl.java
  9. 15
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/config/scheduled/StAlamRecordTask.java
  10. 4
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/config/service/impl/StFocusPropertiesServiceImpl.java
  11. 185
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/controller/EcologyController.java
  12. 11
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/mapper/EcologyFlowDataMapper.java
  13. 5
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/mapper/EcologyFlowDataMapper.xml
  14. 11
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/mapper/EcologyFlowStationMapper.java
  15. 4
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/mapper/EcologyFlowStationMapper.xml
  16. 14
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/service/EcologyFlowDataService.java
  17. 22
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/service/EcologyFlowStationService.java
  18. 30
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/service/impl/EcologyFlowDataServiceImpl.java
  19. 145
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/service/impl/EcologyFlowStationServiceImpl.java
  20. 2
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java

43
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/entity/EcologyFlowDataEntity.java

@ -0,0 +1,43 @@
package com.hnac.hzims.operational.ecology.entity;
import com.baomidou.mybatisplus.annotation.SqlCondition;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.support.QueryField;
import org.springblade.core.tenant.mp.TenantEntity;
import java.math.BigDecimal;
/**
* @author ysj
*/
@Data
@TableName("ecology_flow_data")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "生态流量数据表", description = "生态流量数据表")
public class EcologyFlowDataEntity extends TenantEntity {
@ApiModelProperty(value = "站点编号")
private Long stationId;
@ApiModelProperty(value = "月份")
private String mon;
@ApiModelProperty(value = "站点名称")
private String stationName;
@ApiModelProperty(value = "在线率")
private BigDecimal onLine;
@ApiModelProperty(value = "达标率")
private BigDecimal demonstrate;
@ApiModelProperty(value = "及时率")
private BigDecimal timely;
@ApiModelProperty(value = "完整率")
private BigDecimal complete;
}

29
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/entity/EcologyFlowStationEntity.java

@ -0,0 +1,29 @@
package com.hnac.hzims.operational.ecology.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
* @author ysj
*/
@Data
@TableName("ecology_flow_station")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "生态流量站点表", description = "生态流量站点表")
public class EcologyFlowStationEntity extends TenantEntity {
private Long stationId;
private String stationName;
private Long isOnLine;
private Long isDemonstrate;
private Long isTimely;
private Long isComplete;
}

23
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/vo/DemonstrateTopVo.java

@ -0,0 +1,23 @@
package com.hnac.hzims.operational.ecology.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author ysj
*/
@Data
public class DemonstrateTopVo {
@ApiModelProperty(value = "站点编号")
private Long stationId;
@ApiModelProperty(value = "站点名称")
private String stationName;
@ApiModelProperty(value = "达标率")
private BigDecimal demonstrate;
}

32
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/vo/EcologFlowStationVo.java

@ -0,0 +1,32 @@
package com.hnac.hzims.operational.ecology.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author ysj
*/
@Data
public class EcologFlowStationVo {
@ApiModelProperty("达标率")
private Double demonstrate;
@ApiModelProperty("及时率")
private Double timely;
@ApiModelProperty("完整率")
private Double complete;
@ApiModelProperty("在线率")
private Double onLine;
@ApiModelProperty("接入站点数量")
private Integer count;
@ApiModelProperty("达标率排行榜")
List<DemonstrateTopVo> tops;
}

29
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/ecology/vo/TrendChartVo.java

@ -0,0 +1,29 @@
package com.hnac.hzims.operational.ecology.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author ysj
*/
@Data
public class TrendChartVo {
@ApiModelProperty("时间")
private Integer ts;
@ApiModelProperty("及时率")
private Double timely;
@ApiModelProperty("完整率")
private Double complete;
@ApiModelProperty("在线率")
private Double onLine;
@ApiModelProperty("达标率")
private Double demonstrate;
}

7
hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/service/impl/EmInfoServiceImpl.java

@ -454,11 +454,10 @@ public class EmInfoServiceImpl extends BaseServiceImpl<EmInfoMapper, EmInfoEntit
item.setRideCount(1); item.setRideCount(1);
item.setInstalledCapacity(0.0); item.setInstalledCapacity(0.0);
List<AnalyzeCodeBySignagesVO> signages = analys.stream().filter(o-> item.getEmCode().equals(o.getDeviceCode()) && !StringUtil.isEmpty(o.getSignage()) && !StringUtil.isEmpty(o.getRealId())).collect(Collectors.toList()); List<AnalyzeCodeBySignagesVO> signages = analys.stream().filter(o-> item.getEmCode().equals(o.getDeviceCode()) && !StringUtil.isEmpty(o.getSignage()) && !StringUtil.isEmpty(o.getRealId())).collect(Collectors.toList());
if(CollectionUtil.isEmpty(signages)){ if(CollectionUtil.isNotEmpty(signages)){
return; // list -> map
item.setPoint(signages.stream().collect(Collectors.toMap(AnalyzeCodeBySignagesVO::getSignage,AnalyzeCodeBySignagesVO::getRealId)));
} }
// list -> map
item.setPoint(signages.stream().collect(Collectors.toMap(AnalyzeCodeBySignagesVO::getSignage,AnalyzeCodeBySignagesVO::getRealId)));
// 寻找设备配置参数 // 寻找设备配置参数
List<EmParamEntity> itemParamList = paramList.stream().filter(o->item.getId().equals(o.getInfoId())).collect(Collectors.toList()); List<EmParamEntity> itemParamList = paramList.stream().filter(o->item.getId().equals(o.getInfoId())).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(itemParamList)){ if(CollectionUtil.isNotEmpty(itemParamList)){

2
hzims-service/operational/src/main/java/com/hnac/hzims/operational/alert/service/impl/AbnormalAlarmServiceImpl.java

@ -218,12 +218,12 @@ public class AbnormalAlarmServiceImpl extends BaseServiceImpl<AbnormalAlarmMappe
message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH)); message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH));
message.setPushType(MessageConstants.IMMEDIATELY); message.setPushType(MessageConstants.IMMEDIATELY);
message.setDeptId(depts.get(0)); message.setDeptId(depts.get(0));
message.setCreateDept(depts.get(0));
R<String> deptName = sysClient.getDeptName(depts.get(0)); R<String> deptName = sysClient.getDeptName(depts.get(0));
if (deptName.isSuccess()) { if (deptName.isSuccess()) {
message.setDeptName(deptName.getData()); message.setDeptName(deptName.getData());
} }
User admin = userClient.userByAccount("200000", "admin").getData(); User admin = userClient.userByAccount("200000", "admin").getData();
message.setCreateDept(admin.getCreateDept());
message.setCreateUser(admin.getId()); message.setCreateUser(admin.getId());
result.getData().forEach(user->{ result.getData().forEach(user->{
message.setPusher(String.valueOf(user.getId())); message.setPusher(String.valueOf(user.getId()));

1
hzims-service/operational/src/main/java/com/hnac/hzims/operational/alert/service/impl/LevelAlarmServiceImpl.java

@ -184,6 +184,7 @@ public class LevelAlarmServiceImpl implements LevelAlarmService {
message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH)); message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH));
message.setPushType(MessageConstants.IMMEDIATELY); message.setPushType(MessageConstants.IMMEDIATELY);
message.setDeptId(dept); message.setDeptId(dept);
message.setCreateDept(dept);
R<String> deptName = sysClient.getDeptName(dept); R<String> deptName = sysClient.getDeptName(dept);
if (deptName.isSuccess()) { if (deptName.isSuccess()) {
message.setDeptName(deptName.getData()); message.setDeptName(deptName.getData());

15
hzims-service/operational/src/main/java/com/hnac/hzims/operational/config/scheduled/StAlamRecordTask.java

@ -10,6 +10,7 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Date; import java.util.Date;
@ -52,9 +53,10 @@ public class StAlamRecordTask {
* realId获取 * realId获取
* @return ReturnT<String> * @return ReturnT<String>
*/ */
@XxlJob(REAL_ID_DATA) //@XxlJob(REAL_ID_DATA)
//@Scheduled(cron = "0/40 * * * * ? ") @Scheduled(cron = "0/40 * * * * ? ")
public ReturnT<String> realIdData(String param) throws Exception { public ReturnT<String> realIdData() throws Exception {
String param = "";
if (Func.isBlank(param)) { if (Func.isBlank(param)) {
param = DateUtil.format(new Date(), "yyyy-MM"); param = DateUtil.format(new Date(), "yyyy-MM");
} }
@ -66,9 +68,10 @@ public class StAlamRecordTask {
* 站点实时数据 * 站点实时数据
* @return ReturnT<String> * @return ReturnT<String>
*/ */
@XxlJob(REAL_TIME_DATA) //@XxlJob(REAL_TIME_DATA)
//@Scheduled(cron = "0/40 * * * * ? ") @Scheduled(cron = "0/40 * * * * ? ")
public ReturnT<String> realTimeData(String param) throws Exception { public ReturnT<String> realTimeData() throws Exception {
String param = "";
if (Func.isBlank(param)) { if (Func.isBlank(param)) {
param = DateUtil.format(new Date(), "yyyy-MM"); param = DateUtil.format(new Date(), "yyyy-MM");
} }

4
hzims-service/operational/src/main/java/com/hnac/hzims/operational/config/service/impl/StFocusPropertiesServiceImpl.java

@ -22,6 +22,7 @@ import com.hnac.hzinfo.datasearch.analyse.IAnalyseDataSearchClient;
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeCodeBySignagesVO; import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeCodeBySignagesVO;
import com.hnac.hzinfo.sdk.analyse.po.MultiAnalyzeCodePO; import com.hnac.hzinfo.sdk.analyse.po.MultiAnalyzeCodePO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.MapUtils;
import org.springblade.core.log.logger.BladeLogger; import org.springblade.core.log.logger.BladeLogger;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
@ -137,6 +138,9 @@ public class StFocusPropertiesServiceImpl extends BaseServiceImpl<StFocusPropert
// 遍历设备 // 遍历设备
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();
for(EminfoAndEmParamVo device : filters){ for(EminfoAndEmParamVo device : filters){
if(MapUtils.isEmpty(device.getPoint())){
continue;
}
result.addAll(device.getPoint().values()); result.addAll(device.getPoint().values());
} }
return result; return result;

185
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/controller/EcologyController.java

@ -0,0 +1,185 @@
package com.hnac.hzims.operational.ecology.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowDataEntity;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowStationEntity;
import com.hnac.hzims.operational.ecology.service.EcologyFlowDataService;
import com.hnac.hzims.operational.ecology.service.EcologyFlowStationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* @author ysj
*/
@Api(tags = {"生态流量监测中心"})
@RestController
@AllArgsConstructor
@RequestMapping("/ecology")
public class EcologyController extends BladeController {
private final EcologyFlowStationService stationService;
private final EcologyFlowDataService dataService;
/**
* 数据初始化
* @return
*/
@PostMapping("/generate")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "数据生成", notes = "数据生成")
public R generate(@RequestParam Long mon,@RequestParam String year) {
return R.status(stationService.generate(mon,year));
}
/**
* 站点数据排行
* @return
*/
@PostMapping("/station_top")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "站点数据及达标率排行", notes = "站点数据及达标率排行")
public R station_top() {
return R.data(stationService.station_top());
}
/**
* 站点数据排行
* @return
*/
@PostMapping("/trend_chart")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "指标趋势图", notes = "指标趋势图")
public R trend_chart(@RequestParam String type) {
return R.data(stationService.trend_chart(type));
}
/**
* 生态流量站点新增或修改
* @param entity
* @return
*/
@PostMapping("/station/submit")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "新增或修改", notes = "EcologyFlowStationEntity")
public R station_submit(@Valid @RequestBody EcologyFlowStationEntity entity) {
return R.status(stationService.saveOrUpdate(entity));
}
/**
* 生态流量站点删除
* @param ids
* @return
*/
@PostMapping("/station/remove")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "逻辑删除", notes = "传入ids")
public R station_remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
return R.status(stationService.deleteLogic(Func.toLongList(ids)));
}
/**
* 生态流量站点列表查询
* @param entity
* @param query
* @return
*/
@ApiLog
@GetMapping("/station/list")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "分页", notes = "EcologyFlowStationEntity")
public R<IPage<EcologyFlowStationEntity>> station_list(EcologyFlowStationEntity entity, Query query) {
IPage<EcologyFlowStationEntity> pages = stationService.page(Condition.getPage(query), Condition.getQueryWrapper(entity));
return R.data(pages);
}
/**
* 生态流量站点详情
* @param entity
* @return
*/
@ApiLog
@RequestMapping(value = "/station/detail", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperationSupport(order = 4)
@ApiOperation(value = "详情", notes = "EcologyFlowStationEntity")
public R<EcologyFlowStationEntity> station_detail(EcologyFlowStationEntity entity) {
EcologyFlowStationEntity detail = stationService.getOne(Condition.getQueryWrapper(entity));
return R.data(detail);
}
/**
* 生态流量站点新增或修改
* @param entity
* @return
*/
@PostMapping("/data/submit")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "新增或修改", notes = "EcologyFlowDataEntity")
public R data_submit(@Valid @RequestBody EcologyFlowDataEntity entity) {
return R.status(dataService.saveOrUpdate(entity));
}
/**
* 生态流量站点删除
* @param ids
* @return
*/
@PostMapping("/data/remove")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "逻辑删除", notes = "传入ids")
public R data_remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
return R.status(dataService.deleteLogic(Func.toLongList(ids)));
}
/**
* 生态流量站点列表查询
* @param entity
* @param query
* @return
*/
@ApiLog
@GetMapping("/data/list")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "分页", notes = "EcologyFlowdataEntity")
public R<IPage<EcologyFlowDataEntity>> data_list(EcologyFlowDataEntity entity, Query query) {
IPage<EcologyFlowDataEntity> pages = dataService.page(Condition.getPage(query), Condition.getQueryWrapper(entity));
return R.data(pages);
}
/**
* 生态流量站点详情
* @param entity
* @return
*/
@ApiLog
@RequestMapping(value = "/data/detail", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperationSupport(order = 4)
@ApiOperation(value = "详情", notes = "EcologyFlowdataEntity")
public R<EcologyFlowDataEntity> data_detail(EcologyFlowDataEntity entity) {
EcologyFlowDataEntity detail = dataService.getOne(Condition.getQueryWrapper(entity));
return R.data(detail);
}
}

11
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/mapper/EcologyFlowDataMapper.java

@ -0,0 +1,11 @@
package com.hnac.hzims.operational.ecology.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowDataEntity;
/**
* @author YSJ
*/
public interface EcologyFlowDataMapper extends BaseMapper<EcologyFlowDataEntity> {
}

5
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/mapper/EcologyFlowDataMapper.xml

@ -0,0 +1,5 @@
<?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.hnac.hzims.operational.ecology.mapper.EcologyFlowDataMapper">
</mapper>

11
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/mapper/EcologyFlowStationMapper.java

@ -0,0 +1,11 @@
package com.hnac.hzims.operational.ecology.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowStationEntity;
/**
* @author YSJ
*/
public interface EcologyFlowStationMapper extends BaseMapper<EcologyFlowStationEntity> {
}

4
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/mapper/EcologyFlowStationMapper.xml

@ -0,0 +1,4 @@
<?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.hnac.hzims.operational.ecology.mapper.EcologyFlowStationMapper">
</mapper>

14
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/service/EcologyFlowDataService.java

@ -0,0 +1,14 @@
package com.hnac.hzims.operational.ecology.service;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowDataEntity;
import com.hnac.hzims.operational.ecology.vo.TrendChartVo;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
* 告警处理接口
* @author ysj
*/
public interface EcologyFlowDataService extends BaseService<EcologyFlowDataEntity> {
}

22
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/service/EcologyFlowStationService.java

@ -0,0 +1,22 @@
package com.hnac.hzims.operational.ecology.service;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowStationEntity;
import com.hnac.hzims.operational.ecology.vo.EcologFlowStationVo;
import com.hnac.hzims.operational.ecology.vo.TrendChartVo;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
* 告警处理接口
* @author ysj
*/
public interface EcologyFlowStationService extends BaseService<EcologyFlowStationEntity> {
EcologFlowStationVo station_top();
Boolean generate(Long mon,String year);
List<TrendChartVo> trend_chart(String type);
}

30
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/service/impl/EcologyFlowDataServiceImpl.java

@ -0,0 +1,30 @@
package com.hnac.hzims.operational.ecology.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowDataEntity;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowStationEntity;
import com.hnac.hzims.operational.ecology.mapper.EcologyFlowDataMapper;
import com.hnac.hzims.operational.ecology.service.EcologyFlowDataService;
import com.hnac.hzims.operational.ecology.service.EcologyFlowStationService;
import com.hnac.hzims.operational.ecology.vo.TrendChartVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* 历史告警实现类
* @author ysj
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class EcologyFlowDataServiceImpl extends BaseServiceImpl<EcologyFlowDataMapper, EcologyFlowDataEntity> implements EcologyFlowDataService {
}

145
hzims-service/operational/src/main/java/com/hnac/hzims/operational/ecology/service/impl/EcologyFlowStationServiceImpl.java

@ -0,0 +1,145 @@
package com.hnac.hzims.operational.ecology.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowDataEntity;
import com.hnac.hzims.operational.ecology.entity.EcologyFlowStationEntity;
import com.hnac.hzims.operational.ecology.mapper.EcologyFlowStationMapper;
import com.hnac.hzims.operational.ecology.service.EcologyFlowDataService;
import com.hnac.hzims.operational.ecology.service.EcologyFlowStationService;
import com.hnac.hzims.operational.ecology.vo.DemonstrateTopVo;
import com.hnac.hzims.operational.ecology.vo.EcologFlowStationVo;
import com.hnac.hzims.operational.ecology.vo.TrendChartVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* 历史告警实现类
* @author ysj
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class EcologyFlowStationServiceImpl extends BaseServiceImpl<EcologyFlowStationMapper, EcologyFlowStationEntity> implements EcologyFlowStationService {
private final EcologyFlowDataService dataService;
/**
* 数据初始化
* @return
*/
@Override
public Boolean generate(Long mon,String year) {
// 步骤1.查询站点列表
List<EcologyFlowStationEntity> ecologys = this.list();
if(CollectionUtil.isEmpty(ecologys)){
return false;
}
Random random=new Random();
List<EcologyFlowDataEntity> datas = new ArrayList<>();
for(EcologyFlowStationEntity ecology : ecologys){
int iter = Math.toIntExact(mon);
while (Math.abs(iter) > 0){
EcologyFlowDataEntity entity = new EcologyFlowDataEntity();
entity.setMon(year + "-" + ((iter > 10) ? iter : "0" + iter));
entity.setStationId(ecology.getStationId());
entity.setStationName(ecology.getStationName());
entity.setOnLine(BigDecimal.valueOf(random.nextDouble() * 100));
entity.setComplete(BigDecimal.valueOf(random.nextDouble() * 100));
entity.setTimely(BigDecimal.valueOf(random.nextDouble() * 100));
entity.setDemonstrate(BigDecimal.valueOf(random.nextDouble() * 100));
datas.add(entity);
iter--;
}
}
return this.dataService.saveBatch(datas);
}
/**
* 站点数据达标率排行榜
* @return
*/
@Override
public EcologFlowStationVo station_top() {
List<EcologyFlowStationEntity> stations = this.list();
if(CollectionUtil.isEmpty(stations)){
return new EcologFlowStationVo();
}
EcologFlowStationVo station = new EcologFlowStationVo();
station.setComplete(BigDecimal.valueOf((int) stations.stream().filter(o -> o.getIsComplete().equals(1L)).count() / (double) stations.size() * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
station.setOnLine(BigDecimal.valueOf((int) stations.stream().filter(o -> o.getIsOnLine().equals(1L)).count() / (double) stations.size() * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
station.setDemonstrate(BigDecimal.valueOf((int) stations.stream().filter(o -> o.getIsDemonstrate().equals(1L)).count() / (double) stations.size() * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
station.setTimely(BigDecimal.valueOf((int) stations.stream().filter(o -> o.getIsTimely().equals(1L)).count() / (double) stations.size() * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
station.setCount(stations.size());
List<EcologyFlowDataEntity> datas = dataService.list(Wrappers.<EcologyFlowDataEntity>lambdaQuery().
like(EcologyFlowDataEntity::getMon, DateUtil.format(new Date(),"yyyy-MM")));
if(CollectionUtil.isEmpty(datas)){
return station;
}
station.setTops(datas.stream().map(data->{
DemonstrateTopVo top = new DemonstrateTopVo();
top.setStationId(data.getStationId());
top.setStationName(data.getStationName());
top.setDemonstrate(data.getDemonstrate());
return top;
}).sorted(Comparator.comparing(DemonstrateTopVo::getDemonstrate).reversed()).collect(Collectors.toList()));
return station;
}
/**
* 指标趋势图
* @param type
* @return
*/
@Override
public List<TrendChartVo> trend_chart(String type) {
LambdaQueryWrapper<EcologyFlowDataEntity> wrapper = new LambdaQueryWrapper<>();
if("0".equals(type)){
wrapper.like(EcologyFlowDataEntity::getMon, DateUtil.format(new Date(),"yyyy"));
}
List<EcologyFlowDataEntity> datas = this.dataService.list(wrapper);
if(CollectionUtil.isEmpty(datas)){
return new ArrayList<>();
}
List<TrendChartVo> charts;
if("0".equals(type)){
Map<String,List<EcologyFlowDataEntity>> map = datas.stream().collect(Collectors.groupingBy(EcologyFlowDataEntity::getMon));
charts = map.entrySet().stream().map(entry->{
TrendChartVo chart = new TrendChartVo();
Date date = DateUtil.parse(entry.getKey() + "-01 00:00:00",DateUtil.PATTERN_DATETIME);
chart.setTs(date.getMonth() + 1);
chart.setTimely(entry.getValue().stream().mapToDouble(o->o.getTimely().doubleValue()).average().getAsDouble());
chart.setDemonstrate(entry.getValue().stream().mapToDouble(o->o.getDemonstrate().doubleValue()).average().getAsDouble());
chart.setOnLine(entry.getValue().stream().mapToDouble(o->o.getOnLine().doubleValue()).average().getAsDouble());
chart.setComplete(entry.getValue().stream().mapToDouble(o->o.getComplete().doubleValue()).average().getAsDouble());
return chart;
}).collect(Collectors.toList());
}else{
Map<String,List<EcologyFlowDataEntity>> map = datas.stream().peek(o->{
Date date = DateUtil.parse(o.getMon() + "-01 00:00:00",DateUtil.PATTERN_DATETIME);
o.setMon(DateUtil.format(date,"yyyy"));
}).collect(Collectors.groupingBy(EcologyFlowDataEntity::getMon));
charts = map.entrySet().stream().map(entry->{
TrendChartVo chart = new TrendChartVo();
chart.setTs(Integer.valueOf(entry.getKey()));
chart.setTimely(entry.getValue().stream().mapToDouble(o->o.getTimely().doubleValue()).average().getAsDouble());
chart.setDemonstrate(entry.getValue().stream().mapToDouble(o->o.getDemonstrate().doubleValue()).average().getAsDouble());
chart.setOnLine(entry.getValue().stream().mapToDouble(o->o.getOnLine().doubleValue()).average().getAsDouble());
chart.setComplete(entry.getValue().stream().mapToDouble(o->o.getComplete().doubleValue()).average().getAsDouble());
return chart;
}).collect(Collectors.toList());
}
return charts.stream().sorted(Comparator.comparing(TrendChartVo::getTs)).collect(Collectors.toList());
}
}

2
hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java

@ -989,7 +989,7 @@ public class HydropowerServiceImpl implements HydropowerService {
return hydropower; return hydropower;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
/** /**
* 水电站区域指标 * 水电站区域指标
* @param deptId * @param deptId

Loading…
Cancel
Save