|
@@ -1,10 +1,15 @@
|
|
|
package cn.cslg.pas.service.query;
|
|
|
|
|
|
+import cn.cslg.pas.common.model.cronModel.GroupConfig;
|
|
|
import cn.cslg.pas.common.model.cronModel.OrderConfig;
|
|
|
import cn.cslg.pas.common.model.cronModel.SqlObject;
|
|
|
+import cn.cslg.pas.common.model.request.MapRequest;
|
|
|
import cn.cslg.pas.common.model.request.OrderDTO;
|
|
|
+import cn.cslg.pas.common.model.request.QueryRequest;
|
|
|
+import cn.cslg.pas.common.model.request.StringRequest;
|
|
|
import cn.cslg.pas.common.utils.StringUtils;
|
|
|
import cn.cslg.pas.common.utils.parseQueryToTree.*;
|
|
|
+import cn.cslg.pas.exception.ConditionException;
|
|
|
import cn.cslg.pas.factorys.getOrderFactory.GetOrderFactory;
|
|
|
import cn.cslg.pas.factorys.getOrderFactory.GetOrderObject;
|
|
|
import cn.cslg.pas.factorys.getSqlFactorys.GetSqlFactory;
|
|
@@ -107,7 +112,7 @@ public class FormatQueryService {
|
|
|
*/
|
|
|
public String orderToString(List<OrderDTO> dtos) {
|
|
|
//读取排序配置类
|
|
|
- String json = CommonService.readJsonFile("event_order.json");
|
|
|
+ String json = CommonService.readJsonFile("event.json");
|
|
|
List<OrderConfig> configs = JSON.parseArray(json, OrderConfig.class);
|
|
|
String re = "order by ";
|
|
|
List<String> orders = new ArrayList<>();
|
|
@@ -115,8 +120,16 @@ public class FormatQueryService {
|
|
|
OrderConfig orderConfig = configs.stream().filter(tem -> tem.getField().equals(item.getOrderBy())).findFirst().orElse(null);
|
|
|
GetOrderObject getOrderObject = getOrderFactory.getClass(orderConfig.getOrderClass());
|
|
|
String order = getOrderObject.getOrderString(orderConfig.getSqlField(), item.getOrderType());
|
|
|
- orders.add(order);
|
|
|
+
|
|
|
+ if (order != "") {
|
|
|
+ orders.add(order);
|
|
|
+ }
|
|
|
});
|
|
|
+
|
|
|
+ if(orders.size()==0){
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
String orderStr = StringUtils.join(orders, ",");
|
|
|
re += orderStr;
|
|
|
return re;
|
|
@@ -143,26 +156,26 @@ public class FormatQueryService {
|
|
|
optionName = operate1.getCode();
|
|
|
}
|
|
|
|
|
|
- GetSqlObject getSqlObjectLocal =null;
|
|
|
+ GetSqlObject getSqlObjectLocal = null;
|
|
|
if (Left != null) {
|
|
|
if ((operate1.gettype() == enuType.Logic || operate1.gettype() == enuType.Assignment) && (Left instanceof operateNode)) {
|
|
|
- strCode = "(" + this.ToString2((operateNode) Left, getSqlObject) + ") " + strCode+" ";
|
|
|
+ strCode = "(" + this.ToString2((operateNode) Left, getSqlObject) + ") " + strCode + " ";
|
|
|
} else { //获得栏位名称
|
|
|
String field = Left.ToString();
|
|
|
|
|
|
if (getSqlObject != null) {
|
|
|
- strCode = getSqlObject.getSql(field) +strCode+" ";
|
|
|
+ strCode = getSqlObject.getSql(field) + strCode + " ";
|
|
|
} else {
|
|
|
strCode = Left.ToString() + " " + strCode;
|
|
|
//判断 参数类型
|
|
|
- String json = CommonService.readJsonFile("event_sql.json");
|
|
|
+ String json = CommonService.readJsonFile("event.json");
|
|
|
List<SqlObject> sqlObjects = JSON.parseArray(json, SqlObject.class);
|
|
|
SqlObject sqlObject = sqlObjects.stream().filter(item -> item.getField().equals(field)).findFirst().orElse(null);
|
|
|
if (sqlObject != null) {
|
|
|
getSqlObjectLocal = getSqlFactory.getClass(sqlObject.getSqlClass());
|
|
|
sqlObject.setOption(optionName);
|
|
|
getSqlObjectLocal.setSqlObject(sqlObject);
|
|
|
- getSqlObject =getSqlObjectLocal;
|
|
|
+ getSqlObject = getSqlObjectLocal;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -176,14 +189,12 @@ public class FormatQueryService {
|
|
|
return rightValue;
|
|
|
}
|
|
|
strCode = strCode + " (" + rightValue + ") ";
|
|
|
- }
|
|
|
- else {
|
|
|
- if(getSqlObjectLocal!=null){
|
|
|
- rightValue =Right.ToString();
|
|
|
- strCode = getSqlObject.getSql(rightValue);
|
|
|
- }
|
|
|
- else if (getSqlObject != null) {
|
|
|
- rightValue =Right.ToString();
|
|
|
+ } else {
|
|
|
+ if (getSqlObjectLocal != null) {
|
|
|
+ rightValue = Right.ToString();
|
|
|
+ strCode = getSqlObject.getSql(rightValue);
|
|
|
+ } else if (getSqlObject != null) {
|
|
|
+ rightValue = Right.ToString();
|
|
|
strCode = strCode + getSqlObject.getSql(rightValue);
|
|
|
}
|
|
|
|
|
@@ -194,5 +205,71 @@ public class FormatQueryService {
|
|
|
return strCode;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 格式化分组
|
|
|
+ *
|
|
|
+ * @param groupBy
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String groupToString(String groupBy) {
|
|
|
+ String json = CommonService.readJsonFile("event.json");
|
|
|
+ List<GroupConfig> groupConfigs = JSON.parseArray(json, GroupConfig.class);
|
|
|
+ GroupConfig groupConfig = groupConfigs.stream().filter(item -> item.getField().equals(groupBy)).findFirst().orElse(null);
|
|
|
+ if (groupConfig != null) {
|
|
|
+ return " group by " + groupConfig.getSqlField() + " ";
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 返回sql列表
|
|
|
+ *
|
|
|
+ * @param queryRequest
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<String> reSqls(QueryRequest queryRequest) {
|
|
|
+ List<String> sqls = new ArrayList<>();
|
|
|
+ String sql1 = "";
|
|
|
+ String sql2 = "";
|
|
|
+ String sql3 = "";
|
|
|
+ //合成检索式
|
|
|
+ StringRequest stringRequest = null;
|
|
|
+ if (queryRequest instanceof MapRequest) {
|
|
|
+
|
|
|
+ } else {
|
|
|
+ stringRequest = (StringRequest) queryRequest;
|
|
|
+ }
|
|
|
+ String condition = stringRequest.getSearchQuery();
|
|
|
+
|
|
|
+ if (condition != null && condition != "") {
|
|
|
+ try {
|
|
|
+ //将检索式转换为二叉树
|
|
|
+ treeNode tree = expressManager.getInstance().Parse(condition, false);
|
|
|
+ //格式化检索式
|
|
|
+ sql1 = this.ToString2((operateNode) tree, null);
|
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new ConditionException("检索式错误");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //格式化排序
|
|
|
+ if (queryRequest.getOrderDTOList() != null && queryRequest.getOrderDTOList().size() != 0) {
|
|
|
+ String orderSql = this.orderToString(queryRequest.getOrderDTOList());
|
|
|
+ sql2 = orderSql;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //格式化 分页信息
|
|
|
+ if (queryRequest.getSize() != null && queryRequest.getCurrent() != null) {
|
|
|
+ Long size = queryRequest.getSize();
|
|
|
+ Long current = queryRequest.getCurrent();
|
|
|
+ String page = " limit " + ((current - 1) * size) + "," + size;
|
|
|
+ sql3 = page;
|
|
|
+ }
|
|
|
+ sqls.add(sql1);
|
|
|
+ sqls.add(sql2);
|
|
|
+ sqls.add(sql3);
|
|
|
+ return sqls;
|
|
|
+ }
|
|
|
}
|