From 3a86ae3980efd82a529d217d7189a49ba189fb04 Mon Sep 17 00:00:00 2001 From: alwaysfrin <39822157+alwaysfrin@users.noreply.github.com> Date: Tue, 18 Dec 2018 14:24:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=9A=E7=94=A8=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/pojo/base/jpa/dao/BaseRepository.java | 15 ++++ .../pojo/base/jpa/daoimpl/BaseRepositoryImpl.java | 96 ++++++++++++++++++++++ 2 files changed, 111 insertions(+) diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java index a3b1b31..728affc 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java @@ -252,4 +252,19 @@ public interface BaseRepository extends JpaReposito public boolean isExitBySql(String sql); + public double countSumByProperty(String sumPropertyName,String groupByName,String propertyName, Object value); + + public double countSumByProperties(String sumPropertyName,String groupByName,String[] paramName,Object[] paramValue); + + public double countAvgByProperty(String sumPropertyName,String groupByName,String propertyName, Object value); + + public double countAvgByProperties(String sumPropertyName,String groupByName,String[] paramName,Object[] paramValue); + + public double findMaxByProperty(String sumPropertyName,String groupByName,String propertyName, Object value); + + public double findMaxByProperties(String sumPropertyName,String groupByName,String[] paramName,Object[] paramValue); + + public double findMinByProperty(String sumPropertyName,String groupByName,String propertyName, Object value); + + public double findMinByProperties(String sumPropertyName,String groupByName,String[] paramName,Object[] paramValue); } diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java index c6ae550..07acd52 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java @@ -1018,4 +1018,100 @@ public class BaseRepositoryImpl extends SimpleJpaRep public boolean isExitBySql(String sql) { return findBySqlCount(sql) > 0; } + + @Override + public double countSumByProperty(String sumPropertyName, String groupByName, String propertyName, Object value) { + return countSumByProperties(sumPropertyName,groupByName,new String[]{propertyName},new Object[]{value}); + } + + @Override + public double countSumByProperties(String sumPropertyName, String groupByName, String[] paramName, Object[] paramValue) { + if ((paramName != null) && (paramName.length > 0) && (paramValue != null) && (paramValue.length > 0)) { + StringBuffer sb = new StringBuffer("select sum(:"+sumPropertyName+") from " + persistentClass.getName() + " model where 1=1 "); + appendQL(sb,paramName,paramValue); + sb.append(" group by :groupByName"); + + Query query = entityManager.createQuery(sb.toString()); + query.setParameter(":sumPropertyName", sumPropertyName); + setParameter(query,paramName,paramValue); + query.setParameter(":groupByName", groupByName); + + Double sumResult = entityManager.createQuery(query.toString(),Double.class).getSingleResult(); + return sumResult == null ? 0.0 : sumResult.doubleValue(); + }else{ + throw new IllegalArgumentException("sum查询错误!paramName:" + paramName + ",paramValue:" + paramValue); + } + } + + @Override + public double countAvgByProperty(String sumPropertyName, String groupByName, String propertyName, Object value) { + return countAvgByProperties(sumPropertyName,groupByName,new String[]{propertyName},new Object[]{value}); + } + + @Override + public double countAvgByProperties(String sumPropertyName, String groupByName, String[] paramName, Object[] paramValue) { + if ((paramName != null) && (paramName.length > 0) && (paramValue != null) && (paramValue.length > 0)) { + StringBuffer sb = new StringBuffer("select avg(:"+sumPropertyName+") from " + persistentClass.getName() + " model where 1=1 "); + appendQL(sb,paramName,paramValue); + sb.append(" group by :groupByName"); + + Query query = entityManager.createQuery(sb.toString()); + query.setParameter(":sumPropertyName", sumPropertyName); + setParameter(query,paramName,paramValue); + query.setParameter(":groupByName", groupByName); + + Double sumResult = entityManager.createQuery(query.toString(),Double.class).getSingleResult(); + return sumResult == null ? 0.0 : sumResult.doubleValue(); + }else{ + throw new IllegalArgumentException("sum查询错误!paramName:" + paramName + ",paramValue:" + paramValue); + } + } + + @Override + public double findMaxByProperty(String sumPropertyName, String groupByName, String propertyName, Object value) { + return findMaxByProperties(sumPropertyName,groupByName,new String[]{propertyName},new Object[]{value}); + } + + @Override + public double findMaxByProperties(String sumPropertyName, String groupByName, String[] paramName, Object[] paramValue) { + if ((paramName != null) && (paramName.length > 0) && (paramValue != null) && (paramValue.length > 0)) { + StringBuffer sb = new StringBuffer("select max(:"+sumPropertyName+") from " + persistentClass.getName() + " model where 1=1 "); + appendQL(sb,paramName,paramValue); + sb.append(" group by :groupByName"); + + Query query = entityManager.createQuery(sb.toString()); + query.setParameter(":sumPropertyName", sumPropertyName); + setParameter(query,paramName,paramValue); + query.setParameter(":groupByName", groupByName); + + Double sumResult = entityManager.createQuery(query.toString(),Double.class).getSingleResult(); + return sumResult == null ? 0.0 : sumResult.doubleValue(); + }else{ + throw new IllegalArgumentException("sum查询错误!paramName:" + paramName + ",paramValue:" + paramValue); + } + } + + @Override + public double findMinByProperty(String sumPropertyName, String groupByName, String propertyName, Object value) { + return findMinByProperties(sumPropertyName,groupByName,new String[]{propertyName},new Object[]{value}); + } + + @Override + public double findMinByProperties(String sumPropertyName, String groupByName, String[] paramName, Object[] paramValue) { + if ((paramName != null) && (paramName.length > 0) && (paramValue != null) && (paramValue.length > 0)) { + StringBuffer sb = new StringBuffer("select min(:"+sumPropertyName+") from " + persistentClass.getName() + " model where 1=1 "); + appendQL(sb,paramName,paramValue); + sb.append(" group by :groupByName"); + + Query query = entityManager.createQuery(sb.toString()); + query.setParameter(":sumPropertyName", sumPropertyName); + setParameter(query,paramName,paramValue); + query.setParameter(":groupByName", groupByName); + + Double sumResult = entityManager.createQuery(query.toString(),Double.class).getSingleResult(); + return sumResult == null ? 0.0 : sumResult.doubleValue(); + }else{ + throw new IllegalArgumentException("sum查询错误!paramName:" + paramName + ",paramValue:" + paramValue); + } + } }