Compare commits
	
		
			38 Commits
		
	
	
		
			main
			...
			fbb0b53048
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| fbb0b53048 | |||
| ea8799d873 | |||
| 13c8c5dc89 | |||
| 70e214c1d8 | |||
| 5dc2ed592f | |||
| ae98bc9dbc | |||
| c2d1afb92d | |||
| 342ac32890 | |||
| 993b08ad04 | |||
| 8c531dd46a | |||
| f38f4fd49a | |||
| 12d7d251ed | |||
| 636a1491bb | |||
| 07b9e113ad | |||
| 3029f8f2de | |||
| 713e0876f5 | |||
| c6b15afbe2 | |||
| 7222811573 | |||
| 3d0b599825 | |||
| 756b491778 | |||
| c86b7a1753 | |||
| f3810d3126 | |||
| 136c2fa5aa | |||
| 8558ff726e | |||
| 8840eccf41 | |||
| 56d20938de | |||
| 183b3b826f | |||
| 635c58531f | |||
| 338819d156 | |||
| 9ac3315d96 | |||
| c41954247b | |||
| 4c215a72c0 | |||
| 08ced58a54 | |||
| 80f635e26b | |||
| 7369ac93eb | |||
| 5dadac1a55 | |||
| af08e91a45 | |||
| c3a5f4df4f | 
| @@ -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 { | ||||
							
								
								
									
										21
									
								
								SQL/202510/20251017/hazardType.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								SQL/202510/20251017/hazardType.sql
									
									
									
									
									
										Normal 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); | ||||
|  | ||||
|  | ||||
							
								
								
									
										438
									
								
								SQL/202510/20251017/lc_confined_space_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										438
									
								
								SQL/202510/20251017/lc_confined_space_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										438
									
								
								SQL/202510/20251017/lc_fire_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										438
									
								
								SQL/202510/20251017/lc_fire_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										482
									
								
								SQL/202510/20251017/lc_high_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										482
									
								
								SQL/202510/20251017/lc_high_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										379
									
								
								SQL/202510/20251017/lc_land_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										379
									
								
								SQL/202510/20251017/lc_land_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										395
									
								
								SQL/202510/20251017/lc_lifting_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										395
									
								
								SQL/202510/20251017/lc_lifting_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										716
									
								
								SQL/202510/20251017/lc_outside_person.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										716
									
								
								SQL/202510/20251017/lc_outside_person.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										450
									
								
								SQL/202510/20251017/lc_risk_identify_assessment.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										450
									
								
								SQL/202510/20251017/lc_risk_identify_assessment.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										386
									
								
								SQL/202510/20251017/lc_temporary_power_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										386
									
								
								SQL/202510/20251017/lc_temporary_power_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										6
									
								
								SQL/202510/20251017/z_exec_last.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								SQL/202510/20251017/z_exec_last.sql
									
									
									
									
									
										Normal 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'); | ||||
							
								
								
									
										426
									
								
								SQL/202510/20251021/lc_outside_license.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										426
									
								
								SQL/202510/20251021/lc_outside_license.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										696
									
								
								SQL/202510/20251021/lc_outside_person.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										696
									
								
								SQL/202510/20251021/lc_outside_person.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										21
									
								
								SQL/202510/20251021/licenseType.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								SQL/202510/20251021/licenseType.sql
									
									
									
									
									
										Normal 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); | ||||
|  | ||||
							
								
								
									
										431
									
								
								SQL/202510/20251023/lc_accident_incident.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										431
									
								
								SQL/202510/20251023/lc_accident_incident.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										467
									
								
								SQL/202510/20251023/lc_basic_safety_information.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										467
									
								
								SQL/202510/20251023/lc_basic_safety_information.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										438
									
								
								SQL/202510/20251023/lc_confined_space_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										438
									
								
								SQL/202510/20251023/lc_confined_space_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										423
									
								
								SQL/202510/20251023/lc_drill_task.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										423
									
								
								SQL/202510/20251023/lc_drill_task.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										260
									
								
								SQL/202510/20251023/lc_emergency_plan.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										260
									
								
								SQL/202510/20251023/lc_emergency_plan.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										327
									
								
								SQL/202510/20251023/lc_exam_plan.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										327
									
								
								SQL/202510/20251023/lc_exam_plan.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										357
									
								
								SQL/202510/20251023/lc_exam_record.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										357
									
								
								SQL/202510/20251023/lc_exam_record.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										439
									
								
								SQL/202510/20251023/lc_fire_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										439
									
								
								SQL/202510/20251023/lc_fire_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										482
									
								
								SQL/202510/20251023/lc_high_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										482
									
								
								SQL/202510/20251023/lc_high_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										379
									
								
								SQL/202510/20251023/lc_land_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										379
									
								
								SQL/202510/20251023/lc_land_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										394
									
								
								SQL/202510/20251023/lc_lifting_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										394
									
								
								SQL/202510/20251023/lc_lifting_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										424
									
								
								SQL/202510/20251023/lc_outside_license.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										424
									
								
								SQL/202510/20251023/lc_outside_license.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										716
									
								
								SQL/202510/20251023/lc_outside_person.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										716
									
								
								SQL/202510/20251023/lc_outside_person.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										652
									
								
								SQL/202510/20251023/lc_risk_hazard_manage.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										652
									
								
								SQL/202510/20251023/lc_risk_hazard_manage.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										450
									
								
								SQL/202510/20251023/lc_risk_identify_assessment.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										450
									
								
								SQL/202510/20251023/lc_risk_identify_assessment.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										383
									
								
								SQL/202510/20251023/lc_temporary_power_operation.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										383
									
								
								SQL/202510/20251023/lc_temporary_power_operation.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										437
									
								
								SQL/202510/20251023/lc_training_plan.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										437
									
								
								SQL/202510/20251023/lc_training_plan.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										269
									
								
								SQL/202510/20251023/lc_training_record.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								SQL/202510/20251023/lc_training_record.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -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 | ||||
|  | ||||
| --- #################### 芋道相关配置 #################### | ||||
|  | ||||
| # 芋道配置项,设置当前项目所有自定义的配置 | ||||
|   | ||||
| @@ -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 | ||||
| --- #################### 芋道相关配置 #################### | ||||
|  | ||||
| # 芋道配置项,设置当前项目所有自定义的配置 | ||||
|   | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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()); | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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){ | ||||
|         //执行者绑定参数 | ||||
|   | ||||
| @@ -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数据") | ||||
|   | ||||
| @@ -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(); | ||||
|   | ||||
| @@ -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; | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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)); | ||||
|     }*/ | ||||
| } | ||||
| @@ -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(); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|  | ||||
|  | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
| 	} | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -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 { | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
| } | ||||
| @@ -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 { | ||||
| } | ||||
| @@ -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<>(); | ||||
| } | ||||
| @@ -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); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -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("引入成功"); | ||||
|     } | ||||
| } | ||||
| @@ -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)); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|   | ||||
| @@ -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); | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -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()); | ||||
|   | ||||
| @@ -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> | ||||
|  | ||||
|   | ||||
| @@ -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); | ||||
|   | ||||
| @@ -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
		Reference in New Issue
	
	Block a user