package org.springblade.config.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springblade.cgform.entity.CgformEnhanceJava;
import org.springblade.cgform.entity.CgformField;
import org.springblade.cgform.entity.CgformHead;
import org.springblade.cgform.enums.CgformValidPatternEnum;
import org.springblade.cgform.mapper.CategoryMapper;
import org.springblade.cgform.model.DictModel;
import org.springblade.cgform.model.FieldModel;
import org.springblade.cgform.model.SysPermissionDataRuleModel;
import org.springblade.cgform.model.query.MatchTypeEnum;
import org.springblade.cgform.model.query.QueryGenerator;
import org.springblade.cgform.model.query.QueryRuleEnum;
import org.springblade.cgform.service.ICgformFieldService;
import org.springblade.cgform.service.IDictItemService;
import org.springblade.cgform.service.IDictService;
import org.springblade.common.utils.MjkjUtils;
import org.springblade.config.exception.DBException;
import org.springblade.config.util.jsonschema.BaseColumn;
import org.springblade.config.util.jsonschema.CommonProperty;
import org.springblade.config.util.jsonschema.JsonSchemaDescrip;
import org.springblade.config.util.jsonschema.JsonschemaUtil;
import org.springblade.config.util.jsonschema.validate.*;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.SQLException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Slf4j
public class SqlSymbolUtil {
/**
* 获取id
*
* @return
*/
public static Long getIdWorkerId() {
long id = IdWorker.getId();
return id;
}
/**
* 获取查询sql
*
* @param tableName
* @param mjkjCgformFields
* @param map
* @return
*/
public static String getSelectSql(String tableName, List<CgformField> mjkjCgformFields, Map<String, Object> map) {
StringBuffer whereSb = new StringBuffer();//where条件字段
StringBuffer selectSb = new StringBuffer();//查询字段
for (CgformField mjkjCgformField : mjkjCgformFields) {
String dbFieldName = mjkjCgformField.getDbFieldName();
String dbType = mjkjCgformField.getDbType();
if (mjkjCgformField.getIsShowList() == 1) {
selectSb.append("," + dbFieldName);
}
if (Func.isNotEmpty(mjkjCgformField.getMainField())) {
boolean flag = !DataTypeUtil.isNumberType(dbType);
String sql = QueryGenerator.getSingleQueryConditionSql(dbFieldName, "", map.get(dbFieldName), flag);
if (!"".equals(sql)) {
whereSb.append(" AND " + sql);
}
}
if (mjkjCgformField.getIsQuery() != 1) {//是否查询条件0否 1是
continue;
}
if ("single".equals(mjkjCgformField.getQueryMode())) {//查询模式
if (map.get(dbFieldName) != null) {
boolean flag = DataTypeUtil.isNotNumberType(dbType);
String sql = QueryGenerator.getSingleQueryConditionSql(dbFieldName, "", map.get(dbFieldName), flag);
if (!"".equals(sql)) {
whereSb.append(" AND " + sql);
}
}
} else {
Object beginObj = map.get(dbFieldName + "_begin");
if (beginObj != null) {
whereSb.append(" AND " + dbFieldName + ">=");
if (DataTypeUtil.isNumberType(dbType)) {
whereSb.append(beginObj.toString());
} else {
whereSb.append("'" + beginObj.toString() + "'");
}
}
Object endObj = map.get(dbFieldName + "_end");
if (endObj != null) {
whereSb.append(" AND " + dbFieldName + "<=");
if (DataTypeUtil.isNumberType(dbType)) {
whereSb.append(endObj.toString());
} else {
whereSb.append("'" + endObj.toString() + "'");
}
}
}
}
return "SELECT id" + selectSb.toString() + " FROM " + getSubstring(tableName) + " where is_deleted =0 " + whereSb.toString();
}
public static boolean equals(Object object1, Object object2) {
if (Func.isEmpty(object1) && Func.isEmpty(object2)) {
return true;
} else {
return Func.isNotEmpty(object1) && object1.equals(object2);
}
}
/**
* 判断表名称和表说明是否一样
*
* @param mjkjCgformHead
* @param newMjkjCgformHead
* @return
*/
public static boolean mjkjCgformHeadEquals(CgformHead mjkjCgformHead, CgformHead newMjkjCgformHead) {
return !equals(mjkjCgformHead.getTableName(), newMjkjCgformHead.getTableName()) || !equals(mjkjCgformHead.getTableTxt(), newMjkjCgformHead.getTableTxt());
}
/**
* 判断新字段和旧字段是否一致
*
* @param field
* @param newField
* @return
*/
public static boolean fieldEquals(CgformField field, CgformField newField) {
return !equals(field.getDbFieldName(), newField.getDbFieldName())
|| !equals(field.getDbFieldTxt(), newField.getDbFieldTxt())
|| !equals(field.getDbLength(), newField.getDbLength())
|| !equals(field.getDbPointLength(), newField.getDbPointLength())
|| !equals(field.getDbType(), newField.getDbType())
|| !equals(field.getDbIsNull(), newField.getDbIsNull())
|| !equals(field.getDbIsKey(), newField.getDbIsKey())
|| !equals(field.getDbDefaultVal(), newField.getDbDefaultVal());
}
/**
* java增强,判断是否是java类
*
* @param mjkjCgformEnhanceJava
* @return
*/
public static boolean isExistJava(CgformEnhanceJava mjkjCgformEnhanceJava) {
String javaType = mjkjCgformEnhanceJava.getCgJavaType();
String javaValue = mjkjCgformEnhanceJava.getCgJavaValue();
if (Func.isEmpty(javaValue)) {
return true;
}
try {
if ("class".equals(javaType)) {
Class clazz = Class.forName(javaValue);
if (clazz == null || clazz.newInstance() == null) {
return false;
}
} else if ("spring".equals(javaType)) {
Object bean = SpringContextUtils.getBean(javaValue);
if (bean == null) {
return false;
}
}
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
public static String getSubstring(String s) {
return Pattern.matches("^[a-zA-z].*\\$\\d+$", s) ? s.substring(0, s.lastIndexOf("$")) : s;
}
/**
* 将表字段转为json
*
* @param availableFieldsList
* @param disabledFieldsLiast
* @param fieldModel
* @return
*/
public static JSONObject getFiledJson(List<CgformField> availableFieldsList, List<String> disabledFieldsLiast, FieldModel fieldModel) {
List<String> mustAddList = new ArrayList<>();//必填字段
List<CommonProperty> hiddenList = new ArrayList<>();//隐藏列表
List<String> arrayList2 = new ArrayList<>();
IDictService dictService = SpringContextUtils.getBean(IDictService.class);
IDictItemService dictItemService = SpringContextUtils.getBean(IDictItemService.class);
CategoryMapper categoryMapper = SpringContextUtils.getBean(CategoryMapper.class);
Iterator<CgformField> iterator = availableFieldsList.iterator();
while (true) {
CgformField mjkjCgformField;
String dbFieldName;
do {
do {
if (!iterator.hasNext()) {//没有下一个
if (mustAddList.size() > 0) {
JsonSchemaDescrip jsonSchemaDescrip = new JsonSchemaDescrip(mustAddList);
return JsonschemaUtil.getJsonSchema(jsonSchemaDescrip, hiddenList);
} else {
JsonSchemaDescrip jsonSchemaDescrip = new JsonSchemaDescrip();
return JsonschemaUtil.getJsonSchema(jsonSchemaDescrip, hiddenList);
}
}
mjkjCgformField = iterator.next();
dbFieldName = mjkjCgformField.getDbFieldName();
} while ("id".equals(dbFieldName));
} while (arrayList2.contains(dbFieldName));
String dbFieldTxt = mjkjCgformField.getDbFieldTxt();
if ("1".equals(mjkjCgformFiel
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
一个基于SpringCloud的Chatgpt机器人,已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话,聊天机器人会根据用户的输入自动生成回复。同时也支持画图,用户输入文本,便可以自动制作文生文生图。
资源推荐
资源详情
资源评论
收起资源包目录
超级AI大脑,基于SpringCloud的Chatgpt机器人 (1560个子文件)
.browserslistrc 32B
index.css 233KB
index.css 68KB
animate.css 52KB
font-awesome.css 37KB
font-awesome.min.css 30KB
iconfont.css 20KB
iconfont.css 16KB
excelStyle.css 832B
screen.css 550B
index.css 532B
Dockerfile 813B
Dockerfile 311B
Dockerfile 307B
Dockerfile 307B
Dockerfile 304B
Dockerfile 298B
Dockerfile 99B
Dockerfile 95B
.editorconfig 365B
.editorconfig 246B
fontawesome-webfont.eot 162KB
fontawesome-webfont.674f50d2.eot 162KB
bpmn.08b5f281.eot 47KB
iconfont.eot 24KB
iconfont.eot 17KB
tableTemplate.ftl 8KB
.gitignore 356B
.gitignore 266B
.gitignore 189B
.gitignore 44B
index.html 4KB
emailTemplate.html 3KB
index.html 672B
SqlSymbolUtil.java 61KB
WebServiceImpl.java 33KB
QueryGenerator.java 31KB
CgformApiController.java 28KB
CgformFieldServiceImpl.java 28KB
ChatGPTServiceImpl.java 26KB
SystemController.java 26KB
MjkjUtils.java 22KB
MjkjBaseSqlServiceImpl.java 20KB
DateUtils.java 19KB
MjkjUserServiceImpl.java 19KB
ExcelImportServer.java 18KB
CgformHeadServiceImpl.java 17KB
UserServiceImpl.java 17KB
ConvertUtils.java 17KB
SqlHelper.java 16KB
ExcelExportBase.java 16KB
ExportBase.java 16KB
ExcelExportOfTemplateUtil.java 16KB
OnlineServiceImpl.java 15KB
DbReadTableUtil.java 15KB
PoiPublicUtil.java 15KB
ExcelExportServer.java 14KB
CellValueServer.java 12KB
UserController.java 12KB
BaseController.java 12KB
ChatController.java 12KB
OpenController.java 12KB
MenuServiceImpl.java 10KB
ExcelUtil.java 10KB
ErnieBotServiceImpl.java 10KB
ImportBaseService.java 10KB
FileProvider.java 10KB
SlidePuzzleUtil.java 9KB
TableUtil.java 9KB
TenantServiceImpl.java 9KB
SysCache.java 9KB
CgformEnhanceSqlServiceImpl.java 9KB
MenuController.java 9KB
RoleServiceImpl.java 8KB
StylerHelper.java 8KB
SqlServerTableHandle.java 8KB
BladeUserDetailsServiceImpl.java 8KB
TenantController.java 8KB
PgTableHandle.java 8KB
MyAuthUtil.java 7KB
WechatRotServiceImpl.java 7KB
QRCodeUtil.java 7KB
PoiMergeCellUtil.java 7KB
EnhanceJsUtil.java 7KB
PoiElUtil.java 7KB
CommissionServiceImpl.java 7KB
ColumnMeta.java 7KB
DbConfig.java 6KB
CgformField.java 6KB
CgformEnhanceJavaServiceImpl.java 6KB
WxMiniTokenGranter.java 6KB
ExcelController.java 6KB
TokenUtil.java 6KB
EmailUtil.java 6KB
SaxRowRead.java 6KB
ISysClient.java 6KB
IMjkjBaseSqlService.java 6KB
DeptController.java 6KB
OracleTableHandle.java 6KB
MysqlTableHandle.java 5KB
共 1560 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6753
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- test1.ncl
- BatchAddLineAction.java
- matlab中的算术运算符介绍
- 形势与政策-题库.xls
- 高效MySQL查询加速指南:索引策略、查询优化、性能调优,助力数据库管理员和开发者突破性能瓶颈
- ARM Limited 发布的《RealView 编译工具 4.0 版编译器参考指南》
- 《2024音视频技术发展报告》,由LiveVideoStack出品,旨在深入了解流媒体和RTC(实时通信技术)的从业情情况
- 2023-04-06-项目笔记 - 第一百二十五阶段 - 4.4.2.123全局变量的作用域-123 -2024.05.06
- 多维因素与学生辍学风险预测数据集
- MATLAB编程高效实战:涵盖核心数学、科学计算、数据可视化及算法应用,助力工程师与研究人员的必备函数代码集
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功