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,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));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,4 +25,7 @@ public class DeviceCategoryEntity extends OrgCommonEntity {
|
||||
|
||||
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
|
||||
private List<DeviceCategoryEntity> children;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user