diff --git a/src/main/java/cn/lihongjie/coal/common/JpaUtils.java b/src/main/java/cn/lihongjie/coal/common/JpaUtils.java index fa57d5f3..c2160872 100644 --- a/src/main/java/cn/lihongjie/coal/common/JpaUtils.java +++ b/src/main/java/cn/lihongjie/coal/common/JpaUtils.java @@ -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 map = (Map) 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)); }); } } diff --git a/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java b/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java index 4ad0f690..378e2acf 100644 --- a/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java +++ b/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java @@ -25,4 +25,7 @@ public class DeviceCategoryEntity extends OrgCommonEntity { @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) private List children; + + + } diff --git a/src/main/java/cn/lihongjie/coal/pdcDeviceData/service/PdcDeviceDataService.java b/src/main/java/cn/lihongjie/coal/pdcDeviceData/service/PdcDeviceDataService.java index a11aca9c..fd0bb736 100644 --- a/src/main/java/cn/lihongjie/coal/pdcDeviceData/service/PdcDeviceDataService.java +++ b/src/main/java/cn/lihongjie/coal/pdcDeviceData/service/PdcDeviceDataService.java @@ -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 deviceName??> - and pd.name like '%' || :deviceName '%' + and pd.name like '%' || :deviceName || '%' <#if deviceCode??> - and pd.code like '%' || :deviceCode '%' + and pd.code like '%' || :deviceCode || '%' - 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 + diff --git a/src/main/java/cn/lihongjie/coal/sequence/SequenceService.java b/src/main/java/cn/lihongjie/coal/sequence/SequenceService.java new file mode 100644 index 00000000..dbcb9b4c --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/sequence/SequenceService.java @@ -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); + } +}