Compare commits
	
		
			19 Commits
		
	
	
		
			main
			...
			756b491778
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 756b491778 | |||
| c86b7a1753 | |||
| f3810d3126 | |||
| 136c2fa5aa | |||
| 8558ff726e | |||
| 8840eccf41 | |||
| 56d20938de | |||
| 183b3b826f | |||
| 635c58531f | |||
| 338819d156 | |||
| 9ac3315d96 | |||
| c41954247b | |||
| 4c215a72c0 | |||
| 08ced58a54 | |||
| 80f635e26b | |||
| 7369ac93eb | |||
| 5dadac1a55 | |||
| af08e91a45 | |||
| c3a5f4df4f | 
@@ -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', '', '');
 | 
					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');
 | 
					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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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") 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", "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(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');
 | 
					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 {
 | 
					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');
 | 
				
			||||||
							
								
								
									
										466
									
								
								SQL/202510/20251023/lc_basic_safety_information.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										466
									
								
								SQL/202510/20251023/lc_basic_safety_information.sql
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -40,7 +40,15 @@ spring:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
logging:
 | 
					logging:
 | 
				
			||||||
  file:
 | 
					  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:
 | 
					logging:
 | 
				
			||||||
  file:
 | 
					  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.ExcelImportResultModel;
 | 
				
			||||||
import com.jeelowcode.core.framework.params.model.ExcelModel;
 | 
					import com.jeelowcode.core.framework.params.model.ExcelModel;
 | 
				
			||||||
import com.jeelowcode.core.framework.params.model.ExcelTemplateModel;
 | 
					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.params.vo.FormEntityPageVo;
 | 
				
			||||||
import com.jeelowcode.core.framework.service.IFormService;
 | 
					import com.jeelowcode.core.framework.service.IFormService;
 | 
				
			||||||
import com.jeelowcode.core.framework.utils.Func;
 | 
					import com.jeelowcode.core.framework.utils.Func;
 | 
				
			||||||
@@ -280,6 +281,25 @@ public class BaseController {
 | 
				
			|||||||
        return excelModel;
 | 
					        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数据
 | 
					    //导入Excel数据
 | 
				
			||||||
    protected ExcelImportResultModel importExcelData(ButtonParamImport buttonParam){
 | 
					    protected ExcelImportResultModel importExcelData(ButtonParamImport buttonParam){
 | 
				
			||||||
        //执行者绑定参数
 | 
					        //执行者绑定参数
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,6 +87,19 @@ public class ExcelController extends BaseController {
 | 
				
			|||||||
        JeeLowCodeExcelUtils.exportExcel(rsp, excelModel.getSheetName(), excelModel.getHeadTitleMap(), excelModel.getDataMapList());
 | 
					        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)")
 | 
					    @PreAuthorize("@ss.hasPermission('jeelowcode:dbform-data:import:'+#dbformId)")
 | 
				
			||||||
    @ApiOperationSupport(order = 3)
 | 
					    @ApiOperationSupport(order = 3)
 | 
				
			||||||
    @Operation(tags = "Excel模块",summary = "导入Excel数据")
 | 
					    @Operation(tags = "Excel模块",summary = "导入Excel数据")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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,42 @@
 | 
				
			|||||||
 | 
					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));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -47,6 +47,8 @@ public class BeforeRiskExportEnhance extends BaseController implements BeforeAdv
 | 
				
			|||||||
    public void execute(EnhanceContext enhanceContext) {
 | 
					    public void execute(EnhanceContext enhanceContext) {
 | 
				
			||||||
        Map<String, Object> params = enhanceContext.getParam().getParams();
 | 
					        Map<String, Object> params = enhanceContext.getParam().getParams();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 获取所有园区信息
 | 
					        // 获取所有园区信息
 | 
				
			||||||
        String campusTableName="campus_info";
 | 
					        String campusTableName="campus_info";
 | 
				
			||||||
        Long campusFormId = ADTE.dbFormService.getDbFormIdByTableName(campusTableName);
 | 
					        Long campusFormId = ADTE.dbFormService.getDbFormIdByTableName(campusTableName);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					package com.jeelowcode.module.biz.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 待办系统接口
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author yangchenjj
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public interface IPortalTodoService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 风险隐患推送待办完成
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param workflowId 流程id
 | 
				
			||||||
 | 
					     * @return boolean 推送结果
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    boolean pushDoneRiskHazardWorkflow(Long workflowId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,112 @@
 | 
				
			|||||||
 | 
					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.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;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,25 +1,26 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
package com.jeelowcode.module.biz.service.impl;
 | 
					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.core.framework.service.IFrameSqlService;
 | 
				
			||||||
import com.jeelowcode.framework.global.JeeLowCodeBaseConstant;
 | 
					 | 
				
			||||||
import com.jeelowcode.framework.plus.SqlHelper;
 | 
					import com.jeelowcode.framework.plus.SqlHelper;
 | 
				
			||||||
import com.jeelowcode.framework.plus.build.buildmodel.wrapper.SqlInfoQueryWrapper;
 | 
					import com.jeelowcode.framework.plus.build.buildmodel.wrapper.SqlInfoQueryWrapper;
 | 
				
			||||||
import com.jeelowcode.framework.plus.core.model.SqlFormatModel;
 | 
					import com.jeelowcode.framework.plus.core.toolkit.StringUtils;
 | 
				
			||||||
import com.jeelowcode.module.biz.service.IPlanIssusService;
 | 
					import com.jeelowcode.framework.utils.tool.spring.SpringUtils;
 | 
				
			||||||
import com.jeelowcode.module.biz.service.IRiskService;
 | 
					import com.jeelowcode.module.biz.service.IRiskService;
 | 
				
			||||||
import com.jeelowcode.service.system.controller.vo.notify.template.NotifyTemplateSendReqVO;
 | 
					import com.jeelowcode.service.bpm.config.framework.portal.core.PortalRequest;
 | 
				
			||||||
import com.jeelowcode.service.system.service.INotifySendService;
 | 
					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 lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.*;
 | 
				
			||||||
import java.util.HashMap;
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import static com.jeelowcode.tool.framework.common.util.collection.CollectionUtils.getFirst;
 | 
				
			||||||
import java.util.Map;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -29,40 +30,89 @@ import java.util.Map;
 | 
				
			|||||||
@Service
 | 
					@Service
 | 
				
			||||||
public class RiskServiceImpl implements IRiskService {
 | 
					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;
 | 
					    private IFrameSqlService sqlService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Resource
 | 
					    @Resource
 | 
				
			||||||
    private INotifySendService notifySendService;
 | 
					    private IApiAdminUserApi apiAdminUserApi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 发生消息给整改人
 | 
					     * 发生消息给整改人
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void sendNotify2Corrective(Long id) {
 | 
					    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"));
 | 
					        if (true) {
 | 
				
			||||||
        templateParams.put("check_area",risk.get("check_area"));
 | 
					            return;
 | 
				
			||||||
        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");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        sendReqVO.setTemplateParams(templateParams);
 | 
					        // 0.1.查找风险隐患数据,如果查不到任务可以结束了
 | 
				
			||||||
        // 发送消息
 | 
					        Map<String, Object> risk = this.getRiskById(id);
 | 
				
			||||||
        notifySendService.sendSingleNotifyToAdmin(sendReqVO.getUserIdList(),
 | 
					        if (MapUtil.isEmpty(risk)) return;
 | 
				
			||||||
                sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 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
 | 
					    @Override
 | 
				
			||||||
    public void sendNotify2Check(Long id) {
 | 
					    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
 | 
					    @Override
 | 
				
			||||||
    public Map<String, Object> getRiskById(long id) {
 | 
					    public Map<String, Object> getRiskById(long id) {
 | 
				
			||||||
        SqlInfoQueryWrapper.Wrapper wrapper = SqlHelper.getQueryWrapper();
 | 
					        SqlInfoQueryWrapper.Wrapper wrapper = SqlHelper.getQueryWrapper();
 | 
				
			||||||
        wrapper.setTableName("lc_risk_hazard_manage");
 | 
					        wrapper.setTableName("lc_risk_hazard_manage");
 | 
				
			||||||
        wrapper.setWhere(where->{
 | 
					        wrapper.setWhere(where -> {
 | 
				
			||||||
            where.eq("id",id);
 | 
					            where.eq("id", id);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        Map<String, Object> dataMap = sqlService.getDataOneByPlus(wrapper);
 | 
					        return sqlService.getDataOneByPlus(wrapper);
 | 
				
			||||||
        return dataMap;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,4 +79,12 @@ public interface IApiAdminUserApi {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    void validateUserList(Collection<Long> ids);
 | 
					    void validateUserList(Collection<Long> ids);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 通过用户昵称,获得用户列表
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param nickname 昵称
 | 
				
			||||||
 | 
					     * @return 用户列表
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    List<AdminUserRespDTO> getUserListByNickname(String nickname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
import java.util.Collection;
 | 
					import java.util.Collection;
 | 
				
			||||||
 | 
					import java.util.Collections;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static com.jeelowcode.tool.framework.common.util.collection.CollectionUtils.convertSet;
 | 
					import static com.jeelowcode.tool.framework.common.util.collection.CollectionUtils.convertSet;
 | 
				
			||||||
@@ -55,4 +56,10 @@ public class ApiAdminUserApiImpl implements IApiAdminUserApi {
 | 
				
			|||||||
        userService.validateUserList(ids);
 | 
					        userService.validateUserList(ids);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<AdminUserRespDTO> getUserListByNickname(String nickname) {
 | 
				
			||||||
 | 
					        List<AdminUserDO> users = userService.getUserListByNickname(nickname);
 | 
				
			||||||
 | 
					        return BeanUtils.toBean(users, AdminUserRespDTO.class);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,7 @@ import net.sf.jsqlparser.expression.*;
 | 
				
			|||||||
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
 | 
					import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
 | 
				
			||||||
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
 | 
					import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
 | 
				
			||||||
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
 | 
					import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
 | 
				
			||||||
 | 
					import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
 | 
				
			||||||
import net.sf.jsqlparser.expression.operators.relational.InExpression;
 | 
					import net.sf.jsqlparser.expression.operators.relational.InExpression;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
@@ -140,17 +141,17 @@ public class DeptDataPermissionRule implements DataPermissionRule {
 | 
				
			|||||||
            return customDeptExpression;
 | 
					            return customDeptExpression;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(Objects.nonNull(deptExpression) && Objects.nonNull(userExpression) && Objects.nonNull(customDeptExpression)){
 | 
					        if (Objects.nonNull(deptExpression) && Objects.nonNull(userExpression) && Objects.nonNull(customDeptExpression)) {
 | 
				
			||||||
            // 目前,如果有指定部门 + 可查看自己,采用 OR 条件。即,WHERE (dept_id IN ? OR user_id = ?)
 | 
					            // 目前,如果有指定部门 + 可查看自己,采用 OR 条件。即,WHERE (dept_id IN ? OR user_id = ?)
 | 
				
			||||||
            return new Parenthesis(new OrExpression(new OrExpression(deptExpression, userExpression), customDeptExpression));
 | 
					            return new Parenthesis(new OrExpression(new OrExpression(deptExpression, userExpression), customDeptExpression));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(Objects.nonNull(deptExpression) && Objects.nonNull(userExpression)){
 | 
					        if (Objects.nonNull(deptExpression) && Objects.nonNull(userExpression)) {
 | 
				
			||||||
            // 目前,如果有指定部门 + 可查看自己,采用 OR 条件。即,WHERE (dept_id IN ? OR user_id = ?)
 | 
					            // 目前,如果有指定部门 + 可查看自己,采用 OR 条件。即,WHERE (dept_id IN ? OR user_id = ?)
 | 
				
			||||||
            return new Parenthesis(new OrExpression(deptExpression, userExpression));
 | 
					            return new Parenthesis(new OrExpression(deptExpression, userExpression));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(Objects.nonNull(deptExpression)){
 | 
					        if (Objects.nonNull(deptExpression)) {
 | 
				
			||||||
            // 目前,如果有指定部门 + 可查看自己,采用 OR 条件。即,WHERE (dept_id IN ? OR user_id = ?)
 | 
					            // 目前,如果有指定部门 + 可查看自己,采用 OR 条件。即,WHERE (dept_id IN ? OR user_id = ?)
 | 
				
			||||||
            return new Parenthesis(new OrExpression(deptExpression, customDeptExpression));
 | 
					            return new Parenthesis(new OrExpression(deptExpression, customDeptExpression));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -195,14 +196,18 @@ public class DeptDataPermissionRule implements DataPermissionRule {
 | 
				
			|||||||
        Expression returnExpression = null;
 | 
					        Expression returnExpression = null;
 | 
				
			||||||
        String[] columnNames = columnName.split(",");
 | 
					        String[] columnNames = columnName.split(",");
 | 
				
			||||||
        for (String column : columnNames) {
 | 
					        for (String column : columnNames) {
 | 
				
			||||||
            Expression deptExpression = new InExpression(MyBatisUtils.buildColumn(tableName, tableAlias, column),
 | 
					            for (Long deptId : deptIds) {
 | 
				
			||||||
                    new ExpressionList(CollectionUtils.convertList(deptIds, LongValue::new)));
 | 
					                Expression deptExpression = new GreaterThan()
 | 
				
			||||||
 | 
					                        .withLeftExpression(new Function().withName("FIND_IN_SET")
 | 
				
			||||||
 | 
					                                .withParameters(new ExpressionList(new StringValue(deptId.toString()), MyBatisUtils.buildColumn(tableName, tableAlias, column))))
 | 
				
			||||||
 | 
					                        .withRightExpression(new LongValue(0));
 | 
				
			||||||
                if (Objects.isNull(returnExpression)) {
 | 
					                if (Objects.isNull(returnExpression)) {
 | 
				
			||||||
                    returnExpression = deptExpression;
 | 
					                    returnExpression = deptExpression;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    returnExpression = new Parenthesis(new OrExpression(returnExpression, deptExpression));
 | 
					                    returnExpression = new Parenthesis(new OrExpression(returnExpression, deptExpression));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        return returnExpression;
 | 
					        return returnExpression;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user