From 0202a7443e0d6d62948bcf3e34fcf31145b39e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Tue, 28 Mar 2023 11:28:39 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=20sonar=E3=80=91OnlCgreportHeadSer?= =?UTF-8?q?viceImpl=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/a/OnlCgreportHeadServiceImpl.java | 200 +++++++++--------- 1 file changed, 101 insertions(+), 99 deletions(-) diff --git a/jero-boot/jero-boot-base/jero-boot-base-generater/src/main/java/com/jero/generater/modules/online/cgreport/service/a/OnlCgreportHeadServiceImpl.java b/jero-boot/jero-boot-base/jero-boot-base-generater/src/main/java/com/jero/generater/modules/online/cgreport/service/a/OnlCgreportHeadServiceImpl.java index c36e1af9..f420290b 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-generater/src/main/java/com/jero/generater/modules/online/cgreport/service/a/OnlCgreportHeadServiceImpl.java +++ b/jero-boot/jero-boot-base/jero-boot-base-generater/src/main/java/com/jero/generater/modules/online/cgreport/service/a/OnlCgreportHeadServiceImpl.java @@ -13,7 +13,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.jero.common.api.vo.Result; import com.jero.common.exception.JeroBootException; @@ -38,6 +37,7 @@ import com.jero.generater.modules.online.cgreport.util.CgReportQueryParamUtil; import com.jero.generater.modules.online.cgreport.util.SqlUtil; import com.jero.generater.modules.online.config.util.DbTableUtil; import com.jero.generater.modules.online.config.exception.DBException; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -80,11 +80,7 @@ public class OnlCgreportHeadServiceImpl extends ServiceImpl(); + return getStringObjectMap(sql, onlCgreportHeadId, params, var4); + } + + private String getString(OnlCgreportParam var8, Object var9, String var10) { + if (var9 != null) { + var10 = var9.toString(); + } else if (oConvertUtils.isNotEmpty(var8.getParamValue())) { + var10 = var8.getParamValue(); + } + return var10; + } + + @NotNull + private Map getStringObjectMap(String sql, String onlCgreportHeadId, Map params, String var4) { + HashMap var20 = new HashMap<>(); int var21 = oConvertUtils.getInt(params.get("pageSize"), 10); int var22 = oConvertUtils.getInt(params.get("pageNo"), 1); - Page var24 = new Page<>(var22, var21); + Page> var24 = new Page<>(var22, var21); LambdaQueryWrapper var23 = new LambdaQueryWrapper<>(); var23.eq(OnlCgreportItem::getCgrheadId, onlCgreportHeadId); var23.eq(OnlCgreportItem::getIsSearch, 1); @@ -148,8 +158,8 @@ public class OnlCgreportHeadServiceImpl extends ServiceImpl var12 = var11.iterator(); var12.hasNext(); sql = sql.replace("${" + var13.getParamName() + "}", var15)) { + var13 = var12.next(); Object var14 = params.get("self_" + var13.getParamName()); var15 = ""; if (var14 != null) { @@ -186,10 +196,10 @@ public class OnlCgreportHeadServiceImpl extends ServiceImplquerySql: " + var17); log.info("多数据源 报表查询sql=>pageSQL: " + var20); log.info("多数据源 报表查询sql=>countSql: " + var18); - HashMap var21 = new HashMap<>(); - Map var22 = (Map)DynamicDBUtil.findOne(dbKey, var18, new Object[0]); + HashMap var21 = new HashMap<>(); + Map var22 = (Map)DynamicDBUtil.findOne(dbKey, var18); var21.put(TOTAL, var22.get(TOTAL)); - List> var23 = DynamicDBUtil.findList(dbKey, var20, new Object[0]); + List> var23 = DynamicDBUtil.findList(dbKey, var20); var21.put("records", CgformUtil.d(var23)); return var21; } @@ -199,7 +209,7 @@ public class OnlCgreportHeadServiceImpl extends ServiceImpl editAll(OnlCgreportModel values) { + public Result editAll(OnlCgreportModel values) { OnlCgreportHead var2 = values.getHead(); OnlCgreportHead var3 = super.getById(var2.getId()); if (var3 == null) { @@ -212,17 +222,16 @@ public class OnlCgreportHeadServiceImpl extends ServiceImpl var5 = new LambdaQueryWrapper<>(); var5.eq(OnlCgreportParam::getCgrheadId, var2.getId()); this.onlCgreportParamService.remove(var5); - Iterator var6 = values.getParams().iterator(); - + Iterator var6 = values.getParams().iterator(); + Iterator var9 = values.getItems().iterator(); while(var6.hasNext()) { - OnlCgreportParam var7 = (OnlCgreportParam)var6.next(); + OnlCgreportParam var7 = var6.next(); var7.setCgrheadId(var2.getId()); } - var6 = values.getItems().iterator(); - while(var6.hasNext()) { - OnlCgreportItem var8 = (OnlCgreportItem)var6.next(); + while(var9.hasNext()) { + OnlCgreportItem var8 = var9.next(); var8.setFieldName(var8.getFieldName().trim().toLowerCase()); var8.setCgrheadId(var2.getId()); } @@ -237,7 +246,7 @@ public class OnlCgreportHeadServiceImpl extends ServiceImpl delete(String id) { + public Result delete(String id) { boolean var2 = super.removeById(id); if (var2) { LambdaQueryWrapper var3 = new LambdaQueryWrapper<>(); @@ -255,7 +264,7 @@ public class OnlCgreportHeadServiceImpl extends ServiceImpl bathDelete(String[] ids) { + public Result bathDelete(String[] ids) { String[] var2 = ids; int var3 = ids.length; @@ -310,70 +319,81 @@ public class OnlCgreportHeadServiceImpl extends ServiceImpl> var9 = this.mapper.selectPageBySql(new Page<>(1L, 1L), var1); - List> var6 = var9.getRecords(); - if (var6.isEmpty()) { - throw new JeroBootException("该报表sql没有数据"); - } - - var3 = ((Map)var6.get(0)).keySet(); - } - - if (var3 != null) { - var3.remove("ROW_ID"); - } - - return new ArrayList(var3); + return getStrings(var1, var2); } } + @NotNull + private List getStrings(String var1, String var2) throws SQLException { + var1 = var1.trim(); + if (var1.endsWith(";")) { + var1 = var1.substring(0, var1.length() - 1); + } + + var1 = QueryGenerator.convertSystemVariables(var1); + var1 = SqlUtil.a(var1); + Set var3; + if (StringUtils.isNotBlank(var2)) { + log.info("parse sql : " + var1); + DynamicDataSourceModel var4 = DataSourceCachePool.getCacheDynamicDataSourceModel(var2); + var1 = getString(var1, var4); + + log.info("parse sql with page : " + var1); + Map var5 = (Map) DynamicDBUtil.findOne(var2, var1); + if (var5 == null) { + throw new JeroBootException("该报表sql没有数据"); + } + + var3 = var5.keySet(); + } else { + log.info("parse sql: " + var1); + String var8 = null; + + try { + var8 = DbTableUtil.getDatabaseType(); + } catch (DBException var7) { + var7.printStackTrace(); + } + + if (ReUtil.contains(ORDER_S_BY, var1.toLowerCase()) && "SQLSERVER".equalsIgnoreCase(var8)) { + throw new JeroBootException(SQL_SERVER_NOT_ORDER); + } + + IPage> var9 = this.mapper.selectPageBySql(new Page<>(1L, 1L), var1); + List> var6 = var9.getRecords(); + if (var6.isEmpty()) { + throw new JeroBootException("该报表sql没有数据"); + } + + var3 = ((Map)var6.get(0)).keySet(); + } + + if (var3 != null) { + var3.remove("ROW_ID"); + } + + return new ArrayList<>(var3); + } + + @NotNull + private String getString(String var1, DynamicDataSourceModel var4) { + if (ReUtil.contains(ORDER_S_BY, var1.toLowerCase()) && "3".equalsIgnoreCase(var4.getDbType())) { + throw new JeroBootException(SQL_SERVER_NOT_ORDER); + } + + if ("1".equals(var4.getDbType())) { + var1 = "SELECT * FROM (" + var1 + ") temp LIMIT 1"; + } else if ("2".equals(var4.getDbType())) { + var1 = "SELECT * FROM (" + var1 + ") temp WHERE ROWNUM <= 1"; + } else if ("3".equals(var4.getDbType())) { + var1 = "SELECT TOP 1 * FROM (" + var1 + ") temp"; + } + return var1; + } + @Override public Map queryCgReportConfig(String reportId) { - HashMap var2 = new HashMap<>(0); + HashMap var2 = new HashMap<>(0); Map var3 = this.mapper.queryCgReportMainConfig(reportId); List> var4 = this.mapper.queryCgReportItems(reportId); List var5 = this.mapper.queryCgReportParams(reportId); @@ -388,22 +408,4 @@ public class OnlCgreportHeadServiceImpl extends ServiceImpl> queryByCgReportSql(String sql, Map params, Map paramData, int pageNo, int pageSize) { - String var6 = SqlUtil.a(sql, params); - List var7 = new ArrayList<>(); - - if (pageNo == -1 && pageSize == -1) { - var7 = this.mapper.executeSelete(var6); - } else { - Page> var8 = new Page<>(pageNo, pageSize); - IPage> var9 = this.mapper.selectPageBySql(var8, var6); - if (!CollectionUtils.isEmpty(var9.getRecords())) { - var7.addAll(var9.getRecords()); - } - } - - return var7; - } }