tanghaihao
1 year ago
34 changed files with 955 additions and 141 deletions
@ -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; |
||||
} |
@ -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; |
||||
} |
@ -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; |
||||
} |
@ -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; |
||||
} |
@ -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; |
||||
} |
@ -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); |
||||
} |
||||
} |
@ -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> { |
||||
|
||||
} |
@ -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> |
@ -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> { |
||||
|
||||
} |
@ -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> |
@ -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> { |
||||
} |
@ -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); |
||||
} |
@ -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 { |
||||
|
||||
} |
@ -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()); |
||||
} |
||||
} |
@ -0,0 +1,97 @@
|
||||
package com.hnac.hzims.operational.main.vo; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField; |
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import org.springframework.format.annotation.DateTimeFormat; |
||||
|
||||
import java.time.YearMonth; |
||||
import java.util.Date; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author WL |
||||
* @Version v1.0 |
||||
* @Serial 1.0 |
||||
* @Date 2023/6/12 15:59 |
||||
*/ |
||||
@Data |
||||
public class OperPhenomenonVo { |
||||
|
||||
/** |
||||
* 缺陷等级 |
||||
*/ |
||||
private String defectLevel; |
||||
|
||||
/** |
||||
* 故障 |
||||
*/ |
||||
private String faultName; |
||||
|
||||
/** |
||||
* 缺陷来源 |
||||
*/ |
||||
private String sourceCode; |
||||
|
||||
|
||||
/** |
||||
* 所属机构 |
||||
*/ |
||||
private List<String> createDept; |
||||
|
||||
|
||||
/** |
||||
* 缺陷编码 |
||||
*/ |
||||
private String defectCode; |
||||
|
||||
|
||||
/** |
||||
* 发现时间 |
||||
*/ |
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
@ApiModelProperty(value = "发现时间") |
||||
private Date findTime; |
||||
|
||||
/** |
||||
* 甄别状态:已甄别 1 和未甄别 0 ,默认0 |
||||
*/ |
||||
@ApiModelProperty(value = "甄别状态:已甄别 1 和未甄别 0 ,默认0") |
||||
private String discriminateStatus; |
||||
|
||||
/** |
||||
* 计划开始时间 |
||||
*/ |
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
@ApiModelProperty(value = "计划开始时间") |
||||
private Date planStartTime; |
||||
/** |
||||
* 计划结束时间 |
||||
*/ |
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
@ApiModelProperty(value = "计划结束时间") |
||||
private Date planEndTime; |
||||
|
||||
|
||||
@ApiModelProperty(value = "年月") |
||||
@TableField(exist = false) |
||||
private YearMonth yearMonth; |
||||
|
||||
|
||||
@ApiModelProperty(value = "年月") |
||||
private String areaId; |
||||
|
||||
|
||||
@ApiModelProperty(value = "是否为缺陷 直接传0") |
||||
@TableField(exist = false) |
||||
private Integer defect; |
||||
|
||||
|
||||
@ApiModelProperty(value = "已定论1") |
||||
private Integer conclusionStatusNum; |
||||
|
||||
} |
@ -0,0 +1,69 @@
|
||||
package com.hnac.hzims.ticket.processflow.strategy.serviceimpl; |
||||
|
||||
import com.hnac.hzims.ticket.processflow.service.ProcessDictService; |
||||
import com.hnac.hzims.ticket.processflow.strategy.abstracts.ProcessAbstractService; |
||||
import com.hnac.hzims.ticket.processflow.strategy.entity.WorkflowQueue; |
||||
import com.hnac.hzims.ticket.response.ProcessWorkFlowResponse; |
||||
import com.hnac.hzims.ticket.twoTicket.service.TicketProcessService; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import static com.hnac.hzims.ticket.processflow.constant.TicketProcessConstant.FIRST_TICKET_KEY; |
||||
import static com.hnac.hzims.ticket.processflow.constant.TicketProcessConstant.MACHINERY_TICKET_KEY; |
||||
|
||||
/** |
||||
* 水力机械工作票实现类 |
||||
* |
||||
* @Author dfy |
||||
* @Version v1.0 |
||||
* @Serial 1.0 |
||||
* @Date 2023/3/28 8:47 |
||||
*/ |
||||
@Slf4j |
||||
@Service |
||||
@RequiredArgsConstructor |
||||
public class MachineryTicketProcessServiceImpl extends ProcessAbstractService { |
||||
|
||||
|
||||
|
||||
private final TicketProcessService ticketProcessService; |
||||
|
||||
|
||||
|
||||
private final ProcessDictService processDictService; |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** |
||||
* 设置执行那种实现类 |
||||
* |
||||
* @param flowQueue |
||||
* @return |
||||
*/ |
||||
@Override |
||||
public Boolean isWorkflowProcess(WorkflowQueue flowQueue) { |
||||
log.info("是否执行水力机械工作票流程环节操作~~~~,流程ticket: {}", flowQueue); |
||||
String dictValue = processDictService.selectDictValueByKey(MACHINERY_TICKET_KEY); |
||||
if (dictValue.equals(flowQueue.getProcessDefinitionKey())) { |
||||
log.info("已执行水力机械工作票流程环节操作~~~~"); |
||||
return true; |
||||
} |
||||
log.error("未是否执行水力机械工作票流程环节操作,请联系管理员~~~~"); |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 两票管理业务方法 |
||||
* |
||||
* @param response |
||||
*/ |
||||
@Override |
||||
public void calculate(ProcessWorkFlowResponse response) { |
||||
ticketProcessService.findPending(response); |
||||
} |
||||
} |
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue