This commit is contained in:
2024-05-01 23:30:23 +08:00
parent a15aec50b0
commit 3aeed0c90c
4 changed files with 70 additions and 14 deletions

View File

@@ -4,6 +4,8 @@ import static org.springframework.data.jpa.repository.query.QueryUtils.toOrders;
import com.google.common.base.CaseFormat;
import io.vavr.control.Try;
import jakarta.persistence.*;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
@@ -170,16 +172,16 @@ public class JpaUtils {
if (parameter instanceof Map) {
Map<String, Object> map = (Map<String, Object>) parameter;
for (String key : map.keySet()) {
query.setParameter(key, map.get(key));
Try.run(() -> query.setParameter(key, map.get(key)));
}
} else if (parameter instanceof Iterable<?> it) {
query.setParameter("param", it);
Try.run(() -> query.setParameter("param", it));
int index = 0;
for (Object o : it) {
query.setParameter("param" + index, o);
Try.run(() -> query.setParameter("param" + index, o));
}
} else {
@@ -188,7 +190,7 @@ public class JpaUtils {
.forEach(
x -> {
Object value = ReflectUtils.getFieldValue(parameter, x.getName());
query.setParameter(x.getName(), value);
Try.run(() -> query.setParameter(x.getName(), value));
});
}
}

View File

@@ -25,4 +25,7 @@ public class DeviceCategoryEntity extends OrgCommonEntity {
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private List<DeviceCategoryEntity> children;
}

View File

@@ -101,13 +101,14 @@ public class PdcDeviceDataService
FreeMakerUtils.render(
"""
select time_bucket_gapfill(:td, dd.time) as bucket,
select time_bucket_gapfill(cast(:td as interval), 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
pd.code as device_code,
pd.name as device_name,
pd.device_group,
round(min(dd.total_data)::::numeric, 2) as min_total,
round(max(dd.total_data)::::numeric, 2) as max_total,
round(cast(coalesce(max(dd.total_data) - min(dd.total_data) , 0) as numeric), 2) as bucket_total
from t_pdc_device_data dd
@@ -118,24 +119,26 @@ public class PdcDeviceDataService
<#if deviceGroup??>
and pd.device_group like '%' || :deviceGroup '%'
and pd.device_group like '%' || :deviceGroup || '%'
</#if>
<#if deviceName??>
and pd.name like '%' || :deviceName '%'
and pd.name like '%' || :deviceName || '%'
</#if>
<#if deviceCode??>
and pd.code like '%' || :deviceCode '%'
and pd.code like '%' || :deviceCode || '%'
</#if>
group by bucket, dd.device_id, pd.code, pd.name
group by bucket, dd.device_id, pd.code, pd.name, pd.device_group
order by dd.device_id, bucket

View File

@@ -0,0 +1,48 @@
package cn.lihongjie.coal.sequence;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.*;
@Component
@Slf4j
public class SequenceService {
@PersistenceContext EntityManager em;
public void createSequence(String name, Integer start, Integer step) {
int count =
em.createNativeQuery(
"CREATE SEQUENCE IF NOT EXISTS "
+ name
+ " START WITH "
+ start
+ " INCREMENT BY "
+ step)
.executeUpdate();
log.info("create sequence {} update count {}", name, count);
}
public Long nextVal(String name) {
return ((Number) em.createNativeQuery("select nextval(\"" + name + "\")").getSingleResult())
.longValue();
}
public Long currVal(String name) {
return ((Number) em.createNativeQuery("select currval(\"" + name + "\")").getSingleResult())
.longValue();
}
public void dropSequence(String name) {
int count = em.createNativeQuery("DROP SEQUENCE IF EXISTS " + name).executeUpdate();
log.info("drop sequence {} update count {}", name, count);
}
}