mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
完善
This commit is contained in:
@@ -4,10 +4,7 @@ import cn.lihongjie.coal.annotation.OrgScope;
|
||||
import cn.lihongjie.coal.annotation.SysLog;
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.CreatePdcDeviceDataDto;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.GetReportRequest;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.PdcDeviceDataDto;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.UpdatePdcDeviceDataDto;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.*;
|
||||
import cn.lihongjie.coal.pdcDeviceData.service.PdcDeviceDataService;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -57,4 +54,9 @@ public class PdcDeviceDataController {
|
||||
public Object getReport(@RequestBody GetReportRequest request) {
|
||||
return this.service.getReport(request);
|
||||
}
|
||||
|
||||
@PostMapping("/getReport2")
|
||||
public Object getReport2(@RequestBody GetReport2Request request) {
|
||||
return this.service.getReport2(request);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package cn.lihongjie.coal.pdcDeviceData.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class GetReport2Request {
|
||||
|
||||
private String deviceName;
|
||||
|
||||
private String deviceCode;
|
||||
|
||||
private String deviceGroup;
|
||||
|
||||
@Comment(
|
||||
"""
|
||||
时间维度
|
||||
year
|
||||
month
|
||||
week
|
||||
day
|
||||
hour
|
||||
""")
|
||||
private String timeDimension;
|
||||
|
||||
|
||||
private LocalDateTime startTime;
|
||||
private LocalDateTime endTime;
|
||||
|
||||
private String td;
|
||||
|
||||
}
|
||||
@@ -4,13 +4,11 @@ import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.base.service.BaseService;
|
||||
import cn.lihongjie.coal.common.Ctx;
|
||||
import cn.lihongjie.coal.common.FreeMakerUtils;
|
||||
import cn.lihongjie.coal.common.JpaUtils;
|
||||
import cn.lihongjie.coal.dbFunctions.DbFunctionService;
|
||||
import cn.lihongjie.coal.pdcDevice.service.PdcDeviceService;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.CreatePdcDeviceDataDto;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.GetReportRequest;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.PdcDeviceDataDto;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.UpdatePdcDeviceDataDto;
|
||||
import cn.lihongjie.coal.pdcDeviceData.dto.*;
|
||||
import cn.lihongjie.coal.pdcDeviceData.entity.PdcDeviceDataEntity;
|
||||
import cn.lihongjie.coal.pdcDeviceData.mapper.PdcDeviceDataMapper;
|
||||
import cn.lihongjie.coal.pdcDeviceData.repository.PdcDeviceDataRepository;
|
||||
@@ -94,21 +92,75 @@ public class PdcDeviceDataService
|
||||
|
||||
@PersistenceContext EntityManager em;
|
||||
|
||||
public List<Map> getReport2(GetReport2Request request) {
|
||||
|
||||
request.setTd("1 " + request.getTimeDimension());
|
||||
|
||||
return JpaUtils.execNativeQuery(
|
||||
em,
|
||||
FreeMakerUtils.render(
|
||||
"""
|
||||
|
||||
select time_bucket_gapfill(:td, dd.time) as bucket,
|
||||
device_id,
|
||||
pd.code,
|
||||
pd.name,
|
||||
min(dd.total_data) as min_total,
|
||||
max(dd.total_data) as max_total,
|
||||
coalesce(max(dd.total_data) - min(dd.total_data), 0) as buckt_total
|
||||
|
||||
|
||||
from t_pdc_device_data dd
|
||||
inner join t_pdc_device pd on dd.device_id = pd.id
|
||||
|
||||
where dd.time >= :startTime
|
||||
and dd.time <= :endTime
|
||||
|
||||
<#if deviceGroup??>
|
||||
|
||||
and pd.device_group like '%' || :deviceGroup '%'
|
||||
|
||||
</#if>
|
||||
|
||||
|
||||
<#if deviceName??>
|
||||
|
||||
and pd.name like '%' || :deviceName '%'
|
||||
|
||||
</#if>
|
||||
|
||||
<#if deviceCode??>
|
||||
|
||||
and pd.code like '%' || :deviceCode '%'
|
||||
|
||||
</#if>
|
||||
|
||||
group by bucket, dd.device_id, pd.code, pd.name
|
||||
|
||||
|
||||
|
||||
""", request),
|
||||
request,
|
||||
Map.class);
|
||||
}
|
||||
|
||||
public List<Map> getReport(GetReportRequest request) {
|
||||
|
||||
Tuple minMaxTime = em.createQuery(
|
||||
"select min(d.time) as minTime, max(d.time) as maxTime from PdcDeviceDataEntity d where d.time >= :startTime and d.time<=:endTime and d.device.deviceGroup = :deviceGroup and d.organizationId = :organizationId", Tuple.class)
|
||||
.setParameter("startTime", request.getStartTime())
|
||||
.setParameter(
|
||||
"endTime",
|
||||
request.getEndTime().isAfter(LocalDateTime.now())
|
||||
? LocalDateTime.now()
|
||||
: request.getEndTime())
|
||||
.setParameter("deviceGroup", request.getDeviceGroup())
|
||||
.setParameter("organizationId", Ctx.currentUser().getOrganizationId())
|
||||
.getSingleResult();
|
||||
Tuple minMaxTime =
|
||||
em.createQuery(
|
||||
"select min(d.time) as minTime, max(d.time) as maxTime from PdcDeviceDataEntity d where d.time >= :startTime and d.time<=:endTime and d.device.deviceGroup = :deviceGroup and d.organizationId = :organizationId",
|
||||
Tuple.class)
|
||||
.setParameter("startTime", request.getStartTime())
|
||||
.setParameter(
|
||||
"endTime",
|
||||
request.getEndTime().isAfter(LocalDateTime.now())
|
||||
? LocalDateTime.now()
|
||||
: request.getEndTime())
|
||||
.setParameter("deviceGroup", request.getDeviceGroup())
|
||||
.setParameter("organizationId", Ctx.currentUser().getOrganizationId())
|
||||
.getSingleResult();
|
||||
|
||||
if (minMaxTime == null ) {
|
||||
if (minMaxTime == null) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ public class WeightDeviceDataService
|
||||
where += " and d.specification = :specification ";
|
||||
}
|
||||
|
||||
where += " and ( d.invalid is null or !d.invalid ) ";
|
||||
where += " and ( d.invalid is null or not d.invalid ) ";
|
||||
where += " and ( d.finished is null or d.finished ) ";
|
||||
|
||||
|
||||
@@ -264,7 +264,7 @@ public class WeightDeviceDataService
|
||||
countQuery.setParameter("specification", "%" + request.getSpecification() + "%");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var resultList = JpaUtils.convertTuplesToMap(selectQuery.getResultList());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user