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