Compare commits

...

38 Commits

Author SHA1 Message Date
fbb0b53048 Merge remote-tracking branch 'origin/dev' into dev 2025-10-23 16:48:39 +08:00
ea8799d873 更新字段大小写 2025-10-23 16:48:33 +08:00
13c8c5dc89 Merge remote-tracking branch 'origin/dev' into dev 2025-10-23 16:46:42 +08:00
70e214c1d8 fix(lc_accident_incident): 更新表单字段长度及更新时间
- 修改 direct_cause 和 indirect_cause 字段长度为1024
- 统一更新所有字段的 UPDATE_TIME 为 '2025-10-23 16:38:23'- 保持其他字段定义不变,仅调整字段长度与更新时间戳
2025-10-23 16:46:08 +08:00
5dc2ed592f 20251023 sql提交 2025-10-23 16:44:48 +08:00
ae98bc9dbc feat(lowcode): 更新安全基础资料表单配置与脚本
- 更新了JS增强脚本中的日期时间戳
-优化了一级和二级分类字典数据的请求参数,设置pageNo为1,pageSize为-1- 移除了二级分类过滤逻辑中的调试日志输出
- 调整了表单设计器中部分字段的布局与样式配置- 更新了表单初始化及提交前处理逻辑,增强数据关联性与准确性
2025-10-23 11:37:20 +08:00
c2d1afb92d 上传文件名使用UUID名称 2025-10-22 16:40:29 +08:00
342ac32890 feat(sql): 更新事故事件表单配置并移除旧记录
- 删除与 lc_accident_incident 表相关的旧 DESFORM 记录
- 移除了原有的 DESFORM 插入语句,避免重复初始化
-保留了表单字段和布局的详细配置信息
- 确保表单样式和国际化配置保持不变
2025-10-22 15:42:43 +08:00
993b08ad04 fix(infra):修复文件上传路径生成逻辑- 移除文件路径中不必要的UUID生成
- 直接使用原始文件名构建文件存储路径- 解决信创环境下中文文件名乱码问题
- 确保文件名唯一性由fileService统一处理- 避免因路径不一致导致的文件访问异常
2025-10-21 21:43:44 +08:00
8c531dd46a fix(infra):修复文件上传路径生成逻辑
- 修改文件名生成方式,使用UUID确保唯一性
-保留原文件扩展名,避免文件类型丢失
- 确保文件路径包含完整文件名和扩展名
2025-10-21 18:59:10 +08:00
f38f4fd49a feat(sql): 更新事故事件表单设计及字段配置- 删除旧的表单设计记录
- 新增事故事件表单设计,包含基础信息、相关文件等布局组
- 配置发生地点、事件等级、直接原因、间接原因等字段- 设置表单样式及国际化配置- 添加上传附件功能支持
- 调整表单字段显示逻辑与校验规则
2025-10-21 18:48:46 +08:00
12d7d251ed feat(lowcode): 新增外协人员持证管理表单设计
- 插入新的表单设计数据到 LOWCODE_DESFORM 表- 设置表单名称为“外协人员持证管理”
- 配置表单字段包括人员姓名、证书类型、证书编号等
- 添加基础信息分组布局及样式定义
- 更新 LOWCODE_DBFORM 表中标记数据库同步状态为否
2025-10-21 17:24:28 +08:00
636a1491bb feat(file):优化文件上传逻辑并解决中文乱码问题
- 引入 Hutool 工具类处理文件名唯一性和扩展名提取
- 使用 UUID 重命名文件,避免信创环境下的中文乱码问题- 调整租户、日期和用户路径结构以支持更细粒度的文件管理
- 统一代码格式,增强可读性与维护性
-修复潜在空指针异常风险点- 完善接口文档描述信息一致性
2025-10-21 16:55:00 +08:00
07b9e113ad feat(biz): 新增风险隐患待办取消功能- 在 IPortalTodoService 接口中新增 pushCancelRiskHazardWorkflow 方法
- 在 PortalTodoController 中新增 DELETE 接口用于取消待办推送
- 在 PortalTodoServiceImpl 中实现待办取消逻辑,包括参数构建与异常处理
- 引入 DeleteRequestInfoDTO用于封装删除请求参数
- 对接 PortalRequest 删除接口,实现待办信息的取消推送- 增加对风险隐患数据存在性和 PortalRequest 配置的校验逻辑
2025-10-21 15:44:29 +08:00
3029f8f2de feat:事故事件数据库配置 2025-10-21 14:54:42 +08:00
713e0876f5 fix(frame): 注释掉查询参数过滤逻辑
- 注释掉 FrameServiceImpl 中对查询参数的遍历过滤逻辑- 避免因参数过滤导致的查询条件丢失问题
2025-10-21 14:41:35 +08:00
c6b15afbe2 外协持证管理 sql提交 2025-10-21 14:36:45 +08:00
7222811573 Merge remote-tracking branch 'origin/dev' into dev 2025-10-21 14:16:46 +08:00
3d0b599825 引入外协人员操作 2025-10-21 14:16:34 +08:00
756b491778 feat(sql): 更新基础安全信息表字段类型
- 将 visible_dept 字段类型为 Text从 String 改
- 重新生成字段字典配置数据
- 调整字段长度和显示属性
2025-10-21 13:07:29 +08:00
c86b7a1753 refactor(dept):优化部门数据权限规则逻辑
- 引入 GreaterThan 表达式支持 FIND_IN_SET 函数判断
- 将原有的 IN 表达式替换为基于 FIND_IN_SET 的大于比较
- 支持多部门 ID 的逐个条件构建与组合-保持原有 OR 条件拼接逻辑不变
- 增强部门权限匹配的灵活性和准确性
2025-10-21 08:27:13 +08:00
f3810d3126 refactor(dept):优化部门数据权限规则生成逻辑- 移除无用的GreaterThan导入
- 简化条件判断中的空格格式
- 使用InExpression替代FIND_IN_SET函数提高查询效率-保持代码风格一致性和可读性
2025-10-20 20:50:35 +08:00
136c2fa5aa feat:安全基础资料更新 2025-10-20 16:56:57 +08:00
8558ff726e feat(datapermission):优化部门数据权限规则生成逻辑
- 引入 GreaterThan 表达式支持更灵活的条件构建
- 使用 FIND_IN_SET 函数替换原有的 IN 表达式实现
- 支持多部门 ID 的逐个条件拼接,提升查询准确性
-保留原有括号包装与 OR 连接逻辑确保语义一致
- 统一代码缩进风格增强可读性
2025-10-20 16:00:44 +08:00
8840eccf41 chore(config): 调整日志配置文件路径及级别
- 修改日志文件存储路径为用户主目录下 logs 文件夹
- 设置多个 Mapper 和框架类的日志级别为 ERROR
- 禁用不必要的日志打印以提升性能
- 统一生产环境与办公环境的日志配置格式
2025-10-17 21:22:39 +08:00
56d20938de fix(lowcode): 更新数据库表同步状态- 将多个风险相关表的IS_DB_SYNC字段设置为'N'- 涉及的表包括: lc_risk_hazard_manage, lc_confined_space_operation,
lc_fire_operation, lc_high_operation, lc_land_operation, lc_lifting_operation, lc_outside_person,  lc_risk_identify_assessment, lc_temporary_power_operation
2025-10-17 19:09:48 +08:00
183b3b826f fix:优化文件目录 2025-10-17 18:47:07 +08:00
635c58531f 2025-11-17sql提交 2025-10-17 18:41:12 +08:00
338819d156 脚本提交 2025-10-17 18:14:00 +08:00
9ac3315d96 Merge remote-tracking branch 'origin/dev' into dev 2025-10-17 18:13:17 +08:00
c41954247b 脚本提交 2025-10-17 18:13:10 +08:00
4c215a72c0 fix(risk):修复发送整改通知的空实现问题
- 添加空实现逻辑以满足当前业务需求- 避免无效调用继续执行后续流程
- 保留逻辑原有风险数据查询
2025-10-17 17:14:34 +08:00
08ced58a54 增加自定义导出 2025-10-17 16:55:49 +08:00
80f635e26b Merge remote-tracking branch 'origin/dev' into dev 2025-10-17 16:17:53 +08:00
7369ac93eb LOWCODE_DBFORM_FIELD_QUERY 重新提交 2025-10-17 16:17:00 +08:00
5dadac1a55 feat(system): 新增通过昵称获取用户列表接口- 在 ApiAdminUserApiImpl 中实现 getUserListByNickname 方法
- 在 IApiAdminUserApi 接口中定义 getUserListByNickname 方法
- 优化 RiskServiceImpl 中的风险隐患待办推送逻辑- 新增 PortalTodoService 实现待办系统接口- 新增 PortalTodoController 提供待办相关接口- 引入 PortalRequest 进行待办信息推送- 使用 Base64 编码待办流程ID
- 添加待办状态和查看类型的常量定义
- 实现风险隐患待办完成推送功能
- 重构 sendNotify2Corrective 方法以支持待办推送- 移除旧的通知发送服务依赖
- 添加空实现 sendNotify2Check 方法注释说明
- 优化用户信息获取逻辑
- 增强风险隐患数据查询方法
- 添加必要的工具类导入和集合操作支持
2025-10-17 15:48:56 +08:00
af08e91a45 增加不受控文件 2025-10-17 11:41:54 +08:00
c3a5f4df4f 推送测试 2025-10-17 11:24:24 +08:00
102 changed files with 17586 additions and 135 deletions

View File

@@ -6,7 +6,7 @@ insert into "LOWCODE_FRAME"."LOWCODE_DBFORM"("ID", "TENANT_ID", "CREATE_USER", "
}`,
}', 'index,border,height,header,menu', '', '{"singleStyle":"default","singleCardSpan":"","expandShowNum":null,"expandMode":"","searchStyle":"default"}', 'update');
delete from "LOWCODE_FRAME"."LOWCODE_DBFORM_ENHANCE_JAVA" where dbform_id in (select id from "LOWCODE_FRAME"."LOWCODE_DBFORM" where TABLE_NAME = 'lc_risk_hazard_manage');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_ENHANCE_JAVA"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "BUTTON_CODE", "JAVA_TYPE", "JAVA_CLASS_URL", "ONLINE_SCRIPT", "ACTIVE_STATUS", "REMARK", "LIST_RESULT_HANDLE_TYPE", "SORT") values(1971469436042924034, 1, 1, '2025-09-26 14:58:36', 100, null, null, 0, 1963446160885366786, 'import', 'class', 'com.jeelowcode.module.biz.enhance.BeforeRiskExportEnhance', '', 'Y', '', '0', 1);
@@ -358,42 +358,42 @@ insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_FOREIGNKEY"("ID", "TENANT_ID",
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_FOREIGNKEY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "MAIN_TABLE", "MAIN_FIELD") values(1976483572317454339, 1, 1, '2025-10-10 11:03:00', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_confirm_people_id', '', '');
delete from "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY" where dbform_id in (select id from "LOWCODE_FRAME"."LOWCODE_DBFORM" where TABLE_NAME = 'lc_risk_hazard_manage');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224386, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'id', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224387, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'parkName', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224388, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-09-04 14:31:27', 1, 1963446160885366786, 'park_code', 'N', 'N', 'EQ', '', '', null, null);
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224389, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_area', 'Y', 'Y', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224390, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_item', 'Y', 'Y', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224391, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_content', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224392, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_date', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224393, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_people', 'Y', 'Y', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224394, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_problem', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224395, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_action', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224396, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_confirm_people', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224397, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_charge_people', 'Y', 'Y', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224398, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_period', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224399, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'risk_level', 'Y', 'Y', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224400, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'remarks', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224401, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_status', 'Y', 'Y', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224402, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'tenant_id', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224403, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'create_user', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224404, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'create_time', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224405, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'create_dept', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224406, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'update_user', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224407, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'update_time', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963446160990224408, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'is_deleted', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963518653792862210, 1, 1, '2025-09-04 16:25:02', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'actual_corrective_date', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963518653792862211, 1, 1, '2025-09-04 16:25:02', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'actual_corrective_action', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1963518653792862212, 1, 1, '2025-09-04 16:25:02', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'file_list', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1971412768013709314, 1, 1, '2025-09-26 11:13:26', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'parkId', 'Y', 'Y', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1972123385968226306, 1, 1, '2025-09-28 10:17:10', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'billNo', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1972123385968226307, 1, 1, '2025-09-28 10:17:10', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'source', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1972123385968226308, 1, 1, '2025-09-28 10:17:10', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'companyName', 'Y', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1972123385968226309, 1, 1, '2025-09-28 10:17:10', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'companyId', 'Y', 'Y', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1972181971033456642, 1, 1, '2025-09-28 14:09:58', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'sync_Id', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1972181971033456643, 1, 1, '2025-09-28 14:09:58', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'source_Id', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1976483572388757506, 1, 1, '2025-10-10 11:03:00', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_people_id', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1976483572388757507, 1, 1, '2025-10-10 11:03:00', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_charge_people_id', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "filter_Auth", "FILTER_AUTH") values(1976483572388757508, 1, 1, '2025-10-10 11:03:00', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_confirm_people_id', 'N', 'N', 'EQ', '', '', null, '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224386, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'id', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224387, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'parkName', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224388, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-09-04 14:31:27', 1, 1963446160885366786, 'park_code', 'N', 'N', 'EQ', '', '', null);
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224389, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_area', 'Y', 'Y', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224390, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_item', 'Y', 'Y', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224391, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_content', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224392, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_date', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224393, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_people', 'Y', 'Y', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224394, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_problem', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224395, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_action', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224396, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_confirm_people', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224397, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_charge_people', 'Y', 'Y', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224398, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_period', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224399, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'risk_level', 'Y', 'Y', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224400, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'remarks', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224401, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_status', 'Y', 'Y', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224402, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'tenant_id', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224403, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'create_user', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224404, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'create_time', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224405, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'create_dept', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224406, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'update_user', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224407, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'update_time', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963446160990224408, 1, 1, '2025-09-04 11:36:59', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'is_deleted', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963518653792862210, 1, 1, '2025-09-04 16:25:02', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'actual_corrective_date', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963518653792862211, 1, 1, '2025-09-04 16:25:02', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'actual_corrective_action', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1963518653792862212, 1, 1, '2025-09-04 16:25:02', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'file_list', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1971412768013709314, 1, 1, '2025-09-26 11:13:26', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'parkId', 'Y', 'Y', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1972123385968226306, 1, 1, '2025-09-28 10:17:10', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'billNo', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1972123385968226307, 1, 1, '2025-09-28 10:17:10', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'source', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1972123385968226308, 1, 1, '2025-09-28 10:17:10', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'companyName', 'Y', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1972123385968226309, 1, 1, '2025-09-28 10:17:10', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'companyId', 'Y', 'Y', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1972181971033456642, 1, 1, '2025-09-28 14:09:58', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'sync_Id', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1972181971033456643, 1, 1, '2025-09-28 14:09:58', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'source_Id', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1976483572388757506, 1, 1, '2025-10-10 11:03:00', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'check_people_id', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1976483572388757507, 1, 1, '2025-10-10 11:03:00', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_charge_people_id', 'N', 'N', 'EQ', '', '', '');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_QUERY"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "QUERY_IS_DB", "QUERY_IS_WEB", "QUERY_MODE", "QUERY_CONFIG", "QUERY_DEFAULT_VAL", "FILTER_AUTH") values(1976483572388757508, 1, 1, '2025-10-10 11:03:00', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'corrective_confirm_people_id', 'N', 'N', 'EQ', '', '', '');
delete from "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_WEB" where dbform_id in (select id from "LOWCODE_FRAME"."LOWCODE_DBFORM" where TABLE_NAME = 'lc_risk_hazard_manage');
insert into "LOWCODE_FRAME"."LOWCODE_DBFORM_FIELD_WEB"("ID", "TENANT_ID", "CREATE_USER", "CREATE_TIME", "CREATE_DEPT", "UPDATE_USER", "UPDATE_TIME", "IS_DELETED", "DBFORM_ID", "FIELD_CODE", "IS_DB_SELECT", "IS_SHOW_LIST", "IS_SHOW_FORM", "IS_SHOW_COLUMN", "IS_SHOW_SORT", "IS_REQUIRED", "CONTROL_TYPE", "CONTROLS_CONFIG", "CELL_WIDTH", "CELL_WIDTH_TYPE", "VERIFY_CONFIG", "FORMAT_CONFIG", "LABEL_I18N") values(1963446160969252866, 1, 1, '2025-09-04 11:36:58', 100, null, '2025-10-16 11:14:38', 0, 1963446160885366786, 'id', 'Y', 'N', 'N', 'N', 'N', 'N', 'input', '', '', 'min', '', '{"formatType":"","formatJson":{"sql":{},"java":{},"fun":""}}', 'return {

View File

@@ -0,0 +1,21 @@
delete
from "LOWCODE_MASTER"."SYSTEM_DICT_TYPE" where type in
('hazardType','riskLevelType');
insert into "LOWCODE_MASTER"."SYSTEM_DICT_TYPE"("NAME", "TYPE", "STATUS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "DELETED_TIME") values('危险有害因素类别', 'hazardType', 0, '', '1', '2025-10-16 16:00:53', '1', '2025-10-16 16:00:53', 0, '1970-01-01 00:00:00');
insert into "LOWCODE_MASTER"."SYSTEM_DICT_TYPE"("NAME", "TYPE", "STATUS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "DELETED_TIME") values('风险程度', 'riskLevelType', 0, '', '1', '2025-10-16 15:58:03', '1', '2025-10-16 15:58:03', 0, '1970-01-01 00:00:00');
delete
from "LOWCODE_MASTER"."SYSTEM_DICT_DATA" where DICT_TYPE in
('hazardType','riskLevelType');
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '', '1', 'riskLevelType', 0, '', '', '', '1', '2025-10-16 15:59:28', '1', '2025-10-16 15:59:28', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '一般', '2', 'riskLevelType', 0, '', '', '', '1', '2025-10-16 15:59:40', '1', '2025-10-16 15:59:40', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '较大', '3', 'riskLevelType', 0, '', '', '', '1', '2025-10-16 15:59:48', '1', '2025-10-16 15:59:48', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '', '4', 'riskLevelType', 0, '', '', '', '1', '2025-10-16 16:00:00', '1', '2025-10-16 16:00:00', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '人的因素', '1', 'hazardType', 0, '', '', '', '1', '2025-10-16 16:01:14', '1', '2025-10-16 16:01:14', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '物的因素', '2', 'hazardType', 0, '', '', '', '1', '2025-10-16 16:01:22', '1', '2025-10-16 16:01:22', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '环境因素', '3', 'hazardType', 0, '', '', '', '1', '2025-10-16 16:01:30', '1', '2025-10-16 16:01:30', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '重大', '5', 'riskLevelType', 0, '', '', '', '1', '2025-10-16 17:24:25', '1', '2025-10-16 17:24:25', 0);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
update "LOWCODE_FRAME"."LOWCODE_DBFORM"
set IS_DB_SYNC='N'
where TABLE_NAME in ('lc_risk_hazard_manage', 'lc_confined_space_operation',
'lc_fire_operation', 'lc_high_operation', 'lc_land_operation',
'lc_lifting_operation', 'lc_outside_person',
'lc_risk_identify_assessment', 'lc_temporary_power_operation');

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,21 @@
delete
from "LOWCODE_MASTER"."SYSTEM_DICT_TYPE" where type in
('licenseType','outpersonStatus');
insert into "LOWCODE_MASTER"."SYSTEM_DICT_TYPE"("NAME", "TYPE", "STATUS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "DELETED_TIME") values('证书类型', 'licenseType', 0, '', '1', '2025-10-17 14:47:47', '1', '2025-10-17 14:47:47', 0, '1970-01-01 00:00:00');
insert into "LOWCODE_MASTER"."SYSTEM_DICT_TYPE"("NAME", "TYPE", "STATUS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "DELETED_TIME") values('外协人员状态', 'outpersonStatus', 0, '', '1', '2025-10-20 10:32:38', '1', '2025-10-20 10:32:38', 0, '1970-01-01 00:00:00');
delete
from "LOWCODE_MASTER"."SYSTEM_DICT_DATA" where DICT_TYPE in
('licenseType','outpersonStatus');
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '健康证', '1', 'licenseType', 0, '', '', '', '1', '2025-10-17 14:48:05', '1', '2025-10-17 14:48:05', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '安全管理和作业人员证', '2', 'licenseType', 0, '', '', '', '1', '2025-10-17 14:48:18', '1', '2025-10-17 14:48:18', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '电梯维修证', '3', 'licenseType', 0, '', '', '', '1', '2025-10-17 14:48:25', '1', '2025-10-17 14:48:25', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '高压电工证', '4', 'licenseType', 0, '', '', '', '1', '2025-10-17 14:48:34', '1', '2025-10-17 14:48:34', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '低压电工证', '5', 'licenseType', 0, '', '', '', '1', '2025-10-17 14:48:45', '1', '2025-10-17 14:48:45', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '消防设施操作员证', '6', 'licenseType', 0, '', '', '', '1', '2025-10-17 14:48:52', '1', '2025-10-17 14:48:52', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '待入项', '0', 'outpersonStatus', 0, '', '', '', '1', '2025-10-20 10:33:03', '1', '2025-10-20 10:33:03', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '已入项', '1', 'outpersonStatus', 0, '', '', '', '1', '2025-10-20 10:33:10', '1', '2025-10-20 10:33:10', 0);
insert into "LOWCODE_MASTER"."SYSTEM_DICT_DATA"("SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") values(0, '已出项', '2', 'outpersonStatus', 0, '', '', '', '1', '2025-10-20 10:33:16', '1', '2025-10-20 10:33:16', 0);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -40,7 +40,15 @@ spring:
logging:
file:
name: /data/mjkj/webapp/mjkj_jeelowcode/webapp/logs/${spring.application.name}.log # 日志文件名,全路径
name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
level:
com.jeelowcode.core.framework.mapper.LogApiMapper: ERROR #日志入库不需要打印
com.jeelowcode.core.framework.mapper.LogApiErrorMapper: ERROR #日志入库不需要打印
com.jeelowcode.service.system.mapper.OperateLogMapper: error #日志入库不需要打印
org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR
org.mybatis.spring.mapper.ClassPathMapperScanner: error
de.codecentric: error
--- #################### 芋道相关配置 ####################
# 芋道配置项,设置当前项目所有自定义的配置

View File

@@ -40,7 +40,14 @@ spring:
logging:
file:
name: /data/mjkj/webapp/mjkj_jeelowcode/webapp/logs/${spring.application.name}.log # 日志文件名,全路径
name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
level:
com.jeelowcode.core.framework.mapper.LogApiMapper: ERROR #日志入库不需要打印
com.jeelowcode.core.framework.mapper.LogApiErrorMapper: ERROR #日志入库不需要打印
com.jeelowcode.service.system.mapper.OperateLogMapper: error #日志入库不需要打印
org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR
org.mybatis.spring.mapper.ClassPathMapperScanner: error
de.codecentric: error
--- #################### 芋道相关配置 ####################
# 芋道配置项,设置当前项目所有自定义的配置

View File

@@ -0,0 +1,35 @@
package com.jeelowcode.core.framework.config.btncommand.button;
import com.jeelowcode.core.framework.config.btncommand.receiver.IButtonCommandReceiver;
import com.jeelowcode.core.framework.params.model.ExcelModel;
import com.jeelowcode.core.framework.params.model.TableModel;
/**
* 具体命令-新增按钮命令
*/
public class CustomButtonCommand implements IButtonCommand<TableModel> {
//命令执行者
private IButtonCommandReceiver<TableModel> recevier;
/**
* 绑定执行者
* @param recevier 执行者
*/
public CustomButtonCommand(IButtonCommandReceiver recevier) {
this.recevier = recevier;
}
/**
* 执行命令
* @return
*/
@Override
public TableModel execute() {
TableModel receiver = recevier.receiver();
return receiver;
}
}

View File

@@ -0,0 +1,70 @@
package com.jeelowcode.core.framework.config.btncommand.receiver;
import cn.hutool.json.JSONObject;
import com.jeelowcode.core.framework.entity.FormEntity;
import com.jeelowcode.core.framework.params.model.TableModel;
import com.jeelowcode.framework.utils.adapter.IJeeLowCodeAdapter;
import com.jeelowcode.framework.utils.model.ResultDataModel;
import com.jeelowcode.framework.utils.tool.CollectionUtil;
import com.jeelowcode.framework.utils.tool.spring.SpringUtils;
import com.jeelowcode.core.framework.config.btncommand.param.ButtonParamExport;
import com.jeelowcode.core.framework.params.model.ExcelModel;
import com.jeelowcode.core.framework.params.vo.role.DbFormRoleFieldVo;
import com.jeelowcode.core.framework.service.IDbFormRoleService;
import com.jeelowcode.core.framework.service.IExcelService;
import com.jeelowcode.core.framework.service.IFormService;
import com.jeelowcode.core.framework.service.IFrameService;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 新增自定义执行者
*/
public class ButtonReceiverCustom extends ButtonReceiverBase implements IButtonCommandReceiver<TableModel> {
private String pluginKey;
private ButtonParamExport param;
public ButtonReceiverCustom(ButtonParamExport param) {
this.param = param;
}
/**
* 执行命令
*
* @return
*/
@Override
public TableModel receiver() {
IFormService formService = SpringUtils.getBean(IFormService.class);
IFrameService frameService = SpringUtils.getBean(IFrameService.class);
Long dbFormId = param.getDbFormId();
Map<String, Object> params = param.getParams();
FormEntity formEntity = formService.getFormEntityById(dbFormId);
//人员信息自定义导出后刷新是否背调状态为是
if (formEntity.getTableName().toLowerCase().equals("lc_outside_person")) {
ResultDataModel model = frameService.getExportDataList(dbFormId, params);
List<JSONObject> records = model.getRecords().stream()
.map(recordMap -> new JSONObject(recordMap))
.collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(records)) {
for (JSONObject record : records) {
record.set("isValidate", "");
}
frameService.editBatchData(dbFormId, records);
}
}
return new TableModel(formEntity.getTableName(), formEntity.getTableDescribe());
}
}

View File

@@ -15,6 +15,7 @@ import com.jeelowcode.core.framework.entity.FormFieldWebEntity;
import com.jeelowcode.core.framework.params.model.ExcelImportResultModel;
import com.jeelowcode.core.framework.params.model.ExcelModel;
import com.jeelowcode.core.framework.params.model.ExcelTemplateModel;
import com.jeelowcode.core.framework.params.model.TableModel;
import com.jeelowcode.core.framework.params.vo.FormEntityPageVo;
import com.jeelowcode.core.framework.service.IFormService;
import com.jeelowcode.core.framework.utils.Func;
@@ -280,6 +281,25 @@ public class BaseController {
return excelModel;
}
//导出Excel数据后(自定义拓展)
protected void afterExportExcelData(Long dbformId, Map<String, Object> params ){
//封装参数
ButtonParamExport buttonParam = new ButtonParamExport();
buttonParam.setDbFormId(dbformId);
buttonParam.setParams(params);
//执行者绑定参数
//执行者绑定参数
IButtonCommandReceiver receiver = new ButtonReceiverCustom(buttonParam);
//执行者和命令绑定
CustomButtonCommand command = new CustomButtonCommand(receiver);
//创建调用者
ButtonInvoker<TableModel> invoker = new ButtonInvoker();
invoker.setButtonCommand(command);//调用者设置命令
invoker.executeCommand();//调用者下发命令
}
//导入Excel数据
protected ExcelImportResultModel importExcelData(ButtonParamImport buttonParam){
//执行者绑定参数

View File

@@ -87,6 +87,19 @@ public class ExcelController extends BaseController {
JeeLowCodeExcelUtils.exportExcel(rsp, excelModel.getSheetName(), excelModel.getHeadTitleMap(), excelModel.getDataMapList());
}
@PreAuthorize("@ss.hasPermission('jeelowcode:dbform-data:export:'+#dbformId)")
@ApiOperationSupport(order = 2)
@Operation(tags = "Excel模块",summary = "导出Excel数据")
@PostMapping({"/exportExcelCustom/{dbformId}"})
public void exportExcelDataCustom(@PathVariable("dbformId") Long dbformId, HttpServletRequest req, HttpServletResponse rsp) {
Map<String, Object> params = FuncWeb.getParameterBodyMap(req);
ExcelModel excelModel = super.exportExcelData(dbformId, params);
super.afterExportExcelData(dbformId, params);
//导出
JeeLowCodeExcelUtils.exportExcel(rsp, excelModel.getSheetName(), excelModel.getHeadTitleMap(), excelModel.getDataMapList());
}
@PreAuthorize("@ss.hasPermission('jeelowcode:dbform-data:import:'+#dbformId)")
@ApiOperationSupport(order = 3)
@Operation(tags = "Excel模块",summary = "导入Excel数据")

View File

@@ -1114,11 +1114,11 @@ public class FrameServiceImpl implements IFrameService {
queryWrapper.select(select, aliasFlag);
queryWrapper.setWhere(where -> {
where.eq("is_deleted", 0);
params.forEach((key, value) -> {
if(select.contains(key)){
where.eq(key, value);
}
});
// params.forEach((key, value) -> {
// if(select.contains(key)){
// where.eq(key, value);
// }
// });
}).build();
} else {//显示表-视图
String dataSourcesConfigJsonStr = formEntity.getDataSourcesConfig();

View File

@@ -0,0 +1,16 @@
package com.jeelowcode.framework.plus.build;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import net.sf.jsqlparser.JSQLParserException;
/**
*
* @param <T> 返回值
*/
public interface ISQLExpression<T> {
//解析器
T interpret(SQLInterpretContext contextT) throws JSQLParserException;
}

View File

@@ -0,0 +1,225 @@
package com.jeelowcode.framework.plus.build.build;
import com.jeelowcode.framework.exception.JeeLowCodeException;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.ddl.*;
import com.jeelowcode.framework.plus.build.build.dql.*;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
import java.util.*;
import java.util.stream.Collectors;
/**
* 多条件
*/
public class AndExpression implements ISQLExpression<List<SqlFormatModel>> {
private ISQLExpression[] expressions;
public AndExpression(ISQLExpression... expressions) {
this.expressions = expressions;
}
public AndExpression(List<ISQLExpression> expressionList) {
expressions =new ISQLExpression[expressionList.size()];
for (int i = 0; i < expressionList.size(); i++) {
ISQLExpression expression = expressionList.get(i);
expressions[i]=expression;
}
}
/**
* ddl允许多个dql只允许一个
* @param context
* @return
* @throws JSQLParserException
*/
@Override
public List<SqlFormatModel> interpret(SQLInterpretContext context) throws JSQLParserException {
List<SqlFormatModel> sqlFormatModelList = this.getDDL(context);
if (FuncBase.isNotEmpty(sqlFormatModelList)) {
return sqlFormatModelList;
}
SqlFormatModel sqlFormatModel = this.getDQL(context);
return Collections.singletonList(sqlFormatModel);
}
//获取ddl
private List<SqlFormatModel> getDDL(SQLInterpretContext context) throws JSQLParserException {
List<ISQLExpression> ddlList = Arrays.stream(expressions)
.filter(expression -> expression instanceof BuildAlter
|| expression instanceof BuildCreateIndex
|| expression instanceof BuildCreateTable
|| expression instanceof BuildDrop
|| expression instanceof BuildComment
|| expression instanceof BuildPrimaryKey
|| expression instanceof BuildDdl)
.collect(Collectors.toList());
if (FuncBase.isEmpty(ddlList)) {
return null;
}
List<SqlFormatModel> resultModelList=new ArrayList<>();
for (ISQLExpression<SqlFormatModel> expression : ddlList) {
Object obj= expression.interpret(context);
if (FuncBase.isEmpty(obj)) {
continue;
}
if(obj instanceof SqlFormatModel){
resultModelList.add((SqlFormatModel)obj);
}else if(obj instanceof List){
resultModelList.addAll((List<SqlFormatModel>)obj);
}
}
return resultModelList;
}
private SqlFormatModel getDQL(SQLInterpretContext context) throws JSQLParserException {
List<ISQLExpression> expressionList = this.getDQLExpression();
if (FuncBase.isEmpty(expressionList)) {
throw new JeeLowCodeException("表达式为空");
}
String sql = "";
Map<String, Object> dataMap = new LinkedHashMap<>();
int step = 0;
for (ISQLExpression expression : expressionList) {//buildselect buildwhere buidlorderby
SqlFormatModel sqlFormatModel = (SqlFormatModel) expression.interpret(context);
String tmpSql = sqlFormatModel.getSql();
Map<String, Object> tmpMap = sqlFormatModel.getDataMap();
if (FuncBase.isEmpty(tmpMap)) {
sql += " " + tmpSql;
continue;
}
// 首先将entrySet中的元素复制到一个列表中
List<Map.Entry<String, Object>> entrieList = new ArrayList<>(tmpMap.entrySet());
Collections.reverse(entrieList);
for (Map.Entry<String, Object> entry : entrieList) {
step++;
String key = entry.getKey(); // 获取键
Object value = entry.getValue(); // 获取值
String newKey = "JEELOWCODE_MPGENVAL" + step;
// 执行你的替换逻辑
tmpSql = tmpSql.replace("#{ew.paramNameValuePairs." + key+"," , "#{" +context.getPreSymbol()+ newKey+"," );
tmpSql = tmpSql.replace("#{ew.paramNameValuePairs." + key+"}" , "#{" +context.getPreSymbol()+ newKey+"}" );
dataMap.put("JEELOWCODE_MPGENVAL" + step, value);
}
sql += " " + tmpSql;
}
return new SqlFormatModel(sql, dataMap);
}
//获取dql 排序后的表达式
private List<ISQLExpression> getDQLExpression() {
List<ISQLExpression> dqllList = Arrays.stream(expressions)
.filter(expression -> expression instanceof BuildSelect
|| expression instanceof BuildJoin
|| expression instanceof BuildWhere
|| expression instanceof BuildGroupBy
|| expression instanceof BuildHaving
|| expression instanceof BuildOrderBy
|| expression instanceof BuildInsert
|| expression instanceof BuildUpdate
|| expression instanceof BuildDelete)
.collect(Collectors.toList());
if (FuncBase.isEmpty(dqllList)) {
return null;
}
//只有一个,不用排序
if(FuncBase.isNotEmpty(dqllList) && dqllList.size()==1){
return dqllList;
}
//排序
List<ISQLExpression> sortList = new ArrayList<>();
//下面是dql,需要安装sql标准查询的格式来凭接
ISQLExpression tmpSelect = null;
List<ISQLExpression> tmpJoinList = new ArrayList<>();
ISQLExpression tmpWhere = null;
ISQLExpression tmpGroupBy = null;
ISQLExpression tmpOrderBy = null;
ISQLExpression tmpHaving = null;
ISQLExpression tmpInsert = null;
ISQLExpression tmpUpdate = null;
ISQLExpression tmpDelete = null;
for (ISQLExpression expression : expressions) {
if (expression instanceof BuildSelect) {
tmpSelect = expression;
} else if (expression instanceof BuildJoin) {
tmpJoinList.add(expression);//因为会多个
} else if (expression instanceof BuildWhere) {
tmpWhere = expression;
} else if (expression instanceof BuildGroupBy) {
tmpGroupBy = expression;
} else if (expression instanceof BuildHaving) {
tmpHaving = expression;
} else if (expression instanceof BuildOrderBy) {
tmpOrderBy = expression;
} else if (expression instanceof BuildInsert) {
tmpInsert = expression;
} else if (expression instanceof BuildUpdate) {
tmpUpdate = expression;
} else if (expression instanceof BuildDelete) {
tmpDelete = expression;
}
}
//如果是insert类的话则直接返回
if (FuncBase.isNotEmpty(tmpInsert)) {
sortList.add(tmpInsert);
return sortList;
}
//如果是update 和 delete select 都可以带where
if (FuncBase.isNotEmpty(tmpSelect)) {
sortList.add(tmpSelect);
} else if (FuncBase.isNotEmpty(tmpUpdate)) {
sortList.add(tmpUpdate);
} else if (FuncBase.isNotEmpty(tmpDelete)) {
sortList.add(tmpDelete);
} else {
throw new JeeLowCodeException("表达式必须有BuildSelect/BuildUpdate/BuildDelete");
}
//第一个
ISQLExpression firstExpression = sortList.get(0);
if (firstExpression instanceof BuildSelect && FuncBase.isNotEmpty(tmpJoinList)) {//必须是select的情况下才能inner join
sortList.addAll(tmpJoinList);
}
//后面是带 where
if (FuncBase.isNotEmpty(tmpWhere)) {
sortList.add(tmpWhere);
}
if (firstExpression instanceof BuildSelect && FuncBase.isNotEmpty(tmpGroupBy)) {//必须是select的情况下才有group by
sortList.add(tmpGroupBy);
if (FuncBase.isNotEmpty(tmpHaving)) {
sortList.add(tmpHaving);
}
}
if (firstExpression instanceof BuildSelect && FuncBase.isNotEmpty(tmpOrderBy)) {//必须是select的情况下才有order by
sortList.add(tmpOrderBy);
}
return sortList;
}
}

View File

@@ -0,0 +1,612 @@
package com.jeelowcode.framework.plus.build.build;
import com.jeelowcode.framework.plus.build.build.dql.*;
import com.jeelowcode.framework.plus.build.buildmodel.dql.*;
/**
* @author JX
* @create 2024-07-03 10:16
* @dedescription:
*/
public class TestBuild {
/* @Test
public void testBuildSelect() throws JSQLParserException {
SqlInfoSelectModel selectModel = SqlInfoSelectModel.builder()
*//* .setColumns("id", "name")*//*
.setTableName("tbl_student")
.build();
SQLInterpretContext context = new SQLInterpretContext();
context.setSelectModel(selectModel);
BuildSelect buildSelect = new BuildSelect();
SqlFormatModel interpret = buildSelect.interpret(context);
System.out.println(FuncBase.json2Str(interpret));
}
@Test
public void testBuildOrderBy() throws JSQLParserException {
SqlInfoOrderModel build = SqlInfoOrderModel.builder()
.setOrderByAsc("id","name")
.setOrderByDesc("age")
.setOrderByAsc("sex")
.build();
SQLInterpretContext context = new SQLInterpretContext();
context.setOrderModel(build);
BuildOrderBy buildOrderBy=new BuildOrderBy();
SqlFormatModel interpret = buildOrderBy.interpret(context);
System.out.println(FuncBase.json2Str(interpret));
}
@Test
public void testBuildGroupBy() throws JSQLParserException {
SqlInfoGroupModel build = SqlInfoGroupModel.builder()
.setColumns("name", "age")
.build();
SQLInterpretContext context = new SQLInterpretContext();
context.setGroupModel(build);
BuildGroupBy buildGroupBy=new BuildGroupBy();
SqlFormatModel interpret = buildGroupBy.interpret(context);
System.out.println(FuncBase.json2Str(interpret));
}
@Test
public void testBuildWhere() throws JSQLParserException {
SqlInfoWhereModel build = SqlInfoWhereModel.builder()
.gt("id", 12)
.ge("age", 18)
.ne("name", "张三")
.between("height",18,30)
.in("a.id",1,2,3,4,5)
.like("name","张三")
.buildWhere();
SQLInterpretContext context = new SQLInterpretContext();
context.setWhereModel(build);
BuildWhere buildWhere=new BuildWhere();
SqlFormatModel interpret = buildWhere.interpret(context);
System.out.println(FuncBase.json2Str(interpret));
}
@Test
public void testBuildDelete() throws JSQLParserException {
SqlInfoDeleteModel build = SqlInfoDeleteModel.builder()
.setTableName("tbl_student")
.build();
SQLInterpretContext context = new SQLInterpretContext();
context.setDeleteModel(build);
BuildDelete buildDelete=new BuildDelete();
SqlFormatModel interpret = buildDelete.interpret(context);
System.out.println(FuncBase.json2Str(interpret));
}
@Test
public void testBuildRealDelete() throws JSQLParserException {
SqlInfoDeleteModel build = SqlInfoDeleteModel.builder()
.setTableName("tbl_student",true)
.build();
SQLInterpretContext context = new SQLInterpretContext();
BuildDelete buildDelete=new BuildDelete();
context.setDeleteModel(build);
SqlFormatModel interpret = buildDelete.interpret(context);
System.out.println(FuncBase.json2Str(interpret));
}
@Test
public void testBuildInsert() throws JSQLParserException {
Map<String,Object> addMap=new HashMap<>();
addMap.put("age",18);
addMap.put("name","张三");
SqlInfoInsertModel build = SqlInfoInsertModel.builder()
.setTableName("tbl_student")
.addColumn("id", 123)
.addMap(addMap)
.build();
SQLInterpretContext context = new SQLInterpretContext();
context.setInsertModel(build);
BuildInsert buildInsert=new BuildInsert();
SqlFormatModel interpret = buildInsert.interpret(context);
System.out.println(FuncBase.json2Str(interpret));
}
@Test
public void testBuildUpdate() throws JSQLParserException {
Map<String,Object> updateMap=new HashMap<>();
updateMap.put("age",18);
updateMap.put("name","张三");
SqlInfoUpdateModel build = SqlInfoUpdateModel.builder()
.setTableName("tbl_student")
.addColumn("id", 123)
.addMap(updateMap)
.build();
SQLInterpretContext context = new SQLInterpretContext();
context.setUpdateModel(build);
BuildUpdate buildUpdate=new BuildUpdate();
SqlFormatModel interpret = buildUpdate.interpret(context);
System.out.println(FuncBase.json2Str(interpret));
}
@Test
public void testBuildAlter_AddColumn() throws JSQLParserException {
*//*
TableFieldModel fieldModel = new TableFieldModel();
fieldModel.setFieldCode("name");
fieldModel.setFieldType("varchar(128)");
fieldModel.setCommentSql("年龄");
SqlInfoAlterModel model = SqlInfoAlterModel.builder()
.setTableName("tbl_student")
.buildAddColumn(fieldModel);
SQLInterpretContext context = new SQLInterpretContext();
context.setAlterModel(model);
BuildAlter build=new BuildAlter();
SqlFormatModel interpret = build.interpret(context);
System.out.println(Func.json2Str(interpret));*//*
}
@Test
public void testBuildAlter_updaateColumn() throws JSQLParserException {
*//*TableFieldModel fieldModel = new TableFieldModel();
fieldModel.setFieldCode("name");
fieldModel.setFieldType("varchar(128)");
fieldModel.setCommentSql("年龄");
SqlInfoAlterModel model = SqlInfoAlterModel.builder()
.setTableName("tbl_student")
.buildUpdateColum(fieldModel);
SQLInterpretContext context = new SQLInterpretContext();
context.setAlterModel(model);
BuildAlter build=new BuildAlter();
SqlFormatModel interpret = build.interpret(context);
System.out.println(Func.json2Str(interpret));*//*
}
@Test
public void testBuildDrop_dropTable() throws JSQLParserException {
SqlInfoDropModel model = SqlInfoDropModel.builder()
.buildDropTable("","tbl_student");
SQLInterpretContext context = new SQLInterpretContext();
context.setDropModel(model);
BuildDrop build=new BuildDrop();
List<SqlFormatModel> sqlFormatModelList = build.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildDrop_dropColumn() throws JSQLParserException {
SqlInfoDropModel model = SqlInfoDropModel.builder()
.buildDropColumn("","tbl_student","name");
SQLInterpretContext context = new SQLInterpretContext();
context.setDropModel(model);
BuildDrop build=new BuildDrop();
List<SqlFormatModel> sqlFormatModelList = build.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildDrop_dropIndex() throws JSQLParserException {
SqlInfoDropModel model = SqlInfoDropModel.builder()
.buildDropIndex("","tbl_student","ind_name");
SQLInterpretContext context = new SQLInterpretContext();
context.setDropModel(model);
BuildDrop build=new BuildDrop();
List<SqlFormatModel> sqlFormatModelList = build.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildCreate() throws JSQLParserException {
List<FieldModel> buildTableFieldModelList=new ArrayList<>();
FieldModel idModel = new FieldModel();
idModel.setFieldCode("id");
idModel.setFieldName("id");
idModel.setFieldLen(12);
idModel.setFieldPointLen(0);
idModel.setFieldType(JeeLowCodeFieldTypeEnum.BIGINT);
idModel.setIsPrimaryKey("Y");
idModel.setIsNull("N");
FieldModel nameModel = new FieldModel();
nameModel.setFieldCode("name");
nameModel.setFieldName("姓名");
nameModel.setFieldLen(12);
nameModel.setFieldPointLen(0);
nameModel.setFieldType(JeeLowCodeFieldTypeEnum.STRING);
nameModel.setIsPrimaryKey("N");
nameModel.setIsNull("Y");
buildTableFieldModelList.add(idModel);
buildTableFieldModelList.add(nameModel);
SqlInfoCreateModel model = SqlInfoCreateModel.builder()
.setTableName("tbl_student")
.setTableOptions(buildTableFieldModelList)
.build();
SQLInterpretContext context = new SQLInterpretContext();
context.setCreateModel(model);
BuildCreateTable build=new BuildCreateTable();
List<SqlFormatModel> sqlFormatModelList = build.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildCreateIndex() throws JSQLParserException {
SqlInfoCreateIndexModel model = SqlInfoCreateIndexModel.builder()
.setTableName("tbl_student")
.setIndexName("ind_aa")
.setIndexFieldCodeList(FuncBase.toStrList("name,age"))
.build();
SQLInterpretContext context = new SQLInterpretContext();
context.setCreateIndexModel(model);
BuildCreateIndex build=new BuildCreateIndex();
List<SqlFormatModel> sqlFormatModelList = build.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildAndUpdateExpression() throws JSQLParserException {
//构建update语句
Map<String,Object> updateMap=new HashMap<>();
updateMap.put("age",18);
updateMap.put("name","张三");
SqlInfoUpdateModel build = SqlInfoUpdateModel.builder()
.setTableName("tbl_student")
.addColumn("id", 123)
.addMap(updateMap)
.build();
SQLInterpretContext context = new SQLInterpretContext();
BuildUpdate buildUpdate=new BuildUpdate();
context.setUpdateModel(build);
//构建where语句
SqlInfoWhereModel whereModel = SqlInfoWhereModel.builder()
.ge("age",18)
.like("name","张三")
.buildWhere();
context.setWhereModel(whereModel);
BuildWhere buildWhere=new BuildWhere();
//update语句+where语句
AndExpression expression=new AndExpression(buildUpdate,buildWhere);
List<SqlFormatModel> sqlFormatModelList = expression.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildSelectExpression() throws JSQLParserException {
SqlInfoSelectModel selectModel = SqlInfoSelectModel.builder()
.setColumns("name", "age")
.setTableName("tbl_student")
.build();
SQLInterpretContext contextSelect = new SQLInterpretContext();
contextSelect.setSelectModel(selectModel);
BuildSelect buildSelect = new BuildSelect();
*//* SqlInfoWhereModel whereOrModel = SqlInfoWhereModel.builder()
.ge("age", 18)
.or()
.le("age",10)
.build();
SQLInterpretContext<SqlInfoWhereModel> contextWhereOr = new SQLInterpretContext<>(whereOrModel);
BuildWhere buildWhereOr=new BuildWhere(contextWhereOr);*//*
*//* SqlInfoWhereModel whereOrModel2 = SqlInfoWhereModel.builder()
.le("age", 182)
.notLike("name", "张三2")
.or(buildWhereOr)
.build();
SQLInterpretContext<SqlInfoWhereModel> contextWhereOr2 = new SQLInterpretContext<>(whereOrModel2);
BuildWhere buildWhereOr2=new BuildWhere(contextWhereOr2);*//*
SqlInfoWhereModel whereAndModel = SqlInfoWhereModel.builder()// 18<x<65
.ge("age", 18)
.le("age",65)
.buildWhere();
SQLInterpretContext contextWhereAnd = new SQLInterpretContext();
contextWhereAnd.setWhereModel(whereAndModel);
BuildWhere buildWhereAnd=new BuildWhere();
buildWhereAnd.setContext(contextWhereAnd);
SqlInfoWhereModel whereModel = SqlInfoWhereModel.builder()
.gt("id", 12)
//.or(buildWhereOr)
//.or(buildWhereOr2)
.eq("na","历史")
.buildWhere();
SQLInterpretContext contextWhere = new SQLInterpretContext();
contextWhere.setWhereModel(whereModel);
BuildWhere buildWhere=new BuildWhere();
buildWhere.setContext(contextWhere);
SqlInfoGroupModel groupByModel = SqlInfoGroupModel.builder()
.setColumns("name", "age")
.build();
SQLInterpretContext contextGroupBy = new SQLInterpretContext();
BuildGroupBy buildGroupBy=new BuildGroupBy();
SqlInfoOrderModel orderByModel = SqlInfoOrderModel.builder()
.setOrderByAsc("age")
.build();
SQLInterpretContext contextOrderBy = new SQLInterpretContext();
BuildOrderBy buildOrderBy=new BuildOrderBy();
SQLInterpretContext context = new SQLInterpretContext();
context.setWhereModel(whereModel);
context.setSelectModel(selectModel);
context.setOrderModel(orderByModel);
context.setGroupModel(groupByModel);
//update语句+where语句
AndExpression expression=new AndExpression(buildWhere,buildSelect,buildOrderBy,buildGroupBy);
List<SqlFormatModel> sqlFormatModelList = expression.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildSelectAllExpression() throws JSQLParserException {
SqlInfoSelectModel selectModel = SqlInfoSelectModel.builder()
.setColumns("name", "age")
.setTableName("tbl_student")
.build();
SQLInterpretContext contextSelect = new SQLInterpretContext();
BuildSelect buildSelect = new BuildSelect();
contextSelect.setSelectModel(selectModel);
//
AndExpression expression=new AndExpression(buildSelect);
List<SqlFormatModel> sqlFormatModelList = expression.interpret(contextSelect);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildHavingExpression() throws JSQLParserException {
SqlInfoSelectModel selectModel = SqlInfoSelectModel.builder()
.setColumns("name", "count( id ) AS cou")
.setTableName("system_dept")
.build();
BuildSelect buildSelect = new BuildSelect();
SqlInfoHavingModel havingModel = SqlInfoConditionModel.builder()
.gt("cou", 1)
.likeLeft("name", "财务部门")
.buildHaving();
SQLInterpretContext contextHaving = new SQLInterpretContext();
contextHaving.setHavingModel(havingModel);
BuildHaving buildHaving=new BuildHaving();
buildHaving.setContext(contextHaving);
SqlInfoGroupModel groupByModel = SqlInfoGroupModel.builder()
.setColumns("name")
.build();
SQLInterpretContext contextGroupBy = new SQLInterpretContext();
BuildGroupBy buildGroupBy=new BuildGroupBy();
SqlInfoOrderModel orderByModel = SqlInfoOrderModel.builder()
.setOrderByAsc("cou")
.build();
SQLInterpretContext contextOrderBy = new SQLInterpretContext();
BuildOrderBy buildOrderBy=new BuildOrderBy();
SQLInterpretContext context = new SQLInterpretContext();
context.setSelectModel(selectModel);
context.setGroupModel(groupByModel);
context.setOrderModel(orderByModel);
context.setHavingModel(havingModel);
//update语句+where语句
AndExpression expression=new AndExpression(buildGroupBy,buildSelect,buildOrderBy,buildHaving);
List<SqlFormatModel> sqlFormatModelList = expression.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testBuildJoinExpression() throws JSQLParserException {
///主表
SqlInfoSelectModel selectModel = SqlInfoSelectModel.builder()
.setColumns("a.*","b.*","c.*")
.setTableName("tbl_a","a")
.build();
SQLInterpretContext contextSelect = new SQLInterpretContext();
BuildSelect buildSelect = new BuildSelect();
//B表
SqlInfoJoinModel joinModelB = SqlInfoJoinModel.builder()
.innerJoin()
.joinTable("tbl_b", "b")
.on("a.id", "b.a_id")
.build();
SQLInterpretContext contextJoinB = new SQLInterpretContext();
BuildJoin buildJsonB = new BuildJoin();
//C表
SqlInfoJoinModel joinModelC = SqlInfoJoinModel.builder()
.innerJoin()
.joinTable("tbl_c", "c")
.on("b.id", "c.b_id")
.build();
SQLInterpretContext contextJoinC = new SQLInterpretContext();
BuildJoin buildJsonC = new BuildJoin();
SQLInterpretContext context = new SQLInterpretContext();
context.setSelectModel(selectModel);
context.setJoinModel(joinModelB);
//update语句+where语句
AndExpression expression=new AndExpression(buildSelect,buildJsonB,buildJsonC);
List<SqlFormatModel> sqlFormatModelList = expression.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testHavingAndOrExpression() throws JSQLParserException {
SqlInfoSelectModel selectModel = SqlInfoSelectModel.builder()
.setColumns("name", "count( id ) AS cou")
.setTableName("system_dept")
.build();
BuildSelect buildSelect = new BuildSelect();
SqlInfoHavingModel havingModel = SqlInfoConditionModel.builder()
.gt("cou", 1)
.likeLeft("name", "财务部门")
.and( andTest ->{
andTest.eq("status", 1)
.or( orTest ->{
orTest.ne("id", 1);
});
})
.buildHaving();
SQLInterpretContext contextHaving = new SQLInterpretContext();
contextHaving.setHavingModel(havingModel);
BuildHaving buildHaving=new BuildHaving();
buildHaving.setContext(contextHaving);
SqlInfoGroupModel groupByModel = SqlInfoGroupModel.builder()
.setColumns("name")
.build();
SQLInterpretContext contextGroupBy = new SQLInterpretContext();
BuildGroupBy buildGroupBy=new BuildGroupBy();
SQLInterpretContext context = new SQLInterpretContext();
context.setSelectModel(selectModel);
context.setGroupModel(groupByModel);
context.setHavingModel(havingModel);
//update语句+where语句
AndExpression expression=new AndExpression(buildGroupBy,buildSelect,buildHaving);
List<SqlFormatModel> sqlFormatModelList = expression.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}
@Test
public void testWhereAndOrExpression() throws JSQLParserException {
SqlInfoSelectModel selectModel = SqlInfoSelectModel.builder()
.setColumns("name", "age")
.setTableName("tbl_student")
.build();
SQLInterpretContext contextSelect = new SQLInterpretContext();
contextSelect.setSelectModel(selectModel);
BuildSelect buildSelect = new BuildSelect();
SqlInfoWhereModel whereModel = SqlInfoWhereModel.builder()
.gt("id", 12)
.and(andTest ->{
andTest.eq("name","李四")
.or(orTest ->{
orTest.eq("name", "张三");
});
})
.eq("na","历史")
.buildWhere();
SQLInterpretContext contextWhere = new SQLInterpretContext();
contextWhere.setWhereModel(whereModel);
BuildWhere buildWhere=new BuildWhere();
buildWhere.setContext(contextWhere);
SqlInfoGroupModel groupByModel = SqlInfoGroupModel.builder()
.setColumns("name", "age")
.build();
SQLInterpretContext contextGroupBy = new SQLInterpretContext();
BuildGroupBy buildGroupBy=new BuildGroupBy();
SqlInfoOrderModel orderByModel = SqlInfoOrderModel.builder()
.setOrderByAsc("age")
.build();
SQLInterpretContext contextOrderBy = new SQLInterpretContext();
BuildOrderBy buildOrderBy=new BuildOrderBy();
SQLInterpretContext context = new SQLInterpretContext();
context.setWhereModel(whereModel);
context.setSelectModel(selectModel);
context.setOrderModel(orderByModel);
context.setGroupModel(groupByModel);
AndExpression expression=new AndExpression(buildWhere,buildSelect,buildOrderBy,buildGroupBy);
List<SqlFormatModel> sqlFormatModelList = expression.interpret(context);
System.out.println(FuncBase.json2Str(sqlFormatModelList));
}*/
}

View File

@@ -0,0 +1,94 @@
package com.jeelowcode.framework.plus.build.build.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.SqlInfoAlterModel;
import com.jeelowcode.framework.plus.entity.DbColunmTypesEntity;
import com.jeelowcode.framework.plus.entity.FieldModel;
import com.jeelowcode.framework.plus.utils.PlusUtils;
import com.jeelowcode.framework.plus.core.ddl.alter.JeeLowCodeAlterTable;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.enums.JeeLowCodeFieldTypeEnum;
import com.jeelowcode.framework.utils.tool.StringPool;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
import java.util.List;
/**
* 修改表相关
*/
public class BuildAlter implements ISQLExpression<List<SqlFormatModel>> {
@Override
public List<SqlFormatModel> interpret(SQLInterpretContext context) throws JSQLParserException {
DbColunmTypesEntity dbColunmTypes = context.getDbColunmTypes();
SqlInfoAlterModel alterModel = context.getAlterModel();
if(FuncBase.isEmpty(alterModel)){
return null;
}
//存在自定义ddl
List<String> executeDdlList = alterModel.getExecuteDdlList();
if(FuncBase.isNotEmpty(executeDdlList)){
return PlusUtils.ddl2SqlFormatModel(executeDdlList);
}
String ddl="";
switch (alterModel.getAlterType()) {
case ADD_COLUMN:
ddl = getAddColumnDDL(context.getSchemaName(),alterModel.getTableName(),alterModel.getFieldModel(),dbColunmTypes);
break;
case UPDATE_COLUMN:
ddl = getModifyColumnDDL(context.getSchemaName(),alterModel.getTableName(),alterModel.getFieldModel(),dbColunmTypes);
break;
}
return PlusUtils.ddl2SqlFormatModel(ddl);
}
//获取增加字段ddl
private String getAddColumnDDL(String schemaName,String tableName, FieldModel fieldModel, DbColunmTypesEntity dbColunmTypes) {
String symbol = dbColunmTypes.getSymbol();
Boolean upperFlag = dbColunmTypes.getUpperFlag();
tableName= FuncBase.concatSymbol(tableName,symbol,upperFlag);
schemaName= FuncBase.concatSymbol(schemaName,symbol);
JeeLowCodeFieldTypeEnum fieldTypeEnum = fieldModel.getFieldType();
DbColunmTypesEntity.TypeEntity typeEntity = PlusUtils.jeelowCodeType2DbType(fieldTypeEnum, dbColunmTypes);
String fieldType = PlusUtils.getDbType(fieldTypeEnum, typeEntity.getDbType(), fieldModel.getFieldLen(), fieldModel.getFieldPointLen(),typeEntity.getDbMaxLen());
String defaultValSql = PlusUtils.getDefaultValSql(fieldModel.getFieldDefaultVal(), fieldModel.getIsNull(),fieldModel.getDbNowIsNull());
String fieldCode = FuncBase.concatSymbol(fieldModel.getFieldCode(),symbol,upperFlag);
JeeLowCodeAlterTable alterTable = new JeeLowCodeAlterTable();
alterTable.setTableName(schemaName+ StringPool.DOT+tableName);
alterTable.addCoulumn(fieldCode, fieldType, defaultValSql);
String ddl = alterTable.getFullSQL();
return ddl;
}
//修改字段
private String getModifyColumnDDL(String schemaName,String tableName, FieldModel fieldModel, DbColunmTypesEntity dbColunmTypes) {
String symbol = dbColunmTypes.getSymbol();
Boolean upperFlag = dbColunmTypes.getUpperFlag();
tableName=FuncBase.concatSymbol(tableName,symbol,upperFlag);
schemaName= FuncBase.concatSymbol(schemaName,symbol);
JeeLowCodeFieldTypeEnum fieldTypeEnum = fieldModel.getFieldType();
DbColunmTypesEntity.TypeEntity typeEntity = PlusUtils.jeelowCodeType2DbType(fieldTypeEnum, dbColunmTypes);
String fieldType = PlusUtils.getDbType(fieldTypeEnum, typeEntity.getDbType(), fieldModel.getFieldLen(), fieldModel.getFieldPointLen(),typeEntity.getDbMaxLen());
String defaultValSql = PlusUtils.getDefaultValSql(fieldModel.getFieldDefaultVal(), fieldModel.getIsNull(),fieldModel.getDbNowIsNull());
String fieldCode = fieldModel.getFieldCode();
JeeLowCodeAlterTable alterTable = new JeeLowCodeAlterTable();
alterTable.setTableName(schemaName+ StringPool.DOT+tableName);
alterTable.modifyColumn(FuncBase.concatSymbol(fieldCode,symbol,upperFlag), fieldType, defaultValSql);
return alterTable.getFullSQL();
}
}

View File

@@ -0,0 +1,95 @@
package com.jeelowcode.framework.plus.build.build.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.SqlInfoCommentModel;
import com.jeelowcode.framework.plus.entity.DbColunmTypesEntity;
import com.jeelowcode.framework.plus.entity.FieldModel;
import com.jeelowcode.framework.plus.utils.PlusUtils;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
import java.util.ArrayList;
import java.util.List;
/**
* 备注 相关
*/
public class BuildComment implements ISQLExpression<List<SqlFormatModel>> {
@Override
public List<SqlFormatModel> interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoCommentModel commentModel = context.getCommentModel();
if (FuncBase.isEmpty(commentModel)) {
return null;
}
//存在自定义ddl
List<String> executeDdlList = commentModel.getExecuteDdlList();
if (FuncBase.isNotEmpty(executeDdlList)) {
return PlusUtils.ddl2SqlFormatModel(executeDdlList);
}
DbColunmTypesEntity dbColunmTypes = context.getDbColunmTypes();
String symbol = dbColunmTypes.getSymbol();
Boolean upperFlag = dbColunmTypes.getUpperFlag();
String schemaName = FuncBase.concatSymbol(context.getSchemaName(), symbol);
String tableName = FuncBase.concatSymbol(commentModel.getTableName(), symbol, upperFlag);
String tableAlias = commentModel.getTableAlias();
List<FieldModel> fieldModelList = commentModel.getFieldModelList();
List<String> ddlList = new ArrayList<>();
String tableDdl = this.tableComment(schemaName, tableName, tableAlias);
if (FuncBase.isNotEmpty(tableDdl)) {
ddlList.add(tableDdl);
}
List<String> columnDdlList = this.columnComment(dbColunmTypes, schemaName, tableName, fieldModelList);
if (FuncBase.isNotEmpty(columnDdlList)) {
ddlList.addAll(columnDdlList);
}
return PlusUtils.ddl2SqlFormatModel(ddlList);
}
/**
* 表备注
*
* @return
*/
private String tableComment(String schemaName, String tableName, String tableAlias) {
if (FuncBase.isEmpty(tableAlias)) {
return null;
}
String str = "COMMENT ON TABLE %s.%s IS '%s';";
String ddl = String.format(str, schemaName, tableName, tableAlias);
return ddl;
}
private List<String> columnComment(DbColunmTypesEntity dbColunmTypes, String schemaName, String tableName, List<FieldModel> fieldModelList) {
if (FuncBase.isEmpty(fieldModelList)) {
return null;
}
String symbol = dbColunmTypes.getSymbol();
Boolean upperFlag = dbColunmTypes.getUpperFlag();
List<String> ddlList = new ArrayList<>();
for (FieldModel fieldModel : fieldModelList) {
String fieldCode = FuncBase.concatSymbol(fieldModel.getFieldCode(), symbol, upperFlag);
String fieldName = fieldModel.getFieldName();
String str = "COMMENT ON COLUMN %s.%s.%s IS '%s';";
String ddl = String.format(str, schemaName, tableName, fieldCode, fieldName);
ddlList.add(ddl);
}
return ddlList;
}
}

View File

@@ -0,0 +1,63 @@
package com.jeelowcode.framework.plus.build.build.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.SqlInfoCreateIndexModel;
import com.jeelowcode.framework.plus.entity.DbColunmTypesEntity;
import com.jeelowcode.framework.plus.utils.PlusUtils;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
import java.util.List;
import java.util.stream.Collectors;
/***
* 索引相关
*/
public class BuildCreateIndex implements ISQLExpression<List<SqlFormatModel>> {
@Override
public List<SqlFormatModel> interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoCreateIndexModel model = context.getCreateIndexModel();
DbColunmTypesEntity dbColunmTypes = context.getDbColunmTypes();
if(FuncBase.isEmpty(model)){
return null;
}
//存在自定义ddl
List<String> executeDdlList = model.getExecuteDdlList();
if(FuncBase.isNotEmpty(executeDdlList)){
return PlusUtils.ddl2SqlFormatModel(executeDdlList);
}
String symbol = dbColunmTypes.getSymbol();
Boolean upperFlag = dbColunmTypes.getUpperFlag();
String tableName = FuncBase.concatSymbol(model.getTableName(),symbol,upperFlag);
String indexName = FuncBase.concatSymbol(model.getIndexName(),symbol,upperFlag);
String indexType = model.getIndexType();
String schemaName = FuncBase.concatSymbol(context.getSchemaName(),symbol);
List<String> indexFieldCodeList = model.getIndexFieldCodeList();
List<String> list = indexFieldCodeList.stream()
.map(key -> FuncBase.concatSymbol( key , symbol,upperFlag))
.collect(Collectors.toList());
String str = "CREATE INDEX %s ON %s.%s (%s)";
if(FuncBase.isNotEmpty(indexType) && "UNIQUE".equals(indexType.toUpperCase())){//唯一
str = "CREATE UNIQUE INDEX %s ON %s.%s (%s)";
}
String ddl = String.format(str, indexName, schemaName,tableName, String.join(",", list));
return PlusUtils.ddl2SqlFormatModel(ddl);
}
}

View File

@@ -0,0 +1,81 @@
package com.jeelowcode.framework.plus.build.build.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.SqlInfoCreateModel;
import com.jeelowcode.framework.plus.entity.DbColunmTypesEntity;
import com.jeelowcode.framework.plus.entity.FieldModel;
import com.jeelowcode.framework.plus.utils.PlusUtils;
import com.jeelowcode.framework.plus.core.ddl.create.JeeLowCodeCreateTable;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.enums.JeeLowCodeFieldTypeEnum;
import com.jeelowcode.framework.utils.tool.StringPool;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
import java.util.List;
/**
* 建表相关
*/
public class BuildCreateTable implements ISQLExpression<List<SqlFormatModel>> {
@Override
public List<SqlFormatModel> interpret(SQLInterpretContext context) throws JSQLParserException {
DbColunmTypesEntity dbColunmTypes = context.getDbColunmTypes();
SqlInfoCreateModel creteModel = context.getCreateModel();
if(FuncBase.isEmpty(creteModel)){
return null;
}
//存在自定义ddl
List<String> executeDdlList = creteModel.getExecuteDdlList();
if(FuncBase.isNotEmpty(executeDdlList)){
return PlusUtils.ddl2SqlFormatModel(executeDdlList);
}
String tableName = creteModel.getTableName();
String schemaName = context.getSchemaName();
List<FieldModel> tableOptions = creteModel.getTableOptions();
String ddl = this.getDDL(schemaName,tableName, tableOptions, dbColunmTypes);
return PlusUtils.ddl2SqlFormatModel(ddl);
}
/**
* 获取ddl
*
* @param tableName
* @param tableOptions
* @param dbColunmTypes
* @return
*/
public String getDDL(String schemaName,String tableName, List<FieldModel> tableOptions, DbColunmTypesEntity dbColunmTypes) {
Boolean upperFlag = dbColunmTypes.getUpperFlag();
String symbol = dbColunmTypes.getSymbol();
JeeLowCodeCreateTable createTable = new JeeLowCodeCreateTable();
tableName=FuncBase.concatSymbol(tableName,symbol,upperFlag);
schemaName=FuncBase.concatSymbol(schemaName,symbol);
for (int i = 0; i < tableOptions.size(); i++) {
FieldModel fieldModel = tableOptions.get(i);
String fieldCode = FuncBase.concatSymbol(fieldModel.getFieldCode(),symbol,upperFlag);
JeeLowCodeFieldTypeEnum fieldTypeEnum = fieldModel.getFieldType();
//类型
DbColunmTypesEntity.TypeEntity typeEntity = PlusUtils.jeelowCodeType2DbType(fieldTypeEnum, dbColunmTypes);
Integer dbMaxLen = typeEntity.getDbMaxLen();
if(dbMaxLen < fieldModel.getFieldLen()){
fieldModel.setFieldLen(dbMaxLen);
}
String fieldType = PlusUtils.getDbType(fieldTypeEnum, typeEntity.getDbType(), fieldModel.getFieldLen(), fieldModel.getFieldPointLen(),typeEntity.getDbMaxLen());
String defaultValSql = PlusUtils.getDefaultValSql(fieldModel.getFieldDefaultVal(), fieldModel.getIsNull(),null);
createTable.addCoulumn(fieldCode, fieldType, defaultValSql);
}
createTable.setTableName(schemaName+ StringPool.DOT+tableName);//表名称
String ddl = createTable.getDDL();
return ddl;
}
}

View File

@@ -0,0 +1,35 @@
package com.jeelowcode.framework.plus.build.build.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.SqlInfoDdlModel;
import com.jeelowcode.framework.plus.utils.PlusUtils;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
import java.util.List;
/**
* 通用DDL
*/
public class BuildDdl implements ISQLExpression<List<SqlFormatModel>> {
@Override
public List<SqlFormatModel> interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoDdlModel ddlModel = context.getDdlModel();
if (FuncBase.isEmpty(ddlModel)) {
return null;
}
//存在自定义ddl
List<String> executeDdlList = ddlModel.getExecuteDdlList();
if (FuncBase.isEmpty(executeDdlList)) {
return null;
}
return PlusUtils.ddl2SqlFormatModel(executeDdlList);
}
}

View File

@@ -0,0 +1,104 @@
package com.jeelowcode.framework.plus.build.build.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.SqlInfoDropModel;
import com.jeelowcode.framework.plus.entity.DbColunmTypesEntity;
import com.jeelowcode.framework.plus.utils.PlusUtils;
import com.jeelowcode.framework.plus.core.ddl.alter.JeeLowCodeAlterTable;
import com.jeelowcode.framework.plus.core.ddl.drop.JeeLowCodeDropTable;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.tool.StringPool;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
import java.util.List;
/**
* 删除表,字段,索引
*/
public class BuildDrop implements ISQLExpression<List<SqlFormatModel>> {
@Override
public List<SqlFormatModel> interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoDropModel dropModel = context.getDropModel();
if (FuncBase.isEmpty(dropModel)) {
return null;
}
//存在自定义ddl
List<String> executeDdlList = dropModel.getExecuteDdlList();
if(FuncBase.isNotEmpty(executeDdlList)){
return PlusUtils.ddl2SqlFormatModel(executeDdlList);
}
DbColunmTypesEntity dbColunmTypes = context.getDbColunmTypes();
String symbol = dbColunmTypes.getSymbol();
Boolean upperFlag = dbColunmTypes.getUpperFlag();
String tableName = FuncBase.concatSymbol(dropModel.getTableName(), symbol, upperFlag);
String indexName = FuncBase.concatSymbol(dropModel.getIndexName(), symbol, upperFlag);
String cloumnCode = FuncBase.concatSymbol(dropModel.getCloumnCode(), symbol, upperFlag);
String schemaName = FuncBase.concatSymbol(context.getSchemaName(), symbol);
String ddl = "";
switch (dropModel.getDropType()) {
case DROP_TABLE:
ddl = this.dropTable(schemaName, tableName);
break;
case DROP_COLUMN:
ddl = this.dropColumn(schemaName, tableName, cloumnCode,dropModel.getCloumnFormat());
break;
case DROP_INDEX:
ddl = this.dropIndex(schemaName, indexName);
break;
}
return PlusUtils.ddl2SqlFormatModel(ddl);
}
/**
* 删除表
*
* @param schemaName
* @param tableName
* @return
*/
private String dropTable(String schemaName, String tableName) {
JeeLowCodeDropTable dropTable = new JeeLowCodeDropTable();
dropTable.setTableName(schemaName + StringPool.DOT + tableName);
return dropTable.getFullSQL();
}
/**
* 删除字段
*
* @param schemaName
* @param tableName
* @param cloumnCode
* @return
*/
private String dropColumn(String schemaName, String tableName, String cloumnCode,String cloumnFormat) {
if(FuncBase.isNotEmpty(cloumnFormat)){
cloumnCode =String.format(cloumnFormat,cloumnCode);
}
JeeLowCodeAlterTable dropColumn = new JeeLowCodeAlterTable();
dropColumn.setTableName(schemaName + StringPool.DOT + tableName);
dropColumn.dropColumn(cloumnCode);
return dropColumn.getFullSQL();
}
/**
* 删除索引
* @param schemaName
* @param indexName
* @return
*/
private String dropIndex(String schemaName, String indexName) {
String str = "DROP INDEX %s.%s";
String ddl = String.format(str, schemaName, indexName);
return ddl;
}
}

View File

@@ -0,0 +1,56 @@
package com.jeelowcode.framework.plus.build.build.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.SqlInfoPrimaryKeyModel;
import com.jeelowcode.framework.plus.entity.DbColunmTypesEntity;
import com.jeelowcode.framework.plus.utils.PlusUtils;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
import java.util.List;
import java.util.stream.Collectors;
/**
* 主键相关
*/
public class BuildPrimaryKey implements ISQLExpression<List<SqlFormatModel>> {
@Override
public List<SqlFormatModel> interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoPrimaryKeyModel primaryKeyModel = context.getPrimaryKeyModel();
if (FuncBase.isEmpty(primaryKeyModel)) {
return null;
}
//存在自定义ddl
List<String> executeDdlList = primaryKeyModel.getExecuteDdlList();
if(FuncBase.isNotEmpty(executeDdlList)){
return PlusUtils.ddl2SqlFormatModel(executeDdlList);
}
DbColunmTypesEntity dbColunmTypes = context.getDbColunmTypes();
String symbol = dbColunmTypes.getSymbol();
Boolean upperFlag = dbColunmTypes.getUpperFlag();
String tableName = FuncBase.concatSymbol(primaryKeyModel.getTableName(),symbol,upperFlag);
String schemaName = FuncBase.concatSymbol(context.getSchemaName(),symbol);
List<String> tmpkeyList = primaryKeyModel.getKeyList();
if(FuncBase.isEmpty(tmpkeyList)){
return null;
}
List<String> keyList = tmpkeyList.stream()
.map(key -> FuncBase.concatSymbol( key , symbol,upperFlag))
.collect(Collectors.toList());
String str="ALTER TABLE %s.%s ADD PRIMARY KEY(%s)";
String ddl = String.format(str,schemaName,tableName,String.join(",",keyList));
return PlusUtils.ddl2SqlFormatModel(ddl);
}
}

View File

@@ -0,0 +1,345 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.buildmodel.ExpressionModel;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoConditionModel;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoHavingModel;
import com.jeelowcode.framework.plus.core.dql.select.JeeLowCodeQueryWrapper;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
/**
* @author JX
* @create 2024-07-29 16:00
* @dedescription:
*/
public class BuildCondition {
public JeeLowCodeQueryWrapper<Object> wrapper = new JeeLowCodeQueryWrapper();
public SQLInterpretContext context;
public SqlFormatModel context2Condition(SqlInfoConditionModel conditionModel){
List<ExpressionModel> expressions =conditionModel.getExpressions();
expressions.forEach(expressionModel -> {
SqlInfoConditionModel.WhereType whereType = expressionModel.getWhereType();
String column = expressionModel.getColumn();
Object[] value = expressionModel.getValue();
switch (whereType) {
case GT://>
gt(column, value);
break;
case GE://>=
ge(column, value);
break;
case NE:// !=
ne(column, value);
break;
case EQ:// =
eq(column, value);
break;
case LT://<
lt(column, value);
break;
case LE://<=
le(column, value);
break;
case BETWEEN:
between(column, value);
break;
case NOT_BETWEEN:
notbetween(column, value);
break;
case IN:
in(column, value);
break;
case NOT_IN:
notIn(column, value);
break;
case LIKE:
like(column, value);
break;
case NOT_LIKE:
notLike(column, value);
break;
case LIKE_LEFT:
likeLeft(column, value);
break;
case NOT_LIKE_LEFT:
notLikeLeft(column, value);
break;
case LIKE_RIGHT:
likeRight(column, value);
break;
case NOT_LIKE_RIGHT:
notLikeRight(column, value);
break;
case IS_NULL:
isNull(column);
break;
case IS_NOT_NULL:
isNotNull(column);
break;
case OR:
or();
break;
case OR_BUILD:
orBuild((Consumer<SqlInfoConditionModel.Builder>) value[0]);
break;
case AND_BUILD:
andBuild((Consumer<SqlInfoConditionModel.Builder>) value[0]);
break;
case APPLY:
apply(column);
break;
}
});
String sqlStr = "";
if(conditionModel instanceof SqlInfoHavingModel){
sqlStr=wrapper.getHavingCustomSqlSegment();
}else{
sqlStr=wrapper.getCustomSqlSegment();
}
Map<String, Object> paramNameValuePairs = wrapper.getParamNameValuePairs();
SqlFormatModel sqlFormatModel = new SqlFormatModel(sqlStr, paramNameValuePairs);
return sqlFormatModel;
}
public void gt(String column, Object[] value) {
wrapper.gt(column, value[0]);
return;
}
public void ge(String column, Object[] value) {
wrapper.ge(column, value[0]);
return;
}
public void ne(String column, Object[] value) {
wrapper.ne(column, value[0]);
return;
}
public void eq(String column, Object[] value) {
wrapper.eq(column, value[0]);
return;
}
public void between(String column, Object[] value) {
Object value1=value[0];
Object value2=value[1];
wrapper.between(column, value1, value2);
return;
}
public void notbetween(String column,Object[] value) {
Object value1=value[0];
Object value2=value[1];
wrapper.notBetween(column, value1, value2);
return;
}
public void in(String column, Object[] value) {
if(value.length>1){
wrapper.in(column, value);
return;
}
Object obj = value[0];
if(obj instanceof List){
List<Object> objList=(List)value[0];
wrapper.in(column, objList);
}else{
wrapper.in(column, obj);
}
return;
}
public void notIn(String column, Object[] value) {
if(value.length>1){
wrapper.notIn(column, value);
return;
}
Object obj = value[0];
if(obj instanceof List){
List<Object> objList=(List)value[0];
wrapper.notIn(column, objList);
}else{
wrapper.notIn(column, obj);
}
return;
}
public void like(String column, Object[] value) {
wrapper.like(column, value[0]);
return;
}
public void notLike(String column, Object[] value) {
wrapper.notLike(column, value[0]);
return;
}
public void likeLeft(String column, Object[] value) {
wrapper.likeLeft(column, value[0]);
return;
}
public void notLikeLeft(String column, Object[] value) {
wrapper.notLikeLeft(column, value[0]);
return;
}
public void likeRight(String column, Object[] value) {
wrapper.likeRight(column, value[0]);
return;
}
public void notLikeRight(String column, Object[] value) {
wrapper.notLikeRight(column, value[0]);
return;
}
public void lt(String column, Object[] value) {
wrapper.lt(column, value[0]);
return;
}
public void le(String column, Object[] value) {
wrapper.le(column, value[0]);
return;
}
public void isNull(String column) {
wrapper.isNull(column);
return;
}
public void isNotNull(String column) {
wrapper.isNotNull(column);
return;
}
public void apply(String column) {
wrapper.apply(column);
return;
}
public void or() {
wrapper.or();
return;
}
public void orBuild(Consumer<SqlInfoConditionModel.Builder> condition) {
try{
SqlInfoConditionModel.Builder builder = new SqlInfoConditionModel.Builder();
condition.accept(builder);
SqlInfoConditionModel<BuildCondition> build = builder.build();
BuildCondition buildCondition = new BuildCondition();
SqlFormatModel sqlFormatModel = buildCondition.context2Condition(build);
String tmpSql = sqlFormatModel.getSql();
tmpSql=tmpSql.substring(6);
Map<String, Object> tmpMap = sqlFormatModel.getDataMap();
if (FuncBase.isEmpty(tmpMap)) {//没有参数的情况下
String newSql=String.format("( 1!=1 OR %s) ",tmpSql);
wrapper.apply(newSql);
return;
}
//存在参数的情况下
List<Map.Entry<String, Object>> entrieList = new ArrayList<>(tmpMap.entrySet());
Collections.reverse(entrieList);
int step=0;
Object[] objects=new Object[entrieList.size()];
// 然后,从列表的末尾开始遍历
for (Map.Entry<String, Object> entry : entrieList) {
String key = entry.getKey(); // 获取键
Object value = entry.getValue(); // 获取值
// 执行你的替换逻辑
tmpSql = tmpSql.replace("#{"+ FuncBase.PARAM_NAME_VALUE_PAIRS+"." + key + "}", "{"+step+"}");
objects[step]=value;
step++;
}
String newSql=String.format(" ( 1!=1 OR %s) ",tmpSql);//1!=1 兼容语法
wrapper.apply(newSql,objects);
}catch (Exception e){
}
return;
}
public void andBuild(Consumer<SqlInfoConditionModel.Builder> condition) {
try{
SqlInfoConditionModel.Builder builder = new SqlInfoConditionModel.Builder();
condition.accept(builder);
SqlInfoConditionModel<BuildCondition> build = builder.build();
BuildCondition buildCondition = new BuildCondition();
SqlFormatModel sqlFormatModel = buildCondition.context2Condition(build);
String tmpSql = sqlFormatModel.getSql();
tmpSql=tmpSql.substring(6);
Map<String, Object> tmpMap = sqlFormatModel.getDataMap();
if (FuncBase.isEmpty(tmpMap)) {//没有参数的情况下
String newSql=String.format("(%s) ",tmpSql);
wrapper.apply(newSql);
return;
}
//存在参数的情况下
List<Map.Entry<String, Object>> entrieList = new ArrayList<>(tmpMap.entrySet());
Collections.reverse(entrieList);
int step=0;
Object[] objects=new Object[entrieList.size()];
// 然后,从列表的末尾开始遍历
for (Map.Entry<String, Object> entry : entrieList) {
String key = entry.getKey(); // 获取键
Object value = entry.getValue(); // 获取值
// 执行你的替换逻辑
tmpSql = tmpSql.replace("#{"+ FuncBase.PARAM_NAME_VALUE_PAIRS+"." + key + "}", "{"+step+"}");
objects[step]=value;
step++;
}
String newSql=String.format(" (%s) ",tmpSql);
wrapper.apply(newSql,objects);
}catch (Exception e){
}
return;
}
public JeeLowCodeQueryWrapper<Object> getWrapper() {
return wrapper;
}
public void setWrapper(JeeLowCodeQueryWrapper<Object> wrapper) {
this.wrapper = wrapper;
}
public SQLInterpretContext getContext() {
return this.context;
}
public void setContext(SQLInterpretContext context) {
this.context = context;
}
}

View File

@@ -0,0 +1,52 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoDeleteModel;
import com.jeelowcode.framework.plus.core.dql.update.JeeLowCodeUpdateWrapper;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import java.util.Map;
/**
* 构建 删除 语句
*/
public class BuildDelete implements ISQLExpression<SqlFormatModel> {
public SqlFormatModel interpret(SQLInterpretContext context){
SqlInfoDeleteModel sqlInfo = context.getDeleteModel();
String tableName = sqlInfo.getTableName();
Boolean isReal = sqlInfo.getReal();
SqlFormatModel sqlFormatModel;
if (isReal){//真实删除
String sql = "Delete from " + tableName;
sqlFormatModel = new SqlFormatModel(sql);
}else {//逻辑删除
JeeLowCodeUpdateWrapper updateWrapper = new JeeLowCodeUpdateWrapper<>();
updateWrapper.set("is_deleted",-1);
String sqlSet = updateWrapper.getSqlSet();
Map<String,Object> paramNameValuePairs = updateWrapper.getParamNameValuePairs();
//处理null值
for (Map.Entry<String,Object> entry : paramNameValuePairs.entrySet()) {
Object value = entry.getValue();
if(FuncBase.isEmpty(value)){
entry.setValue(null);
}
}
String sql = "update " + tableName + " set " + sqlSet ;
sqlFormatModel = new SqlFormatModel(sql, paramNameValuePairs);
}
return sqlFormatModel;
}
}

View File

@@ -0,0 +1,35 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoGroupModel;
import com.jeelowcode.framework.plus.core.dql.select.JeeLowCodeQueryWrapper;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import net.sf.jsqlparser.JSQLParserException;
import java.util.Arrays;
/**
* group by
*/
public class BuildGroupBy implements ISQLExpression<SqlFormatModel> {
@Override
public SqlFormatModel interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoGroupModel sqlInfo = context.getGroupModel();
String[] columns = sqlInfo.getColumns();
JeeLowCodeQueryWrapper wrapper=new JeeLowCodeQueryWrapper();
wrapper.groupBy(Arrays.asList(columns));
String groupByStr = wrapper.getCustomSqlSegment();
return new SqlFormatModel(groupByStr);
}
}

View File

@@ -0,0 +1,27 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoHavingModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import net.sf.jsqlparser.JSQLParserException;
/**
* having 相关
*/
public class BuildHaving extends BuildCondition implements ISQLExpression<SqlFormatModel> {
@Override
public SqlFormatModel interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoHavingModel havingModel = context.getHavingModel();
SqlFormatModel sqlFormatModel = super.context2Condition(havingModel);
return sqlFormatModel;
}
}

View File

@@ -0,0 +1,70 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoInsertModel;
import com.jeelowcode.framework.plus.core.dql.insert.JeeLowCodeInsertWrapper;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 构建 insert 语句
*/
public class BuildInsert implements ISQLExpression<SqlFormatModel> {
@Override
public SqlFormatModel interpret(SQLInterpretContext context){
SqlInfoInsertModel sqlInfo = context.getInsertModel();
String tableName = sqlInfo.getTableName();
Map<String, Object> insertMap = sqlInfo.getInsertMap();
JeeLowCodeInsertWrapper insertWrapper = new JeeLowCodeInsertWrapper<>();
for (Map.Entry<String, Object> entry : insertMap.entrySet()) {
insertWrapper.set(entry.getKey(),entry.getValue());
}
//封装
String sqlSet = insertWrapper.getSqlSet();
String customSqlSegment = insertWrapper.getCustomSqlSegment();
Map<String, Object> paramNameValuePairs = insertWrapper.getParamNameValuePairs();
for (Map.Entry<String,Object> entry : paramNameValuePairs.entrySet()) {
Object value = entry.getValue();
if(FuncBase.isEmpty(value)){
entry.setValue(null);
}
}
List<String> fieldList=new ArrayList<>();
List<String> valueList=new ArrayList<>();
List<String> setList = FuncBase.toStrList(sqlSet);
for(String set:setList){
String[] split = set.split("=");
String field=split[0];
String value=split[1];
fieldList.add(field);
if(!insertMap.containsKey(field)){//不存在,指定jdbc类型不然oracle报错
value=value.substring(0,value.length()-1)+",jdbcType=VARCHAR}";
}else if(FuncBase.isEmpty(insertMap.get(field))){//为空,指定jdbc类型不然oracle报错
value=value.substring(0,value.length()-1)+",jdbcType=VARCHAR}";
}
valueList.add(value);
}
String sql = "insert into " + tableName + "(%s) VALUE(%s) ";
String finalSql = String.format(sql, String.join(",", fieldList), String.join(",", valueList));
SqlFormatModel sqlFormatModel = new SqlFormatModel(finalSql,paramNameValuePairs);
return sqlFormatModel;
}
}

View File

@@ -0,0 +1,44 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoJoinModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import net.sf.jsqlparser.JSQLParserException;
/**
* left join ,inner join ,right join相关
*/
public class BuildJoin implements ISQLExpression<SqlFormatModel> {
@Override
public SqlFormatModel interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoJoinModel model = context.getJoinModel();
SqlInfoJoinModel.JoinType joinType = model.getJoinType();
String onStr = model.getOnStr();
String tableName = model.getTableName();
String joinSymbolStr="";
switch (joinType) {
case LEFT_JOIN:
joinSymbolStr = "LEFT JOIN";
break;
case RIGHT_JOIN:
joinSymbolStr = "RIGHT JOIN";
break;
case INNER_JOIN:
joinSymbolStr = "INNER JOIN";
break;
}
String sql= joinSymbolStr+" "+tableName+" on "+onStr;
SqlFormatModel sqlFormatModel = new SqlFormatModel(sql);
return sqlFormatModel;
}
}

View File

@@ -0,0 +1,40 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoOrderModel;
import com.jeelowcode.framework.plus.core.dql.select.JeeLowCodeQueryWrapper;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import net.sf.jsqlparser.JSQLParserException;
import java.util.*;
/**
* 排序
*/
public class BuildOrderBy implements ISQLExpression<SqlFormatModel> {
@Override
public SqlFormatModel interpret(SQLInterpretContext context) throws JSQLParserException {
JeeLowCodeQueryWrapper wrapper=new JeeLowCodeQueryWrapper();
SqlInfoOrderModel sqlInfoOrderModel = context.getOrderModel();
List<SqlInfoOrderModel.OrderByModel> orderModels = sqlInfoOrderModel.getOrderByList();
orderModels.forEach(orderModel -> {
String[] columns = orderModel.getColumns();//列
boolean isAsc = orderModel.isAsc();
wrapper.orderBy(true,isAsc, Arrays.asList(columns));
});
String orderByStr = wrapper.getCustomSqlSegment();
return new SqlFormatModel(orderByStr);
}
}

View File

@@ -0,0 +1,27 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoPublicModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import net.sf.jsqlparser.JSQLParserException;
/**
* 通用sql
*/
public class BuildPublicSql implements ISQLExpression<SqlFormatModel> {
@Override
public SqlFormatModel interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoPublicModel sqlInfo = context.getPublicModel();
String sql = sqlInfo.getSql();//获取原有的sql
return new SqlFormatModel(sql);
}
}

View File

@@ -0,0 +1,42 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoSelectModel;
import com.jeelowcode.framework.plus.core.dql.select.JeeLowCodeQueryWrapper;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import net.sf.jsqlparser.JSQLParserException;
/**
* 查询相关
*/
public class BuildSelect implements ISQLExpression<SqlFormatModel> {
@Override
public SqlFormatModel interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoSelectModel sqlInfo = context.getSelectModel();
String[] columns = sqlInfo.getColumns();//查询列
String tableName = sqlInfo.getTableName();//查询表
if(FuncBase.isEmpty(columns)){
columns = new String[]{"*"};
}
JeeLowCodeQueryWrapper wrapper=new JeeLowCodeQueryWrapper();
wrapper.select(columns);
String sqlSelect = wrapper.getSqlSelect();
String sql = "select " + sqlSelect + " from " + tableName;
return new SqlFormatModel(sql);
}
}

View File

@@ -0,0 +1,70 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoUpdateModel;
import com.jeelowcode.framework.plus.core.dql.update.JeeLowCodeUpdateWrapper;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import java.util.*;
/**
* 构建 update 语句
*/
public class BuildUpdate implements ISQLExpression<SqlFormatModel> {
@Override
public SqlFormatModel interpret(SQLInterpretContext context){
SqlInfoUpdateModel sqlInfo = context.getUpdateModel();
String tableName = sqlInfo.getTableName();
JeeLowCodeUpdateWrapper updateWrapper = new JeeLowCodeUpdateWrapper(tableName);
Map<String, Object> updateMap = sqlInfo.getUpdateMap();
updateMap.forEach((k,v)->{
updateWrapper.set(k,v);
});
String sqlSet = updateWrapper.getSqlSet();
Map<String,Object> paramNameValuePairs = updateWrapper.getParamNameValuePairs();
String newSqlSet="";
List<String> setList = FuncBase.toStrList(sqlSet);
for(String set:setList){
String[] split = set.split("=");
String field=split[0];
String value=split[1];
if(!updateMap.containsKey(field)){//不存在,指定jdbc类型不然oracle报错
value=value.substring(0,value.length()-1)+",jdbcType=VARCHAR}";
}else if(FuncBase.isEmpty(updateMap.get(field))){//为空,指定jdbc类型不然oracle报错
value=value.substring(0,value.length()-1)+",jdbcType=VARCHAR}";
}
if(FuncBase.isEmpty(newSqlSet)){
newSqlSet=field+"="+value;
}else{
newSqlSet+=","+field+"="+value;
}
}
//处理null值
for (Map.Entry<String,Object> entry : paramNameValuePairs.entrySet()) {
Object value = entry.getValue();
if(FuncBase.isEmpty(value)){
entry.setValue(null);
}
}
String sql = "update " + tableName + " set " + newSqlSet ;
SqlFormatModel sqlFormatModel = new SqlFormatModel(sql, paramNameValuePairs);
return sqlFormatModel;
}
}

View File

@@ -0,0 +1,34 @@
package com.jeelowcode.framework.plus.build.build.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoWhereModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import net.sf.jsqlparser.JSQLParserException;
/**
* 构建where语句相关
*/
public class BuildWhere extends BuildCondition implements ISQLExpression<SqlFormatModel> {
public BuildWhere() {
}
public BuildWhere(SQLInterpretContext context){
super.context = context;
}
@Override
public SqlFormatModel interpret(SQLInterpretContext context) throws JSQLParserException {
SqlInfoWhereModel whereModel = context.getWhereModel();
SqlFormatModel sqlFormatModel = super.context2Condition(whereModel);
return sqlFormatModel;
}
}

View File

@@ -0,0 +1,35 @@
package com.jeelowcode.framework.plus.build.buildmodel;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoConditionModel;
public class ExpressionModel {
private SqlInfoConditionModel.WhereType whereType;
private String column;
private Object[] value;
public SqlInfoConditionModel.WhereType getWhereType() {
return whereType;
}
public void setWhereType(SqlInfoConditionModel.WhereType whereType) {
this.whereType = whereType;
}
public String getColumn() {
return column;
}
public void setColumn(String column) {
this.column = column;
}
public Object[] getValue() {
return value;
}
public void setValue(Object[] value) {
this.value = value;
}
}

View File

@@ -0,0 +1,245 @@
package com.jeelowcode.framework.plus.build.buildmodel;
import com.jeelowcode.framework.plus.build.buildmodel.dql.*;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.*;
import com.jeelowcode.framework.plus.build.buildmodel.ddl.*;
import com.jeelowcode.framework.plus.entity.DbColunmTypesEntity;
import com.jeelowcode.framework.plus.build.buildmodel.dql.*;
/**
* @author JX
* @create 2024-07-23 9:07
* @dedescription:
*/
public class SQLInterpretContext {
private String preSymbol="ew.";
private String schemaName;
private Boolean tenantIgnore;
private SqlInfoInsertModel insertModel;
private SqlInfoDeleteModel deleteModel;
private SqlInfoAlterModel alterModel;
private SqlInfoSelectModel selectModel;
private SqlInfoCreateModel createModel;
private SqlInfoCreateIndexModel createIndexModel;
private SqlInfoUpdateModel updateModel;
private SqlInfoDropModel dropModel;
private SqlInfoWhereModel whereModel;
private SqlInfoOrderModel orderModel;
private SqlInfoGroupModel groupModel;
private SqlInfoHavingModel havingModel;
private SqlInfoJoinModel joinModel;
private ExpressionModel expressionModel;
private DbColunmTypesEntity dbColunmTypes;
private SqlInfoCommentModel commentModel;
private SqlInfoPrimaryKeyModel primaryKeyModel;
private SqlInfoDdlModel ddlModel;
private SqlInfoPublicModel publicModel;
public SQLInterpretContext(String schemaName) {
this.schemaName = schemaName;
}
///===========================================================================
public String getSchemaName() {
return schemaName;
}
public void setSchemaName(String schemaName) {
this.schemaName = schemaName;
}
public SqlInfoInsertModel getInsertModel() {
return insertModel;
}
public void setInsertModel(SqlInfoInsertModel insertModel) {
this.insertModel = insertModel;
}
public SqlInfoDeleteModel getDeleteModel() {
return deleteModel;
}
public void setDeleteModel(SqlInfoDeleteModel deleteModel) {
this.deleteModel = deleteModel;
}
public SqlInfoAlterModel getAlterModel() {
return alterModel;
}
public void setAlterModel(SqlInfoAlterModel alterModel) {
this.alterModel = alterModel;
}
public SqlInfoSelectModel getSelectModel() {
return selectModel;
}
public void setSelectModel(SqlInfoSelectModel selectModel) {
this.selectModel = selectModel;
}
public SqlInfoCreateModel getCreateModel() {
return createModel;
}
public void setCreateModel(SqlInfoCreateModel createModel) {
this.createModel = createModel;
}
public SqlInfoCreateIndexModel getCreateIndexModel() {
return createIndexModel;
}
public void setCreateIndexModel(SqlInfoCreateIndexModel createIndexModel) {
this.createIndexModel = createIndexModel;
}
public SqlInfoUpdateModel getUpdateModel() {
return updateModel;
}
public void setUpdateModel(SqlInfoUpdateModel updateModel) {
this.updateModel = updateModel;
}
public SqlInfoDropModel getDropModel() {
return dropModel;
}
public void setDropModel(SqlInfoDropModel dropModel) {
this.dropModel = dropModel;
}
public SqlInfoWhereModel getWhereModel() {
return whereModel;
}
public void setWhereModel(SqlInfoWhereModel whereModel) {
this.whereModel = whereModel;
}
public SqlInfoOrderModel getOrderModel() {
return orderModel;
}
public void setOrderModel(SqlInfoOrderModel orderModel) {
this.orderModel = orderModel;
}
public SqlInfoGroupModel getGroupModel() {
return groupModel;
}
public void setGroupModel(SqlInfoGroupModel groupModel) {
this.groupModel = groupModel;
}
public SqlInfoHavingModel getHavingModel() {
return havingModel;
}
public void setHavingModel(SqlInfoHavingModel havingModel) {
this.havingModel = havingModel;
}
public SqlInfoJoinModel getJoinModel() {
return joinModel;
}
public void setJoinModel(SqlInfoJoinModel joinModel) {
this.joinModel = joinModel;
}
public ExpressionModel getExpressionModel() {
return expressionModel;
}
public void setExpressionModel(ExpressionModel expressionModel) {
this.expressionModel = expressionModel;
}
public DbColunmTypesEntity getDbColunmTypes() {
return dbColunmTypes;
}
public void setDbColunmTypes(DbColunmTypesEntity dbColunmTypes) {
this.dbColunmTypes = dbColunmTypes;
}
public SqlInfoCommentModel getCommentModel() {
return commentModel;
}
public void setCommentModel(SqlInfoCommentModel commentModel) {
this.commentModel = commentModel;
}
public SqlInfoPrimaryKeyModel getPrimaryKeyModel() {
return primaryKeyModel;
}
public void setPrimaryKeyModel(SqlInfoPrimaryKeyModel primaryKeyModel) {
this.primaryKeyModel = primaryKeyModel;
}
public SqlInfoDdlModel getDdlModel() {
return ddlModel;
}
public void setDdlModel(SqlInfoDdlModel ddlModel) {
this.ddlModel = ddlModel;
}
public String getPreSymbol() {
return preSymbol;
}
public void setPreSymbol(String preSymbol) {
this.preSymbol = preSymbol;
}
public SqlInfoPublicModel getPublicModel() {
return publicModel;
}
public void setPublicModel(SqlInfoPublicModel publicModel) {
this.publicModel = publicModel;
}
public Boolean getTenantIgnore() {
return tenantIgnore;
}
public void setTenantIgnore(Boolean tenantIgnore) {
this.tenantIgnore = tenantIgnore;
}
}

View File

@@ -0,0 +1,22 @@
package com.jeelowcode.framework.plus.build.buildmodel;
import com.jeelowcode.framework.plus.build.ISQLExpression;
/**
* 自定义 model
*/
public class SqlInfoBaseModel {
ISQLExpression sqlExpression;
public ISQLExpression getSqlExpression() {
return sqlExpression;
}
public void setSqlExpression(ISQLExpression sqlExpression) {
this.sqlExpression = sqlExpression;
}
}

View File

@@ -0,0 +1,35 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
/**
* 数据库字段列表
*/
public class FieldCommentModel extends SqlInfoBaseModel {
private String fieldCode;//字段
private String fieldName;//字段名称
public FieldCommentModel(String fieldCode, String fieldName) {
this.fieldCode = fieldCode;
this.fieldName = fieldName;
}
public String getFieldCode() {
return fieldCode;
}
public void setFieldCode(String fieldCode) {
this.fieldCode = fieldCode;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
}

View File

@@ -0,0 +1,90 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.ddl.BuildAlter;
import com.jeelowcode.framework.plus.entity.FieldModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.List;
/**
* @author JX
* @create 2024-07-06 11:45
* @dedescription:
*/
public class SqlInfoAlterModel<T> extends SqlInfoBaseDdlModel {
private AlterType alterType;//操作类型
private String tableName;//表名称
//addColumn
private FieldModel fieldModel;//字段属性
private SqlInfoAlterModel(){}
public enum AlterType{
ADD_COLUMN, //增加字段
UPDATE_COLUMN //修改字段
}
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoAlterModel alterModel = new SqlInfoAlterModel();
ISQLExpression<List<SqlFormatModel>> alterExpression = new BuildAlter();
public Builder setTableName(String tableName){
alterModel.tableName = tableName;
return this;
}
//增加字段
public SqlInfoAlterModel<BuildAlter> buildAddColumn(FieldModel fieldModel){
alterModel.alterType = AlterType.ADD_COLUMN;
alterModel.fieldModel =fieldModel;
alterModel.setSqlExpression(alterExpression);
return alterModel;
}
//更新字段
public SqlInfoAlterModel<BuildAlter> buildUpdateColum(FieldModel fieldModel){
alterModel.alterType = AlterType.UPDATE_COLUMN;
alterModel.fieldModel =fieldModel;
alterModel.setSqlExpression(alterExpression);
return alterModel;
}
}
public AlterType getAlterType() {
return alterType;
}
public void setAlterType(AlterType alterType) {
this.alterType = alterType;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public FieldModel getFieldModel() {
return fieldModel;
}
public void setFieldModel(FieldModel fieldModel) {
this.fieldModel = fieldModel;
}
}

View File

@@ -0,0 +1,25 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import java.util.List;
/**
* DDL 公共
* @param
*/
public class SqlInfoBaseDdlModel extends SqlInfoBaseModel {
//优先级最高,有值则只运行这里
private List<String> executeDdlList;
public List<String> getExecuteDdlList() {
return executeDdlList;
}
public void setExecuteDdlList(List<String> executeDdlList) {
this.executeDdlList = executeDdlList;
}
}

View File

@@ -0,0 +1,67 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.ddl.BuildComment;
import com.jeelowcode.framework.plus.entity.FieldModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.List;
/**
* @author JX
* @create 2024-07-06 11:45
* @dedescription:
*/
public class SqlInfoCommentModel<T> extends SqlInfoBaseDdlModel {
String tableName;
String tableAlias;
List<FieldModel> fieldModelList;
private SqlInfoCommentModel(){}
//构建表备注
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoCommentModel model = new SqlInfoCommentModel();
ISQLExpression<List<SqlFormatModel>> commentExpression = new BuildComment();
public Builder setTableName(String tableName){
model.tableName = tableName;
return this;
}
public Builder setTableAlias(String tableAlias){
model.tableAlias = tableAlias;
return this;
}
public Builder setfieldModelList(List<FieldModel> fieldModelList){
model.fieldModelList = fieldModelList;
return this;
}
//增加字段
public SqlInfoCommentModel<BuildComment> build(){
model.setSqlExpression(commentExpression);
return model;
}
}
public String getTableName() {
return tableName;
}
public String getTableAlias() {
return tableAlias;
}
public List<FieldModel> getFieldModelList() {
return fieldModelList;
}
}

View File

@@ -0,0 +1,94 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.ddl.BuildCreateIndex;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.List;
/**
* @author JX
* @create 2024-07-05 17:09
* @dedescription:
*/
public class SqlInfoCreateIndexModel<T> extends SqlInfoBaseDdlModel {
String tableName;//表
//index
private String indexName;//索引名称
private String indexType;//索引类型
private List<String> indexFieldCodeList;//索引值
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoCreateIndexModel sqlInfoCreateModel = new SqlInfoCreateIndexModel();
ISQLExpression<List<SqlFormatModel>> expression = new BuildCreateIndex();
public Builder setTableName(String tableName) {
sqlInfoCreateModel.tableName = tableName;
return this;
}
public Builder setIndexName(String indexName) {
sqlInfoCreateModel.indexName = indexName;
return this;
}
public Builder setIndexFieldCodeList(List<String> indexFieldCodeList) {
sqlInfoCreateModel.indexFieldCodeList = indexFieldCodeList;
return this;
}
public Builder setIndexType(String indexType) {
sqlInfoCreateModel.indexType = indexType;
return this;
}
public SqlInfoCreateIndexModel<BuildCreateIndex> build() {
ISQLExpression<List<SqlFormatModel>> expression = new BuildCreateIndex();
sqlInfoCreateModel.setSqlExpression(expression);
return sqlInfoCreateModel;
}
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getIndexName() {
return indexName;
}
public void setIndexName(String indexName) {
this.indexName = indexName;
}
public List<String> getIndexFieldCodeList() {
return indexFieldCodeList;
}
public void setIndexFieldCodeList(List<String> indexFieldCodeList) {
this.indexFieldCodeList = indexFieldCodeList;
}
public String getIndexType() {
return indexType;
}
public void setIndexType(String indexType) {
this.indexType = indexType;
}
}

View File

@@ -0,0 +1,62 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.ddl.BuildCreateTable;
import com.jeelowcode.framework.plus.entity.FieldModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.List;
/**
* @author JX
* @create 2024-07-05 17:09
* @dedescription:
*/
public class SqlInfoCreateModel<T> extends SqlInfoBaseDdlModel {
String tableName;//表
List<FieldModel> tableOptions;
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoCreateModel sqlInfoCreateModel = new SqlInfoCreateModel();
ISQLExpression<List<SqlFormatModel>> createTableExpression = new BuildCreateTable();
public Builder setTableName(String tableName) {
sqlInfoCreateModel.tableName = tableName;
return this;
}
public Builder setTableOptions(List<FieldModel> tableOptions) {
sqlInfoCreateModel.tableOptions = tableOptions;
return this;
}
public SqlInfoCreateModel<BuildCreateTable> build() {
sqlInfoCreateModel.setSqlExpression(createTableExpression);
return sqlInfoCreateModel;
}
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public List<FieldModel> getTableOptions() {
return tableOptions;
}
public void setTableOptions(List<FieldModel> tableOptions) {
this.tableOptions = tableOptions;
}
}

View File

@@ -0,0 +1,100 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.ddl.BuildDdl;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*/
public class SqlInfoDdlModel<T> extends SqlInfoBaseDdlModel {
private DdlType type;//操作类型
private Map<String,Object> map;//参数
private SqlInfoDdlModel(){}
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoDdlModel ddlModel = new SqlInfoDdlModel();
ISQLExpression<List<SqlFormatModel>> expression = new BuildDdl();
public SqlInfoDdlModel<BuildDdl> buildIndexExist(String tableName,String indexName){
Map<String,Object> map=new HashMap<>();
map.put("tableName",tableName);
map.put("indexName",indexName);
ddlModel.type= DdlType.INDEX_EXIST;
ddlModel.map=map;
ddlModel.setSqlExpression(expression);
return ddlModel;
}
public SqlInfoDdlModel<BuildDdl> buildIndexAllByTable(String tableName){
Map<String,Object> map=new HashMap<>();
map.put("tableName",tableName);
ddlModel.type= DdlType.INDEX_ALL;
ddlModel.map=map;
ddlModel.setSqlExpression(expression);
return ddlModel;
}
public SqlInfoDdlModel<BuildDdl> buildTableExist(String tableName){
Map<String,Object> map=new HashMap<>();
map.put("tableName",tableName);
ddlModel.type= DdlType.TABLE_EXIST;
ddlModel.map=map;
ddlModel.setSqlExpression(expression);
return ddlModel;
}
public SqlInfoDdlModel<BuildDdl> buildGetAllTableName(){
Map<String,Object> map=new HashMap<>();
ddlModel.type= DdlType.ALL_TABLE_NAME;
ddlModel.map=map;
ddlModel.setSqlExpression(expression);
return ddlModel;
}
public SqlInfoDdlModel<BuildDdl> buildFieldComment(String tableName){
Map<String,Object> map=new HashMap<>();
map.put("tableName",tableName);
ddlModel.type= DdlType.TABLE_FIELD_COMMENT;
ddlModel.map=map;
ddlModel.setSqlExpression(expression);
return ddlModel;
}
public SqlInfoDdlModel<BuildDdl> buildTableComment(String tableName){
Map<String,Object> map=new HashMap<>();
map.put("tableName",tableName);
ddlModel.type= DdlType.TABLE_COMMENT;
ddlModel.map=map;
ddlModel.setSqlExpression(expression);
return ddlModel;
}
}
public enum DdlType{
INDEX_EXIST,//索引是否存在
INDEX_ALL,//所有索引
TABLE_EXIST,//表名是否存在
ALL_TABLE_NAME,//所有表名
TABLE_COMMENT,//表备注
TABLE_FIELD_COMMENT;//表字段备注
}
public DdlType getType() {
return type;
}
public Map<String, Object> getMap() {
return map;
}
}

View File

@@ -0,0 +1,109 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.ddl.BuildDrop;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.List;
/**
* @author JX
* @create 2024-07-06 11:45
* @dedescription:
*/
public class SqlInfoDropModel<T> extends SqlInfoBaseDdlModel {
private DropType dropType;//操作类型
String tableName;//表
private String cloumnCode;//字段
private String cloumnFormat;//格式化
private String indexName;//索引名称
private SqlInfoDropModel(){}
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoDropModel dropModel = new SqlInfoDropModel();
ISQLExpression<List<SqlFormatModel>> expression = new BuildDrop();
public SqlInfoDropModel<BuildDrop> buildDropTable(String tableName){
dropModel.tableName = tableName;
dropModel.dropType = DropType.DROP_TABLE;
dropModel.setSqlExpression(expression);
return dropModel;
}
public SqlInfoDropModel<BuildDrop> buildDropColumn(String tableName,String column){
dropModel.tableName = tableName;
dropModel.cloumnCode=column;
dropModel.dropType = DropType.DROP_COLUMN;
dropModel.setSqlExpression(expression);
return dropModel;
}
public SqlInfoDropModel<BuildDrop> buildDropIndex(String tableName,String indexName){
dropModel.tableName = tableName;
dropModel.dropType = DropType.DROP_INDEX;
dropModel.indexName=indexName;
dropModel.setSqlExpression(expression);
return dropModel;
}
}
public enum DropType{
DROP_TABLE, //删除表
DROP_COLUMN, //删除字段
DROP_INDEX //删除索引
}
public DropType getDropType() {
return dropType;
}
public void setDropType(DropType dropType) {
this.dropType = dropType;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getCloumnCode() {
return cloumnCode;
}
public void setCloumnCode(String cloumnCode) {
this.cloumnCode = cloumnCode;
}
public String getIndexName() {
return indexName;
}
public void setIndexName(String indexName) {
this.indexName = indexName;
}
public String getCloumnFormat() {
return cloumnFormat;
}
public void setCloumnFormat(String cloumnFormat) {
this.cloumnFormat = cloumnFormat;
}
}

View File

@@ -0,0 +1,61 @@
package com.jeelowcode.framework.plus.build.buildmodel.ddl;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.ddl.BuildPrimaryKey;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.List;
/**
* @author JX
* @create 2024-07-05 17:09
* @dedescription:
*/
public class SqlInfoPrimaryKeyModel<T> extends SqlInfoBaseDdlModel {
String tableName;//表
List<String> keyList;
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoPrimaryKeyModel sqlInfoCreateModel = new SqlInfoPrimaryKeyModel();
ISQLExpression<List<SqlFormatModel>> primaryKeyExpression = new BuildPrimaryKey();
public Builder setTableName(String tableName) {
sqlInfoCreateModel.tableName = tableName;
return this;
}
public Builder setPrimaryKey(List<String> keyList) {
sqlInfoCreateModel.keyList = keyList;
return this;
}
public SqlInfoPrimaryKeyModel build() {
sqlInfoCreateModel.setSqlExpression(primaryKeyExpression);
return sqlInfoCreateModel;
}
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public List<String> getKeyList() {
return keyList;
}
public void setKeyList(List<String> keyList) {
this.keyList = keyList;
}
}

View File

@@ -0,0 +1,246 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildCondition;
import com.jeelowcode.framework.plus.build.build.dql.BuildHaving;
import com.jeelowcode.framework.plus.build.build.dql.BuildWhere;
import com.jeelowcode.framework.plus.build.buildmodel.ExpressionModel;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.utils.FuncBase;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**
* @author JX
* @create 2024-07-30 10:17
* @dedescription:
*/
public class SqlInfoConditionModel<T> extends SqlInfoBaseModel {
private List<ExpressionModel> expressions = new ArrayList<>();
public static SqlInfoConditionModel.Builder builder() {
return new SqlInfoConditionModel.Builder();
}
public static class Builder {
private SqlInfoConditionModel conditionModel = new SqlInfoConditionModel();
public SqlInfoConditionModel.Builder gt(String column, Object value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.GT, column, value));
return this;
}
public SqlInfoConditionModel.Builder ge(String column, Object value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.GE, column, value));
return this;
}
public SqlInfoConditionModel.Builder ne(String column, Object value) {
if (FuncBase.isEmpty(value)) {
return this;
}
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.NE, column, value));
return this;
}
public SqlInfoConditionModel.Builder eq(String column, Object value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.EQ, column, value));
return this;
}
public SqlInfoConditionModel.Builder lt(String column, Object value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.LT, column, value));
return this;
}
public SqlInfoConditionModel.Builder le(String column, Object value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.LE, column, value));
return this;
}
public SqlInfoConditionModel.Builder between(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.BETWEEN, column, value));
return this;
}
public SqlInfoConditionModel.Builder notbetween(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.NOT_BETWEEN, column, value));
return this;
}
public SqlInfoConditionModel.Builder in(boolean condition, String column, Object... value) {
if (!condition) {
return this;
}
return this.in(column, value);
}
public SqlInfoConditionModel.Builder in(String column, Object... value) {
if (FuncBase.isEmpty(value)) {
return this;
}
Object valueTmp = value[0];
if (FuncBase.isEmpty(valueTmp)) {
return this;
}
if (value.length == 1) {
if (valueTmp instanceof List) {
List<Object> tmpList = (List<Object>) valueTmp;
if (tmpList.size() == 1) {
this.eq(column, tmpList.get(0));
return this;
}
}
}
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.IN, column, value));
return this;
}
public SqlInfoConditionModel.Builder notIn(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.NOT_IN, column, value));
return this;
}
public SqlInfoConditionModel.Builder like(boolean condition, String column, Object... value) {
if (!condition) {
return this;
}
return like(column, value);
}
public SqlInfoConditionModel.Builder like(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.LIKE, column, value));
return this;
}
public SqlInfoConditionModel.Builder notLike(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.NOT_LIKE, column, value));
return this;
}
public SqlInfoConditionModel.Builder likeLeft(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.LIKE_LEFT, column, value));
return this;
}
public SqlInfoConditionModel.Builder notLikeLeft(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.NOT_LIKE_LEFT, column, value));
return this;
}
public SqlInfoConditionModel.Builder likeRight(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.LIKE_RIGHT, column, value));
return this;
}
public SqlInfoConditionModel.Builder notLikeRight(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.NOT_LIKE_RIGHT, column, value));
return this;
}
public SqlInfoConditionModel.Builder isNull(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.IS_NULL, column, value));
return this;
}
public SqlInfoConditionModel.Builder isNotNull(String column, Object... value) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.IS_NOT_NULL, column, value));
return this;
}
public SqlInfoConditionModel.Builder apply(String apply) {
conditionModel.expressions.add(buildExpression(WhereType.APPLY, apply, null));
return this;
}
public SqlInfoConditionModel.Builder or() {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.OR, null, null));
return this;
}
public SqlInfoConditionModel.Builder or(Consumer<SqlInfoConditionModel.Builder> orBuilderConsumer) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.OR_BUILD, null, orBuilderConsumer));
return this;
}
public SqlInfoConditionModel.Builder and(Consumer<SqlInfoConditionModel.Builder> andBuilderConsumer) {
conditionModel.expressions.add(buildExpression(SqlInfoConditionModel.WhereType.AND_BUILD, null, andBuilderConsumer));
return this;
}
public SqlInfoWhereModel<BuildWhere> buildWhere() {
ISQLExpression<SqlFormatModel> expression = new BuildWhere();
SqlInfoWhereModel whereModel = new SqlInfoWhereModel();
List<ExpressionModel> expressions = conditionModel.getExpressions();
whereModel.setExpressions(expressions);
whereModel.setSqlExpression(expression);
return whereModel;
}
public SqlInfoHavingModel<BuildHaving> buildHaving() {
ISQLExpression<SqlFormatModel> expression = new BuildHaving();
SqlInfoHavingModel havingModel = new SqlInfoHavingModel();
List<ExpressionModel> expressions = conditionModel.getExpressions();
havingModel.setExpressions(expressions);
havingModel.setSqlExpression(expression);
return havingModel;
}
public SqlInfoConditionModel<BuildCondition> build() {
return conditionModel;
}
}
public List<ExpressionModel> getExpressions() {
return expressions;
}
public enum WhereType {
GT, //>
GE, //>=
NE, //!=
EQ, //=
LT, //<
LE, //<=
BETWEEN,
NOT_BETWEEN,
IN,
NOT_IN,
LIKE,
NOT_LIKE,
LIKE_LEFT,
NOT_LIKE_LEFT,
LIKE_RIGHT,
NOT_LIKE_RIGHT,
IS_NULL,
IS_NOT_NULL,
OR,
OR_BUILD,
AND_BUILD,
APPLY
}
private static ExpressionModel buildExpression(SqlInfoConditionModel.WhereType whereType, String column, Object... value) {
ExpressionModel expression = new ExpressionModel();
expression.setWhereType(whereType);
expression.setColumn(column);
expression.setValue(value);
return expression;
}
public void setExpressions(List<ExpressionModel> expressions) {
this.expressions = expressions;
}
}

View File

@@ -0,0 +1,51 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildDelete;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
public class SqlInfoDeleteModel<T> extends SqlInfoBaseModel {
private String tableName;
private Boolean isReal;
private SqlInfoDeleteModel(){}
public static Builder builder(){
return new Builder();
}
public static class Builder {
private SqlInfoDeleteModel sqlInfoDeleteModel = new SqlInfoDeleteModel();
public Builder setTableName(String tableName) {
sqlInfoDeleteModel.tableName = tableName;
sqlInfoDeleteModel.isReal=false;//逻辑删除
return this;
}
public Builder setTableName(String tableName,boolean isReal) {
sqlInfoDeleteModel.tableName = tableName;
sqlInfoDeleteModel.isReal=isReal;
return this;
}
public SqlInfoDeleteModel<BuildDelete> build(){
ISQLExpression<SqlFormatModel> expression = new BuildDelete();
sqlInfoDeleteModel.setSqlExpression(expression);
return sqlInfoDeleteModel;
}
}
public String getTableName() {
return tableName;
}
public Boolean getReal() {
return isReal;
}
}

View File

@@ -0,0 +1,47 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildDelete;
import com.jeelowcode.framework.plus.build.build.dql.BuildGroupBy;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
/**
* @author JX
* @create 2024-07-04 10:51
* @dedescription:
*/
public class SqlInfoGroupModel<T> extends SqlInfoBaseModel {
private String[] columns;
public String[] getColumns() {
return columns;
}
public void setColumns(String... columns) {
this.columns = columns;
}
public SqlInfoGroupModel (){}
public static Builder builder (){
return new Builder();
}
public static class Builder{
private SqlInfoGroupModel groupModel = new SqlInfoGroupModel();
public Builder setColumns(String... columns){
groupModel.columns = columns;
return this;
}
public SqlInfoGroupModel<BuildDelete> build(){
ISQLExpression<SqlFormatModel> expression = new BuildGroupBy();
groupModel.setSqlExpression(expression);
return groupModel;
}
}
}

View File

@@ -0,0 +1,15 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
/**
* @author JX
* @create 2024-07-04 9:14
* @dedescription:
*/
public class SqlInfoHavingModel<T> extends SqlInfoConditionModel {
}

View File

@@ -0,0 +1,65 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildInsert;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.LinkedHashMap;
import java.util.Map;
public class SqlInfoInsertModel<T> extends SqlInfoBaseModel {
private String tableName;
private Map<String,Object> insertMap=new LinkedHashMap<>();
private SqlInfoInsertModel (){}
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoInsertModel insertModel = new SqlInfoInsertModel();
public Builder setTableName(String tableName){
insertModel.setTableName(tableName);
return this;
}
public Builder addColumn(String column,Object val){
insertModel.insertMap.put(column,val);
return this;
}
public Builder addMap(Map<String,Object> insertMap){
insertModel.insertMap.putAll(insertMap);
return this;
}
public SqlInfoInsertModel<BuildInsert> build(){
ISQLExpression<SqlFormatModel> expression = new BuildInsert();
insertModel.setSqlExpression(expression);
return insertModel;
}
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Map<String, Object> getInsertMap() {
return insertMap;
}
public void setInsertMap(Map<String, Object> insertMap) {
this.insertMap = insertMap;
}
}

View File

@@ -0,0 +1,84 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildJoin;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
/**
* @author JX
* @create 2024-07-04 9:14
* @dedescription:
*/
public class SqlInfoJoinModel<T> extends SqlInfoBaseModel {
private String tableName;
private JoinType joinType;
private String onStr;
public static Builder builder(){
return new Builder();
}
public static class Builder{
private SqlInfoJoinModel joinModel = new SqlInfoJoinModel();
//构建having
public Builder joinTable(String tableName,String alias){
joinModel.setTableName(tableName+" "+alias);
return this;
}
public Builder innerJoin(){
joinModel.joinType= JoinType.INNER_JOIN;
return this;
}
public Builder leftJoin(){
joinModel.joinType= JoinType.LEFT_JOIN;
return this;
}
public Builder rightJoin(){
joinModel.joinType= JoinType.RIGHT_JOIN;
return this;
}
public Builder on(String leftStr,String rightStr){
joinModel.onStr=leftStr+" = "+rightStr;
return this;
}
public SqlInfoJoinModel<SqlFormatModel> build(){
ISQLExpression<SqlFormatModel> expression = new BuildJoin();
joinModel.setSqlExpression(expression);
return joinModel;
}
}
public enum JoinType{
LEFT_JOIN,
RIGHT_JOIN,
INNER_JOIN
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public JoinType getJoinType() {
return joinType;
}
public void setJoinType(JoinType joinType) {
this.joinType = joinType;
}
public String getOnStr() {
return onStr;
}
public void setOnStr(String onStr) {
this.onStr = onStr;
}
}

View File

@@ -0,0 +1,86 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildOrderBy;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.ArrayList;
import java.util.List;
/**
* @author JX
* @create 2024-07-04 9:14
* @dedescription:
*/
public class SqlInfoOrderModel<T> extends SqlInfoBaseModel {
private List<OrderByModel> orderByList=new ArrayList<>();
public static Builder builder(){
return new Builder();
}
public static class OrderByModel{
public String[] columns;//列
public boolean asc;//是否是asc 升序
public void setColumns(String ... columns){
this.columns = columns;
}
public boolean isAsc() {
return asc;
}
public void setAsc(boolean asc) {
this.asc = asc;
}
public String[] getColumns() {
return columns;
}
}
public static class Builder{
private SqlInfoOrderModel infoOrderModel = new SqlInfoOrderModel();
//升序
public Builder setOrderByAsc(String ... columns){
OrderByModel model=new OrderByModel();
model.setAsc(true);
model.setColumns(columns);
infoOrderModel.orderByList.add(model);
return this;
}
//降序
public Builder setOrderByDesc(String ... columns ){
OrderByModel model=new OrderByModel();
model.setAsc(false);
model.setColumns(columns);
infoOrderModel.orderByList.add(model);
return this;
}
public SqlInfoOrderModel<BuildOrderBy> build(){
ISQLExpression<SqlFormatModel> expression = new BuildOrderBy();
infoOrderModel.setSqlExpression(expression);
return infoOrderModel;
}
}
public List<OrderByModel> getOrderByList() {
return orderByList;
}
public void setOrderByList(List<OrderByModel> orderByList) {
this.orderByList = orderByList;
}
}

View File

@@ -0,0 +1,41 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildPublicSql;
import com.jeelowcode.framework.plus.build.build.dql.BuildSelect;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
/**
* 通用sql
*/
public class SqlInfoPublicModel<T> extends SqlInfoBaseModel {
private String sql;
public static Builder builder(){
return new Builder();
}
public static class Builder {
private SqlInfoPublicModel selectModel = new SqlInfoPublicModel();
public Builder setSql(String sql) {
selectModel.sql = sql;
return this;
}
public SqlInfoPublicModel<BuildSelect> build() {
ISQLExpression<SqlFormatModel> expression = new BuildPublicSql();
selectModel.setSqlExpression(expression);
return selectModel;
}
}
public String getSql() {
return sql;
}
}

View File

@@ -0,0 +1,66 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildSelect;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
/**
* @author JX
* @create 2024-07-03 11:51
* @dedescription:
*/
public class SqlInfoSelectModel<T> extends SqlInfoBaseModel {
private String tableName;
private String[] columns;
public static Builder builder(){
return new Builder();
}
public static class Builder {
private SqlInfoSelectModel selectModel = new SqlInfoSelectModel();
public Builder setTableName(String tableName) {
selectModel.tableName = tableName;
return this;
}
public Builder setTableName(String tableName,String alias) {
selectModel.tableName = tableName+" "+alias;
return this;
}
public Builder setColumns(String ... columns){
selectModel.columns = columns;
return this;
}
public SqlInfoSelectModel<BuildSelect> build() {
ISQLExpression<SqlFormatModel> expression = new BuildSelect();
selectModel.setSqlExpression(expression);
return selectModel;
}
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String[] getColumns() {
return columns;
}
public void setColumns(String[] columns) {
this.columns = columns;
}
}

View File

@@ -0,0 +1,65 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildUpdate;
import com.jeelowcode.framework.plus.build.buildmodel.SqlInfoBaseModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.LinkedHashMap;
import java.util.Map;
public class SqlInfoUpdateModel<T> extends SqlInfoBaseModel {
private String tableName;
private Map<String,Object> updateMap=new LinkedHashMap<>();
private SqlInfoUpdateModel(){}
public static Builder builder(){
return new Builder();
}
public static class Builder {
SqlInfoUpdateModel updateModel = new SqlInfoUpdateModel();
public Builder setTableName(String tableName) {
updateModel.tableName = tableName;
return this;
}
public Builder addColumn(String column, Object val){
updateModel.updateMap.put(column,val);
return this;
}
public Builder addMap(Map<String,Object> updateMap){
updateModel.updateMap.putAll(updateMap);
return this;
}
public SqlInfoUpdateModel<BuildUpdate> build() {
ISQLExpression<SqlFormatModel> expression = new BuildUpdate();
updateModel.setSqlExpression(expression);
return updateModel;
}
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Map<String, Object> getUpdateMap() {
return updateMap;
}
public void setUpdateMap(Map<String, Object> updateMap) {
this.updateMap = updateMap;
}
}

View File

@@ -0,0 +1,10 @@
package com.jeelowcode.framework.plus.build.buildmodel.dql;
/**
* @author JX
* @create 2024-07-03 10:12
* @dedescription:
*/
public class SqlInfoWhereModel<T> extends SqlInfoConditionModel {
}

View File

@@ -0,0 +1,22 @@
package com.jeelowcode.framework.plus.build.buildmodel.wrapper;
import java.util.HashSet;
import java.util.Set;
/**
* 公共
*/
public class BaseWrapper {
public String BUILDER_INSERT="builderInsert";
public String BUILDER_UPDATE="builderUpdate";
public String BUILDER_DELETE="builderDelete";
public String BUILDER_SELECT="builderSelect";
public String BUILDER_WHERE="builderWhere";
public String BUILDER_ORDERBY="builderOrderBy";
public String BUILDER_GROUPBY="builderGroupBy";
public String BUILDER_HAVING="builderHaving";
public String BUILDER_JOIN="builderJoin";
Set<String> initSet=new HashSet<>();
}

View File

@@ -0,0 +1,81 @@
package com.jeelowcode.framework.plus.build.buildmodel.wrapper;
import com.jeelowcode.framework.plus.SqlHelper;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.AndExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildDelete;
import com.jeelowcode.framework.plus.build.build.dql.BuildWhere;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoDeleteModel;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoWhereModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**
* 删除-封装器
*/
public class SqlInfoDeleteWrapper {
public static Wrapper wrapper(String dbSchemaName){
return new Wrapper(dbSchemaName);
}
public static class Wrapper extends BaseWrapper {
private String dbSchemaName;
private SqlInfoDeleteModel.Builder builderDelete = SqlInfoDeleteModel.builder();
private SqlInfoWhereModel.Builder builderWhere = SqlInfoWhereModel.builder();
public Wrapper(String dbSchemaName) {
this.dbSchemaName = dbSchemaName;
}
//逻辑删除
public Wrapper setTableName(String tableName) {
builderDelete.setTableName(tableName);
initSet.add(BUILDER_DELETE);
return this;
}
//true=真实删除,物理删除 false=逻辑删除
public Wrapper setTableName(String tableName, boolean isReal) {
builderDelete.setTableName(tableName,isReal);
initSet.add(BUILDER_DELETE);
return this;
}
public Wrapper setWhere(Consumer<SqlInfoWhereModel.Builder> whereBuilderConsumer) {
whereBuilderConsumer.accept(builderWhere);
initSet.add(BUILDER_WHERE);
return this;
}
public Wrapper build() {
return this;
}
public SqlFormatModel buildSql() {
SQLInterpretContext context = new SQLInterpretContext(dbSchemaName);
SqlInfoDeleteModel<BuildDelete> buildDelete = builderDelete.build();
SqlInfoWhereModel<BuildWhere> buildWhere = builderWhere.buildWhere();
List<ISQLExpression> expressionList=new ArrayList<>();
if(initSet.contains(BUILDER_DELETE)){
context.setDeleteModel(buildDelete);
expressionList.add(new BuildDelete());
}
if(initSet.contains(BUILDER_WHERE)){
context.setWhereModel(buildWhere);
expressionList.add(new BuildWhere());
}
ISQLExpression expression = new AndExpression(expressionList);
List<SqlFormatModel> sqlFormatModelList = SqlHelper.sqlExpression(context, expression);
return sqlFormatModelList.get(0);
}
}
}

View File

@@ -0,0 +1,68 @@
package com.jeelowcode.framework.plus.build.buildmodel.wrapper;
import com.jeelowcode.framework.plus.SqlHelper;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.AndExpression;
import com.jeelowcode.framework.plus.build.build.dql.BuildInsert;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoInsertModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import java.util.*;
/**
* 新增-封装器
*/
public class SqlInfoInsertWrapper {
public static Wrapper wrapper(String dbSchemaName){
return new Wrapper(dbSchemaName);
}
public static class Wrapper extends BaseWrapper {
private String dbSchemaName;
private SqlInfoInsertModel.Builder builderInsert= SqlInfoInsertModel.builder();
public Wrapper(String dbSchemaName) {
this.dbSchemaName = dbSchemaName;
}
public Wrapper setTableName(String tableName){
builderInsert.setTableName(tableName);
return this;
}
public Wrapper setColumn(String column, Object val){
builderInsert.addColumn(column,val);
initSet.add(BUILDER_INSERT);
return this;
}
public Wrapper setMap(Map<String,Object> insertMap){
builderInsert.addMap(insertMap);
initSet.add(BUILDER_INSERT);
return this;
}
public Wrapper build() {
return this;
}
public SqlFormatModel buildSql() {
SQLInterpretContext context = new SQLInterpretContext(dbSchemaName);
SqlInfoInsertModel<BuildInsert> buildInsert = builderInsert.build();
List<ISQLExpression> expressionList=new ArrayList<>();
if(initSet.contains(BUILDER_INSERT)){
context.setInsertModel(buildInsert);
expressionList.add(new BuildInsert());
}
ISQLExpression expression = new AndExpression(expressionList);
List<SqlFormatModel> sqlFormatModelList = SqlHelper.sqlExpression(context, expression);
return sqlFormatModelList.get(0);
}
}
}

View File

@@ -0,0 +1,220 @@
package com.jeelowcode.framework.plus.build.buildmodel.wrapper;
import com.jeelowcode.framework.plus.SqlHelper;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.AndExpression;
import com.jeelowcode.framework.plus.build.build.dql.*;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.*;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.utils.constant.JeeLowCodeConstant;
import com.jeelowcode.framework.utils.utils.FuncBase;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**
* 查询-封装器
*/
public class SqlInfoQueryWrapper {
public static Wrapper wrapper(String dbSchemaName) {
return new Wrapper(dbSchemaName);
}
public static class Wrapper extends BaseWrapper {
private String dataSourceType;//指定数据源
private Boolean tenantIgnore;//本次是否忽略租户
private String dbSchemaName;
private SqlInfoSelectModel.Builder builderSelect = SqlInfoSelectModel.builder();
private SqlInfoWhereModel.Builder builderWhere = SqlInfoWhereModel.builder();
private SqlInfoOrderModel.Builder builderOrderBy = SqlInfoOrderModel.builder();
private SqlInfoGroupModel.Builder builderGroupBy = SqlInfoGroupModel.builder();
private SqlInfoHavingModel.Builder builderHaving = SqlInfoHavingModel.builder();
private SqlInfoJoinModel.Builder builderJoin = SqlInfoJoinModel.builder();
public Wrapper(String dbSchemaName) {
this.dbSchemaName = dbSchemaName;
}
public Wrapper setTenantIgnore(Boolean tenantIgnore) {
this.tenantIgnore=tenantIgnore;//本次是否忽略租户
return this;
}
public Wrapper setDataSourceType(String dataSourceType) {
this.dataSourceType=dataSourceType;//外部数据源
return this;
}
public String getDataSourceType() {
return this.dataSourceType;
}
//select 相关
public Wrapper select(String... columns) {
if (FuncBase.isNotEmpty(columns)) {
builderSelect.setColumns(columns);
initSet.add(BUILDER_SELECT);
}
return this;
}
public Wrapper select(List<String> columnsList, boolean aliasFlag) {
if (FuncBase.isNotEmpty(columnsList)) {
//处理别名
if (aliasFlag) {
columnsList = FuncBase.fieldCodeAlias(columnsList);
}
builderSelect.setColumns(columnsList.toArray(new String[0]));
initSet.add(BUILDER_SELECT);
}
return this;
}
public Wrapper setTableName(String tableName) {
//处理别名
builderSelect.setTableName(tableName, JeeLowCodeConstant.TABLE_ALIAS);
initSet.add(BUILDER_SELECT);
return this;
}
public Wrapper setTableSql(String tableNameSql) {
//处理别名
String sql = String.format("(%s)", tableNameSql);
builderSelect.setTableName(sql, JeeLowCodeConstant.TABLE_ALIAS);
initSet.add(BUILDER_SELECT);
return this;
}
//where 相关
public Wrapper setWhere(Consumer<SqlInfoWhereModel.Builder> whereBuilderConsumer) {
whereBuilderConsumer.accept(builderWhere);
initSet.add(BUILDER_WHERE);
return this;
}
//order by相关
public Wrapper orderByAsc(String... columns) {
builderOrderBy.setOrderByAsc(columns);
initSet.add(BUILDER_ORDERBY);
return this;
}
public Wrapper orderByDesc(String... columns) {
builderOrderBy.setOrderByDesc(columns);
initSet.add(BUILDER_ORDERBY);
return this;
}
//group by 相关
public Wrapper groupByColumns(String... columns) {
builderGroupBy.setColumns(columns);
initSet.add(BUILDER_GROUPBY);
return this;
}
//join 相关
public Wrapper joinByinnerJoinTable(String tableName, String alias) {
builderJoin.joinTable(tableName, alias);
builderJoin.innerJoin();
initSet.add(BUILDER_JOIN);
return this;
}
public Wrapper joinByleftJoinTable(String tableName, String alias) {
builderJoin.joinTable(tableName, alias);
builderJoin.leftJoin();
initSet.add(BUILDER_JOIN);
return this;
}
public Wrapper joinByrightJoinTable(String tableName, String alias) {
builderJoin.joinTable(tableName, alias);
builderJoin.rightJoin();
initSet.add(BUILDER_JOIN);
return this;
}
public Wrapper joinOn(String leftStr, String rightStr) {
builderJoin.on(leftStr, rightStr);
initSet.add(BUILDER_JOIN);
return this;
}
//构建having
public Wrapper setHaving(Consumer<SqlInfoHavingModel.Builder> havingBuilderConsumer) {
havingBuilderConsumer.accept(builderHaving);
initSet.add(BUILDER_HAVING);
return this;
}
public Wrapper build() {
return this;
}
public SqlFormatModel buildSql() {
SQLInterpretContext context = new SQLInterpretContext(dbSchemaName);
SqlInfoSelectModel<BuildSelect> buildSelect = builderSelect.build();
SqlInfoWhereModel<BuildWhere> buildWhere = builderWhere.buildWhere();
SqlInfoOrderModel<BuildOrderBy> buildOrderBy = builderOrderBy.build();
SqlInfoGroupModel<BuildDelete> buildGroupBy = builderGroupBy.build();
SqlInfoJoinModel<SqlFormatModel> buildJoin = builderJoin.build();
SqlInfoHavingModel<BuildHaving> buildHaving = builderHaving.buildHaving();
//本次是否忽略租户
if(FuncBase.isNotEmpty(tenantIgnore)){
context.setTenantIgnore(tenantIgnore);
}
List<ISQLExpression> expressionList = new ArrayList<>();
if (initSet.contains(BUILDER_SELECT)) {
context.setSelectModel(buildSelect);
expressionList.add(new BuildSelect());
}
if (initSet.contains(BUILDER_WHERE)) {
context.setWhereModel(buildWhere);
expressionList.add(new BuildWhere());
}
if (initSet.contains(BUILDER_ORDERBY)) {
context.setOrderModel(buildOrderBy);
expressionList.add(new BuildOrderBy());
}
if (initSet.contains(BUILDER_GROUPBY)) {
context.setGroupModel(buildGroupBy);
expressionList.add(new BuildGroupBy());
}
if (initSet.contains(BUILDER_JOIN)) {
context.setJoinModel(buildJoin);
expressionList.add(new BuildJoin());
}
if (initSet.contains(BUILDER_HAVING)) {
context.setHavingModel(buildHaving);
expressionList.add(new BuildHaving());
}
if(FuncBase.isEmpty(expressionList)){
return new SqlFormatModel();
}
List<SqlFormatModel> sqlFormatModelList = null;
ISQLExpression expression = new AndExpression(expressionList);
if (initSet.contains(BUILDER_SELECT)) {
sqlFormatModelList = SqlHelper.sqlExpression(context, expression);
} else {
sqlFormatModelList = SqlHelper.parserExpression(context, expression);
}
return sqlFormatModelList.get(0);
}
}
}

View File

@@ -0,0 +1,84 @@
package com.jeelowcode.framework.plus.build.buildmodel.wrapper;
import com.jeelowcode.framework.plus.SqlHelper;
import com.jeelowcode.framework.plus.build.ISQLExpression;
import com.jeelowcode.framework.plus.build.build.AndExpression;
import com.jeelowcode.framework.plus.build.buildmodel.SQLInterpretContext;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoUpdateModel;
import com.jeelowcode.framework.plus.build.buildmodel.dql.SqlInfoWhereModel;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.framework.plus.build.build.dql.BuildUpdate;
import com.jeelowcode.framework.plus.build.build.dql.BuildWhere;
import java.util.*;
import java.util.function.Consumer;
/**
* 更新-封装器
*/
public class SqlInfoUpdateWrapper {
public static Wrapper wrapper(String dbSchemaName){
return new Wrapper(dbSchemaName);
}
public static class Wrapper extends BaseWrapper {
private String dbSchemaName;
private SqlInfoUpdateModel.Builder builderUpdate=SqlInfoUpdateModel.builder();;
private SqlInfoWhereModel.Builder builderWhere = SqlInfoWhereModel.builder();
public Wrapper(String dbSchemaName) {
this.dbSchemaName = dbSchemaName;
}
//update 相关
public Wrapper setTableName(String tableName) {
builderUpdate.setTableName(tableName);
initSet.add(BUILDER_UPDATE);
return this;
}
public Wrapper setColumn(String column, Object val){
builderUpdate.addColumn(column,val);
initSet.add(BUILDER_UPDATE);
return this;
}
public Wrapper setMap(Map<String,Object> updateMap){
builderUpdate.addMap(updateMap);
initSet.add(BUILDER_UPDATE);
return this;
}
public Wrapper setWhere(Consumer<SqlInfoWhereModel.Builder> whereBuilderConsumer) {
whereBuilderConsumer.accept(builderWhere);
initSet.add(BUILDER_WHERE);
return this;
}
public Wrapper build() {
return this;
}
public SqlFormatModel buildSql() {
SQLInterpretContext context = new SQLInterpretContext(dbSchemaName);
SqlInfoUpdateModel<BuildUpdate> buildUpdate = builderUpdate.build();
SqlInfoWhereModel<BuildWhere> buildWhere = builderWhere.buildWhere();
List<ISQLExpression> expressionList=new ArrayList<>();
if(initSet.contains(BUILDER_UPDATE)){
context.setUpdateModel(buildUpdate);
expressionList.add(new BuildUpdate());
}
if(initSet.contains(BUILDER_WHERE)){
context.setWhereModel(buildWhere);
expressionList.add(new BuildWhere());
}
ISQLExpression expression = new AndExpression(expressionList);
List<SqlFormatModel> sqlFormatModelList = SqlHelper.sqlExpression(context, expression);
return sqlFormatModelList.get(0);
}
}
}

View File

@@ -0,0 +1,74 @@
package com.jeelowcode.module.biz.controller;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.jeelowcode.core.framework.controller.BaseController;
import com.jeelowcode.core.framework.service.IFormService;
import com.jeelowcode.framework.exception.JeeLowCodeException;
import com.jeelowcode.framework.global.JeeLowCodeBaseConstant;
import com.jeelowcode.framework.tenant.annotation.JeeLowCodeTenantIgnore;
import com.jeelowcode.framework.utils.model.ResultDataModel;
import com.jeelowcode.framework.utils.tool.CollectionUtil;
import com.jeelowcode.tool.framework.common.pojo.CommonResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
import java.util.regex.Pattern;
import static com.jeelowcode.tool.framework.common.pojo.CommonResult.success;
@JeeLowCodeTenantIgnore
@Tag(name = "低代码框架 - 自定义外协人员接口")
@RestController
@AllArgsConstructor
@RequestMapping(JeeLowCodeBaseConstant.REQUEST_URL_START + "/outsidePerson")
public class OutSidePersonController extends BaseController {
@Autowired
private IFormService dbFormService;
@GetMapping({"/importOutside"})
@ApiOperationSupport(order = 5)
@Operation(summary = "引入外协人员")
public CommonResult<String> importOutside(String tableId,String ids) {
String[] idArr = ids.split(Pattern.quote("|"));
if (Objects.isNull(idArr) || idArr.length == 0) {
throw new JeeLowCodeException("缺少必要参数");
}
String tableName="lc_outside_person";
Long dbFormId = dbFormService.getDbFormIdByTableName(tableName);
List<JSONObject> licenses = new ArrayList<JSONObject>();
for (int i = 0; i < idArr.length; i++) {
ResultDataModel resultDataModel = super.getDataDetail(dbFormId, Long.valueOf(idArr[i]), new HashMap<String, Object>());
if (CollectionUtil.isNotEmpty(resultDataModel.getRecords())) {
HashMap<String, Object> detail = (HashMap<String, Object>) resultDataModel.getRecords().get(0);
HashMap<String, Object> newLicense = new HashMap<>();
newLicense.put("billNo", "WX" + System.currentTimeMillis());
newLicense.put("outsideId", detail.get("id"));
newLicense.put("workPlace", detail.get("workPlace"));
newLicense.put("workPlaceId", detail.get("workPlaceId"));
newLicense.put("demandId", detail.get("demandId"));
newLicense.put("demandName", detail.get("demandName"));
newLicense.put("supplierId", detail.get("supplierId"));
newLicense.put("supplierName", detail.get("supplierName"));
newLicense.put("personName", detail.get("personName"));
newLicense.put("personSex", detail.get("personSex"));
newLicense.put("personNo", detail.get("cardNo"));
newLicense.put("mobile", detail.get("mobile"));
licenses.add(JSONUtil.parseObj(newLicense));
}
}
super.addJsonData( Long.valueOf(tableId), licenses);
return success("引入成功");
}
}

View File

@@ -0,0 +1,54 @@
package com.jeelowcode.module.biz.controller;
import com.jeelowcode.core.framework.controller.BaseController;
import com.jeelowcode.framework.global.JeeLowCodeBaseConstant;
import com.jeelowcode.framework.tenant.annotation.JeeLowCodeTenantIgnore;
import com.jeelowcode.module.biz.service.IPortalTodoService;
import com.jeelowcode.tool.framework.common.pojo.CommonResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 门户待办有关接口
*
* @author yangchenjj
*/
@JeeLowCodeTenantIgnore
@Tag(name = "低代码框架 - 门户待办有关接口")
@RestController
@AllArgsConstructor
@RequestMapping(JeeLowCodeBaseConstant.REQUEST_URL_START + "/portal-to-do/push-done")
public class PortalTodoController extends BaseController {
private final IPortalTodoService portalTodoService;
/**
* 风险隐患推送待办完成
*
* @param workflowId 待办id
* @return boolean 推送结果
*/
@Operation(summary = "风险隐患推送待办完成")
@RequestMapping(value = "/risk-hazard/{workflowId}", method = RequestMethod.POST)
public CommonResult<Boolean> pushDoneRiskHazardWorkflow(@PathVariable("workflowId") Long workflowId) {
return CommonResult.success(portalTodoService.pushDoneRiskHazardWorkflow(workflowId));
}
/**
* 风险隐患推送待办取消
*
* @param workflowId 待办id
* @return boolean 推送结果
*/
@Operation(summary = "风险隐患推送待办取消")
@RequestMapping(value = "/risk-hazard/{workflowId}", method = RequestMethod.DELETE)
public CommonResult<Boolean> pushCancelRiskHazardWorkflow(@PathVariable("workflowId") Long workflowId) {
return CommonResult.success(portalTodoService.pushCancelRiskHazardWorkflow(workflowId));
}
}

View File

@@ -47,6 +47,8 @@ public class BeforeRiskExportEnhance extends BaseController implements BeforeAdv
public void execute(EnhanceContext enhanceContext) {
Map<String, Object> params = enhanceContext.getParam().getParams();
// 获取所有园区信息
String campusTableName="campus_info";
Long campusFormId = ADTE.dbFormService.getDbFormIdByTableName(campusTableName);

View File

@@ -0,0 +1,26 @@
package com.jeelowcode.module.biz.service;
/**
* 待办系统接口
*
* @author yangchenjj
*/
public interface IPortalTodoService {
/**
* 风险隐患推送待办完成
*
* @param id 流程id
* @return boolean 推送结果
*/
boolean pushDoneRiskHazardWorkflow(Long id);
/**
* 风险隐患推送待办取消
*
* @param id 待办id
* @return boolean 推送结果
*/
boolean pushCancelRiskHazardWorkflow(Long id);
}

View File

@@ -0,0 +1,135 @@
package com.jeelowcode.module.biz.service.impl;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.jeelowcode.framework.plus.core.toolkit.StringUtils;
import com.jeelowcode.framework.utils.tool.spring.SpringUtils;
import com.jeelowcode.module.biz.service.IPortalTodoService;
import com.jeelowcode.module.biz.service.IRiskService;
import com.jeelowcode.service.bpm.config.framework.portal.core.PortalRequest;
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.DeleteRequestInfoDTO;
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveRequestInfoDTO;
import com.jeelowcode.service.system.api.IApiAdminUserApi;
import com.jeelowcode.service.system.dto.AdminUserRespDTO;
import com.jeelowcode.tool.framework.common.util.object.BeanUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import static com.jeelowcode.tool.framework.common.util.collection.CollectionUtils.getFirst;
/**
* 待办系统接口实现类
*
* @author yangchenjj
*/
@Slf4j
@Service
public class PortalTodoServiceImpl implements IPortalTodoService {
private static final String SPACE = " ";
private static final String WORK_NODE_NAME = "整改风险隐患";
private static final String WORK_FLOW_NAME = "风险隐患信息";
// TODO 待办跳转链接,这个以后需要优化,通过配置去取这个链接,不能写死在这里
private static final String RISK_PC_URL = "/fx/table/view/1963446160885366786";
private static final String WORK_STATUS_TODO = "0";
private static final String WORK_STATUS_DONE = "2";
private static final String WORK_STATUS_COMPLETE = "4";
private static final String VIEW_TYPE_UNREAD = "0";
private static final String VIEW_TYPE_READ = "1";
@Resource
private IRiskService riskService;
@Resource
private IApiAdminUserApi apiAdminUserApi;
@Override
public boolean pushDoneRiskHazardWorkflow(Long id) {
// 0.1.查找风险隐患数据,如果查不到则放弃推送
Map<String, Object> risk = riskService.getRiskById(id);
if (MapUtil.isEmpty(risk)) return false;
// 0.2.从容器中获取 PortalRequest 对象,如果没有配置则放弃通知
PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class);
if (ObjectUtil.isNull(portalRequest)) return false;
// 1.构建请求参数,准备推送待办信息
// 1.1.拼接标题
String requestName = DateUtil.formatDate((Date) risk.getOrDefault("check_date", new Date())) + SPACE +
risk.getOrDefault("parkName", "") + SPACE +
risk.getOrDefault("check_area", "") + SPACE +
risk.getOrDefault("check_content", "") + SPACE +
risk.getOrDefault("check_problem", "") + SPACE +
risk.getOrDefault("check_people", "");
// 1.2.暂时先使用创建人当作发送人 TODO 需要升级存储检查人的username
Long createUserId = Objects.isNull(risk.get("create_user")) ? null : (Long) risk.get("create_user");
AdminUserRespDTO createUser = Optional.ofNullable(createUserId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
Date createDateTime = Objects.isNull(risk.get("create_time")) ? new Date() : (Date) risk.get("create_time");
// 1.3.从风险隐患数据中获取整改确认人 TODO 需要升级存储整改确认人的username
String corrective_confirm_people = Objects.isNull(risk.get("corrective_confirm_people")) ? null : (String) risk.get("corrective_confirm_people");
List<AdminUserRespDTO> confirmUserList = Optional.ofNullable(corrective_confirm_people)
.map(userName -> apiAdminUserApi.getUserListByNickname(userName))
.orElse(Collections.emptyList());
// 如果没有整改确认人则放弃通知
if (confirmUserList.isEmpty()) return false;
String receiver = Optional.ofNullable(getFirst(confirmUserList))
.map(AdminUserRespDTO::getUsername).orElse(null);
if (StringUtils.isEmpty(receiver)) return false;
// 1.2.组织请求数据
ReceiveRequestInfoDTO todoRequestDTO = new ReceiveRequestInfoDTO()
.setFlowId(Base64.encode(String.valueOf(id)))
.setRequestName(requestName)
.setWorkflowName(WORK_FLOW_NAME)
.setNodeName(WORK_NODE_NAME)
.setPcUrl(RISK_PC_URL)
.setIsRemark(WORK_STATUS_DONE)
.setViewType(VIEW_TYPE_READ)
.setCreator(createUser.getUsername())
.setCreateDateTime(createDateTime)
.setReceiver(receiver)
.setReceiveDateTime(new Date())
.setReceiveTs(String.valueOf(System.currentTimeMillis()));
ReceiveRequestInfoDTO completeRequestDTO = BeanUtils.toBean(todoRequestDTO, ReceiveRequestInfoDTO.class);
completeRequestDTO.setIsRemark(WORK_STATUS_COMPLETE);
// 2.推送待办信息使用try-catch避免影响上层调用方法的事务回滚
try {
portalRequest.receiveRequestInfo(todoRequestDTO);
portalRequest.receiveRequestInfo(completeRequestDTO);
} catch (Exception e) {
log.error("推送待办信息失败", e);
return false;
}
return true;
}
@Override
public boolean pushCancelRiskHazardWorkflow(Long id) {
// 0.1.查找风险隐患数据,如果查不到则放弃推送
Map<String, Object> risk = riskService.getRiskById(id);
if (MapUtil.isEmpty(risk)) return false;
// 0.2.从容器中获取 PortalRequest 对象,如果没有配置则放弃通知
PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class);
if (ObjectUtil.isNull(portalRequest)) return false;
// 1.构建请求参数,准备推送待办信息
DeleteRequestInfoDTO deleteRequestInfoDTO = new DeleteRequestInfoDTO()
.setFlowId(Base64.encode(String.valueOf(id)));
// 2.推送待办信息使用try-catch避免影响上层调用方法的事务回滚
try {
portalRequest.deleteRequestInfo(deleteRequestInfoDTO);
} catch (Exception e) {
log.error("删除待办信息失败", e);
return false;
}
return true;
}
}

View File

@@ -1,25 +1,26 @@
package com.jeelowcode.module.biz.service.impl;
import com.jeelowcode.core.framework.mapper.JeeLowCodeSqlMapper;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.jeelowcode.core.framework.service.IFrameSqlService;
import com.jeelowcode.framework.global.JeeLowCodeBaseConstant;
import com.jeelowcode.framework.plus.SqlHelper;
import com.jeelowcode.framework.plus.build.buildmodel.wrapper.SqlInfoQueryWrapper;
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
import com.jeelowcode.module.biz.service.IPlanIssusService;
import com.jeelowcode.framework.plus.core.toolkit.StringUtils;
import com.jeelowcode.framework.utils.tool.spring.SpringUtils;
import com.jeelowcode.module.biz.service.IRiskService;
import com.jeelowcode.service.system.controller.vo.notify.template.NotifyTemplateSendReqVO;
import com.jeelowcode.service.system.service.INotifySendService;
import com.jeelowcode.service.bpm.config.framework.portal.core.PortalRequest;
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveRequestInfoDTO;
import com.jeelowcode.service.system.api.IApiAdminUserApi;
import com.jeelowcode.service.system.dto.AdminUserRespDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import static com.jeelowcode.tool.framework.common.util.collection.CollectionUtils.getFirst;
/**
@@ -29,40 +30,89 @@ import java.util.Map;
@Service
public class RiskServiceImpl implements IRiskService {
@Autowired
private static final String SPACE = " ";
private static final String WORK_NODE_NAME = "整改风险隐患";
private static final String WORK_FLOW_NAME = "风险隐患信息";
// TODO 待办跳转链接,这个以后需要优化,通过配置去取这个链接,不能写死在这里
private static final String RISK_PC_URL = "/fx/table/view/1963446160885366786";
private static final String WORK_STATUS_TODO = "0";
private static final String WORK_STATUS_DONE = "2";
private static final String VIEW_TYPE_UNREAD = "0";
private static final String VIEW_TYPE_READ = "1";
@Resource
private IFrameSqlService sqlService;
@Resource
private INotifySendService notifySendService;
private IApiAdminUserApi apiAdminUserApi;
/**
* 发生消息给整改人
*/
@Override
public void sendNotify2Corrective(Long id) {
// 根据ID查找风险隐患数据
Map<String, Object> risk = getRiskById(id);
NotifyTemplateSendReqVO sendReqVO=new NotifyTemplateSendReqVO();
// 构建消息参数
List<Long> userIdList = new ArrayList<>();
Map<String, Object> templateParams=new HashMap<>();
userIdList.add( Long.valueOf(risk.get("corrective_charge_people_id").toString()));
userIdList.add( Long.valueOf(risk.get("corrective_confirm_people_id").toString()));
sendReqVO.setUserIdList(userIdList);
templateParams.put("check_date",risk.get("check_date"));
templateParams.put("parkName",risk.get("parkName"));
templateParams.put("check_area",risk.get("check_area"));
templateParams.put("check_content",risk.get("check_content"));
templateParams.put("check_problem",risk.get("check_problem"));
templateParams.put("check_people",risk.get("check_people"));
sendReqVO.setTemplateCode("risk_corrective_notice");
// 空实现目前业务需求并不需要发送给整改人
if (true) {
return;
}
sendReqVO.setTemplateParams(templateParams);
// 发送消息
notifySendService.sendSingleNotifyToAdmin(sendReqVO.getUserIdList(),
sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams());
// 0.1.查找风险隐患数据,如果查不到任务可以结束了
Map<String, Object> risk = this.getRiskById(id);
if (MapUtil.isEmpty(risk)) return;
// 0.2.从容器中获取 PortalRequest 对象,如果没有配置则放弃通知
PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class);
if (ObjectUtil.isNull(portalRequest)) return;
// 1.构建请求参数,准备推送待办信息
// 1.1.拼接标题
String requestName = DateUtil.formatDate((Date) risk.getOrDefault("check_date", new Date())) + SPACE +
risk.getOrDefault("parkName", "") + SPACE +
risk.getOrDefault("check_area", "") + SPACE +
risk.getOrDefault("check_content", "") + SPACE +
risk.getOrDefault("check_problem", "") + SPACE +
risk.getOrDefault("check_people", "");
// 1.2.暂时先使用创建人当作发送人 TODO 需要升级存储检查人的username
Long createUserId = Objects.isNull(risk.get("create_user")) ? null : (Long) risk.get("create_user");
AdminUserRespDTO createUser = Optional.ofNullable(createUserId)
.map(userId -> apiAdminUserApi.getUser(userId))
.orElse(new AdminUserRespDTO());
Date createDateTime = Objects.isNull(risk.get("create_time")) ? new Date() : (Date) risk.get("create_time");
// 1.3.从风险隐患数据中获取整改确认人 TODO 需要升级存储整改确认人的username
String corrective_confirm_people = Objects.isNull(risk.get("corrective_confirm_people")) ? null : (String) risk.get("corrective_confirm_people");
List<AdminUserRespDTO> confirmUserList = Optional.ofNullable(corrective_confirm_people)
.map(userName -> apiAdminUserApi.getUserListByNickname(userName))
.orElse(Collections.emptyList());
// 如果没有整改确认人则放弃通知
if (confirmUserList.isEmpty()) return;
String receiver = Optional.ofNullable(getFirst(confirmUserList))
.map(AdminUserRespDTO::getUsername).orElse(null);
if (StringUtils.isEmpty(receiver)) return;
// 1.2.组织请求数据
ReceiveRequestInfoDTO requestDTO = new ReceiveRequestInfoDTO()
.setFlowId(Base64.encode(String.valueOf(id)))
.setRequestName(requestName)
.setWorkflowName(WORK_FLOW_NAME)
.setNodeName(WORK_NODE_NAME)
.setPcUrl(RISK_PC_URL)
.setIsRemark(WORK_STATUS_TODO)
.setViewType(VIEW_TYPE_UNREAD)
.setCreator(createUser.getUsername())
.setCreateDateTime(createDateTime)
.setReceiver(receiver)
.setReceiveDateTime(new Date())
.setReceiveTs(String.valueOf(System.currentTimeMillis()));
// 2.将请求包裹在try catch 中,避免异常导致上层调用方法事务回滚
try {
portalRequest.receiveRequestInfo(requestDTO);
} catch (Exception e) {
log.error("发送待办信息失败", e);
}
}
/**
@@ -70,37 +120,17 @@ public class RiskServiceImpl implements IRiskService {
*/
@Override
public void sendNotify2Check(Long id) {
// 根据ID查找风险隐患数据
Map<String, Object> risk = getRiskById(id);
NotifyTemplateSendReqVO sendReqVO=new NotifyTemplateSendReqVO();
// 构建消息参数
List<Long> userIdList = new ArrayList<>();
Map<String, Object> templateParams=new HashMap<>();
userIdList.add( Long.valueOf(risk.get("check_people_id").toString()));
sendReqVO.setUserIdList(userIdList);
templateParams.put("billNo",risk.get("billNo"));
templateParams.put("check_date",risk.get("check_date"));
templateParams.put("parkName",risk.get("parkName"));
templateParams.put("check_area",risk.get("check_area"));
templateParams.put("check_content",risk.get("check_content"));
templateParams.put("check_problem",risk.get("check_problem"));
sendReqVO.setTemplateCode("risk_check_notify");
sendReqVO.setTemplateParams(templateParams);
// 发送消息
notifySendService.sendSingleNotifyToAdmin(sendReqVO.getUserIdList(),
sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams());
// 空实现目前业务需求并不需要发送给检查人
}
@Override
public Map<String, Object> getRiskById(long id) {
SqlInfoQueryWrapper.Wrapper wrapper = SqlHelper.getQueryWrapper();
wrapper.setTableName("lc_risk_hazard_manage");
wrapper.setWhere(where->{
where.eq("id",id);
wrapper.setWhere(where -> {
where.eq("id", id);
});
Map<String, Object> dataMap = sqlService.getDataOneByPlus(wrapper);
return dataMap;
return sqlService.getDataOneByPlus(wrapper);
}
}

View File

@@ -126,7 +126,9 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop
// 2. 创建抄送流程
BpmProcessInstanceCopyDO copy = new BpmProcessInstanceCopyDO()
.setTaskId(reqVO.getTaskId()).setTaskName(task.getName())
.setProcessInstanceId(processInstanceId).setStartUserId(Long.valueOf(processInstance.getStartUserId()))
.setProcessInstanceId(processInstanceId)
.setStartUserId(Long.valueOf(processInstance.getStartUserId()))
.setUserId(userId)
.setProcessInstanceName(processInstance.getName())
.setCategory(null) // TODO 芋艿:貌似新版本,没 processInstance.getProcessDefinitionCategory() 字段?
.setReason(reqVO.getReason());

View File

@@ -120,6 +120,10 @@
<groupId>com.jeelowcode</groupId>
<artifactId>tool-spring-boot-starter-file</artifactId>
</dependency>
<dependency>
<groupId>com.jeelowcode</groupId>
<artifactId>jeelowcode-utils</artifactId>
</dependency>
</dependencies>

View File

@@ -1,14 +1,18 @@
package com.jeelowcode.service.infra.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import com.jeelowcode.framework.utils.tool.StringUtil;
import com.jeelowcode.service.infra.controller.vo.file.*;
import com.jeelowcode.service.infra.entity.FileDO;
import com.jeelowcode.service.infra.service.IFileService;
import com.jeelowcode.tool.framework.common.pojo.CommonResult;
import com.jeelowcode.tool.framework.common.pojo.PageResult;
import com.jeelowcode.tool.framework.common.util.io.FileUtils;
import com.jeelowcode.tool.framework.common.util.object.BeanUtils;
import com.jeelowcode.tool.framework.common.util.servlet.ServletUtils;
import com.jeelowcode.tool.framework.operatelog.core.annotations.OperateLog;
@@ -20,6 +24,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -45,7 +50,7 @@ public class FileController {
private IFileService fileService;
@PostMapping("/upload")
@Operation(tags = "文件管理",summary = "上传文件", description = "模式一:后端上传文件")
@Operation(tags = "文件管理", summary = "上传文件", description = "模式一:后端上传文件")
@OperateLog(logArgs = false) // 上传文件,没有记录操作日志的必要
public CommonResult<String> uploadFile(FileUploadReqVO uploadReqVO) throws Exception {
MultipartFile file = uploadReqVO.getFile();
@@ -54,66 +59,67 @@ public class FileController {
//查询当天是否存在该名称
// String fileName = uploadReqVO.getPath();
// String fileName = uploadReqVO.getPath();
//jeeLowCode修改
//判断当天是否有该名称了
//根据天来分类
String today = DateUtil.today();
String publicPath="upload/"+today+"/";
String path=publicPath+fileName;
String publicPath = "upload/" + today + "/";
String path = publicPath + fileName;
fileName = fileService.getUniqueFileName(fileName, path);
path=publicPath+fileName;
path = publicPath + fileName;
return success(fileService.createFile(fileName, path, IoUtil.readBytes(file.getInputStream())));
}
@PostMapping("/jeelowcode/upload")
@Operation(tags = "文件管理",summary = "上传文件", description = "模式一:后端上传文件")
@Operation(tags = "文件管理", summary = "上传文件", description = "模式一:后端上传文件")
@OperateLog(logArgs = false) // 上传文件,没有记录操作日志的必要
public CommonResult<Map<String,String>> jeeLowCodeUploadFile(FileUploadReqVO uploadReqVO) throws Exception {
public CommonResult<Map<String, String>> jeeLowCodeUploadFile(FileUploadReqVO uploadReqVO) throws Exception {
MultipartFile file = uploadReqVO.getFile();
String fileName = file.getOriginalFilename();
//微信图片_20230905094700.png
Long tenantId =-1L;
Long userId =-1L;
Long tenantId = -1L;
Long userId = -1L;
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
if(loginUser!=null){
if (loginUser != null) {
tenantId = loginUser.getTenantId();
userId = loginUser.getId();
}
//根据天来分类
String today = DateUtil.today();
String publicPath="upload/"+tenantId+"/"+today+"/"+userId+"/"; //upload/租户id/20240720/用户id/aa.jpg
String path=publicPath+fileName;
String publicPath = "upload/" + tenantId + "/" + today + "/" + userId + "/"; //upload/租户id/20240720/用户id/aa.jpg
fileName = fileService.getUniqueFileName(fileName, path);
path=publicPath+fileName;
fileName = StringUtil.randomUUID()+"."+fileName.substring(fileName.lastIndexOf(".")+1);;////fileService.getUniqueFileName(fileName, path);
String path = publicPath + fileName;
// 解决信创环境下文件名中文乱码导致附件错乱的问题
path = publicPath + fileName;
String fileUrl = fileService.createFile(fileName, path, IoUtil.readBytes(file.getInputStream()));
Map<String,String> resultMap=new HashMap<>();
resultMap.put("fileUrl",fileUrl);
Map<String, String> resultMap = new HashMap<>();
resultMap.put("fileUrl", fileUrl);
return success(resultMap);
}
@GetMapping("/presigned-url")
@Operation(tags = "文件管理",summary = "获取文件预签名地址", description = "模式二:前端上传文件:用于前端直接上传七牛、阿里云 OSS 等文件存储器")
@Operation(tags = "文件管理", summary = "获取文件预签名地址", description = "模式二:前端上传文件:用于前端直接上传七牛、阿里云 OSS 等文件存储器")
public CommonResult<FilePresignedUrlRespVO> getFilePresignedUrl(@RequestParam("path") String path) throws Exception {
return success(fileService.getFilePresignedUrl(path));
}
@PostMapping("/create")
@Operation(tags = "文件管理",summary = "创建文件", description = "模式二:前端上传文件:配合 presigned-url 接口,记录上传了上传的文件")
@Operation(tags = "文件管理", summary = "创建文件", description = "模式二:前端上传文件:配合 presigned-url 接口,记录上传了上传的文件")
public CommonResult<Long> createFile(@Valid @RequestBody FileCreateReqVO createReqVO) {
return success(fileService.createFile(createReqVO));
}
@DeleteMapping("/delete")
@Operation(tags = "文件管理",summary = "删除文件")
@Operation(tags = "文件管理", summary = "删除文件")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('infra:file:delete')")
public CommonResult<Boolean> deleteFile(@RequestParam("id") Long id) throws Exception {
@@ -123,7 +129,7 @@ public class FileController {
@GetMapping("/{configId}/get/**")
@PermitAll
@Operation(tags = "文件管理",summary = "下载文件")
@Operation(tags = "文件管理", summary = "下载文件")
@Parameter(name = "configId", description = "配置编号", required = true)
public void getFileContent(HttpServletRequest request,
HttpServletResponse response,
@@ -147,7 +153,7 @@ public class FileController {
}
@GetMapping("/page")
@Operation(tags = "文件管理",summary = "获得文件分页")
@Operation(tags = "文件管理", summary = "获得文件分页")
@PreAuthorize("@ss.hasPermission('infra:file:query')")
public CommonResult<PageResult<FileRespVO>> getFilePage(@Valid FilePageReqVO pageVO) {
PageResult<FileDO> pageResult = fileService.getFilePage(pageVO);

View File

@@ -79,4 +79,12 @@ public interface IApiAdminUserApi {
*/
void validateUserList(Collection<Long> ids);
/**
* 通过用户昵称,获得用户列表
*
* @param nickname 昵称
* @return 用户列表
*/
List<AdminUserRespDTO> getUserListByNickname(String nickname);
}

Some files were not shown because too many files have changed in this diff Show More