统计
This commit is contained in:
parent
7f91844201
commit
533aada392
@ -119,6 +119,8 @@ public class CalcUtils {
|
||||
CalcExpression = CalcExpression.replaceAll("isnull\\s*\\(\\s*(.*?)\\s*\\)", "($1 == null)");
|
||||
// 1. 替换逻辑运算符:and→&&,or→||
|
||||
String processed = CalcExpression.replaceAll("\\band|AND\\b", "&&").replaceAll("\\bor|OR\\b", "||");
|
||||
// ========== 新增:将<>替换为!=(兼容空格) ==========
|
||||
processed = processed.replaceAll("\\s*<>\\s*", "!=");
|
||||
// 2. 替换变量格式:[a] → #a
|
||||
processed = processed.replaceAll("\\[(\\w+)/(\\w+)\\]", "[$1_$2]");
|
||||
processed = processed.replaceAll("\\[([^]]+)\\]", "#$1");
|
||||
|
||||
@ -1,4 +1,8 @@
|
||||
package com.czlis.liswork.mapper.stats;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface StatsMapper {
|
||||
List<Map<String,Object>> getsqldata(String wheresql);
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import com.czlis.common.utils.StringUtils;
|
||||
import com.czlis.interfaceCommon.utils.CalcUtils;
|
||||
import com.czlis.interfaceCommon.utils.LisUtil;
|
||||
import com.czlis.interfaceCommon.utils.LisWorkUtils;
|
||||
import com.czlis.liswork.mapper.stats.StatsMapper;
|
||||
import com.czlis.liswork.mapper.xtwh.ComStatsParameterMapper;
|
||||
import com.czlis.liswork.mapper.xtwh.ComStatsTemplateMapper;
|
||||
import com.czlis.liswork.service.StatsService;
|
||||
@ -25,6 +26,8 @@ public class StatsServiceImpl implements StatsService {
|
||||
@Autowired
|
||||
ComStatsTemplateMapper comStatsTemplateMapper;
|
||||
@Autowired
|
||||
StatsMapper statsMapper;
|
||||
@Autowired
|
||||
LisWorkUtils lisWorkUtils;
|
||||
@Override
|
||||
public Result getTemplate(String statsCode){
|
||||
@ -91,24 +94,83 @@ public class StatsServiceImpl implements StatsService {
|
||||
if(list==null||list.isEmpty())return new Result("-1","入参为空");
|
||||
ComStatsTemplate template =LisUtil.mapToEntity(list,"Template",ComStatsTemplate.class);
|
||||
if(template==null )return new Result("-1","模板为空");
|
||||
List<ComStatsParameter> column=LisUtil.mapToEntityList(list,"Column",ComStatsParameter.class);
|
||||
if(column==null )return new Result("-1","字段为空");
|
||||
List<ComStatsParameter> columnlist=LisUtil.mapToEntityList(list,"Column",ComStatsParameter.class);
|
||||
if(columnlist==null )return new Result("-1","字段为空");
|
||||
List<ComStatsParameter> parameterlist=LisUtil.mapToEntityList(list,"Parameter",ComStatsParameter.class);
|
||||
if(parameterlist==null )return new Result("-1","筛选条件为空");
|
||||
String statsSql=template.getStatsSql();
|
||||
if(statsSql==null)return new Result("-1","sql语句为空");
|
||||
String where="";
|
||||
for(ComStatsParameter parameter :parameterlist){
|
||||
String value=parameter.getParamDefvalue();
|
||||
if(value==null)continue;
|
||||
if("".equals(value.trim()))continue;
|
||||
String precondition=parameter.getPrecondition();
|
||||
Result result=checkprecondition(precondition,parameterlist);
|
||||
if(!"0".equals(result.getCode()))return result;
|
||||
boolean flag=(boolean)result.getData();
|
||||
if(flag){
|
||||
where=where+" "+parameter.getParamSql();
|
||||
}
|
||||
if(precondition!=null&&!"".equals(precondition)) {
|
||||
Result result = checkprecondition(precondition, parameterlist);
|
||||
if (!"0".equals(result.getCode())) return result;
|
||||
boolean flag = (boolean) result.getData();
|
||||
if (flag) {
|
||||
where = where + " " + parameter.getParamSql();
|
||||
}
|
||||
}else{
|
||||
where = where + " " + parameter.getParamSql();
|
||||
}
|
||||
}
|
||||
Map<String,Object> map=new HashMap<>();
|
||||
return new Result("0","成功",statsSql+where);
|
||||
String columns="";
|
||||
String column="";
|
||||
for(ComStatsParameter parameter :columnlist){
|
||||
Long Sequence = parameter.getParamSequence();
|
||||
if(Sequence==null||Sequence==0)continue;
|
||||
String value=parameter.getParamCode();
|
||||
if(value==null)continue;
|
||||
if("".equals(value.trim()))continue;
|
||||
String paramsql=parameter.getParamSql();
|
||||
if(paramsql!=null&&!"".equals(paramsql)) {
|
||||
value = paramsql + " as " + value;
|
||||
}else{
|
||||
paramsql=value;
|
||||
}
|
||||
String type=parameter.getParamType();
|
||||
String precondition=parameter.getPrecondition();
|
||||
if(precondition!=null&&!"".equals(precondition)) {
|
||||
Result result = checkprecondition(precondition, parameterlist);
|
||||
if (!"0".equals(result.getCode())) return result;
|
||||
boolean flag = (boolean) result.getData();
|
||||
if (flag) {
|
||||
if(!"".equals(columns))columns=columns+",";
|
||||
columns = columns + value;
|
||||
if(!"6".equals(type)) {
|
||||
if(!"".equals(column))column=column+",";
|
||||
column = column + paramsql;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(!"".equals(columns))columns=columns+",";
|
||||
columns = columns + value;
|
||||
if(!"6".equals(type)) {
|
||||
if(!"".equals(column))column=column+",";
|
||||
column = column + paramsql;
|
||||
}
|
||||
}
|
||||
}
|
||||
statsSql=statsSql.replace("[where]",where);
|
||||
statsSql=statsSql.replace("[columns]",columns);
|
||||
statsSql=statsSql.replace("[column]",column);
|
||||
if("".equals(column)||column==null)statsSql=statsSql.replace("group by","");
|
||||
statsSql=inputParameter(statsSql,parameterlist);
|
||||
List<Map<String,Object>> datalist=statsMapper.getsqldata(statsSql);
|
||||
return new Result("0","成功",datalist);
|
||||
}
|
||||
private String inputParameter(String sql,List<ComStatsParameter> parameterlist) {
|
||||
String[] parameters = CalcUtils.getParameters(sql);
|
||||
for (String itemcode : parameters){
|
||||
Optional<ComStatsParameter> temp=parameterlist.stream().filter(ss->itemcode.equals(ss.getParamCode())).findAny();
|
||||
if(temp.isPresent()) {
|
||||
sql=sql.replace("["+itemcode+"]","'"+temp.get().getParamDefvalue()+"'");
|
||||
}
|
||||
}
|
||||
return sql;
|
||||
}
|
||||
private Result checkprecondition(String precondition,List<ComStatsParameter> parameterlist) {
|
||||
Map<String, String> variables = new HashMap<>();
|
||||
|
||||
@ -2,5 +2,7 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.czlis.liswork.mapper.stats.StatsMapper">
|
||||
|
||||
<select id="getsqldata" resultType="map">
|
||||
${wheresql}
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
x
Reference in New Issue
Block a user