mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
bugfix
This commit is contained in:
@@ -2,6 +2,7 @@ package cn.lihongjie.coal.base.dto;
|
||||
|
||||
import cn.lihongjie.coal.exception.BizException;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.common.base.Splitter;
|
||||
|
||||
import io.vavr.Function4;
|
||||
@@ -12,13 +13,11 @@ import jakarta.persistence.criteria.*;
|
||||
import jakarta.persistence.metamodel.Attribute;
|
||||
import jakarta.persistence.metamodel.EntityType;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.With;
|
||||
import lombok.*;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder;
|
||||
import org.springframework.core.convert.ConversionFailedException;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Sort;
|
||||
@@ -503,21 +502,17 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("in", String.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
.map(i -> c.convert(i, String.class))
|
||||
.toList());
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x)).map(i -> c.convert(i, String.class)).toList());
|
||||
});
|
||||
|
||||
map.put(
|
||||
Tuple.of("in", Integer.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, Integer.class))
|
||||
.toList());
|
||||
});
|
||||
@@ -525,10 +520,9 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("in", Long.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, Long.class))
|
||||
.toList());
|
||||
});
|
||||
@@ -536,20 +530,18 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("in", Double.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, Double.class))
|
||||
.toList());
|
||||
});
|
||||
map.put(
|
||||
Tuple.of("in", BigDecimal.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, BigDecimal.class))
|
||||
.toList());
|
||||
});
|
||||
@@ -557,20 +549,18 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("in", LocalDate.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, LocalDate.class))
|
||||
.toList());
|
||||
});
|
||||
map.put(
|
||||
Tuple.of("in", LocalDateTime.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, LocalDateTime.class))
|
||||
.toList());
|
||||
});
|
||||
@@ -578,10 +568,9 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("nin", String.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, String.class))
|
||||
.toList())
|
||||
.not();
|
||||
@@ -590,10 +579,9 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("nin", Integer.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, Integer.class))
|
||||
.toList())
|
||||
.not();
|
||||
@@ -602,10 +590,9 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("nin", Long.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, Long.class))
|
||||
.toList())
|
||||
.not();
|
||||
@@ -614,10 +601,9 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("nin", Double.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, Double.class))
|
||||
.toList())
|
||||
.not();
|
||||
@@ -625,10 +611,9 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("nin", BigDecimal.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, BigDecimal.class))
|
||||
.toList())
|
||||
.not();
|
||||
@@ -637,10 +622,9 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("nin", LocalDate.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, LocalDate.class))
|
||||
.toList())
|
||||
.not();
|
||||
@@ -648,16 +632,27 @@ public class CommonQuery {
|
||||
map.put(
|
||||
Tuple.of("nin", LocalDateTime.class),
|
||||
(Root root, CriteriaBuilder criteriaBuilder, QueryItem x, ConversionService c) -> {
|
||||
return criteriaBuilder
|
||||
.in(parseKey(root, x.key))
|
||||
.in(
|
||||
Arrays.stream(x.value.split(","))
|
||||
return ((SqmCriteriaNodeBuilder)criteriaBuilder)
|
||||
.in(parseKey(root, x.key),
|
||||
Arrays.stream(getArray(x))
|
||||
.map(i -> c.convert(i, LocalDateTime.class))
|
||||
.toList())
|
||||
.not();
|
||||
});
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public static String[] getArray(QueryItem x) {
|
||||
if (!StringUtils.isEmpty(x.value)) {
|
||||
|
||||
if (x.value.startsWith("[")){
|
||||
return new ObjectMapper().readValue(x.value, String[].class);
|
||||
}
|
||||
return x.value.split(",");
|
||||
}
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
private List<QueryItem> items;
|
||||
private Integer pageNo = 0;
|
||||
private Integer pageSize = Integer.MAX_VALUE;
|
||||
|
||||
@@ -24,6 +24,8 @@ import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class MeterMonthLogService
|
||||
@@ -73,6 +75,7 @@ public class MeterMonthLogService
|
||||
return page.map(this.mapper::toDto);
|
||||
}
|
||||
|
||||
|
||||
public void syncMeter(String meterId) {
|
||||
|
||||
MeterEntity meter = new MeterEntity();
|
||||
@@ -83,11 +86,11 @@ public class MeterMonthLogService
|
||||
entityManager.createNativeQuery(
|
||||
"""
|
||||
|
||||
select DATE_TRUNC('month', time)::date as time,
|
||||
select cast(DATE_TRUNC('month', time) as date) as time,
|
||||
meter_id,
|
||||
sum(usage) as value
|
||||
from t_meter_log
|
||||
where meter_id = :meterId group by DATE_TRUNC('month', time)::date, meter_id
|
||||
where meter_id = :meterId group by cast(DATE_TRUNC('month', time) as date), meter_id
|
||||
""");
|
||||
|
||||
nativeQuery.setParameter("meterId", meterId);
|
||||
@@ -99,7 +102,7 @@ public class MeterMonthLogService
|
||||
Object[] result = (Object[]) o;
|
||||
MeterMonthLogEntity entity = new MeterMonthLogEntity();
|
||||
entity.setMeter(meter);
|
||||
entity.setTime((java.time.LocalDate) result[0]);
|
||||
entity.setTime(conversionService.convert(result[0], LocalDate.class));
|
||||
entity.setValue((Double) result[2]);
|
||||
repository.save(entity);
|
||||
});
|
||||
|
||||
15
src/main/resources/scripts/dict/enum/meterDict.groovy
Normal file
15
src/main/resources/scripts/dict/enum/meterDict.groovy
Normal file
@@ -0,0 +1,15 @@
|
||||
package scripts.dict
|
||||
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery
|
||||
import cn.lihongjie.coal.meter.controller.MeterController
|
||||
import org.springframework.context.ApplicationContext
|
||||
|
||||
ApplicationContext ioc = ioc
|
||||
|
||||
def controller = ioc.getBean(MeterController.class)
|
||||
|
||||
|
||||
|
||||
|
||||
return controller.list(new CommonQuery())
|
||||
|
||||
Reference in New Issue
Block a user